diff --git a/app/__init__.py b/app/__init__.py index 6f803d79..7e83adba 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -415,18 +415,20 @@ def create_app(config=None): """Normalize locale codes for Flask-Babel compatibility. Some locale codes need to be normalized: - - 'no' -> 'nb' (Norwegian Bokmål is the standard, but we'll try 'no' first) + - 'no' -> 'nb' (Norwegian Bokmål catalog directory) + - 'pt-br', 'pt_pt', 'pt-pt', etc. -> 'pt' (single Portuguese catalog) """ if not locale_code: return "en" - locale_code = locale_code.lower().strip() - # Try 'no' first - if translations don't exist, Flask-Babel will fall back - # If 'no' doesn't work, we can map to 'nb' as fallback - # For now, keep 'no' as-is since we have translations/nb/ directory - # The directory structure should match what Flask-Babel expects + raw = locale_code.strip() + lower = raw.lower().replace("_", "-") + # Portuguese: fold regional variants to generic pt (one catalog under translations/pt/) + if lower == "pt" or lower.startswith("pt-"): + # pt-br, pt-pt, PT -> pt + return "pt" + locale_code = raw.lower().strip() if locale_code == "no": # Use 'nb' for Flask-Babel (standard Norwegian Bokmål locale) - # But ensure we have translations in both 'no' and 'nb' directories return "nb" return locale_code diff --git a/app/config.py b/app/config.py index 86ebf801..9408e3ec 100644 --- a/app/config.py +++ b/app/config.py @@ -238,6 +238,7 @@ class Config: "it": "Italiano", "fi": "Suomi", "es": "Español", + "pt": "Português", "no": "Norsk", "ar": "العربية", "he": "עברית", diff --git a/docs/CONTRIBUTING_TRANSLATIONS.md b/docs/CONTRIBUTING_TRANSLATIONS.md index a0dd778e..cbf5b027 100644 --- a/docs/CONTRIBUTING_TRANSLATIONS.md +++ b/docs/CONTRIBUTING_TRANSLATIONS.md @@ -40,7 +40,7 @@ This repo includes a root [`crowdin.yml`](../crowdin.yml) that maps **source** ` 1. **Crowdin account and project** — [Sign up at Crowdin](https://crowdin.com/) if needed. Translators work in **[Drytrix TimeTracker](https://crowdin.com/project/drytrix-timetracker)** (ask a maintainer for access if the project is private). Maintainers configure API tokens and GitHub integration against that same project unless you intentionally use a separate test project. 2. **Source language:** English. Treat the resource as **Gettext PO** (`.po`). -3. **Target languages:** Add every locale you ship: `nl`, `de`, `fr`, `it`, `fi`, `es`, `no`, `ar`, `he` (match `LANGUAGES` in `app/config.py`). For Norwegian, add Norwegian (Bokmål) in Crowdin; the `crowdin.yml` mapping writes files into `translations/no/`. +3. **Target languages:** Add every locale you ship: `nl`, `de`, `fr`, `it`, `fi`, `es`, `pt`, `no`, `ar`, `he` (match `LANGUAGES` in `app/config.py`). For Norwegian, add Norwegian (Bokmål) in Crowdin; the `crowdin.yml` mapping writes files into `translations/no/`. 4. **Sync with this repository (pick one):** - **GitHub Action:** In the GitHub repo, add Actions secrets `CROWDIN_PROJECT_ID` and `CROWDIN_PERSONAL_TOKEN` (Crowdin project **Details** shows the numeric project ID; **Account Settings → API** creates the token with project access, typically Manager). Run **Crowdin sync** from the **Actions** tab → **Run workflow**. For a **one-time** import of existing `.po` files into Crowdin’s translation memory, temporarily set `upload_translations: true` in [.github/workflows/crowdin-sync.yml](../.github/workflows/crowdin-sync.yml), run it once, then set it back to `false`. - **Crowdin’s GitHub integration:** Crowdin → **Integrations → GitHub** → connect the repo and branch; point it at the same `crowdin.yml` so Crowdin can open PRs when translations are updated. @@ -79,7 +79,7 @@ Follow these so your suggestion can be applied without breaking the app: 4. **Context matters.** Say which **page**, **button**, or **dialog** the text appears on, and attach a **screenshot** if possible. One English phrase can appear in multiple places with different meanings. 5. **Length and tone:** Short labels (buttons, nav) should stay compact. Full sentences can be more natural in your language than literal word-for-word English. -**Supported locale codes** (see `app/config.py` `LANGUAGES`): `en`, `nl`, `de`, `fr`, `it`, `fi`, `es`, `no`, `ar`, `he`. +**Supported locale codes** (see `app/config.py` `LANGUAGES`): `en`, `nl`, `de`, `fr`, `it`, `fi`, `es`, `pt`, `no`, `ar`, `he`. ## Maintainer workflow diff --git a/docs/TRANSLATION_SYSTEM.md b/docs/TRANSLATION_SYSTEM.md index ddb2ce59..8781f260 100644 --- a/docs/TRANSLATION_SYSTEM.md +++ b/docs/TRANSLATION_SYSTEM.md @@ -10,8 +10,11 @@ TimeTracker includes a comprehensive internationalization (i18n) system powered - **French** (fr - Français) - **Italian** (it - Italiano) - **Finnish** (fi - Suomi) +- **Portuguese** (pt - Português) - **Spanish** (es), **Norwegian** (no), **Arabic** (ar), **Hebrew** (he), and others as configured +Regional Portuguese tags (`pt-BR`, `pt-PT`, etc.) are normalized to **`pt`** so a single catalog under `translations/pt/` is used. + ## User Experience ### Language Switcher @@ -50,6 +53,7 @@ translations/ ├── it/LC_MESSAGES/messages.po # Italian ├── fi/LC_MESSAGES/messages.po # Finnish ├── es/LC_MESSAGES/messages.po # Spanish +├── pt/LC_MESSAGES/messages.po # Portuguese └── ... # Other locales as configured ``` @@ -65,6 +69,8 @@ LANGUAGES = { 'fr': 'Français', 'it': 'Italiano', 'fi': 'Suomi', + 'pt': 'Português', + # ... es, no, ar, he, etc. — see app/config.py for the full map } BABEL_DEFAULT_LOCALE = 'en' ``` @@ -78,6 +84,8 @@ The system determines the user's language in the following order: 3. **Browser Accept-Language header** (best match) 4. **Default locale** (en) +The locale normalizer maps **`no` → `nb`** (Norwegian catalog folder) and folds **`pt-*`** (e.g. `pt-BR`, `pt-PT`) to **`pt`**. + See `app/__init__.py` for the locale selector implementation. ### In Templates @@ -253,7 +261,7 @@ The language switcher includes: Potential improvements: -1. Add more languages (Spanish, Portuguese, Japanese, etc.) +1. Add more languages (Japanese, Chinese, etc.) 2. Right-to-left (RTL) language support (Arabic, Hebrew) 3. User-contributed translations via [CONTRIBUTING_TRANSLATIONS.md](CONTRIBUTING_TRANSLATIONS.md) (issues, spreadsheet, [Crowdin — Drytrix TimeTracker](https://crowdin.com/project/drytrix-timetracker), or Weblate) 4. Automatic language detection improvement @@ -271,7 +279,7 @@ For questions or issues with translations: --- -**Last Updated**: 2026-04-15 +**Last Updated**: 2026-04-29 **Flask-Babel Version**: 4.0.0 **Babel Version**: 2.14.0 diff --git a/docs/implementation-notes/TRANSLATION_IMPROVEMENTS_SUMMARY.md b/docs/implementation-notes/TRANSLATION_IMPROVEMENTS_SUMMARY.md index 614c1365..df9f1f94 100644 --- a/docs/implementation-notes/TRANSLATION_IMPROVEMENTS_SUMMARY.md +++ b/docs/implementation-notes/TRANSLATION_IMPROVEMENTS_SUMMARY.md @@ -203,7 +203,7 @@ To test the translation system: Potential improvements for the future: -1. Add more languages (Spanish, Portuguese, Japanese, Chinese) +1. Add more languages (Japanese, Chinese, etc.) 2. Implement RTL support for Arabic and Hebrew 3. Add translation management UI in admin panel 4. Integrate with translation services (Crowdin, Lokalise) diff --git a/tests/test_i18n.py b/tests/test_i18n.py index 5f16e678..9a94950b 100644 --- a/tests/test_i18n.py +++ b/tests/test_i18n.py @@ -28,10 +28,12 @@ class TestI18nConfiguration: assert "nl" in languages assert "it" in languages assert "fi" in languages + assert "pt" in languages # Check that language labels are set assert languages["en"] == "English" assert languages["es"] == "Español" + assert languages["pt"] == "Português" assert languages["ar"] == "العربية" assert languages["he"] == "עברית" @@ -248,7 +250,7 @@ class TestTranslations: """Test that translation files exist for all languages""" import os - languages = ["en", "de", "fr", "es", "ar", "he", "nl", "it", "fi"] + languages = ["en", "de", "fr", "es", "ar", "he", "nl", "it", "fi", "pt"] for lang in languages: po_file = os.path.join("translations", lang, "LC_MESSAGES", "messages.po") diff --git a/translations/pt/LC_MESSAGES/messages.po b/translations/pt/LC_MESSAGES/messages.po new file mode 100644 index 00000000..65182c7c --- /dev/null +++ b/translations/pt/LC_MESSAGES/messages.po @@ -0,0 +1,29629 @@ + +msgid "" +msgstr "" +"Project-Id-Version: TimeTracker\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2026-02-08 08:45+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \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" +"Generated-By: Babel 2.18.0\n" + +#: app/__init__.py:865 app/__init__.py:897 +msgid "Your session expired or the page was open too long. Please try again." +msgstr "" + +#: app/routes/admin.py:524 app/utils/decorators.py:19 +msgid "Administrator access required" +msgstr "" + +#: app/routes/admin.py:732 app/routes/admin.py:797 app/routes/kiosk.py:114 +msgid "Username is required" +msgstr "" + +#: app/routes/admin.py:738 +msgid "User already exists" +msgstr "" + +#: app/routes/admin.py:748 app/routes/admin.py:817 +msgid "" +"Default 'user' role not found. Please run 'flask seed_permissions_cmd' " +"first." +msgstr "" + +#: app/routes/admin.py:766 +msgid "Could not create user due to a database error. Please check server logs." +msgstr "" + +#: app/routes/admin.py:770 +#, python-format +msgid "User \"%(username)s\" created successfully" +msgstr "" + +#: app/routes/admin.py:803 +msgid "Username already exists" +msgstr "" + +#: app/routes/admin.py:808 +msgid "Please select a client when enabling client portal access." +msgstr "" + +#: app/routes/admin.py:828 app/routes/auth.py:132 app/routes/auth.py:262 +#: app/routes/auth.py:460 app/routes/auth.py:548 +#: app/routes/client_portal.py:320 app/templates/auth/change_password.html:30 +msgid "Password must be at least 8 characters long." +msgstr "" + +#: app/routes/admin.py:832 app/routes/auth.py:464 app/routes/auth.py:552 +#: app/routes/client_portal.py:324 +msgid "Passwords do not match." +msgstr "" + +#: app/routes/admin.py:870 +msgid "Could not update user due to a database error. Please check server logs." +msgstr "" + +#: app/routes/admin.py:874 +#, python-format +msgid "Password reset successfully for user \"%(username)s\"" +msgstr "" + +#: app/routes/admin.py:876 +#, python-format +msgid "User \"%(username)s\" updated successfully" +msgstr "" + +#: app/routes/admin.py:893 +msgid "Cannot delete the last administrator" +msgstr "" + +#: app/routes/admin.py:898 +msgid "Cannot delete user with existing time entries" +msgstr "" + +#: app/routes/admin.py:904 +msgid "Could not delete user due to a database error. Please check server logs." +msgstr "" + +#: app/routes/admin.py:907 +#, python-format +msgid "User \"%(username)s\" deleted successfully" +msgstr "" + +#: app/routes/admin.py:965 +msgid "Telemetry has been enabled. Thank you for helping us improve!" +msgstr "" + +#: app/routes/admin.py:967 +msgid "Telemetry has been disabled." +msgstr "" + +#: app/routes/admin.py:1011 +msgid "Invalid locked client selection." +msgstr "" + +#: app/routes/admin.py:1022 +msgid "Selected locked client does not exist or is not active." +msgstr "" + +#: app/routes/admin.py:1051 +#, python-format +msgid "" +"Cannot disable '%(module)s' because the following modules depend on it: " +"%(dependents)s" +msgstr "" + +#: app/routes/admin.py:1073 +msgid "" +"Could not update module visibility due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/admin.py:1082 +msgid "Module visibility updated successfully" +msgstr "" + +#: app/routes/admin.py:1128 +#, python-format +msgid "Invalid timezone: %(timezone)s" +msgstr "" + +#: app/routes/admin.py:1246 +msgid "" +"Could not update settings due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/admin.py:1264 +msgid "Settings updated successfully" +msgstr "" + +#: app/routes/admin.py:1362 app/routes/admin.py:1643 +msgid "Invalid template JSON format. Please try again." +msgstr "" + +#: app/routes/admin.py:1393 app/routes/admin.py:1679 +msgid "Error: Template JSON is empty. Please try saving again." +msgstr "" + +#: app/routes/admin.py:1402 app/routes/admin.py:1688 +msgid "Error: Template JSON is invalid. Please try saving again." +msgstr "" + +#: app/routes/admin.py:1408 app/routes/admin.py:1694 +msgid "Error: Template JSON is not valid JSON. Please try saving again." +msgstr "" + +#: app/routes/admin.py:1432 app/routes/admin.py:1704 +msgid "Could not update PDF layout due to a database error." +msgstr "" + +#: app/routes/admin.py:1439 app/routes/admin.py:1710 +msgid "PDF layout updated successfully" +msgstr "" + +#: app/routes/admin.py:1442 app/routes/admin.py:1713 +msgid "" +"PDF layout saved but template JSON verification failed. Please check the " +"template." +msgstr "" + +#: app/routes/admin.py:1560 app/routes/admin.py:1810 +msgid "Could not reset PDF layout due to a database error." +msgstr "" + +#: app/routes/admin.py:1562 app/routes/admin.py:1812 +msgid "PDF layout reset to defaults" +msgstr "" + +#: app/routes/admin.py:1827 app/routes/admin.py:1941 +msgid "Invalid page size" +msgstr "" + +#: app/routes/admin.py:1833 app/routes/admin.py:1947 +msgid "Template not found for this page size" +msgstr "" + +#: app/routes/admin.py:1874 app/routes/admin.py:1988 +msgid "No file uploaded" +msgstr "" + +#: app/routes/admin.py:1879 app/routes/admin.py:1993 app/routes/clients.py:1189 +#: app/routes/comments.py:289 app/routes/expenses.py:1260 +#: app/routes/invoices.py:1475 app/routes/projects.py:1882 +#: app/routes/quotes.py:762 app/routes/quotes.py:1579 +#: app/routes/team_chat.py:437 +msgid "No file selected" +msgstr "" + +#: app/routes/admin.py:1889 app/routes/admin.py:2003 +msgid "Invalid template JSON format. Missing 'page' property." +msgstr "" + +#: app/routes/admin.py:1915 app/routes/admin.py:2029 +msgid "Could not import template due to a database error." +msgstr "" + +#: app/routes/admin.py:1917 app/routes/admin.py:2031 +msgid "Template imported successfully" +msgstr "" + +#: app/routes/admin.py:1922 app/routes/admin.py:2036 +#, python-format +msgid "Invalid JSON file: %(error)s" +msgstr "" + +#: app/routes/admin.py:1926 app/routes/admin.py:2040 +#, python-format +msgid "Error importing template: %(error)s" +msgstr "" + +#: app/routes/admin.py:2185 +msgid "Invoice not found" +msgstr "" + +#: app/routes/admin.py:2742 app/routes/quotes.py:261 +msgid "Quote not found" +msgstr "" + +#: app/routes/admin.py:3252 app/routes/admin.py:3257 +msgid "No logo file selected" +msgstr "" + +#: app/routes/admin.py:3274 app/routes/auth.py:491 +msgid "Invalid image file." +msgstr "" + +#: app/routes/admin.py:3303 +msgid "Could not save logo due to a database error. Please check server logs." +msgstr "" + +#: app/routes/admin.py:3308 +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:3313 +msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +msgstr "" + +#: app/routes/admin.py:3337 +msgid "Could not remove logo due to a database error. Please check server logs." +msgstr "" + +#: app/routes/admin.py:3339 +msgid "" +"Company logo removed successfully. Upload a new logo in the section below" +" if needed." +msgstr "" + +#: app/routes/admin.py:3341 +msgid "No logo to remove" +msgstr "" + +#: app/routes/admin.py:3473 +msgid "Backup failed: archive not created" +msgstr "" + +#: app/routes/admin.py:3478 +#, python-format +msgid "Backup failed: %(error)s" +msgstr "" + +#: app/routes/admin.py:3490 app/routes/admin.py:3511 +msgid "Invalid file type" +msgstr "" + +#: app/routes/admin.py:3497 app/routes/admin.py:3522 +msgid "Backup file not found" +msgstr "" + +#: app/routes/admin.py:3520 +#, python-format +msgid "Backup \"%(filename)s\" deleted successfully" +msgstr "" + +#: app/routes/admin.py:3524 +#, python-format +msgid "Failed to delete backup: %(error)s" +msgstr "" + +#: app/routes/admin.py:3543 +msgid "Invalid file type. Please select a .zip backup archive." +msgstr "" + +#: app/routes/admin.py:3547 +msgid "Backup file not found." +msgstr "" + +#: app/routes/admin.py:3558 +msgid "Invalid file type. Please upload a .zip backup archive." +msgstr "" + +#: app/routes/admin.py:3565 +msgid "No backup file provided" +msgstr "" + +#: app/routes/admin.py:3603 +msgid "Restore started. You can monitor progress on this page." +msgstr "" + +#: app/routes/admin.py:3740 +msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\" or \"both\"." +msgstr "" + +#: app/routes/admin.py:3745 +msgid "OIDC_ISSUER is not configured" +msgstr "" + +#: app/routes/admin.py:3753 +#, python-format +msgid "✗ Failed to parse issuer URL: %(error)s" +msgstr "" + +#: app/routes/admin.py:3757 +msgid "Testing DNS resolution with multiple strategies..." +msgstr "" + +#: app/routes/admin.py:3778 +#, python-format +msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +msgstr "" + +#: app/routes/admin.py:3784 +#, python-format +msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +msgstr "" + +#: app/routes/admin.py:3791 +msgid "ℹ Docker environment detected - internal service names may be available" +msgstr "" + +#: app/routes/admin.py:3815 +#, python-format +msgid "✓ Discovery document fetched successfully from %(url)s" +msgstr "" + +#: app/routes/admin.py:3820 +#, python-format +msgid "✓ DNS strategy used: %(strategy)s" +msgstr "" + +#: app/routes/admin.py:3825 +#, python-format +msgid "✗ Failed to fetch discovery document: %(error)s" +msgstr "" + +#: app/routes/admin.py:3829 +#, python-format +msgid "✗ Unexpected error: %(error)s" +msgstr "" + +#: app/routes/admin.py:3835 +msgid "✗ Failed to retrieve discovery document" +msgstr "" + +#: app/routes/admin.py:3842 +msgid "✓ OAuth client is registered in application" +msgstr "" + +#: app/routes/admin.py:3845 +msgid "✗ OAuth client is not registered" +msgstr "" + +#: app/routes/admin.py:3848 +#, python-format +msgid "✗ Failed to create OAuth client: %(error)s" +msgstr "" + +#: app/routes/admin.py:3855 +#, python-format +msgid "✓ %(endpoint)s: %(url)s" +msgstr "" + +#: app/routes/admin.py:3857 +#, python-format +msgid "✗ Missing %(endpoint)s in discovery document" +msgstr "" + +#: app/routes/admin.py:3864 +#, python-format +msgid "✓ Scope \"%(scope)s\" is supported by provider" +msgstr "" + +#: app/routes/admin.py:3868 +#, python-format +msgid "" +"⚠ Scope \"%(scope)s\" may not be supported by provider (supported: " +"%(supported)s)" +msgstr "" + +#: app/routes/admin.py:3878 +#, python-format +msgid "ℹ Provider supports claims: %(claims)s" +msgstr "" + +#: app/routes/admin.py:3892 +#, python-format +msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +msgstr "" + +#: app/routes/admin.py:3901 +#, python-format +msgid "" +"⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported " +"claims list (may still work)" +msgstr "" + +#: app/routes/admin.py:3908 +msgid "OIDC configuration test completed" +msgstr "" + +#: app/routes/admin.py:4453 app/routes/admin.py:4518 +#: app/routes/link_templates.py:40 app/routes/link_templates.py:96 +#: app/routes/quotes.py:1060 app/routes/quotes.py:1145 +#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 +msgid "Template name is required" +msgstr "" + +#: app/routes/admin.py:4459 app/routes/admin.py:4524 +msgid "A template with this name already exists" +msgstr "" + +#: app/routes/admin.py:4479 +msgid "Could not create email template due to a database error." +msgstr "" + +#: app/routes/admin.py:4482 +msgid "Email template created successfully" +msgstr "" + +#: app/routes/admin.py:4540 +msgid "Could not update email template due to a database error." +msgstr "" + +#: app/routes/admin.py:4543 +msgid "Email template updated successfully" +msgstr "" + +#: app/routes/admin.py:4561 +msgid "Cannot delete template that is in use by invoices or recurring invoices" +msgstr "" + +#: app/routes/admin.py:4566 +msgid "Could not delete email template due to a database error." +msgstr "" + +#: app/routes/admin.py:4568 +#, python-format +msgid "Email template \"%(name)s\" deleted successfully" +msgstr "" + +#: app/routes/api.py:1331 +msgid "Task name and project are required" +msgstr "" + +#: app/routes/api.py:1340 app/routes/tasks.py:418 +msgid "Selected project does not exist or is inactive" +msgstr "" + +#: app/routes/api.py:1362 app/routes/invoices_refactored.py:218 +#: app/routes/invoices_refactored.py:257 +#: app/routes/projects_refactored_example.py:189 app/routes/tasks.py:254 +#: app/routes/timer_refactored.py:48 app/routes/timer_refactored.py:124 +msgid "message" +msgstr "" + +#: app/routes/api.py:1397 +#, python-format +msgid "Task \"%(name)s\" created successfully" +msgstr "" + +#: app/routes/audit_logs.py:25 +msgid "Audit logs table does not exist. Please run: flask db upgrade" +msgstr "" + +#: app/routes/auth.py:98 +msgid "Invalid username format" +msgstr "" + +#: app/routes/auth.py:124 +msgid "Password is required to create an account." +msgstr "" + +#: app/routes/auth.py:158 +msgid "" +"Could not create your account due to a database error. Please try again " +"later." +msgstr "" + +#: app/routes/auth.py:173 app/routes/auth.py:1011 +msgid "Welcome! Your account has been created." +msgstr "" + +#: app/routes/auth.py:176 +msgid "User not found. Please contact an administrator." +msgstr "" + +#: app/routes/auth.py:189 +msgid "Could not update your account role due to a database error." +msgstr "" + +#: app/routes/auth.py:201 app/routes/auth.py:1055 +msgid "Account is disabled. Please contact an administrator." +msgstr "" + +#: app/routes/auth.py:219 app/routes/kiosk.py:128 +msgid "Password is required" +msgstr "" + +#: app/routes/auth.py:232 app/routes/kiosk.py:119 app/routes/kiosk.py:132 +msgid "Invalid username or password" +msgstr "" + +#: app/routes/auth.py:246 +msgid "" +"No password is set for your account. Please enter a password to set one " +"and log in." +msgstr "" + +#: app/routes/auth.py:275 +msgid "Could not set password due to a database error. Please try again." +msgstr "" + +#: app/routes/auth.py:284 +msgid "Password has been set. You are now logged in." +msgstr "" + +#: app/routes/auth.py:319 app/templates/auth/change_password.html:9 +msgid "You must change your password before continuing." +msgstr "" + +#: app/routes/auth.py:328 app/routes/auth.py:1115 +#, python-format +msgid "Welcome back, %(username)s!" +msgstr "" + +#: app/routes/auth.py:332 +msgid "Unexpected error during login. Please try again or check server logs." +msgstr "" + +#: app/routes/auth.py:393 +#, python-format +msgid "Goodbye, %(username)s!" +msgstr "" + +#: app/routes/auth.py:480 +msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +msgstr "" + +#: app/routes/auth.py:505 +msgid "Failed to save avatar on server." +msgstr "" + +#: app/routes/auth.py:524 +msgid "Profile updated successfully" +msgstr "" + +#: app/routes/auth.py:527 +msgid "Could not update your profile due to a database error." +msgstr "" + +#: app/routes/auth.py:544 +msgid "New password is required" +msgstr "" + +#: app/routes/auth.py:558 +msgid "Current password is required" +msgstr "" + +#: app/routes/auth.py:562 +msgid "Current password is incorrect" +msgstr "" + +#: app/routes/auth.py:572 +msgid "Password changed successfully. You can now continue." +msgstr "" + +#: app/routes/auth.py:576 +msgid "Could not update password due to a database error." +msgstr "" + +#: app/routes/auth.py:599 +msgid "Avatar removed" +msgstr "" + +#: app/routes/auth.py:602 +msgid "Failed to remove avatar." +msgstr "" + +#: app/routes/auth.py:710 +#, python-format +msgid "" +"Failed to connect to Single Sign-On provider. Please contact an " +"administrator. Error: %(error)s" +msgstr "" + +#: app/routes/auth.py:723 +#, python-format +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:731 app/routes/auth.py:774 +msgid "Single Sign-On is not configured yet. Please contact an administrator." +msgstr "" + +#: app/routes/auth.py:794 +msgid "Single Sign-On is not configured." +msgstr "" + +#: app/routes/auth.py:810 +msgid "SSO failed. If this repeats, check session cookie and proxy configuration." +msgstr "" + +#: app/routes/auth.py:953 +msgid "" +"Authentication failed: missing issuer or subject claim. Please check OIDC" +" configuration." +msgstr "" + +#: app/routes/auth.py:980 +msgid "User account does not exist and self-registration is disabled." +msgstr "" + +#: app/routes/auth.py:1015 +msgid "Could not create your account due to a database error." +msgstr "" + +#: app/routes/auth.py:1121 +msgid "Unexpected error during SSO login. Please try again or contact support." +msgstr "" + +#: app/routes/budget_alerts.py:339 +msgid "You do not have access to this project." +msgstr "" + +#: app/routes/budget_alerts.py:346 +msgid "This project does not have a budget set." +msgstr "" + +#: app/routes/calendar.py:194 +msgid "Event created successfully" +msgstr "" + +#: app/routes/calendar.py:275 +msgid "Event updated successfully" +msgstr "" + +#: app/routes/calendar.py:293 +msgid "You do not have permission to delete this event." +msgstr "" + +#: app/routes/calendar.py:301 +msgid "Failed to delete event" +msgstr "" + +#: app/routes/calendar.py:306 app/routes/calendar.py:309 +msgid "Event deleted successfully" +msgstr "" + +#: app/routes/calendar.py:314 +#, python-format +msgid "Error deleting event: %(error)s" +msgstr "" + +#: app/routes/calendar.py:341 +msgid "Event moved successfully" +msgstr "" + +#: app/routes/calendar.py:375 +msgid "Event resized successfully" +msgstr "" + +#: app/routes/calendar.py:392 +msgid "You do not have permission to view this event." +msgstr "" + +#: app/routes/calendar.py:443 +msgid "You do not have permission to edit this event." +msgstr "" + +#: app/routes/client_notes.py:22 app/routes/clients.py:51 +#: app/routes/clients.py:54 +msgid "Clients module is disabled by the administrator." +msgstr "" + +#: app/routes/client_notes.py:39 app/routes/client_notes.py:85 +msgid "Note content cannot be empty" +msgstr "" + +#: app/routes/client_notes.py:50 +msgid "Note added successfully" +msgstr "" + +#: app/routes/client_notes.py:52 +msgid "Error adding note" +msgstr "" + +#: app/routes/client_notes.py:55 app/routes/client_notes.py:57 +#, python-format +msgid "Error adding note: %(error)s" +msgstr "" + +#: app/routes/client_notes.py:71 app/routes/client_notes.py:117 +msgid "Note does not belong to this client" +msgstr "" + +#: app/routes/client_notes.py:76 +msgid "You do not have permission to edit this note" +msgstr "" + +#: app/routes/client_notes.py:91 app/templates/clients/view.html:549 +#: app/templates/clients/view.html:554 +msgid "Error updating note" +msgstr "" + +#: app/routes/client_notes.py:98 +msgid "Note updated successfully" +msgstr "" + +#: app/routes/client_notes.py:102 app/routes/client_notes.py:104 +#, python-format +msgid "Error updating note: %(error)s" +msgstr "" + +#: app/routes/client_notes.py:122 +msgid "You do not have permission to delete this note" +msgstr "" + +#: app/routes/client_notes.py:131 +msgid "Error deleting note" +msgstr "" + +#: app/routes/client_notes.py:138 +msgid "Note deleted successfully" +msgstr "" + +#: app/routes/client_notes.py:141 +#, python-format +msgid "Error deleting note: %(error)s" +msgstr "" + +#: app/routes/client_portal.py:33 app/routes/client_portal.py:40 +#: app/routes/client_portal.py:156 app/routes/client_portal.py:184 +#: app/routes/client_portal.py:193 app/routes/client_portal.py:197 +#: app/routes/client_portal.py:222 +msgid "Please log in to access the client portal." +msgstr "" + +#: app/routes/client_portal.py:47 app/templates/errors/403.html:16 +msgid "Access Denied" +msgstr "" + +#: app/routes/client_portal.py:48 app/templates/errors/403.html:3 +#: app/templates/errors/403.html:12 +msgid "403 Forbidden" +msgstr "" + +#: app/routes/client_portal.py:49 +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:51 +msgid "Your account may not have client portal access enabled" +msgstr "" + +#: app/routes/client_portal.py:52 +msgid "Your account may be inactive" +msgstr "" + +#: app/routes/client_portal.py:53 +msgid "You may not be assigned to a client" +msgstr "" + +#: app/routes/client_portal.py:68 app/templates/errors/404.html:3 +#: app/templates/errors/404.html:12 +msgid "Page Not Found" +msgstr "" + +#: app/routes/client_portal.py:69 +msgid "404 Not Found" +msgstr "" + +#: app/routes/client_portal.py:70 app/templates/errors/404.html:14 +msgid "The page you're looking for doesn't exist or has been moved." +msgstr "" + +#: app/routes/client_portal.py:85 app/templates/errors/500.html:3 +#: app/templates/errors/500.html:12 +msgid "Server Error" +msgstr "" + +#: app/routes/client_portal.py:86 +msgid "500 Internal Server Error" +msgstr "" + +#: app/routes/client_portal.py:87 +msgid "" +"An unexpected error occurred. Please try again later or contact support " +"if the problem persists." +msgstr "" + +#: app/routes/client_portal.py:160 +msgid "Client portal access is not enabled for your account." +msgstr "" + +#: app/routes/client_portal.py:165 +msgid "Your client account is inactive." +msgstr "" + +#: app/routes/client_portal.py:262 +msgid "Username and password are required." +msgstr "" + +#: app/routes/client_portal.py:269 +msgid "Invalid username or password." +msgstr "" + +#: app/routes/client_portal.py:276 +#, python-format +msgid "Welcome, %(client_name)s!" +msgstr "" + +#: app/routes/client_portal.py:290 +msgid "You have been logged out." +msgstr "" + +#: app/routes/client_portal.py:300 +msgid "Invalid or missing password setup token." +msgstr "" + +#: app/routes/client_portal.py:307 +msgid "Invalid or expired password setup token. Please request a new one." +msgstr "" + +#: app/routes/client_portal.py:316 app/routes/integrations.py:491 +msgid "Password is required." +msgstr "" + +#: app/routes/client_portal.py:332 +msgid "Could not set password due to a database error." +msgstr "" + +#: app/routes/client_portal.py:335 +msgid "Password set successfully! You can now log in to the portal." +msgstr "" + +#: app/routes/client_portal.py:361 app/routes/client_portal.py:432 +#: app/routes/client_portal.py:458 app/routes/client_portal.py:537 +msgid "Unable to load client portal data." +msgstr "" + +#: app/routes/client_portal.py:488 app/routes/client_portal.py:968 +msgid "Invoice not found." +msgstr "" + +#: app/routes/client_portal.py:521 app/routes/client_portal.py:873 +#: app/routes/client_portal.py:918 +msgid "Quote not found." +msgstr "" + +#: app/routes/client_portal.py:586 app/routes/client_portal.py:620 +#: app/routes/client_portal.py:712 +msgid "Issue reporting is not available." +msgstr "" + +#: app/routes/client_portal.py:637 app/routes/issues.py:196 +#: app/routes/issues.py:370 +msgid "Title is required." +msgstr "" + +#: app/routes/client_portal.py:654 app/routes/integrations.py:970 +#: app/routes/integrations.py:1105 app/routes/issues.py:207 +msgid "Invalid project selected." +msgstr "" + +#: app/routes/client_portal.py:683 app/routes/issues.py:225 +msgid "Could not create issue due to a database error." +msgstr "" + +#: app/routes/client_portal.py:696 +msgid "Issue reported successfully. We will review it shortly." +msgstr "" + +#: app/routes/client_portal.py:718 +msgid "Issue not found." +msgstr "" + +#: app/routes/client_portal.py:782 app/routes/client_portal.py:801 +#: app/routes/client_portal.py:836 app/routes/invoice_approvals.py:122 +msgid "Approval not found." +msgstr "" + +#: app/routes/client_portal.py:807 app/routes/client_portal.py:847 +msgid "No contact found for approval." +msgstr "" + +#: app/routes/client_portal.py:816 +msgid "Time entry approved successfully." +msgstr "" + +#: app/routes/client_portal.py:818 +#, python-format +msgid "Error approving time entry: %(error)s" +msgstr "" + +#: app/routes/client_portal.py:841 +msgid "Rejection reason is required." +msgstr "" + +#: app/routes/client_portal.py:854 +msgid "Time entry rejected." +msgstr "" + +#: app/routes/client_portal.py:856 +#, python-format +msgid "Error rejecting time entry: %(error)s" +msgstr "" + +#: app/routes/client_portal.py:877 +msgid "This quote cannot be accepted." +msgstr "" + +#: app/routes/client_portal.py:904 +msgid "Quote accepted successfully. We will contact you shortly." +msgstr "" + +#: app/routes/client_portal.py:922 +msgid "This quote cannot be rejected." +msgstr "" + +#: app/routes/client_portal.py:952 +msgid "Quote rejected. We appreciate your feedback." +msgstr "" + +#: app/routes/client_portal.py:973 +msgid "This invoice is already paid." +msgstr "" + +#: app/routes/client_portal.py:981 +msgid "" +"Online payment is not currently available. Please contact us for payment " +"instructions." +msgstr "" + +#: app/routes/client_portal.py:988 app/routes/payment_gateways.py:120 +msgid "Payment gateway not yet supported." +msgstr "" + +#: app/routes/client_portal.py:1004 +msgid "Project not found." +msgstr "" + +#: app/routes/client_portal.py:1010 +msgid "Comment cannot be empty." +msgstr "" + +#: app/routes/client_portal.py:1016 +msgid "No contact found for commenting." +msgstr "" + +#: app/routes/client_portal.py:1029 +msgid "Comment added successfully." +msgstr "" + +#: app/routes/client_portal.py:1102 +#, python-format +msgid "Marked %(count)d notifications as read." +msgstr "" + +#: app/routes/client_portal.py:1184 +msgid "Attachment not found or access denied." +msgstr "" + +#: app/routes/client_portal_customization.py:48 +#: app/routes/recurring_tasks.py:79 app/routes/time_approvals.py:47 +#: app/routes/webhooks.py:102 app/routes/webhooks.py:125 +#: app/routes/webhooks.py:168 app/routes/workflows.py:94 +#: app/routes/workflows.py:115 +msgid "Access denied" +msgstr "" + +#: app/routes/client_portal_customization.py:109 +msgid "File too large. Maximum 5MB." +msgstr "" + +#: app/routes/client_portal_customization.py:137 +msgid "Portal customization updated successfully" +msgstr "" + +#: app/routes/clients.py:71 +msgid "Search query is too long. Maximum 200 characters." +msgstr "" + +#: app/routes/clients.py:217 app/routes/clients.py:218 +msgid "You do not have permission to create clients" +msgstr "" + +#: app/routes/clients.py:247 app/routes/clients.py:543 +msgid "Client name is required" +msgstr "" + +#: app/routes/clients.py:261 app/routes/clients.py:550 +msgid "A client with this name already exists" +msgstr "" + +#: app/routes/clients.py:275 +msgid "Invalid email address" +msgstr "" + +#: app/routes/clients.py:284 app/routes/clients.py:558 app/routes/offers.py:90 +#: app/routes/offers.py:222 app/routes/projects.py:321 +#: app/routes/projects.py:853 app/routes/quotes.py:127 +msgid "Invalid hourly rate format" +msgstr "" + +#: app/routes/clients.py:296 app/routes/clients.py:567 +msgid "Prepaid hours must be a positive number." +msgstr "" + +#: app/routes/clients.py:308 app/routes/clients.py:579 +msgid "Prepaid reset day must be between 1 and 28." +msgstr "" + +#: app/routes/clients.py:326 app/routes/clients.py:327 +#: app/routes/clients.py:614 app/routes/projects.py:390 +#: app/routes/projects.py:923 +#, python-format +msgid "Custom field '%(field)s' is required" +msgstr "" + +#: app/routes/clients.py:352 +msgid "Could not create client due to a database error. Please check server logs." +msgstr "" + +#: app/routes/clients.py:527 +msgid "You do not have permission to edit clients" +msgstr "" + +#: app/routes/clients.py:592 +msgid "Portal username is required when enabling portal access." +msgstr "" + +#: app/routes/clients.py:599 +msgid "This portal username is already in use by another client." +msgstr "" + +#: app/routes/clients.py:645 +msgid "Could not update client due to a database error. Please check server logs." +msgstr "" + +#: app/routes/clients.py:668 +msgid "You do not have permission to send portal emails" +msgstr "" + +#: app/routes/clients.py:673 +msgid "Client portal is not enabled for this client." +msgstr "" + +#: app/routes/clients.py:677 +msgid "Portal username is not set for this client." +msgstr "" + +#: app/routes/clients.py:681 +msgid "Client email address is not set. Cannot send password setup email." +msgstr "" + +#: app/routes/clients.py:688 +msgid "Could not generate password setup token due to a database error." +msgstr "" + +#: app/routes/clients.py:703 +#, python-format +msgid "Password setup email sent successfully to %(email)s" +msgstr "" + +#: app/routes/clients.py:715 +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:722 +msgid "" +"Failed to send password setup email. Please check email configuration and" +" server logs for details." +msgstr "" + +#: app/routes/clients.py:728 +#, python-format +msgid "An error occurred while sending the email: %(error)s" +msgstr "" + +#: app/routes/clients.py:741 +msgid "You do not have permission to archive clients" +msgstr "" + +#: app/routes/clients.py:745 +msgid "Client is already inactive" +msgstr "" + +#: app/routes/clients.py:771 +msgid "You do not have permission to activate clients" +msgstr "" + +#: app/routes/clients.py:775 +msgid "Client is already active" +msgstr "" + +#: app/routes/clients.py:802 app/routes/clients.py:855 +msgid "You do not have permission to delete clients" +msgstr "" + +#: app/routes/clients.py:807 +msgid "" +"Cannot delete client with existing projects. Please delete all projects " +"first." +msgstr "" + +#: app/routes/clients.py:813 +msgid "" +"Cannot delete client with existing invoices. Please delete all invoices " +"first before deleting the client." +msgstr "" + +#: app/routes/clients.py:827 +msgid "Could not delete client due to a database error. Please check server logs." +msgstr "" + +#: app/routes/clients.py:861 +msgid "No clients selected for deletion" +msgstr "" + +#: app/routes/clients.py:911 +msgid "" +"Could not delete clients due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/clients.py:932 +msgid "No clients were deleted" +msgstr "" + +#: app/routes/clients.py:943 +msgid "You do not have permission to change client status" +msgstr "" + +#: app/routes/clients.py:950 +msgid "No clients selected" +msgstr "" + +#: app/routes/clients.py:954 app/routes/projects.py:1209 +#: app/routes/tasks.py:609 +msgid "Invalid status" +msgstr "" + +#: app/routes/clients.py:985 +msgid "" +"Could not update client status due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/clients.py:1002 +msgid "No clients were updated" +msgstr "" + +#: app/routes/clients.py:1184 app/routes/comments.py:284 +#: app/routes/expenses.py:1254 app/routes/invoices.py:1468 +#: app/routes/projects.py:1877 app/routes/quotes.py:757 +#: app/routes/quotes.py:1572 app/routes/team_chat.py:433 +msgid "No file provided" +msgstr "" + +#: app/routes/clients.py:1193 app/routes/comments.py:293 +#: app/routes/projects.py:1886 app/routes/quotes.py:766 +msgid "File type not allowed" +msgstr "" + +#: app/routes/clients.py:1202 app/routes/comments.py:302 +#: app/routes/projects.py:1895 app/routes/quotes.py:775 +msgid "File size exceeds maximum allowed size (10 MB)" +msgstr "" + +#: app/routes/clients.py:1239 app/routes/clients.py:1254 +#: app/routes/comments.py:335 app/routes/projects.py:1932 +#: app/routes/projects.py:1947 app/routes/quotes.py:820 +msgid "" +"Could not upload attachment due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/clients.py:1251 app/routes/projects.py:1944 +msgid "" +"The attachments feature requires a database migration. Please run: flask " +"db upgrade" +msgstr "" + +#: app/routes/clients.py:1276 app/routes/comments.py:352 +#: app/routes/projects.py:1969 app/routes/quotes.py:841 +msgid "Attachment uploaded successfully" +msgstr "" + +#: app/routes/clients.py:1294 app/routes/comments.py:367 +#: app/routes/projects.py:1987 app/routes/quotes.py:864 +#: app/routes/team_chat.py:381 +msgid "File not found" +msgstr "" + +#: app/routes/clients.py:1326 app/routes/projects.py:2020 +#: app/routes/quotes.py:902 +msgid "" +"Could not delete attachment due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/clients.py:1336 app/routes/comments.py:400 +#: app/routes/projects.py:2030 app/routes/quotes.py:912 +msgid "Attachment deleted successfully" +msgstr "" + +#: app/routes/comments.py:28 app/routes/comments.py:115 +msgid "Comment content cannot be empty" +msgstr "" + +#: app/routes/comments.py:32 +msgid "Comment must be associated with a project, task, or quote" +msgstr "" + +#: app/routes/comments.py:38 +msgid "Comment cannot be associated with multiple targets" +msgstr "" + +#: app/routes/comments.py:62 +msgid "Invalid parent comment" +msgstr "" + +#: app/routes/comments.py:81 +msgid "Comment added successfully" +msgstr "" + +#: app/routes/comments.py:83 +msgid "Error adding comment" +msgstr "" + +#: app/routes/comments.py:86 +#, python-format +msgid "Error adding comment: %(error)s" +msgstr "" + +#: app/routes/comments.py:107 +msgid "You do not have permission to edit this comment" +msgstr "" + +#: app/routes/comments.py:124 +msgid "Comment updated successfully" +msgstr "" + +#: app/routes/comments.py:137 +#, python-format +msgid "Error updating comment: %(error)s" +msgstr "" + +#: app/routes/comments.py:150 +msgid "You do not have permission to delete this comment" +msgstr "" + +#: app/routes/comments.py:165 +msgid "Comment deleted successfully" +msgstr "" + +#: app/routes/comments.py:178 +#, python-format +msgid "Error deleting comment: %(error)s" +msgstr "" + +#: app/routes/comments.py:272 +msgid "You do not have permission to add attachments to this comment" +msgstr "" + +#: app/routes/comments.py:348 +#, python-format +msgid "Error uploading attachment: %(error)s" +msgstr "" + +#: app/routes/comments.py:384 app/routes/quotes.py:885 +msgid "You do not have permission to delete this attachment" +msgstr "" + +#: app/routes/comments.py:402 +msgid "Error deleting attachment" +msgstr "" + +#: app/routes/comments.py:404 +#, python-format +msgid "Error deleting attachment: %(error)s" +msgstr "" + +#: app/routes/contacts.py:60 +msgid "Contact created successfully" +msgstr "" + +#: app/routes/contacts.py:64 +#, python-format +msgid "Error creating contact: %(error)s" +msgstr "" + +#: app/routes/contacts.py:107 +msgid "Contact updated successfully" +msgstr "" + +#: app/routes/contacts.py:111 +#, python-format +msgid "Error updating contact: %(error)s" +msgstr "" + +#: app/routes/contacts.py:127 +msgid "Contact deleted successfully" +msgstr "" + +#: app/routes/contacts.py:130 +#, python-format +msgid "Error deleting contact: %(error)s" +msgstr "" + +#: app/routes/contacts.py:144 +msgid "Contact set as primary" +msgstr "" + +#: app/routes/contacts.py:147 +#, python-format +msgid "Error setting primary contact: %(error)s" +msgstr "" + +#: app/routes/contacts.py:190 +msgid "Communication recorded successfully" +msgstr "" + +#: app/routes/contacts.py:194 +#, python-format +msgid "Error recording communication: %(error)s" +msgstr "" + +#: app/routes/custom_field_definitions.py:42 +#: app/routes/custom_field_definitions.py:99 app/routes/link_templates.py:52 +#: app/routes/link_templates.py:108 +msgid "Field key is required" +msgstr "" + +#: app/routes/custom_field_definitions.py:46 +#: app/routes/custom_field_definitions.py:103 app/routes/kanban.py:238 +msgid "Label is required" +msgstr "" + +#: app/routes/custom_field_definitions.py:51 +#: app/routes/custom_field_definitions.py:108 +msgid "Field key must contain only letters, numbers, and underscores" +msgstr "" + +#: app/routes/custom_field_definitions.py:57 +#: app/routes/custom_field_definitions.py:117 +msgid "A custom field definition with this key already exists" +msgstr "" + +#: app/routes/custom_field_definitions.py:73 +msgid "Could not create custom field definition due to a database error." +msgstr "" + +#: app/routes/custom_field_definitions.py:76 +msgid "Custom field definition created successfully" +msgstr "" + +#: app/routes/custom_field_definitions.py:130 +msgid "Could not update custom field definition due to a database error." +msgstr "" + +#: app/routes/custom_field_definitions.py:133 +msgid "Custom field definition updated successfully" +msgstr "" + +#: app/routes/custom_field_definitions.py:166 +msgid "Could not remove custom field from clients due to a database error." +msgstr "" + +#: app/routes/custom_field_definitions.py:173 +msgid "Could not delete custom field definition due to a database error." +msgstr "" + +#: app/routes/custom_field_definitions.py:177 +#, python-format +msgid "" +"Custom field definition deleted successfully. The field was removed from " +"%(count)d client(s)." +msgstr "" + +#: app/routes/custom_field_definitions.py:181 +msgid "Custom field definition deleted successfully" +msgstr "" + +#: app/routes/custom_reports.py:37 app/routes/custom_reports.py:474 +msgid "You do not have permission to edit this report." +msgstr "" + +#: app/routes/custom_reports.py:155 +#, python-format +msgid "Report %(action)s successfully" +msgstr "" + +#: app/routes/custom_reports.py:181 +msgid "You do not have permission to view this report." +msgstr "" + +#: app/routes/custom_reports.py:516 +msgid "You do not have permission to delete this report view." +msgstr "" + +#: app/routes/custom_reports.py:525 +#, python-format +msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +msgstr "" + +#: app/routes/custom_reports.py:530 +#, python-format +msgid "Report view \"%(name)s\" deleted successfully." +msgstr "" + +#: app/routes/custom_reports.py:532 +msgid "Could not delete report view due to a database error" +msgstr "" + +#: app/routes/deals.py:104 app/routes/deals.py:183 +msgid "Invalid deal value" +msgstr "" + +#: app/routes/deals.py:141 +msgid "Deal created successfully" +msgstr "" + +#: app/routes/deals.py:145 +#, python-format +msgid "Error creating deal: %(error)s" +msgstr "" + +#: app/routes/deals.py:215 +msgid "Deal updated successfully" +msgstr "" + +#: app/routes/deals.py:219 +#, python-format +msgid "Error updating deal: %(error)s" +msgstr "" + +#: app/routes/deals.py:249 +msgid "Deal closed as won" +msgstr "" + +#: app/routes/deals.py:252 app/routes/deals.py:280 +#, python-format +msgid "Error closing deal: %(error)s" +msgstr "" + +#: app/routes/deals.py:277 +msgid "Deal closed as lost" +msgstr "" + +#: app/routes/deals.py:313 app/routes/leads.py:325 +msgid "Activity recorded successfully" +msgstr "" + +#: app/routes/deals.py:317 app/routes/leads.py:329 +#, python-format +msgid "Error recording activity: %(error)s" +msgstr "" + +#: app/routes/expense_categories.py:51 app/routes/expense_categories.py:141 +msgid "Category name is required" +msgstr "" + +#: app/routes/expense_categories.py:86 +msgid "Expense category created successfully" +msgstr "" + +#: app/routes/expense_categories.py:91 app/routes/expense_categories.py:98 +msgid "Error creating expense category" +msgstr "" + +#: app/routes/expense_categories.py:172 +msgid "Expense category updated successfully" +msgstr "" + +#: app/routes/expense_categories.py:177 app/routes/expense_categories.py:184 +msgid "Error updating expense category" +msgstr "" + +#: app/routes/expense_categories.py:201 +msgid "Expense category deactivated successfully" +msgstr "" + +#: app/routes/expense_categories.py:205 app/routes/expense_categories.py:211 +msgid "Error deactivating expense category" +msgstr "" + +#: app/routes/expenses.py:273 +msgid "Title is required" +msgstr "" + +#: app/routes/expenses.py:277 +msgid "Category is required" +msgstr "" + +#: app/routes/expenses.py:281 +msgid "Amount is required" +msgstr "" + +#: app/routes/expenses.py:285 +msgid "Expense date is required" +msgstr "" + +#: app/routes/expenses.py:292 app/routes/expenses.py:537 +#: app/routes/expenses.py:1378 app/routes/mileage.py:189 +#: app/routes/per_diem.py:143 app/routes/projects.py:1473 +#: app/routes/projects.py:1544 app/routes/reports.py:135 +#: app/routes/reports.py:295 app/routes/reports.py:452 +#: app/routes/reports.py:672 app/routes/reports.py:765 +#: app/routes/reports.py:840 app/routes/reports.py:928 +#: app/routes/reports.py:1084 app/routes/reports.py:1159 +#: app/routes/reports.py:1310 app/routes/reports.py:1512 +#: app/routes/timer.py:1447 app/routes/weekly_goals.py:87 +msgid "Invalid date format" +msgstr "" + +#: app/routes/expenses.py:300 app/routes/expenses.py:545 +#: app/routes/expenses.py:1386 app/routes/projects.py:1466 +#: app/routes/projects.py:1537 +msgid "Invalid amount format" +msgstr "" + +#: app/routes/expenses.py:320 app/routes/issues.py:191 +#: app/routes/mileage.py:200 app/routes/per_diem.py:199 +#: app/routes/recurring_invoices.py:102 app/routes/timer.py:88 +#: app/routes/timer.py:1126 +msgid "Selected project does not match the locked client." +msgstr "" + +#: app/routes/expenses.py:359 app/routes/expenses.py:614 +msgid "Error saving receipt file. Please check directory permissions." +msgstr "" + +#: app/routes/expenses.py:362 app/routes/expenses.py:617 +msgid "Error uploading receipt file." +msgstr "" + +#: app/routes/expenses.py:390 +msgid "Expense created successfully" +msgstr "" + +#: app/routes/expenses.py:405 app/routes/expenses.py:410 +#: app/routes/expenses.py:1432 app/routes/expenses.py:1437 +msgid "Error creating expense" +msgstr "" + +#: app/routes/expenses.py:422 +msgid "You do not have permission to view this expense" +msgstr "" + +#: app/routes/expenses.py:490 +msgid "You do not have permission to edit this expense" +msgstr "" + +#: app/routes/expenses.py:495 +msgid "Cannot edit approved or reimbursed expenses" +msgstr "" + +#: app/routes/expenses.py:530 app/routes/expenses.py:1371 +#: app/routes/mileage.py:182 app/routes/per_diem.py:135 +#: app/routes/per_diem.py:594 app/routes/per_diem.py:650 +msgid "Please fill in all required fields" +msgstr "" + +#: app/routes/expenses.py:622 +msgid "Expense updated successfully" +msgstr "" + +#: app/routes/expenses.py:627 app/routes/expenses.py:632 +msgid "Error updating expense" +msgstr "" + +#: app/routes/expenses.py:644 +msgid "You do not have permission to delete this expense" +msgstr "" + +#: app/routes/expenses.py:649 +msgid "Cannot delete approved or invoiced expenses" +msgstr "" + +#: app/routes/expenses.py:673 +msgid "Expense deleted successfully" +msgstr "" + +#: app/routes/expenses.py:677 app/routes/expenses.py:681 +msgid "Error deleting expense" +msgstr "" + +#: app/routes/expenses.py:693 +msgid "No expenses selected for deletion" +msgstr "" + +#: app/routes/expenses.py:748 +msgid "" +"Could not delete expenses due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/expenses.py:753 +#, python-format +msgid "Successfully deleted %(count)d expense(s)" +msgstr "" + +#: app/routes/expenses.py:757 +#, python-format +msgid "Skipped %(count)d expense(s): %(errors)s" +msgstr "" + +#: app/routes/expenses.py:771 +msgid "No expenses selected" +msgstr "" + +#: app/routes/expenses.py:777 app/routes/invoices.py:719 +#: app/routes/mileage.py:457 app/routes/payments.py:542 +#: app/routes/per_diem.py:447 app/routes/tasks.py:895 +msgid "Invalid status value" +msgstr "" + +#: app/routes/expenses.py:804 +msgid "Could not update expenses due to a database error" +msgstr "" + +#: app/routes/expenses.py:808 +#, python-format +msgid "Successfully updated %(count)d expense(s) to %(status)s" +msgstr "" + +#: app/routes/expenses.py:813 +#, python-format +msgid "Skipped %(count)d expense(s) (no permission)" +msgstr "" + +#: app/routes/expenses.py:823 +msgid "Only administrators can approve expenses" +msgstr "" + +#: app/routes/expenses.py:829 +msgid "Only pending expenses can be approved" +msgstr "" + +#: app/routes/expenses.py:837 +msgid "Expense approved successfully" +msgstr "" + +#: app/routes/expenses.py:841 app/routes/expenses.py:845 +msgid "Error approving expense" +msgstr "" + +#: app/routes/expenses.py:855 +msgid "Only administrators can reject expenses" +msgstr "" + +#: app/routes/expenses.py:861 +msgid "Only pending expenses can be rejected" +msgstr "" + +#: app/routes/expenses.py:867 app/routes/mileage.py:561 +#: app/routes/per_diem.py:539 app/routes/quotes.py:1016 +#: app/routes/time_approvals.py:86 +msgid "Rejection reason is required" +msgstr "" + +#: app/routes/expenses.py:873 +msgid "Expense rejected" +msgstr "" + +#: app/routes/expenses.py:877 app/routes/expenses.py:881 +msgid "Error rejecting expense" +msgstr "" + +#: app/routes/expenses.py:891 +msgid "Only administrators can mark expenses as reimbursed" +msgstr "" + +#: app/routes/expenses.py:897 +msgid "Only approved expenses can be marked as reimbursed" +msgstr "" + +#: app/routes/expenses.py:901 +msgid "This expense is not marked as reimbursable" +msgstr "" + +#: app/routes/expenses.py:908 +msgid "Expense marked as reimbursed" +msgstr "" + +#: app/routes/expenses.py:912 app/routes/expenses.py:916 +msgid "Error marking expense as reimbursed" +msgstr "" + +#: app/routes/expenses.py:1250 +msgid "OCR is not available. Please contact your administrator." +msgstr "" + +#: app/routes/expenses.py:1264 +msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +msgstr "" + +#: app/routes/expenses.py:1319 +msgid "" +"Receipt scanned successfully! You can now create an expense with the " +"extracted data." +msgstr "" + +#: app/routes/expenses.py:1324 +msgid "Error scanning receipt. Please try again or enter the expense manually." +msgstr "" + +#: app/routes/expenses.py:1337 +msgid "No scanned receipt data found. Please scan a receipt first." +msgstr "" + +#: app/routes/expenses.py:1423 +msgid "Expense created successfully from scanned receipt" +msgstr "" + +#: app/routes/integrations.py:67 app/routes/integrations.py:1240 +msgid "Integration provider not available." +msgstr "" + +#: app/routes/integrations.py:73 app/templates/integrations/manage.html:639 +msgid "Trello integration must be configured by an administrator." +msgstr "" + +#: app/routes/integrations.py:94 +msgid "Only administrators can set up global integrations." +msgstr "" + +#: app/routes/integrations.py:116 app/routes/integrations.py:235 +msgid "Could not initialize connector." +msgstr "" + +#: app/routes/integrations.py:146 +msgid "" +"Google Calendar OAuth credentials need to be configured first. " +"Redirecting to setup..." +msgstr "" + +#: app/routes/integrations.py:150 +msgid "" +"Google Calendar integration needs to be configured by an administrator " +"first." +msgstr "" + +#: app/routes/integrations.py:152 +msgid "OAuth credentials not configured. Please configure them first." +msgstr "" + +#: app/routes/integrations.py:155 +msgid "" +"Integration not configured. Please ask an administrator to set up OAuth " +"credentials." +msgstr "" + +#: app/routes/integrations.py:171 +#, python-format +msgid "Authorization failed: %(error)s" +msgstr "" + +#: app/routes/integrations.py:175 +msgid "Authorization code not received." +msgstr "" + +#: app/routes/integrations.py:186 app/routes/integrations.py:702 +#: app/routes/integrations.py:750 app/routes/integrations.py:787 +#: app/routes/integrations.py:808 app/routes/integrations.py:833 +msgid "Integration not found." +msgstr "" + +#: app/routes/integrations.py:222 +msgid "Invalid state parameter. Please try connecting again." +msgstr "" + +#: app/routes/integrations.py:257 +msgid "Integration connected successfully!" +msgstr "" + +#: app/routes/integrations.py:261 +#, python-format +msgid "Integration connected but connection test failed: %(message)s" +msgstr "" + +#: app/routes/integrations.py:272 +#, python-format +msgid "Error connecting integration: %(error)s" +msgstr "" + +#: app/routes/integrations.py:325 app/routes/integrations.py:1267 +msgid "Only administrators can configure global integrations." +msgstr "" + +#: app/routes/integrations.py:338 +msgid "Trello API Key is required." +msgstr "" + +#: app/routes/integrations.py:344 +msgid "Trello API Secret is required for new setup." +msgstr "" + +#: app/routes/integrations.py:370 +msgid "OAuth Client ID is required." +msgstr "" + +#: app/routes/integrations.py:376 +msgid "OAuth Client Secret is required for new setup." +msgstr "" + +#: app/routes/integrations.py:431 +msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +msgstr "" + +#: app/routes/integrations.py:434 +msgid "GitLab Instance URL format is invalid." +msgstr "" + +#: app/routes/integrations.py:450 +msgid "Integration credentials updated successfully." +msgstr "" + +#: app/routes/integrations.py:453 +msgid "" +"Users can now connect their Google Calendar. They will be automatically " +"redirected to Google for authorization." +msgstr "" + +#: app/routes/integrations.py:458 +msgid "Failed to update credentials." +msgstr "" + +#: app/routes/integrations.py:464 +msgid "This action is only available for CalDAV integrations." +msgstr "" + +#: app/routes/integrations.py:470 app/routes/integrations.py:516 +msgid "Integration not found. Please connect the integration first." +msgstr "" + +#: app/routes/integrations.py:478 app/routes/integrations.py:958 +msgid "Username is required." +msgstr "" + +#: app/routes/integrations.py:484 app/routes/integrations.py:960 +msgid "Password is required for new setup." +msgstr "" + +#: app/routes/integrations.py:506 +msgid "CalDAV credentials updated successfully." +msgstr "" + +#: app/routes/integrations.py:509 +#, python-format +msgid "Failed to update CalDAV credentials: %(message)s" +msgstr "" + +#: app/routes/integrations.py:565 +#, python-format +msgid "Invalid number for field %(field)s" +msgstr "" + +#: app/routes/integrations.py:570 app/routes/integrations.py:589 +#, python-format +msgid "Field %(field)s is required" +msgstr "" + +#: app/routes/integrations.py:581 app/routes/integrations.py:1318 +#, python-format +msgid "Invalid JSON for field %(field)s" +msgstr "" + +#: app/routes/integrations.py:612 +msgid "Integration configuration updated successfully." +msgstr "" + +#: app/routes/integrations.py:615 +msgid "Failed to update configuration." +msgstr "" + +#: app/routes/integrations.py:772 +msgid "Connection test successful!" +msgstr "" + +#: app/routes/integrations.py:774 +#, python-format +msgid "Connection test failed: %(message)s" +msgstr "" + +#: app/routes/integrations.py:793 +msgid "Integration deleted successfully." +msgstr "" + +#: app/routes/integrations.py:817 +msgid "Integration reset successfully. You can now reconfigure it." +msgstr "" + +#: app/routes/integrations.py:838 +msgid "Connector not available." +msgstr "" + +#: app/routes/integrations.py:853 +#, python-format +msgid "Sync completed successfully. %(details)s" +msgstr "" + +#: app/routes/integrations.py:857 +#, python-format +msgid "Sync failed: %(message)s" +msgstr "" + +#: app/routes/integrations.py:877 +#, python-format +msgid "Error during sync: %(error)s" +msgstr "" + +#: app/routes/integrations.py:927 +msgid "Either server URL or calendar URL is required." +msgstr "" + +#: app/routes/integrations.py:935 +msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +msgstr "" + +#: app/routes/integrations.py:937 app/routes/integrations.py:1096 +msgid "Server URL format is invalid." +msgstr "" + +#: app/routes/integrations.py:944 +msgid "Calendar URL must be a valid URL." +msgstr "" + +#: app/routes/integrations.py:946 +msgid "Calendar URL format is invalid." +msgstr "" + +#: app/routes/integrations.py:968 app/routes/integrations.py:1103 +msgid "Selected project not found or is not active." +msgstr "" + +#: app/routes/integrations.py:975 +msgid "Lookback days must be between 1 and 365." +msgstr "" + +#: app/routes/integrations.py:977 app/routes/integrations.py:1112 +msgid "Lookback days must be a valid number." +msgstr "" + +#: app/routes/integrations.py:1021 +#, python-format +msgid "Failed to save credentials: %(message)s" +msgstr "" + +#: app/routes/integrations.py:1035 +msgid "CalDAV integration configured successfully." +msgstr "" + +#: app/routes/integrations.py:1038 +msgid "Failed to save CalDAV configuration." +msgstr "" + +#: app/routes/integrations.py:1089 +msgid "ActivityWatch server URL is required." +msgstr "" + +#: app/routes/integrations.py:1094 +msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +msgstr "" + +#: app/routes/integrations.py:1110 +msgid "Lookback days must be between 1 and 90." +msgstr "" + +#: app/routes/integrations.py:1147 +msgid "ActivityWatch integration configured successfully." +msgstr "" + +#: app/routes/integrations.py:1151 +#, python-format +msgid "Configuration saved but connection test failed: %(message)s" +msgstr "" + +#: app/routes/integrations.py:1156 +msgid "Failed to save ActivityWatch configuration." +msgstr "" + +#: app/routes/integrations.py:1233 +msgid "Setup wizard not available for this integration." +msgstr "" + +#: app/routes/integrations.py:1246 +msgid "Connector class not found." +msgstr "" + +#: app/routes/integrations.py:1379 +msgid "Integration configured successfully!" +msgstr "" + +#: app/routes/integrations.py:1387 +msgid "Failed to save configuration." +msgstr "" + +#: app/routes/integrations.py:1403 +msgid "OAuth Setup" +msgstr "" + +#: app/routes/integrations.py:1403 app/routes/integrations.py:1409 +msgid "Connection Test" +msgstr "" + +#: app/routes/integrations.py:1403 app/routes/integrations.py:1405 +#: app/routes/integrations.py:1406 app/routes/integrations.py:1407 +#: app/routes/integrations.py:1408 +msgid "Sync Config" +msgstr "" + +#: app/routes/integrations.py:1403 app/templates/admin/modules.html:118 +#: app/templates/admin/modules.html:160 +#: app/templates/admin/oidc_setup_wizard.html:41 +#: app/templates/admin/quote_pdf_layout.html:1701 +msgid "Advanced" +msgstr "" + +#: app/routes/integrations.py:1403 app/routes/integrations.py:1404 +#: app/routes/integrations.py:1405 app/routes/integrations.py:1406 +#: app/routes/integrations.py:1407 app/routes/integrations.py:1408 +#: app/routes/integrations.py:1409 app/routes/integrations.py:1410 +#: app/routes/integrations.py:1411 +#: app/templates/analytics/dashboard_improved.html:224 +#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:88 +#: app/templates/tasks/create.html:461 app/templates/tasks/edit.html:97 +#: app/templates/tasks/edit.html:654 app/templates/tasks/my_tasks.html:74 +#: app/templates/tasks/my_tasks.html:128 app/utils/i18n_helpers.py:17 +#: app/utils/i18n_helpers.py:29 +msgid "Review" +msgstr "" + +#: app/routes/integrations.py:1404 +msgid "Instance" +msgstr "" + +#: app/routes/integrations.py:1404 app/routes/integrations.py:1405 +#: app/routes/integrations.py:1406 app/routes/integrations.py:1407 +#: app/routes/integrations.py:1408 app/routes/integrations.py:1410 +#: app/routes/integrations.py:1411 +msgid "OAuth" +msgstr "" + +#: app/routes/integrations.py:1404 app/routes/integrations.py:1407 +#: app/templates/integrations/wizard_github.html:50 +#: app/templates/integrations/wizard_github.html:197 +msgid "Repositories" +msgstr "" + +#: app/routes/integrations.py:1404 +msgid "Sync Settings" +msgstr "" + +#: app/routes/integrations.py:1405 app/templates/leads/list.html:51 +#: app/templates/leads/view.html:41 +msgid "Company" +msgstr "" + +#: app/routes/integrations.py:1405 app/routes/integrations.py:1406 +msgid "Mappings" +msgstr "" + +#: app/routes/integrations.py:1406 +msgid "Tenant" +msgstr "" + +#: app/routes/integrations.py:1407 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:838 +msgid "Webhooks" +msgstr "" + +#: app/routes/integrations.py:1408 +msgid "Workspace" +msgstr "" + +#: app/routes/integrations.py:1408 app/templates/admin/oidc_user_detail.html:61 +#: app/templates/analytics/mobile_dashboard.html:49 +#: app/templates/auth/login.html:35 app/templates/base.html:370 +#: app/templates/base.html:1151 app/templates/client_portal/base.html:255 +#: app/templates/client_portal/base.html:340 +#: app/templates/client_portal/dashboard.html:123 +#: 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/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/projects/time_entries_overview.html:8 +#: app/templates/reports/builder.html:356 +#: app/templates/reports/unpaid_hours_report.html:76 +msgid "Projects" +msgstr "" + +#: app/routes/integrations.py:1409 +msgid "API Keys" +msgstr "" + +#: app/routes/integrations.py:1410 app/routes/integrations.py:1411 +#: app/templates/admin/integrations/setup.html:100 +#: app/templates/integrations/manage.html:125 +#: 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 "" + +#: app/routes/integrations.py:1422 +#, python-format +msgid "%(name)s Setup Wizard" +msgstr "" + +#: app/routes/integrations.py:1423 +#, python-format +msgid "Guided step-by-step configuration for %(name)s" +msgstr "" + +#: app/routes/integrations.py:1461 +msgid "Integration not found" +msgstr "" + +#: app/routes/integrations.py:1466 +msgid "Connector not available" +msgstr "" + +#: app/routes/inventory.py:176 +msgid "SKU is required" +msgstr "" + +#: app/routes/inventory.py:180 +msgid "Name is required" +msgstr "" + +#: app/routes/inventory.py:187 +#, python-format +msgid "Invalid SKU: %(error)s" +msgstr "" + +#: app/routes/inventory.py:194 +#, python-format +msgid "Invalid name: %(error)s" +msgstr "" + +#: app/routes/inventory.py:200 app/routes/inventory.py:430 +msgid "SKU already exists. Please use a different SKU." +msgstr "" + +#: app/routes/inventory.py:280 +msgid "Stock item created successfully." +msgstr "" + +#: app/routes/inventory.py:285 +#, python-format +msgid "Error creating stock item: %(error)s" +msgstr "" + +#: app/routes/inventory.py:547 +msgid "Stock item updated successfully." +msgstr "" + +#: app/routes/inventory.py:552 +#, python-format +msgid "Error updating stock item: %(error)s" +msgstr "" + +#: app/routes/inventory.py:572 +msgid "Cannot delete stock item with existing stock or movement history." +msgstr "" + +#: app/routes/inventory.py:580 +msgid "Stock item deleted successfully." +msgstr "" + +#: app/routes/inventory.py:584 +#, python-format +msgid "Error deleting stock item: %(error)s" +msgstr "" + +#: app/routes/inventory.py:622 app/routes/inventory.py:692 +msgid "Warehouse code already exists. Please use a different code." +msgstr "" + +#: app/routes/inventory.py:641 +msgid "Warehouse created successfully." +msgstr "" + +#: app/routes/inventory.py:646 +#, python-format +msgid "Error creating warehouse: %(error)s" +msgstr "" + +#: app/routes/inventory.py:708 +msgid "Warehouse updated successfully." +msgstr "" + +#: app/routes/inventory.py:713 +#, python-format +msgid "Error updating warehouse: %(error)s" +msgstr "" + +#: app/routes/inventory.py:729 +msgid "" +"Cannot delete warehouse with existing stock. Please transfer or remove " +"all stock first." +msgstr "" + +#: app/routes/inventory.py:737 +msgid "Warehouse deleted successfully." +msgstr "" + +#: app/routes/inventory.py:741 +#, python-format +msgid "Error deleting warehouse: %(error)s" +msgstr "" + +#: app/routes/inventory.py:927 app/routes/inventory.py:1003 +msgid "Stock item is not trackable. Devaluation requires trackable items." +msgstr "" + +#: app/routes/inventory.py:929 +msgid "Devaluation quantity must be positive" +msgstr "" + +#: app/routes/inventory.py:933 app/routes/inventory.py:1007 +msgid "Stock item must have a default cost to perform devaluation" +msgstr "" + +#: app/templates/inventory/movements/form.html +msgid "Devaluation requires a trackable item with a default cost." +msgstr "" + +#: app/routes/inventory.py:938 +msgid "Devaluation percent is required when using percent method" +msgstr "" + +#: app/routes/inventory.py:942 app/routes/inventory.py:1016 +msgid "Invalid devaluation percent value" +msgstr "" + +#: app/routes/inventory.py:944 app/routes/inventory.py:1018 +msgid "Devaluation percent cannot be negative" +msgstr "" + +#: app/routes/inventory.py:946 app/routes/inventory.py:1020 +msgid "Devaluation percent cannot exceed 100%" +msgstr "" + +#: app/routes/inventory.py:950 +msgid "New unit cost is required when using fixed cost method" +msgstr "" + +#: app/routes/inventory.py:954 app/routes/inventory.py:1028 +msgid "Invalid unit cost value" +msgstr "" + +#: app/routes/inventory.py:956 app/routes/inventory.py:1030 +msgid "Unit cost cannot be negative" +msgstr "" + +#: app/routes/inventory.py:958 app/routes/inventory.py:1032 +msgid "Invalid devaluation method" +msgstr "" + +#: app/routes/inventory.py:963 app/routes/inventory.py:1041 +#: app/routes/inventory.py:1052 +#, python-format +msgid "" +"Devaluation cost (%(devalued)s) cannot be greater than original cost " +"(%(original)s)" +msgstr "" + +#: app/routes/inventory.py:974 +#, python-format +msgid "" +"Insufficient stock to devalue. Available: %(available)s, Requested: " +"%(requested)s" +msgstr "" + +#: app/routes/inventory.py:989 +msgid "Stock devaluation recorded successfully." +msgstr "" + +#: app/routes/inventory.py:996 +msgid "Return movements must use a positive quantity" +msgstr "" + +#: app/routes/inventory.py:998 +msgid "Waste movements must use a negative quantity" +msgstr "" + +#: app/routes/inventory.py:1012 +msgid "Devaluation percent is required when devaluation is enabled" +msgstr "" + +#: app/routes/inventory.py:1024 +msgid "New unit cost is required when devaluation is enabled" +msgstr "" + +#: app/routes/inventory.py:1063 +#, python-format +msgid "" +"Insufficient stock to waste. Available: %(available)s, Requested: " +"%(requested)s" +msgstr "" + +#: app/routes/inventory.py:1086 +#, python-format +msgid "Failed to devalue stock before waste: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1110 +#, python-format +msgid "Failed to record movement: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1125 +msgid "Return movement recorded successfully with devaluation applied." +msgstr "" + +#: app/routes/inventory.py:1127 +msgid "Waste movement recorded successfully with devaluation applied." +msgstr "" + +#: app/routes/inventory.py:1129 +msgid "Stock movement recorded successfully." +msgstr "" + +#: app/routes/inventory.py:1135 +#, python-format +msgid "Error: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1139 +#, python-format +msgid "Error recording stock movement: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1211 +msgid "Source and destination warehouses must be different." +msgstr "" + +#: app/routes/inventory.py:1224 +msgid "Insufficient stock available in source warehouse." +msgstr "" + +#: app/routes/inventory.py:1240 +msgid "Stock item not found." +msgstr "" + +#: app/routes/inventory.py:1243 +msgid "Source warehouse not found." +msgstr "" + +#: app/routes/inventory.py:1246 +msgid "Destination warehouse not found." +msgstr "" + +#: app/routes/inventory.py:1289 +msgid "Stock transfer completed successfully." +msgstr "" + +#: app/routes/inventory.py:1294 +#, python-format +msgid "Error creating transfer: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1394 +msgid "Stock adjustment recorded successfully." +msgstr "" + +#: app/routes/inventory.py:1399 +#, python-format +msgid "Error recording adjustment: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1530 +msgid "Reservation fulfilled successfully." +msgstr "" + +#: app/routes/inventory.py:1533 +#, python-format +msgid "Error fulfilling reservation: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1551 +msgid "Reservation cancelled successfully." +msgstr "" + +#: app/routes/inventory.py:1554 +#, python-format +msgid "Error cancelling reservation: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1598 +#, python-format +msgid "Supplier with code '%(code)s' already exists" +msgstr "" + +#: app/routes/inventory.py:1622 +msgid "Supplier created successfully." +msgstr "" + +#: app/routes/inventory.py:1627 +#, python-format +msgid "Error creating supplier: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1671 +msgid "Supplier code already exists. Please use a different code." +msgstr "" + +#: app/routes/inventory.py:1692 +msgid "Supplier updated successfully." +msgstr "" + +#: app/routes/inventory.py:1697 +#, python-format +msgid "Error updating supplier: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1713 +msgid "Cannot delete supplier with associated stock items. Remove items first." +msgstr "" + +#: app/routes/inventory.py:1722 +msgid "Supplier deleted successfully." +msgstr "" + +#: app/routes/inventory.py:1725 +#, python-format +msgid "Error deleting supplier: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1855 +msgid "Purchase order created successfully." +msgstr "" + +#: app/routes/inventory.py:1860 +#, python-format +msgid "Error creating purchase order: %(error)s" +msgstr "" + +#: app/routes/inventory.py:1896 +msgid "Cannot edit a purchase order that has been received." +msgstr "" + +#: app/routes/inventory.py:1970 +msgid "Purchase order updated successfully." +msgstr "" + +#: app/routes/inventory.py:1975 +#, python-format +msgid "Error updating purchase order: %(error)s" +msgstr "" + +#: app/routes/inventory.py:2004 +msgid "Purchase order marked as sent." +msgstr "" + +#: app/routes/inventory.py:2007 +#, python-format +msgid "Error sending purchase order: %(error)s" +msgstr "" + +#: app/routes/inventory.py:2026 +msgid "Purchase order cancelled successfully." +msgstr "" + +#: app/routes/inventory.py:2029 +#, python-format +msgid "Error cancelling purchase order: %(error)s" +msgstr "" + +#: app/routes/inventory.py:2044 +msgid "Cannot delete a purchase order that has been received. Cancel it instead." +msgstr "" + +#: app/routes/inventory.py:2052 +msgid "Purchase order deleted successfully." +msgstr "" + +#: app/routes/inventory.py:2056 +#, python-format +msgid "Error deleting purchase order: %(error)s" +msgstr "" + +#: app/routes/inventory.py:2094 +msgid "Purchase order marked as received and stock updated." +msgstr "" + +#: app/routes/inventory.py:2097 +#, python-format +msgid "Error receiving purchase order: %(error)s" +msgstr "" + +#: app/routes/invoice_approvals.py:29 +msgid "An approval request is already pending for this invoice." +msgstr "" + +#: app/routes/invoice_approvals.py:42 +#: app/templates/invoice_approvals/request.html:49 +msgid "Please select at least one approver." +msgstr "" + +#: app/routes/invoice_approvals.py:50 +msgid "Approval request created successfully." +msgstr "" + +#: app/routes/invoice_approvals.py:81 +msgid "Invoice approved successfully." +msgstr "" + +#: app/routes/invoice_approvals.py:98 +msgid "Please provide a reason for rejection." +msgstr "" + +#: app/routes/invoice_approvals.py:105 +msgid "Invoice approval rejected." +msgstr "" + +#: app/routes/invoices.py:95 +msgid "Project, client name, and due date are required" +msgstr "" + +#: app/routes/invoices.py:101 app/routes/tasks.py:223 app/routes/tasks.py:441 +msgid "Invalid due date format" +msgstr "" + +#: app/routes/invoices.py:107 app/routes/offers.py:106 app/routes/offers.py:238 +#: app/routes/quotes.py:143 app/routes/quotes.py:308 +#: app/routes/recurring_invoices.py:90 +msgid "Invalid tax rate format" +msgstr "" + +#: app/routes/invoices.py:113 +msgid "Selected project not found" +msgstr "" + +#: app/routes/invoices.py:169 +msgid "" +"Could not create invoice due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/invoices.py:217 +msgid "You do not have permission to view this invoice" +msgstr "" + +#: app/routes/invoices.py:264 +msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +msgstr "" + +#: app/routes/invoices.py:266 +msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +msgstr "" + +#: app/routes/invoices.py:268 +msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +msgstr "" + +#: app/routes/invoices.py:272 +msgid "" +"Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the " +"client's custom fields." +msgstr "" + +#: app/routes/invoices.py:274 +msgid "" +"Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's " +"custom fields." +msgstr "" + +#: app/routes/invoices.py:276 +msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." +msgstr "" + +#: app/routes/invoices.py:327 app/routes/invoices.py:779 +msgid "You do not have permission to edit this invoice" +msgstr "" + +#: app/routes/invoices.py:487 app/routes/quotes.py:532 app/routes/quotes.py:637 +#, python-format +msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +msgstr "" + +#: app/routes/invoices.py:497 +msgid "" +"Could not update invoice due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/invoices.py:504 +msgid "Invoice updated successfully" +msgstr "" + +#: app/routes/invoices.py:618 +#, python-format +msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +msgstr "" + +#: app/routes/invoices.py:639 +msgid "You do not have permission to delete this invoice" +msgstr "" + +#: app/routes/invoices.py:645 +msgid "" +"Could not delete invoice due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/invoices.py:659 +msgid "No invoices selected for deletion" +msgstr "" + +#: app/routes/invoices.py:691 +msgid "" +"Could not delete invoices due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/invoices.py:713 +msgid "No invoices selected" +msgstr "" + +#: app/routes/invoices.py:757 +msgid "Could not update invoices due to a database error" +msgstr "" + +#: app/routes/invoices.py:790 +msgid "No time entries, costs, expenses, or extra goods selected" +msgstr "" + +#: app/routes/invoices.py:894 +msgid "" +"Could not generate items due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/invoices.py:905 +msgid "Invoice items generated successfully from time entries and costs" +msgstr "" + +#: app/routes/invoices.py:909 +#, python-format +msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +msgstr "" + +#: app/routes/invoices.py:1028 app/routes/invoices.py:1084 +#: app/routes/invoices.py:1116 +msgid "You do not have permission to export this invoice" +msgstr "" + +#: app/routes/invoices.py:1097 +#, python-format +msgid "Cannot generate UBL: %(msg)s" +msgstr "" + +#: app/routes/invoices.py:1101 +#, python-format +msgid "UBL export failed: %(msg)s" +msgstr "" + +#: app/routes/invoices.py:1168 +#, python-format +msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +msgstr "" + +#: app/routes/invoices.py:1182 +msgid "You do not have permission to duplicate this invoice" +msgstr "" + +#: app/routes/invoices.py:1209 +msgid "" +"Could not duplicate invoice due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/invoices.py:1240 +msgid "" +"Could not finalize duplicated invoice due to a database error. Please " +"check server logs." +msgstr "" + +#: app/routes/invoices.py:1454 +msgid "You do not have permission to upload images to this invoice" +msgstr "" + +#: app/routes/invoices.py:1481 app/routes/quotes.py:1585 +msgid "File type not allowed. Only images are allowed" +msgstr "" + +#: app/routes/invoices.py:1492 app/routes/quotes.py:1596 +msgid "File size exceeds maximum allowed size (5 MB)" +msgstr "" + +#: app/routes/invoices.py:1540 app/routes/quotes.py:1644 +msgid "Could not upload image due to a database error. Please check server logs." +msgstr "" + +#: app/routes/invoices.py:1564 app/routes/quotes.py:1668 +#: app/templates/main/dashboard.html:1261 +#: app/templates/timer/manual_entry.html:872 +msgid "Image uploaded successfully" +msgstr "" + +#: app/routes/invoices.py:1616 +msgid "You do not have permission to delete images from this invoice" +msgstr "" + +#: app/routes/invoices.py:1633 app/routes/quotes.py:1739 +msgid "Could not delete image due to a database error. Please check server logs." +msgstr "" + +#: app/routes/invoices.py:1651 app/routes/quotes.py:1757 +msgid "Image deleted successfully" +msgstr "" + +#: app/routes/invoices_refactored.py:216 +msgid "Invoice marked as sent" +msgstr "" + +#: app/routes/invoices_refactored.py:255 +msgid "Invoice marked as paid" +msgstr "" + +#: app/routes/issues.py:172 +msgid "You do not have permission to create issues." +msgstr "" + +#: app/routes/issues.py:200 +msgid "Client is required." +msgstr "" + +#: app/routes/issues.py:228 +msgid "Issue created successfully." +msgstr "" + +#: app/routes/issues.py:294 +msgid "You do not have permission to view this issue." +msgstr "" + +#: app/routes/issues.py:357 +msgid "You do not have permission to edit this issue." +msgstr "" + +#: app/routes/issues.py:377 +msgid "Project must belong to the same client." +msgstr "" + +#: app/routes/issues.py:397 +msgid "Could not update issue due to a database error." +msgstr "" + +#: app/routes/issues.py:400 +msgid "Issue updated successfully." +msgstr "" + +#: app/routes/issues.py:426 +msgid "Please select a task." +msgstr "" + +#: app/routes/issues.py:431 +msgid "Issue linked to task successfully." +msgstr "" + +#: app/routes/issues.py:448 +msgid "Please select a project." +msgstr "" + +#: app/routes/issues.py:457 +msgid "Task created from issue successfully." +msgstr "" + +#: app/routes/issues.py:473 +msgid "Status is required." +msgstr "" + +#: app/routes/issues.py:491 +msgid "Issue status updated successfully." +msgstr "" + +#: app/routes/issues.py:508 +msgid "Issue assigned successfully." +msgstr "" + +#: app/routes/issues.py:510 +msgid "Could not assign issue." +msgstr "" + +#: app/routes/issues.py:524 +msgid "Priority is required." +msgstr "" + +#: app/routes/issues.py:529 +msgid "Issue priority updated successfully." +msgstr "" + +#: app/routes/issues.py:542 +msgid "Only administrators can delete issues." +msgstr "" + +#: app/routes/issues.py:550 +msgid "Could not delete issue due to a database error." +msgstr "" + +#: app/routes/issues.py:553 +msgid "Issue deleted successfully." +msgstr "" + +#: app/routes/kanban.py:134 +msgid "Key and label are required" +msgstr "" + +#: app/routes/kanban.py:187 +msgid "Could not create column due to a database error. Please check server logs." +msgstr "" + +#: app/routes/kanban.py:259 +msgid "Could not update column due to a database error. Please check server logs." +msgstr "" + +#: app/routes/kanban.py:297 +msgid "System columns cannot be deleted" +msgstr "" + +#: app/routes/kanban.py:333 +msgid "Could not delete column due to a database error. Please check server logs." +msgstr "" + +#: app/routes/kanban.py:383 +msgid "Could not toggle column due to a database error. Please check server logs." +msgstr "" + +#: app/routes/kiosk.py:32 app/routes/kiosk.py:92 +msgid "Kiosk mode is not enabled. Please contact an administrator." +msgstr "" + +#: app/routes/kiosk.py:136 +msgid "" +"No password is set for this account. Please set a password in your " +"profile first." +msgstr "" + +#: app/routes/kiosk.py:175 +msgid "You have been logged out" +msgstr "" + +#: app/routes/kiosk.py:322 +msgid "Stock adjustment recorded successfully" +msgstr "" + +#: app/routes/kiosk.py:433 +msgid "Stock transfer completed successfully" +msgstr "" + +#: app/routes/kiosk.py:495 +msgid "Timer started successfully" +msgstr "" + +#: app/routes/kiosk.py:520 app/routes/timer_refactored.py:161 +msgid "Timer stopped successfully" +msgstr "" + +#: app/routes/leads.py:107 +msgid "Lead created successfully" +msgstr "" + +#: app/routes/leads.py:111 +#, python-format +msgid "Error creating lead: %(error)s" +msgstr "" + +#: app/routes/leads.py:161 +msgid "Lead updated successfully" +msgstr "" + +#: app/routes/leads.py:165 +#, python-format +msgid "Error updating lead: %(error)s" +msgstr "" + +#: app/routes/leads.py:177 app/routes/leads.py:232 +msgid "Lead has already been converted" +msgstr "" + +#: app/routes/leads.py:216 +msgid "Lead converted to client successfully" +msgstr "" + +#: app/routes/leads.py:220 app/routes/leads.py:271 +#, python-format +msgid "Error converting lead: %(error)s" +msgstr "" + +#: app/routes/leads.py:267 +msgid "Lead converted to deal successfully" +msgstr "" + +#: app/routes/leads.py:289 +msgid "Lead marked as lost" +msgstr "" + +#: app/routes/leads.py:292 +#, python-format +msgid "Error marking lead as lost: %(error)s" +msgstr "" + +#: app/routes/link_templates.py:44 app/routes/link_templates.py:100 +msgid "URL template is required" +msgstr "" + +#: app/routes/link_templates.py:48 app/routes/link_templates.py:104 +#, python-brace-format +msgid "URL template must contain {value} or %value% placeholder" +msgstr "" + +#: app/routes/link_templates.py:69 +msgid "Could not create link template due to a database error." +msgstr "" + +#: app/routes/link_templates.py:72 +msgid "Link template created successfully" +msgstr "" + +#: app/routes/link_templates.py:122 +msgid "Could not update link template due to a database error." +msgstr "" + +#: app/routes/link_templates.py:125 +msgid "Link template updated successfully" +msgstr "" + +#: app/routes/link_templates.py:140 +msgid "Could not delete link template due to a database error." +msgstr "" + +#: app/routes/link_templates.py:142 +msgid "Link template deleted successfully" +msgstr "" + +#: app/routes/mileage.py:234 +msgid "Mileage entry created successfully" +msgstr "" + +#: app/routes/mileage.py:243 app/routes/mileage.py:248 +msgid "Error creating mileage entry" +msgstr "" + +#: app/routes/mileage.py:261 +msgid "You do not have permission to view this mileage entry" +msgstr "" + +#: app/routes/mileage.py:280 +msgid "You do not have permission to edit this mileage entry" +msgstr "" + +#: app/routes/mileage.py:285 +msgid "Cannot edit approved or reimbursed mileage entries" +msgstr "" + +#: app/routes/mileage.py:329 +msgid "Mileage entry updated successfully" +msgstr "" + +#: app/routes/mileage.py:334 app/routes/mileage.py:339 +msgid "Error updating mileage entry" +msgstr "" + +#: app/routes/mileage.py:352 +msgid "You do not have permission to delete this mileage entry" +msgstr "" + +#: app/routes/mileage.py:359 +msgid "Mileage entry deleted successfully" +msgstr "" + +#: app/routes/mileage.py:363 app/routes/mileage.py:367 +msgid "Error deleting mileage entry" +msgstr "" + +#: app/routes/mileage.py:380 +msgid "No mileage entries selected for deletion" +msgstr "" + +#: app/routes/mileage.py:411 +msgid "" +"Could not delete mileage entries due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/mileage.py:421 +#, python-format +msgid "Successfully deleted %(count)d mileage entr%(plural)s" +msgstr "" + +#: app/routes/mileage.py:431 +#, python-format +msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +msgstr "" + +#: app/routes/mileage.py:451 +msgid "No mileage entries selected" +msgstr "" + +#: app/routes/mileage.py:484 +msgid "Could not update mileage entries due to a database error" +msgstr "" + +#: app/routes/mileage.py:489 +#, python-format +msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +msgstr "" + +#: app/routes/mileage.py:500 +#, python-format +msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +msgstr "" + +#: app/routes/mileage.py:516 +msgid "Only administrators can approve mileage entries" +msgstr "" + +#: app/routes/mileage.py:522 +msgid "Only pending mileage entries can be approved" +msgstr "" + +#: app/routes/mileage.py:530 +msgid "Mileage entry approved successfully" +msgstr "" + +#: app/routes/mileage.py:534 app/routes/mileage.py:538 +msgid "Error approving mileage entry" +msgstr "" + +#: app/routes/mileage.py:549 +msgid "Only administrators can reject mileage entries" +msgstr "" + +#: app/routes/mileage.py:555 +msgid "Only pending mileage entries can be rejected" +msgstr "" + +#: app/routes/mileage.py:567 +msgid "Mileage entry rejected" +msgstr "" + +#: app/routes/mileage.py:571 app/routes/mileage.py:575 +msgid "Error rejecting mileage entry" +msgstr "" + +#: app/routes/mileage.py:586 +msgid "Only administrators can mark mileage entries as reimbursed" +msgstr "" + +#: app/routes/mileage.py:592 +msgid "Only approved mileage entries can be marked as reimbursed" +msgstr "" + +#: app/routes/mileage.py:599 +msgid "Mileage entry marked as reimbursed" +msgstr "" + +#: app/routes/mileage.py:603 app/routes/mileage.py:607 +msgid "Error marking mileage entry as reimbursed" +msgstr "" + +#: app/routes/offers.py:67 app/routes/quotes.py:104 +msgid "Quote title and client are required" +msgstr "" + +#: app/routes/offers.py:73 app/routes/quotes.py:110 +msgid "Selected client not found" +msgstr "" + +#: app/routes/offers.py:82 app/routes/offers.py:214 app/routes/quotes.py:119 +msgid "Invalid total amount format" +msgstr "" + +#: app/routes/offers.py:98 app/routes/offers.py:230 app/routes/quotes.py:135 +msgid "Invalid estimated hours format" +msgstr "" + +#: app/routes/offers.py:115 app/routes/offers.py:247 app/routes/quotes.py:169 +#: app/routes/quotes.py:334 +msgid "Invalid date format for valid until" +msgstr "" + +#: app/routes/offers.py:161 app/routes/quotes.py:229 +msgid "Could not create quote due to a database error. Please check server logs." +msgstr "" + +#: app/routes/offers.py:170 app/routes/quotes.py:238 +msgid "Quote created successfully" +msgstr "" + +#: app/routes/offers.py:193 app/routes/quotes.py:283 +msgid "Only draft quotes can be edited" +msgstr "" + +#: app/routes/offers.py:263 app/routes/quotes.py:424 +msgid "Could not update quote due to a database error. Please check server logs." +msgstr "" + +#: app/routes/offers.py:269 app/routes/quotes.py:457 +msgid "Quote updated successfully" +msgstr "" + +#: app/routes/offers.py:283 app/routes/quotes.py:501 +msgid "Only draft quotes can be sent" +msgstr "" + +#: app/routes/offers.py:289 app/routes/quotes.py:540 +msgid "Could not send quote due to a database error. Please check server logs." +msgstr "" + +#: app/routes/offers.py:295 app/routes/quotes.py:560 +msgid "Quote sent successfully" +msgstr "" + +#: app/routes/offers.py:307 app/routes/quotes.py:572 +msgid "This quote cannot be accepted" +msgstr "" + +#: app/routes/offers.py:338 app/routes/quotes.py:603 +#, python-format +msgid "Could not accept quote: %(error)s" +msgstr "" + +#: app/routes/offers.py:343 app/routes/quotes.py:645 +msgid "Could not accept quote due to a database error. Please check server logs." +msgstr "" + +#: app/routes/offers.py:355 app/routes/quotes.py:671 +msgid "Quote accepted and project created successfully" +msgstr "" + +#: app/routes/offers.py:369 app/routes/quotes.py:685 +msgid "This quote cannot be rejected" +msgstr "" + +#: app/routes/offers.py:375 app/routes/quotes.py:691 +#, python-format +msgid "Could not reject quote: %(error)s" +msgstr "" + +#: app/routes/offers.py:379 app/routes/quotes.py:695 app/routes/quotes.py:1026 +msgid "Could not reject quote due to a database error. Please check server logs." +msgstr "" + +#: app/routes/offers.py:385 app/routes/quotes.py:701 +msgid "Quote rejected" +msgstr "" + +#: app/routes/offers.py:398 app/routes/quotes.py:714 +msgid "Only draft or rejected quotes can be deleted" +msgstr "" + +#: app/routes/offers.py:405 app/routes/quotes.py:721 +msgid "Could not delete quote due to a database error. Please check server logs." +msgstr "" + +#: app/routes/offers.py:411 app/routes/quotes.py:727 +msgid "Quote deleted successfully" +msgstr "" + +#: app/routes/payment_gateways.py:59 +msgid "Payment gateway created successfully." +msgstr "" + +#: app/routes/payment_gateways.py:79 +msgid "No payment gateway configured. Please contact an administrator." +msgstr "" + +#: app/routes/payment_gateways.py:95 +msgid "Stripe API key not configured." +msgstr "" + +#: app/routes/payment_gateways.py:173 +msgid "Payment processed successfully." +msgstr "" + +#: app/routes/payments.py:51 +msgid "Invalid from date format" +msgstr "" + +#: app/routes/payments.py:58 +msgid "Invalid to date format" +msgstr "" + +#: app/routes/payments.py:131 +msgid "You do not have permission to view this payment" +msgstr "" + +#: app/routes/payments.py:157 +msgid "Invoice, amount, and payment date are required" +msgstr "" + +#: app/routes/payments.py:164 +msgid "Selected invoice not found" +msgstr "" + +#: app/routes/payments.py:170 +msgid "You do not have permission to add payments to this invoice" +msgstr "" + +#: app/routes/payments.py:177 app/routes/payments.py:346 +msgid "Payment amount must be greater than zero" +msgstr "" + +#: app/routes/payments.py:181 app/routes/payments.py:349 +msgid "Invalid payment amount" +msgstr "" + +#: app/routes/payments.py:189 app/routes/payments.py:356 +msgid "Invalid payment date format" +msgstr "" + +#: app/routes/payments.py:199 app/routes/payments.py:365 +msgid "Gateway fee cannot be negative" +msgstr "" + +#: app/routes/payments.py:203 app/routes/payments.py:368 +msgid "Invalid gateway fee amount" +msgstr "" + +#: app/routes/payments.py:276 +msgid "" +"Could not create payment due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/payments.py:323 +msgid "You do not have permission to edit this payment" +msgstr "" + +#: app/routes/payments.py:405 +msgid "" +"Could not update payment due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/payments.py:415 +msgid "Payment updated successfully" +msgstr "" + +#: app/routes/payments.py:431 +msgid "You do not have permission to delete this payment" +msgstr "" + +#: app/routes/payments.py:451 +msgid "" +"Could not delete payment due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/payments.py:457 +msgid "Payment deleted successfully" +msgstr "" + +#: app/routes/payments.py:469 +msgid "No payments selected for deletion" +msgstr "" + +#: app/routes/payments.py:514 +msgid "" +"Could not delete payments due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/payments.py:536 +msgid "No payments selected" +msgstr "" + +#: app/routes/payments.py:587 +msgid "Could not update payments due to a database error" +msgstr "" + +#: app/routes/per_diem.py:147 +msgid "Start date must be before end date" +msgstr "" + +#: app/routes/per_diem.py:183 +msgid "No per diem rate found for this location. Please configure rates first." +msgstr "" + +#: app/routes/per_diem.py:239 +msgid "Per diem claim created successfully" +msgstr "" + +#: app/routes/per_diem.py:248 app/routes/per_diem.py:253 +msgid "Error creating per diem claim" +msgstr "" + +#: app/routes/per_diem.py:266 +msgid "You do not have permission to view this per diem claim" +msgstr "" + +#: app/routes/per_diem.py:285 +msgid "You do not have permission to edit this per diem claim" +msgstr "" + +#: app/routes/per_diem.py:290 +msgid "Cannot edit approved or reimbursed per diem claims" +msgstr "" + +#: app/routes/per_diem.py:331 +msgid "Per diem claim updated successfully" +msgstr "" + +#: app/routes/per_diem.py:336 app/routes/per_diem.py:341 +msgid "Error updating per diem claim" +msgstr "" + +#: app/routes/per_diem.py:354 +msgid "You do not have permission to delete this per diem claim" +msgstr "" + +#: app/routes/per_diem.py:361 +msgid "Per diem claim deleted successfully" +msgstr "" + +#: app/routes/per_diem.py:365 app/routes/per_diem.py:369 +msgid "Error deleting per diem claim" +msgstr "" + +#: app/routes/per_diem.py:382 +msgid "No per diem claims selected for deletion" +msgstr "" + +#: app/routes/per_diem.py:413 +msgid "" +"Could not delete per diem claims due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/per_diem.py:421 +#, python-format +msgid "Successfully deleted %(count)d per diem claim(s)" +msgstr "" + +#: app/routes/per_diem.py:425 +#, python-format +msgid "Skipped %(count)d per diem claim(s): %(errors)s" +msgstr "" + +#: app/routes/per_diem.py:441 +msgid "No per diem claims selected" +msgstr "" + +#: app/routes/per_diem.py:474 +msgid "Could not update per diem claims due to a database error" +msgstr "" + +#: app/routes/per_diem.py:478 +#, python-format +msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +msgstr "" + +#: app/routes/per_diem.py:483 +#, python-format +msgid "Skipped %(count)d per diem claim(s) (no permission)" +msgstr "" + +#: app/routes/per_diem.py:494 +msgid "Only administrators can approve per diem claims" +msgstr "" + +#: app/routes/per_diem.py:500 +msgid "Only pending per diem claims can be approved" +msgstr "" + +#: app/routes/per_diem.py:508 +msgid "Per diem claim approved successfully" +msgstr "" + +#: app/routes/per_diem.py:512 app/routes/per_diem.py:516 +msgid "Error approving per diem claim" +msgstr "" + +#: app/routes/per_diem.py:527 +msgid "Only administrators can reject per diem claims" +msgstr "" + +#: app/routes/per_diem.py:533 +msgid "Only pending per diem claims can be rejected" +msgstr "" + +#: app/routes/per_diem.py:545 +msgid "Per diem claim rejected" +msgstr "" + +#: app/routes/per_diem.py:549 app/routes/per_diem.py:553 +msgid "Error rejecting per diem claim" +msgstr "" + +#: app/routes/per_diem.py:619 +msgid "Per diem rate created successfully" +msgstr "" + +#: app/routes/per_diem.py:623 app/routes/per_diem.py:628 +msgid "Error creating per diem rate" +msgstr "" + +#: app/routes/per_diem.py:677 +msgid "Per diem rate updated successfully" +msgstr "" + +#: app/routes/per_diem.py:682 app/routes/per_diem.py:687 +msgid "Error updating per diem rate" +msgstr "" + +#: app/routes/per_diem.py:708 +#, python-format +msgid "" +"Cannot delete rate: It is being used by %(count)d per diem claim(s). " +"Deactivate it instead." +msgstr "" + +#: app/routes/per_diem.py:718 +msgid "Per diem rate deleted successfully" +msgstr "" + +#: app/routes/per_diem.py:722 app/routes/per_diem.py:726 +msgid "Error deleting per diem rate" +msgstr "" + +#: app/routes/permissions.py:65 app/routes/permissions.py:136 +#: app/routes/permissions.py:225 app/routes/permissions.py:274 +#: app/routes/permissions.py:301 app/utils/permissions.py:41 +#: app/utils/permissions.py:73 +msgid "You do not have permission to access this page" +msgstr "" + +#: app/routes/permissions.py:75 app/routes/permissions.py:148 +msgid "Role name is required" +msgstr "" + +#: app/routes/permissions.py:85 app/routes/permissions.py:169 +msgid "A role with this name already exists" +msgstr "" + +#: app/routes/permissions.py:108 +msgid "Could not create role due to a database error" +msgstr "" + +#: app/routes/permissions.py:116 +msgid "Role created successfully" +msgstr "" + +#: app/routes/permissions.py:158 app/templates/admin/roles/form.html:39 +msgid "System role names cannot be changed" +msgstr "" + +#: app/routes/permissions.py:196 +msgid "Could not update role due to a database error" +msgstr "" + +#: app/routes/permissions.py:204 +msgid "Role updated successfully" +msgstr "" + +#: app/routes/permissions.py:241 +msgid "You do not have permission to perform this action" +msgstr "" + +#: app/routes/permissions.py:248 +msgid "System roles cannot be deleted" +msgstr "" + +#: app/routes/permissions.py:253 +msgid "Cannot delete role that is assigned to users. Please reassign users first." +msgstr "" + +#: app/routes/permissions.py:260 +msgid "Could not delete role due to a database error" +msgstr "" + +#: app/routes/permissions.py:263 +#, python-format +msgid "Role \"%(name)s\" deleted successfully" +msgstr "" + +#: app/routes/permissions.py:319 +msgid "Only Super Admins can assign the super_admin role" +msgstr "" + +#: app/routes/permissions.py:327 +msgid "Only Super Admins can remove the admin role from themselves" +msgstr "" + +#: app/routes/permissions.py:333 +msgid "Only Super Admins can remove the admin role from other users" +msgstr "" + +#: app/routes/permissions.py:354 +msgid "Could not update user roles due to a database error" +msgstr "" + +#: app/routes/permissions.py:357 +msgid "User roles updated successfully" +msgstr "" + +#: app/routes/project_templates.py:158 +msgid "Template created successfully." +msgstr "" + +#: app/routes/project_templates.py:177 app/routes/project_templates.py:197 +#: app/routes/project_templates.py:299 +msgid "Template not found." +msgstr "" + +#: app/routes/project_templates.py:182 +msgid "You do not have permission to view this template." +msgstr "" + +#: app/routes/project_templates.py:201 +msgid "You do not have permission to edit this template." +msgstr "" + +#: app/routes/project_templates.py:262 +msgid "Template updated successfully." +msgstr "" + +#: app/routes/project_templates.py:281 +msgid "Template deleted successfully." +msgstr "" + +#: app/routes/project_templates.py:309 +msgid "Please select a client." +msgstr "" + +#: app/routes/project_templates.py:339 +msgid "Project created from template successfully." +msgstr "" + +#: app/routes/projects.py:310 app/routes/projects.py:846 +msgid "Project name and client are required" +msgstr "" + +#: app/routes/projects.py:333 app/routes/projects.py:864 +msgid "Invalid budget amount" +msgstr "" + +#: app/routes/projects.py:341 app/routes/projects.py:873 +msgid "Invalid budget threshold percent (0-100)" +msgstr "" + +#: app/routes/projects.py:400 +msgid "Could not save project due to a database error" +msgstr "" + +#: app/routes/projects.py:500 app/routes/projects_refactored_example.py:109 +msgid "Project not found" +msgstr "" + +#: app/routes/projects.py:936 +msgid "Could not update project due to a database error" +msgstr "" + +#: app/routes/projects.py:968 +msgid "You do not have permission to archive projects" +msgstr "" + +#: app/routes/projects.py:976 +msgid "Project is already archived" +msgstr "" + +#: app/routes/projects.py:1010 +msgid "You do not have permission to unarchive projects" +msgstr "" + +#: app/routes/projects.py:1014 app/routes/projects.py:1074 +msgid "Project is already active" +msgstr "" + +#: app/routes/projects.py:1047 +msgid "You do not have permission to deactivate projects" +msgstr "" + +#: app/routes/projects.py:1051 +msgid "Project is already inactive" +msgstr "" + +#: app/routes/projects.py:1070 +msgid "You do not have permission to activate projects" +msgstr "" + +#: app/routes/projects.py:1094 +msgid "Cannot delete project with existing time entries" +msgstr "" + +#: app/routes/projects.py:1114 +msgid "" +"Could not delete project due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/projects.py:1127 +msgid "You do not have permission to delete projects" +msgstr "" + +#: app/routes/projects.py:1133 +msgid "No projects selected for deletion" +msgstr "" + +#: app/routes/projects.py:1172 +msgid "" +"Could not delete projects due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/projects.py:1186 +msgid "No projects were deleted" +msgstr "" + +#: app/routes/projects.py:1197 +msgid "You do not have permission to change project status" +msgstr "" + +#: app/routes/projects.py:1205 +msgid "No projects selected" +msgstr "" + +#: app/routes/projects.py:1268 +msgid "" +"Could not update project status due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/projects.py:1285 +msgid "No projects were updated" +msgstr "" + +#: app/routes/projects.py:1303 app/routes/projects.py:1304 +msgid "Project is already in favorites" +msgstr "" + +#: app/routes/projects.py:1326 app/routes/projects.py:1327 +msgid "Project added to favorites" +msgstr "" + +#: app/routes/projects.py:1331 app/routes/projects.py:1332 +msgid "Failed to add project to favorites" +msgstr "" + +#: app/routes/projects.py:1348 app/routes/projects.py:1349 +msgid "Project is not in favorites" +msgstr "" + +#: app/routes/projects.py:1371 app/routes/projects.py:1372 +msgid "Project removed from favorites" +msgstr "" + +#: app/routes/projects.py:1376 app/routes/projects.py:1377 +msgid "Failed to remove project from favorites" +msgstr "" + +#: app/routes/projects.py:1457 app/routes/projects.py:1528 +msgid "Description, category, amount, and date are required" +msgstr "" + +#: app/routes/projects.py:1491 +msgid "Could not add cost due to a database error. Please check server logs." +msgstr "" + +#: app/routes/projects.py:1494 +msgid "Cost added successfully" +msgstr "" + +#: app/routes/projects.py:1509 app/routes/projects.py:1576 +msgid "Cost not found" +msgstr "" + +#: app/routes/projects.py:1514 +msgid "You do not have permission to edit this cost" +msgstr "" + +#: app/routes/projects.py:1558 +msgid "Could not update cost due to a database error. Please check server logs." +msgstr "" + +#: app/routes/projects.py:1561 +msgid "Cost updated successfully" +msgstr "" + +#: app/routes/projects.py:1581 +msgid "You do not have permission to delete this cost" +msgstr "" + +#: app/routes/projects.py:1586 +msgid "Cannot delete cost that has been invoiced" +msgstr "" + +#: app/routes/projects.py:1592 +msgid "Could not delete cost due to a database error. Please check server logs." +msgstr "" + +#: app/routes/projects.py:1685 app/routes/projects.py:1760 +msgid "Name and unit price are required" +msgstr "" + +#: app/routes/projects.py:1694 app/routes/projects.py:1769 +msgid "Invalid quantity format" +msgstr "" + +#: app/routes/projects.py:1703 app/routes/projects.py:1778 +msgid "Invalid unit price format" +msgstr "" + +#: app/routes/projects.py:1722 +msgid "" +"Could not add extra good due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/projects.py:1725 +msgid "Extra good added successfully" +msgstr "" + +#: app/routes/projects.py:1740 app/routes/projects.py:1811 +msgid "Extra good not found" +msgstr "" + +#: app/routes/projects.py:1745 +msgid "You do not have permission to edit this extra good" +msgstr "" + +#: app/routes/projects.py:1793 +msgid "" +"Could not update extra good due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/projects.py:1796 +msgid "Extra good updated successfully" +msgstr "" + +#: app/routes/projects.py:1816 +msgid "You do not have permission to delete this extra good" +msgstr "" + +#: app/routes/projects.py:1821 +msgid "Cannot delete extra good that has been added to an invoice" +msgstr "" + +#: app/routes/projects.py:1827 +msgid "" +"Could not delete extra good due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/projects_refactored_example.py:186 +msgid "Project created successfully" +msgstr "" + +#: app/routes/quotes.py:160 app/routes/quotes.py:325 +msgid "Invalid discount amount format" +msgstr "" + +#: app/routes/quotes.py:499 +msgid "Quote must be approved before it can be sent" +msgstr "" + +#: app/routes/quotes.py:507 +#, python-format +msgid "Cannot send quote: %(error)s" +msgstr "" + +#: app/routes/quotes.py:745 +msgid "You do not have permission to upload attachments to this quote" +msgstr "" + +#: app/routes/quotes.py:857 +msgid "You do not have permission to download this attachment" +msgstr "" + +#: app/routes/quotes.py:925 +msgid "You do not have permission to request approval for this quote" +msgstr "" + +#: app/routes/quotes.py:929 app/routes/quotes.py:967 app/routes/quotes.py:1007 +msgid "This quote does not require approval" +msgstr "" + +#: app/routes/quotes.py:935 +#, python-format +msgid "Cannot request approval: %(error)s" +msgstr "" + +#: app/routes/quotes.py:939 +msgid "" +"Could not request approval due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/quotes.py:955 +msgid "Approval requested successfully" +msgstr "" + +#: app/routes/quotes.py:971 app/routes/quotes.py:1011 +msgid "This quote is not pending approval" +msgstr "" + +#: app/routes/quotes.py:979 +#, python-format +msgid "Cannot approve quote: %(error)s" +msgstr "" + +#: app/routes/quotes.py:983 +msgid "Could not approve quote due to a database error. Please check server logs." +msgstr "" + +#: app/routes/quotes.py:995 +msgid "Quote approved successfully" +msgstr "" + +#: app/routes/quotes.py:1022 +#, python-format +msgid "Cannot reject quote: %(error)s" +msgstr "" + +#: app/routes/quotes.py:1038 +msgid "Quote approval rejected" +msgstr "" + +#: app/routes/quotes.py:1115 +msgid "" +"Could not create template due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/quotes.py:1121 +msgid "Template created successfully" +msgstr "" + +#: app/routes/quotes.py:1134 +msgid "Quote ID is required" +msgstr "" + +#: app/routes/quotes.py:1140 +msgid "You do not have permission to create a template from this quote" +msgstr "" + +#: app/routes/quotes.py:1182 +msgid "Could not save template due to a database error. Please check server logs." +msgstr "" + +#: app/routes/quotes.py:1188 +msgid "Template saved successfully" +msgstr "" + +#: app/routes/quotes.py:1203 +msgid "You do not have permission to export this quote" +msgstr "" + +#: app/routes/quotes.py:1253 +#, python-format +msgid "Error generating PDF: %(error)s" +msgstr "" + +#: app/routes/quotes.py:1277 +msgid "Recipient email address is required" +msgstr "" + +#: app/routes/quotes.py:1295 +#, python-format +msgid "Quote sent successfully to %(email)s" +msgstr "" + +#: app/routes/quotes.py:1312 +#, python-format +msgid "Failed to send quote: %(error)s" +msgstr "" + +#: app/routes/quotes.py:1318 +#, python-format +msgid "Error sending email: %(error)s" +msgstr "" + +#: app/routes/quotes.py:1336 +msgid "You do not have permission to duplicate this quote" +msgstr "" + +#: app/routes/quotes.py:1374 +msgid "" +"Could not duplicate quote due to a database error. Please check server " +"logs." +msgstr "" + +#: app/routes/quotes.py:1391 +msgid "" +"Could not finalize duplicated quote due to a database error. Please check" +" server logs." +msgstr "" + +#: app/routes/quotes.py:1394 +#, python-format +msgid "Quote %(quote_number)s created as duplicate" +msgstr "" + +#: app/routes/quotes.py:1419 +msgid "Please select an action and at least one quote" +msgstr "" + +#: app/routes/quotes.py:1425 +msgid "Invalid quote IDs" +msgstr "" + +#: app/routes/quotes.py:1434 +msgid "No quotes found or you do not have permission" +msgstr "" + +#: app/routes/quotes.py:1491 +#, python-format +msgid "Duplicated %(count)d quote(s)" +msgstr "" + +#: app/routes/quotes.py:1493 +#, python-format +msgid "Failed to duplicate %(count)d quote(s)" +msgstr "" + +#: app/routes/quotes.py:1495 +msgid "Error duplicating quotes" +msgstr "" + +#: app/routes/quotes.py:1510 +#, python-format +msgid "Marked %(count)d quote(s) as sent" +msgstr "" + +#: app/routes/quotes.py:1512 +#, python-format +msgid "Could not mark %(count)d quote(s) as sent" +msgstr "" + +#: app/routes/quotes.py:1514 +msgid "Error updating quotes" +msgstr "" + +#: app/routes/quotes.py:1530 +#, python-format +msgid "Deleted %(count)d quote(s)" +msgstr "" + +#: app/routes/quotes.py:1532 +#, python-format +msgid "Could not delete %(count)d quote(s) (may be in use)" +msgstr "" + +#: app/routes/quotes.py:1534 +msgid "Error deleting quotes" +msgstr "" + +#: app/routes/quotes.py:1537 +msgid "Invalid action" +msgstr "" + +#: app/routes/quotes.py:1558 +msgid "You do not have permission to upload images to this quote" +msgstr "" + +#: app/routes/quotes.py:1722 +msgid "You do not have permission to delete images from this quote" +msgstr "" + +#: app/routes/recurring_invoices.py:70 +msgid "Name, project, client, frequency, and next run date are required" +msgstr "" + +#: app/routes/recurring_invoices.py:76 +msgid "Invalid next run date format" +msgstr "" + +#: app/routes/recurring_invoices.py:84 +msgid "Invalid end date format" +msgstr "" + +#: app/routes/recurring_invoices.py:97 +msgid "Selected project or client not found" +msgstr "" + +#: app/routes/recurring_invoices.py:139 +msgid "" +"Could not create recurring invoice due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/recurring_invoices.py:175 +msgid "You do not have permission to view this recurring invoice" +msgstr "" + +#: app/routes/recurring_invoices.py:193 +msgid "You do not have permission to edit this recurring invoice" +msgstr "" + +#: app/routes/recurring_invoices.py:218 +msgid "" +"Could not update recurring invoice due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/recurring_invoices.py:226 +msgid "Recurring invoice updated successfully" +msgstr "" + +#: app/routes/recurring_invoices.py:253 +msgid "You do not have permission to delete this recurring invoice" +msgstr "" + +#: app/routes/recurring_invoices.py:259 +msgid "" +"Could not delete recurring invoice due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/recurring_tasks.py:62 +msgid "Recurring task created successfully" +msgstr "" + +#: app/routes/reports.py:157 app/routes/reports.py:314 app/routes/timer.py:2006 +msgid "You do not have permission to view other users' time entries" +msgstr "" + +#: app/routes/reports.py:470 app/routes/reports.py:783 +#: app/routes/reports.py:861 app/routes/reports.py:946 +#: app/routes/reports.py:1102 +msgid "You do not have permission to export other users' time entries" +msgstr "" + +#: app/routes/salesman_reports.py:25 +msgid "You do not have permission to access this page." +msgstr "" + +#: app/routes/saved_filters.py:248 +msgid "Could not delete filter due to a database error" +msgstr "" + +#: app/routes/scheduled_reports.py:94 +msgid "Error loading scheduled reports. Please check the logs." +msgstr "" + +#: app/routes/scheduled_reports.py:119 app/routes/scheduled_reports.py:185 +msgid "Please fill in all required fields." +msgstr "" + +#: app/routes/scheduled_reports.py:123 app/routes/scheduled_reports.py:188 +msgid "Please specify a custom field name when enabling report iteration." +msgstr "" + +#: app/routes/scheduled_reports.py:141 +msgid "Scheduled report created successfully." +msgstr "" + +#: app/routes/scheduled_reports.py:158 +msgid "Scheduled report deleted successfully." +msgstr "" + +#: app/routes/scheduled_reports.py:235 app/routes/scheduled_reports.py:335 +msgid "Permission denied" +msgstr "" + +#: app/routes/scheduled_reports.py:289 +msgid "You do not have permission to fix this schedule." +msgstr "" + +#: app/routes/scheduled_reports.py:297 +msgid "Scheduled report deleted: saved view no longer exists." +msgstr "" + +#: app/routes/scheduled_reports.py:307 +msgid "Scheduled report deactivated: invalid configuration." +msgstr "" + +#: app/routes/scheduled_reports.py:314 +msgid "Scheduled report deactivated: could not parse configuration." +msgstr "" + +#: app/routes/scheduled_reports.py:320 +msgid "Scheduled report validated and reactivated." +msgstr "" + +#: app/routes/scheduled_reports.py:339 +msgid "Saved report view not found" +msgstr "" + +#: app/routes/setup.py:54 +msgid "Setup complete! Thank you for helping us improve TimeTracker." +msgstr "" + +#: app/routes/setup.py:56 +msgid "Setup complete! Telemetry is disabled." +msgstr "" + +#: app/routes/setup.py:59 +msgid "Google Calendar OAuth credentials have been configured." +msgstr "" + +#: app/routes/tasks.py:176 +msgid "Project and task name are required" +msgstr "" + +#: app/routes/tasks.py:185 app/routes/tasks.py:402 +#, python-format +msgid "Invalid task name: %(error)s" +msgstr "" + +#: app/routes/tasks.py:193 +msgid "Selected project does not exist" +msgstr "" + +#: app/routes/tasks.py:311 +msgid "Task not found" +msgstr "" + +#: app/routes/tasks.py:316 +msgid "You do not have access to this task" +msgstr "" + +#: app/routes/tasks.py:375 +msgid "You can only edit tasks you created" +msgstr "" + +#: app/routes/tasks.py:395 +msgid "Task name is required" +msgstr "" + +#: app/routes/tasks.py:414 +msgid "Project is required" +msgstr "" + +#: app/routes/tasks.py:502 +msgid "Could not update status due to a database error. Please check server logs." +msgstr "" + +#: app/routes/tasks.py:565 +msgid "Could not update task due to a database error. Please check server logs." +msgstr "" + +#: app/routes/tasks.py:603 +msgid "You do not have permission to update this task" +msgstr "" + +#: app/routes/tasks.py:713 +msgid "You can only update tasks you created" +msgstr "" + +#: app/routes/tasks.py:734 +msgid "You can only assign tasks you created" +msgstr "" + +#: app/routes/tasks.py:740 +msgid "Selected user does not exist" +msgstr "" + +#: app/routes/tasks.py:747 +msgid "Task unassigned" +msgstr "" + +#: app/routes/tasks.py:760 +msgid "You can only delete tasks you created" +msgstr "" + +#: app/routes/tasks.py:765 +msgid "Cannot delete task with existing time entries" +msgstr "" + +#: app/routes/tasks.py:786 +msgid "Could not delete task due to a database error. Please check server logs." +msgstr "" + +#: app/routes/tasks.py:808 +msgid "No tasks selected for deletion" +msgstr "" + +#: app/routes/tasks.py:870 +msgid "Could not delete tasks due to a database error. Please check server logs." +msgstr "" + +#: app/routes/tasks.py:891 app/routes/tasks.py:960 app/routes/tasks.py:1013 +#: app/routes/tasks.py:1072 +msgid "No tasks selected" +msgstr "" + +#: app/routes/tasks.py:939 app/routes/tasks.py:991 +msgid "Could not update tasks due to a database error" +msgstr "" + +#: app/routes/tasks.py:964 +msgid "Invalid priority value" +msgstr "" + +#: app/routes/tasks.py:1017 +msgid "No user selected for assignment" +msgstr "" + +#: app/routes/tasks.py:1023 +msgid "Invalid user selected" +msgstr "" + +#: app/routes/tasks.py:1050 +msgid "Could not assign tasks due to a database error" +msgstr "" + +#: app/routes/tasks.py:1076 +msgid "No project selected" +msgstr "" + +#: app/routes/tasks.py:1082 app/routes/timer.py:82 app/routes/timer.py:350 +#: app/routes/timer.py:601 app/routes/timer.py:1383 +msgid "Invalid project selected" +msgstr "" + +#: app/routes/tasks.py:1127 +msgid "Could not move tasks due to a database error" +msgstr "" + +#: app/routes/tasks.py:1335 +msgid "Only administrators can view all overdue tasks" +msgstr "" + +#: app/routes/team_chat.py:56 app/routes/team_chat.py:96 +#: app/routes/team_chat.py:370 app/routes/team_chat.py:407 +msgid "You don't have access to this channel" +msgstr "" + +#: app/routes/team_chat.py:103 +msgid "Message cannot be empty" +msgstr "" + +#: app/routes/team_chat.py:363 +msgid "Invalid message" +msgstr "" + +#: app/routes/team_chat.py:374 +msgid "No attachment found" +msgstr "" + +#: app/routes/team_chat.py:451 +msgid "Invalid filename" +msgstr "" + +#: app/routes/team_chat.py:462 +msgid "Server error: Could not create upload directory" +msgstr "" + +#: app/routes/team_chat.py:470 +msgid "Server error: Could not save file" +msgstr "" + +#: app/routes/team_chat.py:511 +msgid "Cannot create direct message with yourself" +msgstr "" + +#: app/routes/team_chat.py:514 +msgid "User is not active" +msgstr "" + +#: app/routes/time_approvals.py:67 +msgid "Time entry approved" +msgstr "" + +#: app/routes/time_approvals.py:95 +msgid "Time entry rejected" +msgstr "" + +#: app/routes/time_approvals.py:121 +msgid "Approval requested" +msgstr "" + +#: app/routes/time_approvals.py:141 +msgid "Approval cancelled" +msgstr "" + +#: app/routes/time_entry_templates.py:93 +msgid "Could not create template due to a database error" +msgstr "" + +#: app/routes/time_entry_templates.py:205 +msgid "Could not update template due to a database error" +msgstr "" + +#: app/routes/time_entry_templates.py:248 +msgid "Could not delete template due to a database error" +msgstr "" + +#: app/routes/timer.py:71 +msgid "Either a project or a client is required" +msgstr "" + +#: app/routes/timer.py:93 app/routes/timer.py:356 app/routes/timer.py:1783 +msgid "" +"Cannot start timer for an archived project. Please unarchive the project " +"first." +msgstr "" + +#: app/routes/timer.py:97 app/routes/timer.py:360 app/routes/timer.py:1786 +msgid "Cannot start timer for an inactive project" +msgstr "" + +#: app/routes/timer.py:105 +msgid "Selected task is invalid for the chosen project" +msgstr "" + +#: app/routes/timer.py:119 +msgid "Invalid client selected" +msgstr "" + +#: app/routes/timer.py:125 +msgid "Tasks can only be selected for project-based timers" +msgstr "" + +#: app/routes/timer.py:134 app/routes/timer.py:274 app/routes/timer.py:367 +msgid "You already have an active timer. Stop it before starting a new one." +msgstr "" + +#: app/routes/timer.py:161 app/routes/timer.py:308 app/routes/timer.py:382 +msgid "Could not start timer due to a database error. Please check server logs." +msgstr "" + +#: app/routes/timer.py:198 app/routes/timer.py:203 app/routes/timer.py:815 +#: app/routes/timer.py:822 app/routes/timer.py:1889 +#: 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:258 +msgid "Timer started" +msgstr "" + +#: app/routes/timer.py:279 +msgid "Template must have a project to start a timer" +msgstr "" + +#: app/routes/timer.py:285 +msgid "Cannot start timer for this project" +msgstr "" + +#: app/routes/timer.py:435 +msgid "No active timer to stop" +msgstr "" + +#: app/routes/timer.py:518 +#, python-format +msgid "Cannot stop timer: %(error)s" +msgstr "" + +#: app/routes/timer.py:522 +msgid "" +"Could not stop timer due to an error. Please try again or contact support" +" if the problem persists." +msgstr "" + +#: app/routes/timer.py:558 +msgid "You can only edit your own timers" +msgstr "" + +#: app/routes/timer.py:623 +msgid "Invalid task selected for the chosen project" +msgstr "" + +#: app/routes/timer.py:652 +msgid "Start time cannot be in the future" +msgstr "" + +#: app/routes/timer.py:662 +msgid "Invalid start date/time format" +msgstr "" + +#: app/routes/timer.py:681 app/routes/timer.py:1177 app/templates/base.html:219 +#: app/templates/timer/manual_entry.html:485 +msgid "End time must be after start time" +msgstr "" + +#: app/routes/timer.py:691 +msgid "Invalid end date/time format" +msgstr "" + +#: app/routes/timer.py:746 +msgid "Timer updated successfully" +msgstr "" + +#: app/routes/timer.py:769 +msgid "You do not have permission to view this time entry" +msgstr "" + +#: app/routes/timer.py:801 +msgid "You can only delete your own timers" +msgstr "" + +#: app/routes/timer.py:806 +msgid "Cannot delete an active timer" +msgstr "" + +#: app/routes/timer.py:856 app/routes/timer.py:863 +msgid "Could not delete timer due to a database error. Please check server logs." +msgstr "" + +#: app/routes/timer.py:919 app/routes/timer.py:2685 +msgid "No time entries selected" +msgstr "" + +#: app/routes/timer.py:925 app/routes/timer.py:2697 +msgid "Invalid entry IDs" +msgstr "" + +#: app/routes/timer.py:931 app/routes/timer.py:2703 +#: app/templates/client_portal/dashboard.html:280 +#: app/templates/client_portal/time_entries.html:167 +#: app/templates/timer/_time_entries_list.html:168 +msgid "No time entries found" +msgstr "" + +#: app/routes/timer.py:968 +#, python-format +msgid "Successfully deleted %(count)d time entry/entries" +msgstr "" + +#: app/routes/timer.py:974 app/routes/timer.py:2754 +#, python-format +msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +msgstr "" + +#: app/routes/timer.py:1077 app/templates/timer/manual_entry.html:459 +msgid "" +"Please provide either start/end date+time or a worked time duration " +"(HH:MM)." +msgstr "" + +#: app/routes/timer.py:1101 +msgid "Either a project or a client must be selected" +msgstr "" + +#: app/routes/timer.py:1153 +msgid "Invalid date/time format" +msgstr "" + +#: app/routes/timer.py:1250 +#, python-format +msgid "Manual entry created for %(project)s - %(task)s" +msgstr "" + +#: app/routes/timer.py:1253 +#, python-format +msgid "Manual entry created for %(target)s" +msgstr "" + +#: app/routes/timer.py:1372 +msgid "All fields are required" +msgstr "" + +#: app/routes/timer.py:1393 +msgid "" +"Cannot create time entries for an archived project. Please unarchive the " +"project first." +msgstr "" + +#: app/routes/timer.py:1401 +msgid "Cannot create time entries for an inactive project" +msgstr "" + +#: app/routes/timer.py:1413 +msgid "Invalid task selected" +msgstr "" + +#: app/routes/timer.py:1429 +msgid "End date must be after or equal to start date" +msgstr "" + +#: app/routes/timer.py:1439 +msgid "Date range cannot exceed 31 days" +msgstr "" + +#: app/routes/timer.py:1469 +msgid "Invalid time format" +msgstr "" + +#: app/routes/timer.py:1491 +msgid "No valid dates found in the selected range" +msgstr "" + +#: app/routes/timer.py:1557 +msgid "" +"Could not create bulk entries due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/timer.py:1576 +msgid "An error occurred while creating bulk entries. Please try again." +msgstr "" + +#: app/routes/timer.py:1704 +msgid "You can only duplicate your own timers" +msgstr "" + +#: app/routes/timer.py:1759 +msgid "You can only resume your own timers" +msgstr "" + +#: app/routes/timer.py:1779 +msgid "Project no longer exists" +msgstr "" + +#: app/routes/timer.py:1805 +msgid "Client no longer exists or is inactive" +msgstr "" + +#: app/routes/timer.py:1811 +msgid "Timer is not linked to a project or client" +msgstr "" + +#: app/routes/timer.py:1839 +msgid "Could not resume timer due to a database error. Please check server logs." +msgstr "" + +#: app/routes/timer.py:1890 +msgid "Resumed timer" +msgstr "" + +#: app/routes/timer.py:1944 +msgid "Timer resumed" +msgstr "" + +#: app/routes/timer.py:2658 +#, python-format +msgid "PDF export failed: %(error)s" +msgstr "" + +#: app/routes/timer.py:2689 +msgid "Invalid paid status" +msgstr "" + +#: app/routes/timer.py:2744 +msgid "" +"Could not update time entries due to a database error. Please check " +"server logs." +msgstr "" + +#: app/routes/timer.py:2748 +#, python-format +msgid "Successfully marked %(count)d time entry/entries as %(status)s" +msgstr "" + +#: app/routes/timer.py:2748 +msgid "paid" +msgstr "" + +#: app/routes/timer.py:2748 +msgid "unpaid" +msgstr "" + +#: app/routes/user.py:80 +msgid "Invalid timezone selected" +msgstr "" + +#: app/routes/user.py:128 +msgid "Standard hours per day must be between 0.5 and 24" +msgstr "" + +#: app/routes/user.py:143 +msgid "Settings saved successfully" +msgstr "" + +#: app/routes/user.py:145 app/routes/user.py:208 +msgid "Error saving settings" +msgstr "" + +#: app/routes/user.py:148 +#, python-format +msgid "Error saving settings: %(error)s" +msgstr "" + +#: app/routes/user.py:203 app/templates/user/settings.html:509 +msgid "Invalid code." +msgstr "" + +#: app/routes/user.py:253 +msgid "Preferences updated" +msgstr "" + +#: app/routes/user.py:302 +msgid "Language updated successfully" +msgstr "" + +#: app/routes/user.py:304 app/routes/user.py:333 +msgid "Invalid language" +msgstr "" + +#: app/routes/user.py:327 +#, python-format +msgid "Language updated to %(language)s" +msgstr "" + +#: app/routes/webhooks.py:40 +msgid "Webhook name is required" +msgstr "" + +#: app/routes/webhooks.py:46 +msgid "Webhook URL is required" +msgstr "" + +#: app/routes/webhooks.py:54 +msgid "At least one event must be selected" +msgstr "" + +#: app/routes/webhooks.py:80 +msgid "Webhook created successfully" +msgstr "" + +#: app/routes/webhooks.py:84 +msgid "Error creating webhook" +msgstr "" + +#: app/routes/webhooks.py:87 +#, python-format +msgid "Error creating webhook: %(error)s" +msgstr "" + +#: app/routes/webhooks.py:149 +msgid "Webhook updated successfully" +msgstr "" + +#: app/routes/webhooks.py:153 +#, python-format +msgid "Error updating webhook: %(error)s" +msgstr "" + +#: app/routes/webhooks.py:174 +msgid "Webhook deleted successfully" +msgstr "" + +#: app/routes/webhooks.py:177 +#, python-format +msgid "Error deleting webhook: %(error)s" +msgstr "" + +#: app/routes/weekly_goals.py:78 app/routes/weekly_goals.py:222 +msgid "Please enter a valid target hours (greater than 0)" +msgstr "" + +#: app/routes/weekly_goals.py:99 +msgid "" +"A goal already exists for this week. Please edit the existing goal " +"instead." +msgstr "" + +#: app/routes/weekly_goals.py:114 +msgid "Weekly time goal created successfully!" +msgstr "" + +#: app/routes/weekly_goals.py:130 +msgid "Failed to create goal. Please try again." +msgstr "" + +#: app/routes/weekly_goals.py:145 +msgid "You do not have permission to view this goal" +msgstr "" + +#: app/routes/weekly_goals.py:206 +msgid "You do not have permission to edit this goal" +msgstr "" + +#: app/routes/weekly_goals.py:243 +msgid "Weekly time goal updated successfully!" +msgstr "" + +#: app/routes/weekly_goals.py:260 +msgid "Failed to update goal. Please try again." +msgstr "" + +#: app/routes/weekly_goals.py:275 +msgid "You do not have permission to delete this goal" +msgstr "" + +#: app/routes/weekly_goals.py:283 +msgid "Weekly time goal deleted successfully" +msgstr "" + +#: app/routes/weekly_goals.py:293 +msgid "Failed to delete goal. Please try again." +msgstr "" + +#: app/routes/workflows.py:57 +msgid "Workflow created successfully" +msgstr "" + +#: app/routes/workflows.py:62 app/routes/workflows.py:138 +msgid "Task Status Changes" +msgstr "" + +#: app/routes/workflows.py:63 app/routes/workflows.py:139 +msgid "Task Created" +msgstr "" + +#: app/routes/workflows.py:64 app/routes/workflows.py:140 +msgid "Task Completed" +msgstr "" + +#: app/routes/workflows.py:65 app/routes/workflows.py:141 +msgid "Time Logged" +msgstr "" + +#: app/routes/workflows.py:66 app/routes/workflows.py:142 +msgid "Deadline Approaching" +msgstr "" + +#: app/routes/workflows.py:67 app/routes/workflows.py:143 +msgid "Budget Threshold Reached" +msgstr "" + +#: app/routes/workflows.py:68 +msgid "Invoice Created" +msgstr "" + +#: app/routes/workflows.py:69 +msgid "Invoice Paid" +msgstr "" + +#: app/routes/workflows.py:73 app/routes/workflows.py:147 +msgid "Log Time Entry" +msgstr "" + +#: app/routes/workflows.py:74 app/routes/workflows.py:148 +msgid "Send Notification" +msgstr "" + +#: app/routes/workflows.py:75 app/routes/workflows.py:149 +#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 +#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:153 +#: app/templates/tasks/list.html:173 +msgid "Update Status" +msgstr "" + +#: app/routes/workflows.py:76 app/routes/workflows.py:150 +msgid "Assign Task" +msgstr "" + +#: app/routes/workflows.py:77 app/templates/issues/view.html:80 +#: app/templates/tasks/create.html:3 app/templates/tasks/create.html:14 +#: app/templates/tasks/create.html:131 +msgid "Create Task" +msgstr "" + +#: app/routes/workflows.py:78 +msgid "Update Project" +msgstr "" + +#: app/routes/workflows.py:79 app/templates/invoices/edit.html:14 +#: app/templates/invoices/view.html:521 app/templates/quotes/view.html:41 +#: app/templates/quotes/view.html:471 +msgid "Send Email" +msgstr "" + +#: app/routes/workflows.py:80 +msgid "Trigger Webhook" +msgstr "" + +#: app/routes/workflows.py:134 +msgid "Workflow updated successfully" +msgstr "" + +#: app/routes/workflows.py:174 +msgid "Workflow deleted successfully" +msgstr "" + +#: app/templates/_components.html:212 +msgid "remaining" +msgstr "" + +#: app/templates/admin/webhooks/list.html:68 +#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:182 +#: app/templates/integrations/view.html:53 +#: app/templates/integrations/view.html:84 +#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:755 +msgid "Success" +msgstr "" + +#: app/templates/admin/email_support.html:388 +#: app/templates/admin/email_support.html:487 app/templates/base.html:183 +#: app/templates/integrations/view.html:55 +#: app/templates/integrations/view.html:86 +#: app/templates/main/dashboard.html:489 app/templates/reports/builder.html:775 +#: app/templates/reports/builder.html:789 +#: app/templates/reports/scheduled.html:71 +#: app/templates/timer/manual_entry.html:302 +#: app/templates/timer/manual_entry.html:314 +#: app/templates/timer/manual_entry.html:346 +#: app/templates/timer/manual_entry.html:431 +#: app/templates/timer/manual_entry.html:461 +#: app/templates/timer/manual_entry.html:487 +#: app/templates/timer/timer_page.html:346 +msgid "Error" +msgstr "" + +#: app/templates/base.html:184 app/templates/budget/dashboard.html:161 +#: app/templates/budget/project_detail.html:67 +#: app/templates/main/dashboard.html:1271 app/templates/projects/view.html:260 +#: app/templates/timer/manual_entry.html:882 app/utils/i18n_helpers.py:274 +#: app/utils/i18n_helpers.py:280 +msgid "Warning" +msgstr "" + +#: app/templates/base.html:185 app/templates/calendar/event_detail.html:170 +#: app/templates/quotes/view.html:395 +msgid "Information" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:51 +#: app/templates/analytics/dashboard.html:195 +#: app/templates/analytics/dashboard_improved.html:200 +#: app/templates/analytics/mobile_dashboard.html:148 +#: app/templates/base.html:188 +#: app/templates/components/activity_feed_widget.html:220 +#: app/templates/import_export/index.html:128 +#: app/templates/import_export/index.html:202 +#: app/templates/reports/unpaid_hours_report.html:64 +msgid "Loading..." +msgstr "" + +#: app/templates/admin/email_support.html:329 app/templates/base.html:189 +#: app/templates/client_notes/edit.html:115 +#: app/templates/comments/_comments_section.html:169 +#: app/templates/comments/edit.html:108 app/templates/reports/builder.html:657 +msgid "Saving..." +msgstr "" + +#: app/templates/base.html:190 +msgid "Deleting..." +msgstr "" + +#: app/templates/admin/api_tokens.html:429 +#: app/templates/admin/api_tokens.html:462 +#: app/templates/admin/custom_field_definitions/form.html:66 +#: app/templates/admin/email_templates/create.html:117 +#: app/templates/admin/email_templates/edit.html:115 +#: app/templates/admin/email_templates/list.html:80 +#: app/templates/admin/integrations/setup.html:162 +#: app/templates/admin/link_templates/form.html:72 +#: app/templates/admin/oidc_setup_wizard.html:316 +#: app/templates/admin/quote_pdf_layout.html:3875 +#: app/templates/admin/quote_pdf_layout.html:7078 +#: 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:444 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:145 +#: app/templates/auth/change_password.html:39 app/templates/base.html:191 +#: 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:86 +#: app/templates/client_portal/new_issue.html:85 +#: app/templates/client_portal/quote_detail.html:159 +#: app/templates/clients/create.html:110 app/templates/clients/edit.html:145 +#: app/templates/clients/view.html:222 app/templates/clients/view.html:445 +#: app/templates/clients/view.html:564 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:79 +#: app/templates/contacts/communication_form.html:82 +#: app/templates/contacts/form.html:99 app/templates/deals/form.html:112 +#: app/templates/expenses/view.html:400 +#: app/templates/import_export/index.html:240 +#: app/templates/import_export/index.html:278 +#: 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:112 +#: 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:339 app/templates/invoices/edit.html:723 +#: app/templates/invoices/generate_from_time.html:136 +#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:385 +#: 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/form.html:103 +#: app/templates/main/dashboard.html:582 +#: 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_good.html:68 +#: app/templates/projects/archive.html:82 +#: app/templates/projects/create.html:137 +#: app/templates/projects/create.html:471 app/templates/projects/edit.html:128 +#: app/templates/projects/edit_good.html:68 +#: app/templates/projects/view.html:336 app/templates/quotes/accept.html:54 +#: app/templates/quotes/create.html:195 app/templates/quotes/edit.html:262 +#: app/templates/quotes/view.html:295 app/templates/quotes/view.html:376 +#: app/templates/quotes/view.html:468 app/templates/quotes/view.html:542 +#: app/templates/quotes/view.html:560 app/templates/quotes/view.html:572 +#: app/templates/recurring_tasks/form.html:128 +#: app/templates/reports/builder.html:214 app/templates/reports/index.html:459 +#: app/templates/reports/schedule_form.html:100 +#: app/templates/settings/keyboard_shortcuts.html:465 +#: app/templates/tasks/create.html:130 app/templates/tasks/edit.html:151 +#: app/templates/tasks/list.html:212 app/templates/tasks/list.html:414 +#: app/templates/timer/time_entries_overview.html:168 +#: app/templates/timer/time_entries_overview.html:194 +#: app/templates/user/settings.html:347 +#: app/templates/weekly_goals/create.html:125 +#: app/templates/weekly_goals/edit.html:112 +msgid "Cancel" +msgstr "" + +#: app/templates/base.html:192 +msgid "Confirm" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2119 +#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:136 +#: app/templates/base.html:193 app/templates/calendar/view.html:148 +#: app/templates/chat/index.html:101 app/templates/invoices/list.html:155 +#: app/templates/invoices/view.html:369 app/templates/kanban/columns.html:143 +#: app/templates/main/dashboard.html:497 app/templates/projects/create.html:431 +#: app/templates/quotes/view.html:438 app/templates/tasks/_kanban.html:1363 +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:194 +#: app/templates/calendar/view.html:112 +#: 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:63 app/templates/reports/builder.html:215 +msgid "Save" +msgstr "" + +#: app/templates/admin/api_tokens.html:461 +#: 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:195 +#: 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:262 +#: app/templates/clients/view.html:264 app/templates/clients/view.html:496 +#: app/templates/clients/view.html:563 app/templates/comments/_comment.html:41 +#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:399 +#: app/templates/integrations/view.html:150 app/templates/invoices/edit.html:88 +#: 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:376 +#: app/templates/projects/view.html:378 +#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/edit.html:80 +#: app/templates/quotes/list.html:368 app/templates/quotes/view.html:322 +#: app/templates/quotes/view.html:347 app/templates/quotes/view.html:575 +#: 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:413 +#: app/templates/time_entry_templates/list.html:44 +#: app/templates/time_entry_templates/view.html:144 +#: app/templates/timer/_time_entries_list.html:20 +#: app/templates/timer/time_entries_overview.html:171 +#: app/templates/weekly_goals/edit.html:115 +#: app/templates/weekly_goals/edit.html:117 +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:196 +#: app/templates/calendar/event_detail.html:22 +#: app/templates/calendar/view.html:151 app/templates/clients/view.html:488 +#: app/templates/comments/_comment.html:36 app/templates/contacts/list.html:59 +#: app/templates/deals/view.html:13 app/templates/kanban/columns.html:93 +#: app/templates/leads/view.html:13 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:319 app/templates/quotes/view.html:344 +#: 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/overdue.html:96 +#: app/templates/timer/_time_entries_list.html:158 +#: 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:197 +msgid "Add" +msgstr "" + +#: app/templates/admin/settings.html:443 app/templates/base.html:198 +#: app/templates/inventory/purchase_orders/form.html:153 +#: app/templates/inventory/stock_items/form.html:120 +#: app/templates/inventory/stock_items/form.html:171 +msgid "Remove" +msgstr "" + +#: app/templates/admin/email_support.html:176 app/templates/base.html:199 +#: 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 +msgid "Yes" +msgstr "" + +#: app/templates/admin/email_support.html:178 app/templates/base.html:200 +#: 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 +msgid "No" +msgstr "" + +#: app/templates/admin/users.html:108 app/templates/base.html:201 +#: app/templates/inventory/stock_levels/warehouse.html:77 +msgid "OK" +msgstr "" + +#: app/templates/base.html:204 +msgid "Are you sure you want to delete this?" +msgstr "" + +#: app/templates/base.html:205 +msgid "You have unsaved changes. Are you sure you want to leave?" +msgstr "" + +#: app/templates/base.html:206 +msgid "Operation failed" +msgstr "" + +#: app/templates/base.html:207 +msgid "Operation completed successfully" +msgstr "" + +#: app/templates/base.html:208 +msgid "No items selected" +msgstr "" + +#: app/templates/base.html:209 +msgid "Invalid input" +msgstr "" + +#: app/templates/base.html:210 +msgid "This field is required" +msgstr "" + +#: app/templates/base.html:211 app/templates/kiosk/base.html:103 +#: app/templates/user/profile.html:62 +msgid "No active timer" +msgstr "" + +#: app/templates/base.html:212 +msgid "Timer stopped" +msgstr "" + +#: app/templates/base.html:213 +msgid "Failed to stop timer" +msgstr "" + +#: app/templates/base.html:214 +msgid "Error stopping timer" +msgstr "" + +#: app/templates/base.html:215 +msgid "No form to save" +msgstr "" + +#: app/templates/base.html:216 +msgid "No timer found" +msgstr "" + +#: app/templates/base.html:217 +msgid "Timer stopped due to inactivity" +msgstr "" + +#: app/templates/base.html:218 app/templates/main/dashboard.html:487 +#: app/templates/timer/manual_entry.html:429 +#: app/templates/timer/timer_page.html:344 +msgid "Please select either a project or a client" +msgstr "" + +#: app/templates/base.html:280 +msgid "Skip to content" +msgstr "" + +#: app/templates/base.html:305 +msgid "Navigation" +msgstr "" + +#: app/templates/base.html:306 +msgid "Toggle sidebar" +msgstr "" + +#: app/templates/base.html:314 app/templates/base.html:1147 +#: app/templates/client_portal/base.html:252 +#: app/templates/client_portal/base.html:337 +#: app/templates/main/dashboard.html:14 app/templates/main/dashboard.html:19 +#: app/templates/main/donate.html:8 app/templates/projects/view.html:23 +msgid "Dashboard" +msgstr "" + +#: app/templates/base.html:321 app/templates/calendar/view.html:12 +#: app/templates/calendar/view.html:17 +msgid "Calendar" +msgstr "" + +#: app/templates/base.html:329 app/templates/main/help.html:170 +msgid "Calendar View" +msgstr "" + +#: app/templates/base.html:334 app/templates/base.html:693 +#: app/templates/integrations/list.html:4 +#: app/templates/integrations/wizard_base.html:8 +msgid "Integrations" +msgstr "" + +#: app/templates/admin/modules.html:111 app/templates/admin/modules.html:153 +#: app/templates/auth/login.html:32 app/templates/base.html:343 +#: app/templates/main/about.html:29 app/templates/main/help.html:27 +#: app/templates/main/help.html:101 app/templates/main/help.html:255 +#: app/templates/timer/manual_entry.html:7 +msgid "Time Tracking" +msgstr "" + +#: app/templates/base.html:360 app/templates/timer/manual_entry.html:8 +#: app/templates/timer/manual_entry.html:125 +msgid "Log Time" +msgstr "" + +#: app/templates/admin/oidc_user_detail.html:65 app/templates/base.html:365 +#: 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:261 +#: app/templates/client_portal/base.html:346 +#: 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:355 +#: app/templates/timer/time_entries_overview.html:9 +#: app/templates/timer/view_timer.html:8 +msgid "Time Entries" +msgstr "" + +#: app/templates/base.html:376 app/templates/project_templates/list.html:4 +msgid "Project Templates" +msgstr "" + +#: app/templates/base.html:383 app/templates/gantt/view.html:4 +msgid "Gantt Chart" +msgstr "" + +#: app/templates/base.html:389 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:357 +msgid "Tasks" +msgstr "" + +#: app/templates/base.html:395 app/templates/client_portal/base.html:271 +#: app/templates/client_portal/base.html:356 +#: 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 "" + +#: app/templates/base.html:402 app/templates/kanban/board.html:9 +#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 +#: app/templates/main/help.html:335 app/templates/tasks/_kanban.html:9 +msgid "Kanban Board" +msgstr "" + +#: app/templates/base.html:409 app/templates/weekly_goals/index.html:8 +msgid "Weekly Goals" +msgstr "" + +#: app/templates/base.html:416 app/templates/base.html:876 +msgid "Time Entry Templates" +msgstr "" + +#: app/templates/admin/modules.html:113 app/templates/admin/modules.html:155 +#: app/templates/base.html:426 +msgid "CRM" +msgstr "" + +#: app/templates/base.html:438 +#: app/templates/components/activity_feed_widget.html:43 +msgid "Clients" +msgstr "" + +#: app/templates/base.html:445 app/templates/integrations/wizard_xero.html:102 +msgid "Contacts" +msgstr "" + +#: app/templates/base.html:446 +msgid "via Clients" +msgstr "" + +#: app/templates/base.html:453 app/templates/deals/view.html:8 +msgid "Deals" +msgstr "" + +#: app/templates/base.html:460 app/templates/leads/view.html:8 +msgid "Leads" +msgstr "" + +#: app/templates/base.html:467 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 "" + +#: app/templates/admin/modules.html:114 app/templates/admin/modules.html:156 +#: app/templates/base.html:478 +msgid "Finance & Expenses" +msgstr "" + +#: app/templates/base.html:496 app/templates/base.html:665 +#: app/templates/base.html:1158 app/templates/budget/dashboard.html:17 +#: app/templates/client_portal/base.html:291 +#: app/templates/client_portal/base.html:370 +#: app/templates/client_portal/reports.html:4 +#: app/templates/client_portal/reports.html:9 +#: app/templates/client_portal/reports.html:14 +msgid "Reports" +msgstr "" + +#: app/templates/base.html:503 +msgid "All Reports" +msgstr "" + +#: app/templates/base.html:509 app/templates/reports/index.html:182 +msgid "Report Builder" +msgstr "" + +#: app/templates/base.html:514 app/templates/reports/builder.html:17 +msgid "Saved Views" +msgstr "" + +#: app/templates/base.html:521 app/templates/reports/index.html:143 +#: app/templates/reports/index.html:195 app/templates/reports/scheduled.html:4 +msgid "Scheduled Reports" +msgstr "" + +#: app/templates/base.html:531 app/templates/client_portal/base.html:258 +#: app/templates/client_portal/base.html:343 +#: 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/reports/builder.html:358 +msgid "Invoices" +msgstr "" + +#: app/templates/base.html:538 +msgid "Invoice Approvals" +msgstr "" + +#: app/templates/base.html:545 app/templates/payment_gateways/list.html:4 +msgid "Payment Gateways" +msgstr "" + +#: app/templates/base.html:552 app/templates/recurring_invoices/list.html:6 +#: app/templates/recurring_invoices/list.html:11 +msgid "Recurring Invoices" +msgstr "" + +#: app/templates/base.html:559 +#: app/templates/integrations/wizard_quickbooks.html:113 +#: app/templates/integrations/wizard_xero.html:96 +msgid "Payments" +msgstr "" + +#: app/templates/base.html:566 +#: app/templates/integrations/wizard_quickbooks.html:107 +#: app/templates/integrations/wizard_xero.html:90 +#: app/templates/invoices/edit.html:201 app/templates/invoices/edit.html:391 +#: app/templates/main/help.html:33 app/templates/reports/builder.html:359 +msgid "Expenses" +msgstr "" + +#: app/templates/base.html:573 +msgid "Mileage" +msgstr "" + +#: app/templates/base.html:580 +msgid "Per Diem" +msgstr "" + +#: app/templates/base.html:587 app/templates/budget/dashboard.html:7 +msgid "Budget Alerts" +msgstr "" + +#: app/templates/admin/modules.html:115 app/templates/admin/modules.html:157 +#: app/templates/base.html:598 +msgid "Inventory" +msgstr "" + +#: app/templates/base.html:614 app/templates/inventory/suppliers/view.html:174 +msgid "Stock Items" +msgstr "" + +#: app/templates/base.html:619 +msgid "Warehouses" +msgstr "" + +#: app/templates/base.html:624 app/templates/inventory/stock_items/form.html:98 +#: app/templates/inventory/stock_items/view.html:60 +msgid "Suppliers" +msgstr "" + +#: app/templates/base.html:630 +msgid "Purchase Orders" +msgstr "" + +#: app/templates/base.html:635 app/templates/inventory/warehouses/view.html:79 +msgid "Stock Levels" +msgstr "" + +#: app/templates/base.html:640 +msgid "Stock Movements" +msgstr "" + +#: app/templates/base.html:645 +msgid "Transfers" +msgstr "" + +#: app/templates/base.html:650 +msgid "Adjustments" +msgstr "" + +#: app/templates/base.html:655 +msgid "Reservations" +msgstr "" + +#: app/templates/base.html:660 +msgid "Low Stock Alerts" +msgstr "" + +#: app/templates/admin/modules.html:116 app/templates/admin/modules.html:158 +#: app/templates/analytics/dashboard.html:8 +#: app/templates/analytics/mobile_dashboard.html:3 +#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:675 +#: app/templates/main/about.html:38 +msgid "Analytics" +msgstr "" + +#: app/templates/admin/modules.html:117 app/templates/admin/modules.html:159 +#: app/templates/base.html:683 +msgid "Tools & Data" +msgstr "" + +#: app/templates/base.html:700 +msgid "Import / Export" +msgstr "" + +#: app/templates/base.html:707 +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/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:718 +#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 +msgid "Admin" +msgstr "" + +#: app/templates/base.html:726 +msgid "Admin Dashboard" +msgstr "" + +#: app/templates/admin/settings.html:100 app/templates/base.html:736 +#: app/templates/main/help.html:558 +msgid "User Management" +msgstr "" + +#: app/templates/base.html:743 +msgid "Manage Users" +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:107 app/templates/base.html:750 +msgid "Roles & Permissions" +msgstr "" + +#: app/templates/base.html:763 app/templates/main/help.html:64 +msgid "System Settings" +msgstr "" + +#: app/templates/base.html:770 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:775 +msgid "Module Management" +msgstr "" + +#: app/templates/admin/email_support.html:18 +#: app/templates/admin/salesman_email_mappings.html:86 +#: app/templates/base.html:780 +msgid "Email Configuration" +msgstr "" + +#: app/templates/base.html:785 +msgid "Email Templates" +msgstr "" + +#: app/templates/base.html:791 +msgid "PDF Templates" +msgstr "" + +#: app/templates/base.html:797 +msgid "Invoice PDF" +msgstr "" + +#: app/templates/base.html:802 +msgid "Quote PDF" +msgstr "" + +#: app/templates/admin/oidc_debug.html:9 +#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:811 +msgid "OIDC Settings" +msgstr "" + +#: app/templates/base.html:824 +msgid "Security & Access" +msgstr "" + +#: app/templates/base.html:831 +msgid "API Tokens" +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:845 +msgid "Audit Logs" +msgstr "" + +#: app/templates/base.html:857 +msgid "Data Management" +msgstr "" + +#: app/templates/base.html:864 +msgid "Expense Categories" +msgstr "" + +#: app/templates/base.html:869 +msgid "Per Diem Rates" +msgstr "" + +#: app/templates/base.html:881 app/templates/clients/create.html:80 +#: app/templates/clients/edit.html:74 app/templates/clients/view.html:117 +#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 +#: app/templates/projects/view.html:133 +msgid "Custom Fields" +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:886 +msgid "Link Templates" +msgstr "" + +#: app/templates/base.html:899 +msgid "System Maintenance" +msgstr "" + +#: app/templates/base.html:906 app/templates/main/about.html:239 +#: app/templates/main/help.html:757 app/templates/main/help.html:799 +msgid "System Info" +msgstr "" + +#: app/templates/base.html:913 +msgid "Backups" +msgstr "" + +#: app/templates/base.html:920 +msgid "Telemetry" +msgstr "" + +#: app/templates/base.html:937 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:943 app/templates/clients/create.html:119 +#: app/templates/main/help.html:3 app/templates/main/help.html:8 +#: app/templates/main/help.html:12 +msgid "Help" +msgstr "" + +#: app/templates/base.html:950 app/templates/base.html:1066 +#: app/templates/main/about.html:184 app/templates/main/donate.html:10 +#: app/templates/main/help.html:810 +msgid "Support Development" +msgstr "" + +#: app/templates/base.html:979 app/templates/base.html:980 +#: 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:110 +msgid "Search" +msgstr "" + +#: app/templates/base.html:997 +msgid "Support TimeTracker development" +msgstr "" + +#: app/templates/base.html:999 +msgid "Support" +msgstr "" + +#: app/templates/base.html:1002 app/templates/kiosk/base.html:116 +#: app/templates/kiosk/login.html:72 +msgid "Toggle dark mode" +msgstr "" + +#: app/templates/base.html:1009 +msgid "Open chat" +msgstr "" + +#: app/templates/base.html:1011 +#: app/templates/components/persistent_chat_widget.html:21 +msgid "Chat" +msgstr "" + +#: app/templates/base.html:1017 +msgid "Change language" +msgstr "" + +#: app/templates/base.html:1022 app/templates/user/settings.html:128 +msgid "Language" +msgstr "" + +#: app/templates/base.html:1038 +msgid "User menu" +msgstr "" + +#: app/templates/base.html:1055 app/templates/base.html:1061 +msgid "Guest" +msgstr "" + +#: app/templates/base.html:1064 +msgid "My Profile" +msgstr "" + +#: app/templates/base.html:1065 +msgid "My Settings" +msgstr "" + +#: app/templates/base.html:1067 app/templates/client_portal/base.html:300 +#: app/templates/client_portal/base.html:377 app/templates/kiosk/base.html:129 +msgid "Logout" +msgstr "" + +#: app/templates/base.html:1101 app/templates/base.html:2284 +msgid "Enjoying TimeTracker?" +msgstr "" + +#: app/templates/base.html:1104 app/templates/base.html:2281 +#: app/templates/base.html:2285 +msgid "Your support helps fund server costs and new features" +msgstr "" + +#: app/templates/base.html:1111 app/templates/main/about.html:205 +#: app/templates/main/dashboard.html:447 +#: app/templates/quotes/_quotes_list.html:92 +msgid "Learn More" +msgstr "" + +#: app/templates/base.html:1118 +msgid "Buy Me a Coffee" +msgstr "" + +#: app/templates/base.html:1125 app/utils/i18n_helpers.py:114 +#: app/utils/i18n_helpers.py:130 +msgid "PayPal" +msgstr "" + +#: app/templates/base.html:1129 +msgid "Dismiss" +msgstr "" + +#: app/templates/base.html:1162 app/templates/user/profile.html:2 +msgid "Profile" +msgstr "" + +#: app/templates/base.html:1632 +msgid "Type a command or search..." +msgstr "" + +#: app/templates/base.html:2274 +msgid "Amazing! You've tracked over 100 hours" +msgstr "" + +#: app/templates/base.html:2275 +msgid "Your support helps us keep TimeTracker free and improving" +msgstr "" + +#: app/templates/base.html:2277 +msgid "Great progress! You've logged 50+ entries" +msgstr "" + +#: app/templates/base.html:2278 +msgid "Help us continue developing features you love" +msgstr "" + +#: app/templates/base.html:2280 +msgid "Thanks for using TimeTracker!" +msgstr "" + +#: app/templates/admin/api_tokens.html:129 +msgid "Create API Token" +msgstr "" + +#: app/templates/admin/api_tokens.html:324 +msgid "Your API Token" +msgstr "" + +#: app/templates/admin/api_tokens.html:336 +msgid "Usage Examples" +msgstr "" + +#: app/templates/admin/api_tokens.html:425 +msgid "Are you sure you want to" +msgstr "" + +#: app/templates/admin/api_tokens.html:425 +msgid "deactivate" +msgstr "" + +#: app/templates/admin/api_tokens.html:425 +msgid "activate" +msgstr "" + +#: app/templates/admin/api_tokens.html:425 +msgid "this token?" +msgstr "" + +#: app/templates/admin/api_tokens.html:427 +msgid "Deactivate Token" +msgstr "" + +#: app/templates/admin/api_tokens.html:427 +msgid "Activate Token" +msgstr "" + +#: app/templates/admin/api_tokens.html:428 app/templates/kanban/columns.html:98 +msgid "Deactivate" +msgstr "" + +#: app/templates/admin/api_tokens.html:428 app/templates/clients/view.html:20 +#: app/templates/clients/view.html:22 app/templates/kanban/columns.html:98 +#: app/templates/projects/view.html:42 app/templates/projects/view.html:44 +msgid "Activate" +msgstr "" + +#: app/templates/admin/api_tokens.html:458 +msgid "Are you sure you want to delete this token? This action cannot be undone." +msgstr "" + +#: app/templates/admin/api_tokens.html:460 +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 "" + +#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 +#: app/templates/audit_logs/list.html:59 +msgid "All time" +msgstr "" + +#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 +msgid "Active Users" +msgstr "" + +#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 +msgid "Currently active" +msgstr "" + +#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:178 +msgid "Total Projects" +msgstr "" + +#: app/templates/admin/dashboard.html:69 +#: app/templates/analytics/dashboard.html:60 +#: app/templates/client_portal/dashboard.html:24 +#: app/templates/clients/edit.html:182 +msgid "Active Projects" +msgstr "" + +#: app/templates/admin/dashboard.html:84 +msgid "Total Entries" +msgstr "" + +#: app/templates/admin/dashboard.html:86 +msgid "Time entries logged" +msgstr "" + +#: app/templates/admin/dashboard.html:99 +msgid "Active Timers" +msgstr "" + +#: app/templates/admin/dashboard.html:101 +msgid "Currently running" +msgstr "" + +#: app/templates/admin/dashboard.html:114 +#: app/templates/analytics/dashboard.html:42 +#: 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/dashboard.html:38 +#: app/templates/client_portal/projects.html:46 +#: app/templates/client_portal/reports.html:24 +#: app/templates/client_portal/reports.html:90 +#: app/templates/clients/edit.html:186 app/templates/projects/dashboard.html:53 +#: app/templates/projects/time_entries_overview.html:22 +#: app/templates/reports/unpaid_hours_report.html:74 +#: app/templates/timer/time_entries_overview.html:22 +#: app/templates/user/profile.html:45 +msgid "Total Hours" +msgstr "" + +#: app/templates/admin/dashboard.html:116 +msgid "All time tracked" +msgstr "" + +#: app/templates/admin/dashboard.html:129 +#: app/templates/analytics/dashboard.html:51 +#: app/templates/analytics/dashboard_improved.html:44 +#: app/templates/client_portal/reports.html:91 +#: app/templates/timer/time_entries_overview.html:23 +msgid "Billable Hours" +msgstr "" + +#: app/templates/admin/dashboard.html:131 +msgid "Billable time" +msgstr "" + +#: app/templates/admin/dashboard.html:146 +msgid "User Activity (30 Days)" +msgstr "" + +#: app/templates/admin/dashboard.html:157 +msgid "Project Status" +msgstr "" + +#: app/templates/admin/dashboard.html:168 +msgid "Time Entry Trends (30 Days)" +msgstr "" + +#: app/templates/admin/dashboard.html:180 +msgid "System Health" +msgstr "" + +#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:140 +msgid "Database" +msgstr "" + +#: app/templates/admin/dashboard.html:190 +#: app/templates/admin/integrations/setup.html:191 +#: app/templates/integrations/list.html:87 +#: app/templates/integrations/manage.html:526 +#: app/templates/integrations/view.html:31 +#: app/templates/integrations/view.html:42 +#: app/templates/integrations/wizard_trello.html:92 +msgid "Connected" +msgstr "" + +#: app/templates/admin/dashboard.html:200 +msgid "OIDC Authentication" +msgstr "" + +#: app/templates/admin/dashboard.html:202 +msgid "Configured" +msgstr "" + +#: app/templates/admin/dashboard.html:202 +#: app/templates/integrations/list.html:51 +msgid "Not Configured" +msgstr "" + +#: app/templates/admin/dashboard.html:214 +#: app/templates/admin/oidc_debug.html:128 +msgid "OIDC Users" +msgstr "" + +#: app/templates/admin/dashboard.html:215 +#: app/templates/admin/roles/list.html:123 +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:367 +#: app/templates/projects/dashboard.html:242 +#: app/templates/user/profile.html:131 +msgid "Recent Activity" +msgstr "" + +#: 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/client_portal/dashboard.html:234 +#: app/templates/client_portal/reports.html:148 +#: app/templates/client_portal/time_entries.html:64 +#: app/templates/clients/view.html:336 +#: app/templates/inventory/adjustments/list.html:61 +#: app/templates/inventory/movements/list.html:62 +#: app/templates/inventory/reports/movement_history.html:78 +#: app/templates/inventory/stock_items/history.html:69 +#: app/templates/inventory/transfers/list.html:43 +#: app/templates/projects/time_entries_overview.html:73 +#: app/templates/reports/iterative_view.html:45 +#: app/templates/reports/unpaid_hours_report.html:119 +#: app/templates/reports/user_report.html:75 +#: app/templates/timer/_time_entries_list.html:35 +#: app/templates/timer/time_entries_overview.html:59 +#: app/templates/timer/view_timer.html:106 app/templates/user/profile.html:23 +msgid "User" +msgstr "" + +#: 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/dashboard.html:233 +#: 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:146 +#: app/templates/client_portal/time_entries.html:24 +#: app/templates/client_portal/time_entries.html:63 +#: app/templates/clients/view.html:334 +#: app/templates/components/offline_indicator.html:87 +#: app/templates/gantt/view.html:28 +#: app/templates/inventory/movements/list.html:40 +#: app/templates/invoices/create.html:19 +#: 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/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:504 +#: app/templates/main/search.html:33 +#: app/templates/recurring_invoices/list.html:24 +#: app/templates/recurring_tasks/form.html:35 +#: app/templates/recurring_tasks/list.html:31 +#: app/templates/reports/builder.html:88 +#: app/templates/reports/iterative_view.html:44 +#: app/templates/reports/unpaid_hours_report.html:120 +#: app/templates/reports/user_report.html:76 +#: app/templates/tasks/_kanban.html:1245 app/templates/tasks/create.html:48 +#: app/templates/tasks/edit.html:68 app/templates/tasks/edit.html:206 +#: app/templates/tasks/my_tasks.html:144 +#: app/templates/timer/manual_entry.html:47 +#: app/templates/timer/time_entries_overview.html:81 +#: app/templates/timer/timer_page.html:120 +#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1052 +msgid "Project" +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/dashboard.html:235 +#: app/templates/client_portal/reports.html:147 +#: app/templates/client_portal/time_entries.html:66 +#: app/templates/clients/view.html:337 app/templates/main/dashboard.html:148 +#: app/templates/main/search.html:36 +#: app/templates/reports/unpaid_hours_report.html:123 +#: app/templates/timer/_time_entries_list.html:39 +#: app/templates/timer/time_entries_export_pdf.html:18 +#: app/templates/timer/view_timer.html:41 +msgid "Duration" +msgstr "" + +#: app/templates/admin/dashboard.html:337 +#: app/templates/analytics/dashboard.html:209 +#: 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/dashboard.html:232 +#: app/templates/client_portal/quote_detail.html:35 +#: app/templates/client_portal/quotes.html:27 +#: app/templates/client_portal/reports.html:145 +#: app/templates/client_portal/time_entries.html:62 +#: app/templates/clients/view.html:333 +#: app/templates/contacts/communication_form.html:52 +#: app/templates/inventory/adjustments/list.html:56 +#: app/templates/inventory/movements/list.html:54 +#: app/templates/inventory/reports/movement_history.html:70 +#: app/templates/inventory/stock_items/history.html:62 +#: app/templates/inventory/stock_items/view.html:239 +#: app/templates/inventory/transfers/list.html:38 +#: app/templates/inventory/warehouses/view.html:129 +#: app/templates/invoices/edit.html:217 +#: app/templates/invoices/pdf_default.html:123 +#: app/templates/main/dashboard.html:149 +#: app/templates/quotes/pdf_default.html:57 +#: app/templates/reports/iterative_view.html:42 +#: app/templates/reports/unpaid_hours_report.html:122 +#: app/templates/reports/user_report.html:74 +#: app/templates/timer/_time_entries_list.html:33 +#: app/utils/pdf_generator_fallback.py:289 +#: app/utils/pdf_generator_fallback.py:535 +msgid "Date" +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/dashboard.html:249 +#: app/templates/client_portal/dashboard.html:257 +#: 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:100 +#: app/templates/client_portal/reports.html:156 +#: app/templates/client_portal/reports.html:162 +#: app/templates/client_portal/reports.html:176 +#: app/templates/client_portal/time_entries.html:90 +#: app/templates/client_portal/time_entries.html:101 +#: app/templates/clients/view.html:372 app/templates/main/dashboard.html:170 +#: app/templates/main/search.html:51 app/templates/timer/manual_entry.html:33 +#: app/templates/user/profile.html:77 +msgid "N/A" +msgstr "" + +#: app/templates/admin/dashboard.html:506 +#: app/templates/analytics/dashboard.html:208 +#: app/templates/analytics/dashboard_improved.html:215 +#: app/templates/analytics/mobile_dashboard.html:161 +#: app/templates/budget/project_detail.html:206 +#: app/templates/projects/dashboard.html:454 +#: app/templates/projects/dashboard.html:488 +#: app/templates/projects/time_entries_overview.html:70 +#: app/templates/reports/iterative_view.html:46 +msgid "Hours" +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:161 +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:183 +msgid "Use TLS" +msgstr "" + +#: app/templates/admin/email_support.html:55 +#: app/templates/admin/email_support.html:187 +msgid "Use SSL" +msgstr "" + +#: app/templates/admin/email_support.html:61 +#: app/templates/admin/email_support.html:169 +#: app/templates/admin/oidc_debug.html:134 +#: app/templates/admin/oidc_user_detail.html:23 +#: app/templates/auth/login.html:44 app/templates/client_portal/login.html:42 +#: app/templates/client_portal/set_password.html:42 +#: app/templates/integrations/caldav_setup.html:77 +#: app/templates/integrations/manage.html:209 +#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:23 +msgid "Username" +msgstr "" + +#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:51 +#: app/templates/auth/login.html:54 app/templates/client_portal/login.html:48 +#: app/templates/client_portal/set_password.html:50 +#: app/templates/integrations/caldav_setup.html:93 +#: app/templates/integrations/manage.html:225 +#: 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:191 +msgid "Default Sender" +msgstr "" + +#: app/templates/admin/email_support.html:84 +#: app/templates/admin/email_support.html:363 +#: app/templates/integrations/activitywatch_setup.html:145 +#: app/templates/integrations/caldav_setup.html:199 +#: app/templates/integrations/manage.html:494 +msgid "Save Configuration" +msgstr "" + +#: app/templates/admin/email_support.html:87 +#: app/templates/admin/quote_pdf_layout.html:1511 +#: app/templates/admin/quote_pdf_layout.html:7077 +#: app/templates/integrations/view.html:144 +#: app/templates/projects/time_entries_overview.html:40 +#: app/templates/settings/keyboard_shortcuts.html:464 +msgid "Reset" +msgstr "" + +#: app/templates/admin/email_support.html:99 +msgid "Email Configuration Status" +msgstr "" + +#: app/templates/admin/email_support.html:101 +#: 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:111 +msgid "Email is configured!" +msgstr "" + +#: app/templates/admin/email_support.html:112 +msgid "Your email settings are properly set up." +msgstr "" + +#: app/templates/admin/email_support.html:121 +msgid "Email is not configured" +msgstr "" + +#: app/templates/admin/email_support.html:122 +msgid "Please configure email settings using the form above." +msgstr "" + +#: app/templates/admin/email_support.html:132 +msgid "Configuration Errors" +msgstr "" + +#: app/templates/admin/email_support.html:146 +msgid "Configuration Warnings" +msgstr "" + +#: app/templates/admin/email_support.html:158 +msgid "Current Email Settings" +msgstr "" + +#: app/templates/admin/email_support.html:165 +msgid "Port" +msgstr "" + +#: app/templates/admin/email_support.html:173 +msgid "Password Set" +msgstr "" + +#: app/templates/admin/email_support.html:201 +#: app/templates/admin/email_support.html:218 +#: app/templates/admin/email_support.html:462 +msgid "Send Test Email" +msgstr "" + +#: app/templates/admin/email_support.html:206 +msgid "Recipient Email Address" +msgstr "" + +#: app/templates/admin/email_support.html:228 +msgid "Configuration Guide" +msgstr "" + +#: app/templates/admin/email_support.html:231 +msgid "Common SMTP Providers" +msgstr "" + +#: app/templates/admin/email_support.html:233 +msgid "Requires app password" +msgstr "" + +#: app/templates/admin/email_support.html:242 +msgid "Important Notes" +msgstr "" + +#: app/templates/admin/email_support.html:245 +msgid "Gmail requires an App Password if 2FA is enabled" +msgstr "" + +#: app/templates/admin/email_support.html:246 +msgid "Restart the application after changing email settings" +msgstr "" + +#: app/templates/admin/email_support.html:247 +msgid "Check firewall rules if emails are not sending" +msgstr "" + +#: app/templates/admin/email_support.html:248 +msgid "For production, use a dedicated email service like SendGrid or Amazon SES" +msgstr "" + +#: app/templates/admin/email_support.html:295 +msgid "password is set" +msgstr "" + +#: app/templates/admin/email_support.html:298 +msgid "no password set" +msgstr "" + +#: app/templates/admin/email_support.html:359 +msgid "Failed to save configuration. Please try again." +msgstr "" + +#: app/templates/admin/email_support.html:377 +#: app/templates/admin/email_support.html:476 +msgid "Success!" +msgstr "" + +#: app/templates/admin/email_support.html:415 +msgid "Failed to refresh status. Please try again." +msgstr "" + +#: app/templates/admin/email_support.html:430 +msgid "Please enter a valid email address" +msgstr "" + +#: app/templates/admin/email_support.html:436 +msgid "Sending..." +msgstr "" + +#: app/templates/admin/email_support.html:458 +msgid "Failed to send test email. Please check your configuration." +msgstr "" + +#: app/templates/admin/modules.html:40 +msgid "Client Lock (optional)" +msgstr "" + +#: app/templates/admin/modules.html:42 +msgid "" +"If set, all client selectors across the app will auto-select this client " +"and prevent changes." +msgstr "" + +#: app/templates/admin/modules.html:45 +msgid "Locked Client" +msgstr "" + +#: app/templates/admin/modules.html:47 +msgid "None (no lock)" +msgstr "" + +#: app/templates/admin/modules.html:59 +msgid "Module Visibility" +msgstr "" + +#: app/templates/admin/modules.html:61 +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/modules.html:66 app/templates/admin/modules.html:168 +msgid "Enable All" +msgstr "" + +#: app/templates/admin/modules.html:69 app/templates/admin/modules.html:172 +msgid "Disable All" +msgstr "" + +#: app/templates/admin/modules.html:87 +msgid "Total Modules:" +msgstr "" + +#: app/templates/admin/modules.html:91 +msgid "Enabled:" +msgstr "" + +#: app/templates/admin/modules.html:95 +msgid "Disabled:" +msgstr "" + +#: app/templates/admin/modules.html:104 +msgid "Search modules..." +msgstr "" + +#: app/templates/admin/modules.html:108 +#: 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:112 app/templates/admin/modules.html:154 +#: app/templates/main/about.html:32 app/templates/main/help.html:28 +#: app/templates/main/help.html:179 +msgid "Project Management" +msgstr "" + +#: app/templates/admin/modules.html:125 +msgid "Show disabled only" +msgstr "" + +#: app/templates/admin/modules.html:129 +msgid "Show with dependencies" +msgstr "" + +#: app/templates/admin/modules.html:139 +msgid "Warning: Disabling these modules will also affect dependent modules:" +msgstr "" + +#: app/templates/admin/modules.html:202 app/templates/admin/oidc_debug.html:32 +#: app/templates/integrations/list.html:47 +msgid "Enabled" +msgstr "" + +#: app/templates/admin/modules.html:204 app/templates/admin/oidc_debug.html:34 +msgid "Disabled" +msgstr "" + +#: app/templates/admin/modules.html:213 +msgid "Depends on:" +msgstr "" + +#: app/templates/admin/modules.html:240 +msgid "" +"Disabling \"Reports\" hides the whole Reports submenu including Report " +"Builder and Scheduled Reports." +msgstr "" + +#: app/templates/admin/modules.html:244 app/templates/auth/edit_profile.html:78 +#: app/templates/client_notes/edit.html:83 app/templates/comments/edit.html:76 +#: app/templates/invoices/edit.html:340 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/weekly_goals/edit.html:122 +msgid "Save Changes" +msgstr "" + +#: app/templates/admin/modules.html:249 +msgid "No modules available." +msgstr "" + +#: app/templates/admin/modules.html:259 +#: app/templates/contacts/communication_form.html:33 +msgid "Note" +msgstr "" + +#: app/templates/admin/modules.html:261 +msgid "All modules are enabled by default." +msgstr "" + +#: app/templates/admin/modules.html:262 +msgid "" +"Core modules cannot be disabled as they are required for the application " +"to function." +msgstr "" + +#: app/templates/admin/modules.html:263 +msgid "" +"Disabling a module affects all users system-wide. Disabled modules will " +"not appear in the navigation sidebar." +msgstr "" + +#: app/templates/admin/modules.html:477 +msgid "Enable all modules?" +msgstr "" + +#: app/templates/admin/modules.html:486 +msgid "Disable all modules? This may affect functionality." +msgstr "" + +#: app/templates/admin/modules.html:512 +msgid "Disable" +msgstr "" + +#: app/templates/admin/modules.html:512 +msgid "module(s) in this category?" +msgstr "" + +#: app/templates/admin/modules.html:557 +msgid "Validation errors:" +msgstr "" + +#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 +msgid "OIDC Debug Dashboard" +msgstr "" + +#: app/templates/admin/oidc_debug.html:15 +msgid "Inspect configuration, provider metadata and OIDC users" +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:115 +#: app/templates/integrations/wizard_base.html:10 +msgid "Setup Wizard" +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/custom_field_definitions/list.html:28 +#: app/templates/admin/link_templates/list.html:29 +#: app/templates/admin/oidc_debug.html:29 +#: app/templates/admin/oidc_user_detail.html:27 +#: app/templates/admin/quote_pdf_layout.html:1624 +#: app/templates/admin/salesman_email_mappings.html:41 +#: app/templates/admin/webhooks/list.html:27 +#: app/templates/admin/webhooks/view.html:32 +#: app/templates/admin/webhooks/view.html:102 +#: 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/contacts/communication_form.html:57 +#: app/templates/deals/list.html:22 app/templates/deals/view.html:51 +#: 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/view.html:34 +#: app/templates/inventory/reports/turnover.html:49 +#: app/templates/inventory/reservations/list.html:20 +#: app/templates/inventory/reservations/list.html:44 +#: app/templates/inventory/stock_items/list.html:55 +#: app/templates/inventory/stock_items/view.html:100 +#: app/templates/inventory/stock_items/view.html:181 +#: app/templates/inventory/stock_levels/warehouse.html:52 +#: app/templates/inventory/suppliers/list.html:25 +#: app/templates/inventory/suppliers/list.html:46 +#: app/templates/inventory/suppliers/view.html:30 +#: app/templates/inventory/warehouses/list.html:26 +#: app/templates/inventory/warehouses/view.html:30 +#: app/templates/invoices/edit.html:362 +#: 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/view.html:95 app/templates/kanban/columns.html:52 +#: app/templates/leads/form.html:60 app/templates/leads/list.html:26 +#: app/templates/leads/list.html:53 app/templates/leads/view.html:79 +#: app/templates/main/help.html:187 app/templates/payment_gateways/list.html:27 +#: app/templates/projects/_kanban_tailwind.html:30 +#: app/templates/projects/goods.html:44 app/templates/projects/view.html:248 +#: app/templates/projects/view.html:401 +#: app/templates/quotes/_quotes_list.html:37 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_tasks/list.html:34 +#: app/templates/reports/scheduled.html:30 +#: app/templates/tasks/_kanban.html:1227 app/templates/tasks/edit.html:93 +#: app/templates/tasks/my_tasks.html:123 +#: app/templates/timer/_time_entries_list.html:43 +#: app/templates/timer/time_entries_overview.html:183 +#: app/templates/weekly_goals/edit.html:83 +#: app/templates/weekly_goals/view.html:55 app/utils/pdf_generator.py:1038 +msgid "Status" +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 +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 "" + +#: 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 "" + +#: 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 "" + +#: 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/quote_pdf_layout.html:1592 +#: app/templates/clients/create.html:49 app/templates/clients/edit.html:56 +#: app/templates/contacts/communication_form.html:30 +#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 +#: app/templates/contacts/view.html:33 +#: app/templates/inventory/suppliers/form.html:40 +#: app/templates/inventory/suppliers/list.html:44 +#: app/templates/inventory/suppliers/view.html:53 +#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:40 +#: app/templates/leads/list.html:52 app/templates/leads/view.html:47 +#: app/templates/projects/create.html:456 +#: app/templates/quotes/pdf_default.html:45 app/utils/pdf_generator.py:1026 +msgid "Email" +msgstr "" + +#: app/templates/admin/oidc_debug.html:136 +#: app/templates/admin/oidc_user_detail.html:25 +#: app/templates/user/settings.html:32 +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/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:52 +msgid "Last Login" +msgstr "" + +#: app/templates/admin/oidc_debug.html:139 +msgid "OIDC Subject" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:29 +#: app/templates/admin/link_templates/list.html:30 +#: 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/webhooks/list.html:29 +#: app/templates/audit_logs/list.html:81 +#: app/templates/budget/dashboard.html:122 +#: app/templates/client_portal/invoices.html:76 +#: app/templates/client_portal/quote_detail.html:120 +#: app/templates/client_portal/quotes.html:31 +#: app/templates/components/ui.html:451 app/templates/contacts/list.html:32 +#: app/templates/deals/list.html:56 app/templates/integrations/view.html:108 +#: app/templates/inventory/low_stock/list.html:28 +#: app/templates/inventory/purchase_orders/list.html:56 +#: app/templates/inventory/reports/low_stock.html:36 +#: app/templates/inventory/reservations/list.html:47 +#: app/templates/inventory/stock_items/list.html:56 +#: app/templates/inventory/suppliers/list.html:47 +#: app/templates/inventory/warehouses/list.html:27 +#: app/templates/issues/list.html:100 app/templates/kanban/columns.html:55 +#: app/templates/leads/list.html:56 app/templates/main/dashboard.html:150 +#: app/templates/main/search.html:39 +#: app/templates/payment_gateways/list.html:29 +#: app/templates/projects/goods.html:45 app/templates/projects/view.html:404 +#: app/templates/quotes/_quotes_list.html:39 app/templates/quotes/view.html:182 +#: app/templates/recurring_invoices/list.html:29 +#: app/templates/recurring_tasks/list.html:35 +#: app/templates/reports/saved_views_list.html:32 +#: app/templates/reports/scheduled.html:31 +#: app/templates/timer/_time_entries_list.html:44 +msgid "Actions" +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:305 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:94 +#: app/templates/recurring_tasks/list.html:76 +#: app/templates/reports/scheduled.html:76 app/utils/i18n_helpers.py:50 +#: app/utils/i18n_helpers.py:56 app/utils/i18n_helpers.py:286 +#: app/utils/i18n_helpers.py:292 +msgid "Inactive" +msgstr "" + +#: app/templates/admin/oidc_debug.html:153 +#: app/templates/admin/oidc_user_detail.html:31 +#: app/templates/integrations/manage.html:578 +msgid "Never" +msgstr "" + +#: 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/issues/view.html:92 app/templates/projects/view.html:207 +msgid "Details" +msgstr "" + +#: app/templates/admin/oidc_debug.html:166 +msgid "No users have logged in via OIDC yet." +msgstr "" + +#: 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 "" + +#: 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/approvals/view.html:62 +#: 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/dashboard.html:236 +#: app/templates/client_portal/invoice_detail.html:57 +#: 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/time_entries.html:67 +#: app/templates/clients/create.html:34 app/templates/clients/create.html:138 +#: app/templates/clients/edit.html:33 app/templates/deals/form.html:97 +#: app/templates/deals/view.html:103 +#: 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/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:127 app/templates/invoices/edit.html:214 +#: app/templates/invoices/edit.html:229 app/templates/invoices/edit.html:286 +#: app/templates/invoices/edit.html:301 app/templates/invoices/edit.html:661 +#: 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/main/help.html:186 +#: 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_good.html:24 +#: app/templates/projects/create.html:52 app/templates/projects/create.html:447 +#: app/templates/projects/edit.html:48 app/templates/projects/edit_good.html:24 +#: app/templates/projects/time_entries_overview.html:72 +#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:62 +#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:116 +#: 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:36 +#: app/templates/tasks/edit.html:56 app/utils/pdf_generator.py:1063 +#: app/utils/pdf_generator_fallback.py:238 +#: app/utils/pdf_generator_fallback.py:555 +msgid "Description" +msgstr "" + +#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:193 +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 "" + +#: app/templates/admin/oidc_debug.html:186 +msgid "Client ID from OIDC provider" +msgstr "" + +#: app/templates/admin/oidc_debug.html:187 +msgid "Client secret from OIDC provider" +msgstr "" + +#: 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 "" + +#: app/templates/admin/oidc_setup_wizard.html:16 +msgid "Guided step-by-step configuration for OpenID Connect authentication" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:26 +msgid "Basic Config" +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:598 +#: app/templates/integrations/view.html:131 +#: app/templates/integrations/wizard_jira.html:76 +#: app/templates/integrations/wizard_trello.html:53 +msgid "Test Connection" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:46 +msgid "Finalize" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:53 +msgid "Step 1: Basic Configuration" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:57 +msgid "OIDC Issuer URL" +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 "" + +#: app/templates/admin/oidc_setup_wizard.html:77 +msgid "The client ID from your OIDC provider" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:87 +msgid "Enter client secret" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:89 +msgid "The client secret from your OIDC provider" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:95 +#: app/templates/admin/oidc_user_detail.html:41 +msgid "Authentication Method" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:100 +msgid "OIDC Only" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:100 +msgid "SSO login only, no local passwords" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:103 +msgid "Both" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:103 +msgid "SSO and local password authentication" +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 "" + +#: 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 "" + +#: app/templates/admin/oidc_setup_wizard.html:120 +msgid "" +"Click \"Test Connection\" to verify DNS resolution and metadata endpoint " +"accessibility." +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:137 +msgid "Step 3: Claim Mapping" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:148 +msgid "Claim name containing the username (default: preferred_username)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:161 +msgid "Claim name containing the email address (default: email)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:174 +msgid "Claim name containing the full name (default: name)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:187 +msgid "Claim name containing user groups (default: groups, optional)" +msgstr "" + +#: app/templates/admin/integrations/setup.html:100 +#: 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:125 +#: 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 +msgid "optional" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:200 +msgid "Group name that grants admin access (optional)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:213 +msgid "Comma-separated list of email addresses that grant admin access (optional)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:221 +#: app/templates/integrations/wizard_jira.html:152 +msgid "Step 4: Advanced Settings" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:232 +msgid "Space-separated list of OIDC scopes (default: openid profile email)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:245 +msgid "OAuth callback URL (usually auto-generated, but can be customized)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:251 +msgid "Post-Logout Redirect URI" +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 "" + +#: app/templates/admin/oidc_setup_wizard.html:266 +msgid "Step 5: Generate Configuration" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:271 +msgid "" +"Click \"Generate Configuration\" to create environment variable " +"configuration." +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:275 +msgid "Generate Configuration" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:280 +msgid "Environment Variables (.env file)" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:283 +#: app/templates/admin/oidc_setup_wizard.html:292 +#: app/templates/user/settings.html:317 +msgid "Copy" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:289 +msgid "Docker Compose" +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 "" + +#: app/templates/admin/oidc_setup_wizard.html:309 +#: 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/tasks/my_tasks.html:345 +#: app/templates/timer/_time_entries_list.html:185 +msgid "Previous" +msgstr "" + +#: app/templates/admin/oidc_setup_wizard.html:313 +#: 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/tasks/my_tasks.html:371 +#: app/templates/timer/_time_entries_list.html:203 +msgid "Next" +msgstr "" + +#: app/templates/admin/oidc_user_detail.html:3 +#: app/templates/admin/oidc_user_detail.html:8 +msgid "OIDC User Details" +msgstr "" + +#: app/templates/admin/oidc_user_detail.html:9 +msgid "Profile and OIDC identity for this user" +msgstr "" + +#: app/templates/admin/oidc_user_detail.html:13 +msgid "Back to OIDC Debug" +msgstr "" + +#: 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:304 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:93 +#: app/templates/recurring_tasks/list.html:76 +#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 +#: 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:50 +#: app/utils/i18n_helpers.py:56 app/utils/i18n_helpers.py:243 +#: app/utils/i18n_helpers.py:254 app/utils/i18n_helpers.py:286 +#: app/utils/i18n_helpers.py:292 +msgid "Active" +msgstr "" + +#: app/templates/admin/oidc_user_detail.html:28 +msgid "Preferred Language" +msgstr "" + +#: app/templates/admin/oidc_user_detail.html:29 +#: app/templates/user/settings.html:116 +msgid "Theme" +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 "" + +#: app/templates/admin/oidc_user_detail.html:40 +msgid "OIDC Subject (sub)" +msgstr "" + +#: 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 "" + +#: 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 "" + +#: app/templates/admin/oidc_user_detail.html:57 +msgid "Activity Statistics" +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:151 app/templates/invoices/edit.html:159 +#: app/templates/invoices/edit.html:558 app/templates/invoices/edit.html:569 +#: app/templates/quotes/create.html:255 app/templates/quotes/create.html:266 +#: app/templates/quotes/edit.html:131 app/templates/quotes/edit.html:137 +#: app/templates/quotes/edit.html:321 app/templates/quotes/edit.html:332 +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/quote_pdf_layout.html:3 +msgid "PDF Quote Designer" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1460 +msgid "Visual Quote Designer" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1463 +msgid "Drag and drop elements to design your quote layout" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1472 +msgid "How to use:" +msgstr "" + +#: 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/quote_pdf_layout.html:1476 +msgid "Keyboard Shortcuts:" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1486 +#: app/templates/admin/quote_pdf_layout.html:3873 +msgid "Clear Canvas" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1489 +msgid "Generate Preview" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1492 +msgid "Save Design" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1495 +msgid "View Code" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1498 +msgid "Export JSON" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1501 +msgid "Import JSON" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1506 +msgid "Snap to Grid (10px)" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1522 +msgid "Toolbox" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1527 +msgid "Search elements & variables..." +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1533 +msgid "Elements" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1536 +msgid "Variables" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1545 +msgid "Basic Elements" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1548 +msgid "Custom Text" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1552 +msgid "Text" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1556 +msgid "Heading" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1560 +msgid "Line" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1564 +msgid "Rectangle" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1568 +msgid "Circle" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1573 +msgid "Company Info" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1576 +#: app/templates/admin/settings.html:339 app/templates/admin/settings.html:360 +#: 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:50 +#: app/templates/admin/quote_pdf_layout.html:1580 +#: app/templates/admin/settings.html:117 app/templates/leads/form.html:35 +msgid "Company Name" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1584 +msgid "Company Details" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1588 +#: app/templates/clients/create.html:73 app/templates/clients/edit.html:67 +#: 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:234 app/templates/projects/create.html:466 +msgid "Address" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1596 +#: app/templates/clients/create.html:69 app/templates/clients/edit.html:63 +#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 +#: app/templates/contacts/view.html:37 +#: app/templates/inventory/suppliers/form.html:44 +#: app/templates/inventory/suppliers/list.html:45 +#: 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:53 app/templates/projects/create.html:462 +#: app/templates/quotes/pdf_default.html:45 app/utils/pdf_generator.py:1026 +msgid "Phone" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1600 +#: 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/utils/pdf_generator.py:1027 +msgid "Website" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1604 +#: 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/quote_pdf_layout.html:1609 +msgid "Quote Data" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1612 +#: app/templates/client_portal/quotes.html:25 +#: app/templates/quotes/_quotes_list.html:33 +msgid "Quote Number" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1616 +msgid "Quote Date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1620 +#: app/templates/client_portal/invoice_detail.html:35 +#: app/templates/client_portal/invoices.html:73 +#: app/templates/invoices/create.html:37 app/templates/invoices/edit.html:34 +#: app/templates/invoices/pdf_default.html:58 +#: app/templates/payment_gateways/pay.html:19 +#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 +#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:116 +#: app/utils/pdf_generator.py:1037 +msgid "Due Date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1628 +msgid "Client Info" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1632 +#: app/templates/clients/create.html:22 app/templates/clients/create.html:122 +#: app/templates/clients/edit.html:22 app/templates/import_export/index.html:69 +#: app/templates/invoices/create.html:29 app/templates/invoices/edit.html:26 +#: app/templates/projects/create.html:438 +msgid "Client Name" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1636 +#: app/templates/invoices/create.html:41 app/templates/invoices/edit.html:42 +msgid "Client Address" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1640 +msgid "Quote Items Table" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1644 +#: app/templates/client_portal/invoice_detail.html:82 +#: app/templates/client_portal/quote_detail.html:94 +#: app/templates/inventory/purchase_orders/form.html:93 +#: app/templates/inventory/purchase_orders/view.html:122 +#: app/templates/invoices/edit.html:399 app/templates/quotes/create.html:76 +#: app/templates/quotes/edit.html:156 app/templates/quotes/view.html:120 +msgid "Subtotal" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1648 +#: app/templates/client_portal/invoice_detail.html:87 +#: app/templates/client_portal/quote_detail.html:99 +#: app/templates/inventory/purchase_orders/view.html:133 +#: app/templates/invoices/edit.html:404 app/templates/quotes/view.html:146 +#: app/utils/pdf_generator_fallback.py:600 +msgid "Tax" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1652 +#: app/templates/inventory/purchase_orders/list.html:55 +#: 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:1066 app/utils/pdf_generator_fallback.py:238 +msgid "Total Amount" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1656 +#: app/templates/admin/salesman_email_mappings.html:124 +#: app/templates/client_portal/invoice_detail.html:123 +#: app/templates/clients/view.html:338 app/templates/contacts/form.html:84 +#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 +#: app/templates/deals/view.html:110 +#: app/templates/inventory/adjustments/form.html:50 +#: app/templates/inventory/movements/form.html:106 +#: 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:53 app/templates/invoices/edit.html:50 +#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 +#: app/templates/leads/view.html:113 app/templates/main/dashboard.html:146 +#: app/templates/main/search.html:37 +#: app/templates/reports/iterative_view.html:47 +#: app/templates/reports/unpaid_hours_report.html:124 +#: app/templates/reports/user_report.html:79 +#: app/templates/timer/_time_entries_list.html:40 +#: app/templates/timer/manual_entry.html:104 +#: app/templates/timer/time_entries_export_pdf.html:19 +#: app/templates/timer/timer_page.html:151 +#: 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/templates/admin/quote_pdf_layout.html:1660 +#: app/templates/client_portal/invoice_detail.html:130 +#: app/templates/invoices/create.html:57 app/templates/invoices/edit.html:54 +msgid "Terms" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1665 +msgid "Payment & Project" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1668 +msgid "Payment Date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1672 +msgid "Payment Method" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1676 +#: app/templates/analytics/dashboard_improved.html:136 +msgid "Payment Status" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1680 +#: app/templates/invoices/edit.html:417 +msgid "Amount Paid" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1684 +#: app/templates/client_portal/dashboard.html:66 +#: app/templates/client_portal/invoice_detail.html:97 +#: app/templates/client_portal/reports.html:63 +#: app/templates/invoices/edit.html:421 +msgid "Outstanding" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1688 +#: 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/quote_pdf_layout.html:1692 +#: app/templates/invoices/create.html:33 app/templates/invoices/edit.html:30 +msgid "Client Email" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1696 +msgid "Client Phone" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1704 +msgid "QR Code" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1708 +#: app/templates/inventory/stock_items/form.html:49 +#: app/templates/inventory/stock_items/view.html:40 +msgid "Barcode" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1712 +msgid "Page Number" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1716 +msgid "Current Date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1720 +msgid "Watermark" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1724 +msgid "Bank Info" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1728 +#: 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:378 app/templates/leads/form.html:79 +#: app/templates/projects/add_good.html:55 +#: app/templates/projects/edit_good.html:55 app/templates/quotes/create.html:93 +#: app/templates/quotes/edit.html:173 +msgid "Currency" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1732 +msgid "Decorative Image" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1740 +msgid "Quote Fields" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1743 +msgid "Quote number" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1747 +msgid "Quote status (draft/sent/paid/overdue)" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1751 +msgid "Issue date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1755 +msgid "Due date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1759 +msgid "Subtotal amount" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1763 +msgid "Tax rate (%)" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1767 +msgid "Tax amount" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1771 +msgid "Total amount" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1775 +msgid "Currency code (EUR, USD, etc)" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1779 +msgid "Quote notes" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1783 +msgid "Terms & conditions" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1788 +msgid "Client Fields" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1791 +msgid "Client company name" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1795 +msgid "Client email address" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1799 +msgid "Client full address" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1803 +msgid "Client contact person" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1807 +msgid "Client phone number" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1812 +msgid "Payment Fields" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1815 +msgid "Quote status" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1819 +msgid "Quote accepted date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1823 +msgid "Payment method" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1827 +msgid "Payment reference number" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1831 +msgid "Amount paid" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1835 +msgid "Outstanding amount" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1839 +msgid "Payment notes" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1844 +msgid "Project Fields" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1847 +#: app/templates/quotes/accept.html:49 +msgid "Project name" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1851 +msgid "Project code" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1855 +msgid "Project description" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1859 +msgid "Project billing reference" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1864 +msgid "Company/Settings Fields" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1867 +msgid "Your company name" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1871 +msgid "Your company address" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1875 +msgid "Your company email" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1879 +msgid "Your company phone" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1883 +msgid "Your company website" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1887 +msgid "Your tax ID number" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1891 +msgid "Your bank account info" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1895 +msgid "Default invoice terms" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1899 +msgid "Default invoice notes" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1904 +msgid "Date/Time Fields" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1907 +msgid "Current date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1911 +msgid "Quote creation date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1915 +msgid "Quote last update date" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1920 +msgid "Quote Items Loop" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1923 +msgid "Loop through invoice items" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1927 +#: app/templates/quotes/create.html:274 app/templates/quotes/edit.html:142 +#: app/templates/quotes/edit.html:340 +msgid "Item description" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1931 +msgid "Item quantity" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1935 +msgid "Item unit price" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1939 +msgid "Item total amount" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1943 +msgid "End loop" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1955 +msgid "Design Canvas" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1959 +msgid "Page Size:" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1981 +#: app/templates/admin/quote_pdf_layout.html:2075 +msgid "Zoom In" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1984 +#: app/templates/admin/quote_pdf_layout.html:2068 +msgid "Zoom Out" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:1988 +msgid "Delete Selected" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2001 +msgid "Properties" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2007 +msgid "Template Settings" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2011 +#: app/templates/user/settings.html:262 +msgid "Date Format" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2017 +#, python-format +msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2022 +msgid "Select an element to edit its properties" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2034 +#: app/templates/admin/quote_pdf_layout.html:2127 +msgid "PDF Preview" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2039 +#: app/templates/admin/quote_pdf_layout.html:2040 +msgid "Page Size" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2050 +msgid "Refresh Preview" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2053 +#: app/templates/admin/quote_pdf_layout.html:4386 +#: app/templates/kiosk/base.html:121 +msgid "Toggle Fullscreen" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2058 +msgid "Close Preview" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2072 +msgid "Zoom Level" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2078 +msgid "Reset Zoom" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2083 +msgid "Fit to Width" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2084 +msgid "Fit Width" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2086 +msgid "Fit to Height" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2087 +msgid "Fit Height" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2089 +#: app/templates/admin/quote_pdf_layout.html:2090 +msgid "Actual Size" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2101 +msgid "Generating preview..." +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2112 +msgid "Preview Error" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2116 +msgid "Retry" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:2149 +msgid "Generated Code" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3214 +#: app/templates/admin/quote_pdf_layout.html:3699 +msgid "Change Image" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3214 +#: app/templates/invoices/edit.html:70 app/templates/invoices/edit.html:948 +#: app/templates/quotes/edit.html:62 app/templates/quotes/edit.html:517 +msgid "Upload Image" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3221 +msgid "Remove Image" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3649 +#: app/templates/invoices/edit.html:913 app/templates/quotes/edit.html:482 +msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3655 +#: app/templates/invoices/edit.html:919 app/templates/quotes/edit.html:488 +msgid "File size must be less than 5MB" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3665 +#: app/templates/chat/channel.html:316 app/templates/invoices/edit.html:928 +#: app/templates/quotes/edit.html:497 +msgid "Uploading..." +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3687 +msgid "Error: Image update function not found" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3690 +#: app/templates/admin/quote_pdf_layout.html:3695 +#: app/templates/invoices/edit.html:939 app/templates/invoices/edit.html:944 +#: app/templates/quotes/edit.html:508 app/templates/quotes/edit.html:513 +msgid "Failed to upload image" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3713 +msgid "Are you sure you want to remove this image?" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3871 +msgid "Clear all elements?" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:3874 +#: app/templates/audit_logs/list.html:63 +#: app/templates/components/multi_select.html:116 +#: app/templates/tasks/my_tasks.html:176 +#: app/templates/timer/manual_entry.html:124 +msgid "Clear" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:4383 +msgid "Exit Fullscreen" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:4519 +msgid "Failed to load preview. Please try again." +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:4595 +msgid "" +"Changing page size will reload the preview with the template for that " +"size. Continue?" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:4650 +msgid "" +"Preview functionality is currently unavailable. Please check the browser " +"console for errors." +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:5912 +msgid "Align Left" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:5915 +msgid "Center Horizontally" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:5918 +msgid "Align Right" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:5921 +msgid "Align Top" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:5924 +msgid "Center Vertically" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:5927 +msgid "Align Bottom" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:7074 +msgid "Reset to defaults?" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:7076 +msgid "Reset PDF Layout" +msgstr "" + +#: app/templates/admin/quote_pdf_layout.html:7112 +msgid "Error importing template" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:4 +msgid "Salesman Email Mappings" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:21 +msgid "Email Mappings" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:23 +msgid "Add Mapping" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:32 +#: app/templates/admin/salesman_email_mappings.html:74 +msgid "Salesman Initial" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:35 +#: app/templates/user/settings.html:40 +msgid "Email Address" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:38 +msgid "Pattern/Domain" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:63 +#: app/templates/admin/salesman_email_mappings.html:230 +msgid "Add Email Mapping" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:78 +msgid "1-20 letters only" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:80 +msgid "" +"The salesman initial from client custom fields (e.g., MM for Max " +"Mustermann)" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:92 +msgid "Direct Email Address" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:101 +#, python-brace-format +msgid "Pattern (e.g., {value}@test.de)" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:110 +msgid "Domain (e.g., test.de)" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:116 +#, python-brace-format +msgid "Will generate: {initial}@domain" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:127 +msgid "Additional notes about this mapping" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:138 +msgid "Preview:" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:192 +msgid "No mappings configured. Click \"Add Mapping\" to create one." +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:242 +msgid "Edit Email Mapping" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:366 +#: app/templates/admin/salesman_email_mappings.html:370 +msgid "Error saving mapping" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:375 +msgid "Are you sure you want to delete this mapping?" +msgstr "" + +#: app/templates/admin/salesman_email_mappings.html:394 +#: app/templates/admin/salesman_email_mappings.html:398 +msgid "Error deleting mapping" +msgstr "" + +#: app/templates/admin/settings.html:114 +msgid "Company Branding" +msgstr "" + +#: app/templates/admin/settings.html:149 +msgid "Invoice Defaults" +msgstr "" + +#: app/templates/admin/settings.html:235 +msgid "Backup Settings" +msgstr "" + +#: app/templates/admin/settings.html:250 +msgid "Export Settings" +msgstr "" + +#: app/templates/admin/settings.html:265 app/templates/kiosk/base.html:6 +msgid "Kiosk Mode" +msgstr "" + +#: app/templates/admin/settings.html:270 +msgid "Enable Kiosk Mode" +msgstr "" + +#: app/templates/admin/settings.html:274 +msgid "" +"Kiosk mode provides a simplified interface for warehouse operations with " +"barcode scanning and time tracking. Access at" +msgstr "" + +#: app/templates/admin/settings.html:279 +msgid "Auto-Logout Timeout (Minutes)" +msgstr "" + +#: app/templates/admin/settings.html:283 +msgid "Default Movement Type" +msgstr "" + +#: app/templates/admin/settings.html:285 +#: app/templates/inventory/movements/form.html:31 +#: 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:286 +#: app/templates/inventory/movements/form.html:32 +#: 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:287 +#: app/templates/inventory/movements/form.html:33 +#: 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:288 +#: app/templates/inventory/movements/form.html:34 +#: 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:289 +#: app/templates/inventory/movements/form.html:35 +#: 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:295 +msgid "Allow Camera-Based Barcode Scanning" +msgstr "" + +#: app/templates/admin/settings.html:301 +msgid "Require Reason for Stock Adjustments" +msgstr "" + +#: app/templates/admin/settings.html:311 app/templates/admin/telemetry.html:47 +msgid "Privacy & Analytics" +msgstr "" + +#: app/templates/admin/settings.html:332 app/templates/user/settings.html:350 +msgid "Save Settings" +msgstr "" + +#: app/templates/admin/settings.html:377 +msgid "Upload New Logo" +msgstr "" + +#: app/templates/admin/settings.html:391 +msgid "Logo Preview" +msgstr "" + +#: app/templates/admin/settings.html:440 +msgid "Are you sure you want to remove the company logo?" +msgstr "" + +#: app/templates/admin/settings.html:442 +msgid "Remove Logo" +msgstr "" + +#: app/templates/admin/telemetry.html:8 +msgid "Telemetry & Analytics Dashboard" +msgstr "" + +#: app/templates/admin/telemetry.html:47 +#: app/templates/setup/initial_setup.html:178 +msgid "Admin → Settings" +msgstr "" + +#: app/templates/admin/user_form.html:60 +msgid "Password Reset" +msgstr "" + +#: app/templates/admin/user_form.html:67 +#: app/templates/auth/edit_profile.html:66 +msgid "Leave blank to keep current password" +msgstr "" + +#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:104 +#: app/templates/email/client_portal_password_setup.html:72 +msgid "Client Portal Access" +msgstr "" + +#: app/templates/admin/users.html:34 +msgid "Admin Access" +msgstr "" + +#: app/templates/admin/users.html:56 +msgid "Migrate to new role system" +msgstr "" + +#: app/templates/admin/users.html:57 +msgid "Migrate" +msgstr "" + +#: app/templates/admin/users.html:80 +msgid "Roles" +msgstr "" + +#: app/templates/admin/users.html:93 +msgid "No users found." +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 "" + +#: app/templates/admin/users.html:107 +msgid "Cannot Delete User" +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 "" + +#: app/templates/admin/users.html:122 +msgid "Delete User" +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 "" + +#: 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:583 +msgid "Create" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:13 +msgid "Edit Custom Field Definition" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:13 +msgid "Create Custom Field Definition" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:14 +msgid "Define a global custom field that can be used across all clients" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:24 +#: app/templates/admin/custom_field_definitions/list.html:24 +#: app/templates/admin/link_templates/form.html:42 +#: app/templates/admin/link_templates/list.html:26 +msgid "Field Key" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:25 +#: app/templates/admin/link_templates/form.html:43 +msgid "e.g., debtor_number" +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 "" + +#: app/templates/admin/custom_field_definitions/form.html:30 +#: app/templates/admin/custom_field_definitions/list.html:25 +#: app/templates/kanban/columns.html:49 +msgid "Label" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:31 +msgid "e.g., Debtor Number" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:32 +msgid "Display name shown in client forms" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:37 +msgid "Optional help text for this field" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:42 +#: app/templates/admin/link_templates/form.html:56 +msgid "Display Order" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:44 +#: app/templates/admin/link_templates/form.html:58 +msgid "Lower numbers appear first" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:50 +#: app/templates/admin/custom_field_definitions/list.html:26 +msgid "Mandatory" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:52 +msgid "Required field - clients must fill this in" +msgstr "" + +#: app/templates/admin/custom_field_definitions/form.html:61 +msgid "Only active fields are shown in client forms" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:13 +msgid "Manage global custom field definitions for clients" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:15 +#: app/templates/admin/custom_field_definitions/list.html:82 +msgid "Create Custom Field" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:27 +#: app/templates/admin/link_templates/list.html:28 +msgid "Order" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:46 +msgid "Required" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:48 +#: app/templates/invoices/edit.html:801 app/templates/invoices/list.html:135 +#: app/templates/invoices/view.html:516 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:189 +#: app/templates/timer/timer_page.html:142 +#: app/templates/timer/timer_page.html:151 +msgid "Optional" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:80 +msgid "No custom field definitions found." +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:89 +msgid "How Custom Field Definitions Work" +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 "" + +#: app/templates/admin/custom_field_definitions/list.html:92 +msgid "Features:" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:94 +msgid "Define custom fields once and use them for all clients" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:95 +msgid "Mark fields as mandatory to ensure they are always filled" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:96 +msgid "Control field order and visibility" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:97 +msgid "Link templates can be assigned to make field values clickable" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:99 +#: app/templates/admin/link_templates/list.html:96 +msgid "Example:" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:101 +msgid "" +"Create a field definition with key \"debtor_number\" and label \"Debtor " +"Number\"" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:102 +msgid "Mark it as mandatory if required" +msgstr "" + +#: app/templates/admin/custom_field_definitions/list.html:103 +msgid "When creating or editing a client, this field will automatically appear" +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 "" + +#: 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 "" + +#: app/templates/admin/custom_field_definitions/list.html:123 +msgid "Are you sure you want to delete this custom field definition?" +msgstr "" + +#: app/templates/admin/email_templates/create.html:38 +#: app/templates/admin/email_templates/edit.html:36 +msgid "Set as default template" +msgstr "" + +#: app/templates/admin/email_templates/create.html:46 +#: app/templates/admin/email_templates/edit.html:44 +#: app/templates/admin/email_templates/view.html:56 +msgid "HTML Template" +msgstr "" + +#: app/templates/admin/email_templates/create.html:49 +#: app/templates/admin/email_templates/edit.html:47 +#: 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 +msgid "Invoice Number" +msgstr "" + +#: app/templates/admin/email_templates/create.html:55 +#: app/templates/admin/email_templates/edit.html:53 +#: app/templates/invoices/edit.html:801 app/templates/invoices/view.html:516 +msgid "Custom Message" +msgstr "" + +#: app/templates/admin/email_templates/create.html:58 +#: app/templates/admin/email_templates/edit.html:56 +msgid "More Variables" +msgstr "" + +#: app/templates/admin/email_templates/create.html:118 +#: 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:127 +#: app/templates/admin/email_templates/edit.html:125 +msgid "Available Variables" +msgstr "" + +#: app/templates/admin/email_templates/create.html:134 +#: app/templates/admin/email_templates/edit.html:132 +msgid "Invoice Variables" +msgstr "" + +#: app/templates/admin/email_templates/create.html:157 +#: app/templates/admin/email_templates/edit.html:155 +msgid "Other Variables" +msgstr "" + +#: app/templates/admin/email_templates/edit.html:116 +#: app/templates/project_templates/edit.html:137 +msgid "Update Template" +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:362 +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:375 +#: app/templates/kanban/columns.html:149 +#: app/templates/timer/time_entries_overview.html:362 +msgid "This action cannot be undone." +msgstr "" + +#: app/templates/admin/email_templates/view.html:21 +msgid "Template Information" +msgstr "" + +#: app/templates/admin/integrations/list.html:4 +msgid "Integration Setup" +msgstr "" + +#: app/templates/admin/integrations/list.html:21 +msgid "" +"Configure OAuth credentials for each integration. Global integrations are" +" shared across all users." +msgstr "" + +#: app/templates/admin/integrations/list.html:34 +#: app/templates/integrations/list.html:96 +#: app/templates/integrations/manage.html:535 +msgid "Global" +msgstr "" + +#: app/templates/admin/integrations/list.html:38 +msgid "Per User" +msgstr "" + +#: app/templates/admin/integrations/setup.html:4 +#: app/templates/admin/integrations/setup.html:15 +#: app/templates/integrations/list.html:127 +msgid "Setup" +msgstr "" + +#: app/templates/admin/integrations/setup.html:29 +#: app/templates/integrations/manage.html:54 +#: app/templates/integrations/wizard_trello.html:18 +msgid "Trello API Key" +msgstr "" + +#: app/templates/admin/integrations/setup.html:36 +#: app/templates/integrations/manage.html:61 +msgid "Get from https://trello.com/app-key" +msgstr "" + +#: app/templates/admin/integrations/setup.html:39 +#: app/templates/integrations/manage.html:64 +msgid "Get your API key from" +msgstr "" + +#: app/templates/admin/integrations/setup.html:45 +#: app/templates/integrations/manage.html:70 +#: app/templates/integrations/wizard_trello.html:28 +msgid "Trello API Secret" +msgstr "" + +#: app/templates/admin/integrations/setup.html:52 +#: app/templates/admin/integrations/setup.html:91 +#: app/templates/integrations/manage.html:77 +#: app/templates/integrations/manage.html:116 +msgid "Leave empty to keep current value" +msgstr "" + +#: app/templates/admin/integrations/setup.html:54 +#: app/templates/integrations/manage.html:79 +msgid "Get your API secret from" +msgstr "" + +#: app/templates/admin/integrations/setup.html:55 +#: app/templates/integrations/manage.html:80 +msgid "(shown after generating API key)" +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 "" + +#: app/templates/admin/integrations/setup.html:72 +#: app/templates/admin/integrations/setup.html:79 +#: app/templates/integrations/manage.html:97 +#: app/templates/integrations/manage.html:104 +msgid "OAuth Client ID" +msgstr "" + +#: app/templates/admin/integrations/setup.html:85 +#: app/templates/integrations/manage.html:110 +msgid "OAuth Client Secret" +msgstr "" + +#: app/templates/admin/integrations/setup.html:93 +#: app/templates/integrations/manage.html:118 +msgid "Required for new setup. Leave empty to keep existing secret." +msgstr "" + +#: app/templates/admin/integrations/setup.html:107 +msgid "Leave empty for \"common\" (multi-tenant)" +msgstr "" + +#: app/templates/admin/integrations/setup.html:109 +#: app/templates/integrations/manage.html:134 +#: 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 "" + +#: app/templates/admin/integrations/setup.html:117 +#: app/templates/integrations/manage.html:142 +#: app/templates/integrations/wizard_gitlab.html:11 +msgid "GitLab Instance URL" +msgstr "" + +#: app/templates/admin/integrations/setup.html:127 +#: app/templates/integrations/manage.html:152 +#: 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 "" + +#: app/templates/admin/integrations/setup.html:134 +#: app/templates/integrations/manage.html:160 +#: 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 "" + +#: app/templates/admin/integrations/setup.html:136 +#: app/templates/integrations/manage.html:162 +msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +msgstr "" + +#: app/templates/admin/integrations/setup.html:144 +#: app/templates/integrations/manage.html:170 +msgid "Automatic Connection Flow" +msgstr "" + +#: app/templates/admin/integrations/setup.html:147 +#: app/templates/integrations/manage.html:173 +msgid "" +"After you save these credentials, users can click \"Connect Google " +"Calendar\"" +msgstr "" + +#: app/templates/admin/integrations/setup.html:148 +#: app/templates/integrations/manage.html:174 +msgid "They will be automatically redirected to Google OAuth" +msgstr "" + +#: app/templates/admin/integrations/setup.html:149 +#: app/templates/integrations/manage.html:175 +msgid "No manual credential entry needed - fully automatic!" +msgstr "" + +#: app/templates/admin/integrations/setup.html:150 +#: app/templates/integrations/manage.html:176 +msgid "Each user connects their own Google Calendar account" +msgstr "" + +#: app/templates/admin/integrations/setup.html:159 +#: app/templates/integrations/manage.html:186 +#: app/templates/integrations/manage.html:244 +msgid "Save Credentials" +msgstr "" + +#: app/templates/admin/integrations/setup.html:170 +msgid "How Google Calendar Works" +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 "" + +#: app/templates/admin/integrations/setup.html:178 +msgid "" +"They will be automatically redirected to Google to authorize access - no " +"manual credential entry needed!" +msgstr "" + +#: app/templates/admin/integrations/setup.html:182 +msgid "" +"Each user connects their own Google Calendar account (per-user " +"integration)." +msgstr "" + +#: app/templates/admin/integrations/setup.html:188 +#: app/templates/integrations/manage.html:552 +#: app/templates/integrations/manage.html:563 +msgid "Connection Status" +msgstr "" + +#: app/templates/admin/integrations/setup.html:194 +msgid "View Integration" +msgstr "" + +#: app/templates/admin/integrations/setup.html:200 +msgid "Next Steps" +msgstr "" + +#: app/templates/admin/integrations/setup.html:202 +msgid "After saving credentials, connect the integration:" +msgstr "" + +#: app/templates/admin/integrations/setup.html:205 +msgid "Connect Integration" +msgstr "" + +#: app/templates/admin/link_templates/form.html:13 +msgid "Edit Link Template" +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 "" + +#: app/templates/admin/link_templates/form.html:14 +msgid "Configure URL template for client custom fields" +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 "" + +#: app/templates/admin/link_templates/form.html:25 +msgid "e.g., ERP System Link" +msgstr "" + +#: app/templates/admin/link_templates/form.html:26 +msgid "A descriptive name for this link template" +msgstr "" + +#: app/templates/admin/link_templates/form.html:31 +msgid "Optional description" +msgstr "" + +#: app/templates/admin/link_templates/form.html:35 +#: app/templates/admin/link_templates/list.html:25 +msgid "URL Template" +msgstr "" + +#: app/templates/admin/link_templates/form.html:36 +msgid "https://example.com/customer/%value%" +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 "" + +#: app/templates/admin/link_templates/form.html:44 +msgid "The key in the client custom_fields JSON to use" +msgstr "" + +#: app/templates/admin/link_templates/form.html:48 +#: app/templates/admin/link_templates/list.html:27 +#: app/templates/kanban/columns.html:50 +msgid "Icon" +msgstr "" + +#: app/templates/admin/link_templates/form.html:49 +msgid "fas fa-link" +msgstr "" + +#: app/templates/admin/link_templates/form.html:50 +msgid "Font Awesome icon class (e.g., fas fa-link)" +msgstr "" + +#: app/templates/admin/link_templates/form.html:66 +msgid "Only active templates are shown on client pages" +msgstr "" + +#: app/templates/admin/link_templates/list.html:13 +msgid "Manage URL templates for client custom fields" +msgstr "" + +#: app/templates/admin/link_templates/list.html:24 +#: app/templates/admin/webhooks/form.html:23 +#: app/templates/admin/webhooks/list.html:24 +#: app/templates/contacts/list.html:27 +#: app/templates/inventory/stock_items/form.html:27 +#: app/templates/inventory/stock_items/list.html:50 +#: app/templates/inventory/suppliers/form.html:28 +#: app/templates/inventory/suppliers/list.html:42 +#: app/templates/inventory/warehouses/form.html:28 +#: app/templates/inventory/warehouses/list.html:23 +#: app/templates/invoices/edit.html:285 app/templates/leads/list.html:50 +#: app/templates/main/help.html:184 app/templates/payment_gateways/list.html:25 +#: app/templates/projects/add_good.html:19 +#: app/templates/projects/edit_good.html:19 +#: app/templates/projects/goods.html:39 app/templates/projects/view.html:399 +#: app/templates/recurring_invoices/list.html:23 +#: app/templates/recurring_tasks/list.html:30 +#: app/templates/reports/saved_views_list.html:27 +msgid "Name" +msgstr "" + +#: app/templates/admin/link_templates/list.html:68 +msgid "Are you sure you want to delete this link template?" +msgstr "" + +#: app/templates/admin/link_templates/list.html:84 +msgid "No link templates found." +msgstr "" + +#: app/templates/admin/link_templates/list.html:93 +msgid "How Link Templates Work" +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 "" + +#: app/templates/admin/link_templates/list.html:98 +msgid "Create a custom field called \"debtor_number\" on a client" +msgstr "" + +#: app/templates/admin/link_templates/list.html:99 +msgid "Create a link template with URL:" +msgstr "" + +#: app/templates/admin/link_templates/list.html:100 +msgid "Set the field key to \"debtor_number\"" +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 "" + +#: app/templates/admin/link_templates/list.html:103 +msgid "URL Template Format:" +msgstr "" + +#: app/templates/admin/link_templates/list.html:103 +#, python-brace-format +msgid "Use {value} as a placeholder for the custom field value." +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 "" + +#: 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 "" + +#: app/templates/admin/roles/form.html:124 +msgid "Hide" +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:94 +#: app/templates/components/activity_feed_widget.html:47 +msgid "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/inventory/movements/list.html:57 +#: app/templates/inventory/reports/movement_history.html:73 +#: app/templates/inventory/reservations/list.html:42 +#: app/templates/inventory/stock_items/history.html:64 +#: app/templates/inventory/stock_items/view.html:240 +#: app/templates/inventory/warehouses/view.html:131 +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:132 +#: app/templates/admin/users/roles.html:36 app/templates/kanban/columns.html:54 +#: app/templates/kanban/columns.html:86 +msgid "System" +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/issues/list.html:136 app/templates/leads/list.html:85 +#: app/templates/projects/_kanban_tailwind.html:79 +#: app/templates/projects/view.html:443 +#: app/templates/quotes/_quotes_list.html:77 +#: app/templates/reports/saved_views_list.html:61 +#: app/templates/tasks/overdue.html:92 +#: app/templates/timer/_time_entries_list.html:155 +#: 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/dashboard.html:143 +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:91 +#: app/templates/inventory/purchase_orders/view.html:195 +#: app/templates/inventory/stock_items/view.html:182 +#: app/templates/issues/list.html:99 app/templates/issues/view.html:165 +#: app/templates/leads/view.html:105 +#: app/templates/project_templates/view.html:94 +#: app/templates/quotes/_quotes_list.html:38 app/templates/quotes/view.html:399 +#: app/templates/reports/saved_views_list.html:30 +#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:268 +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 "" + +#: app/templates/admin/webhooks/form.html:40 +msgid "The URL where webhook events will be sent" +msgstr "" + +#: app/templates/admin/webhooks/form.html:45 +#: app/templates/admin/webhooks/list.html:26 +#: 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 "" + +#: 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 "" + +#: app/templates/admin/webhooks/list.html:25 +#: app/templates/admin/webhooks/view.html:28 +msgid "URL" +msgstr "" + +#: app/templates/admin/webhooks/list.html:28 +#: 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:92 +#: app/templates/client_portal/quote_detail.html:72 +#: app/templates/client_portal/quote_detail.html:104 +#: 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:409 +#: app/templates/invoices/generate_from_time.html:123 +#: app/templates/projects/goods.html:43 app/templates/quotes/create.html:66 +#: app/templates/quotes/edit.html:120 app/templates/quotes/view.html:105 +#: app/templates/quotes/view.html:151 +#: app/templates/reports/iterative_view.html:64 +#: app/utils/pdf_generator_fallback.py:555 +msgid "Total" +msgstr "" + +#: 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:222 +#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 +#: app/utils/i18n_helpers.py:256 +msgid "Failed" +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 +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/calendar/event_form.html:106 +msgid "Event" +msgstr "" + +#: app/templates/admin/webhooks/view.html:103 +msgid "Attempt" +msgstr "" + +#: app/templates/admin/webhooks/view.html:104 +msgid "Response" +msgstr "" + +#: app/templates/admin/webhooks/view.html:105 +#: 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 "" + +#: 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:27 +#: 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 "" + +#: app/templates/analytics/dashboard.html:15 +#: app/templates/analytics/dashboard_improved.html:14 +#: app/templates/audit_logs/list.html:56 +msgid "Last 30 days" +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 "" + +#: 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:28 +msgid "Key metrics and insights about your time tracking" +msgstr "" + +#: app/templates/analytics/dashboard.html:69 +#: app/templates/analytics/dashboard_improved.html:62 +msgid "Avg Daily Hours" +msgstr "" + +#: app/templates/analytics/dashboard.html:81 +#: app/templates/analytics/dashboard_improved.html:83 +msgid "Daily Hours Trend" +msgstr "" + +#: app/templates/analytics/dashboard.html:95 +#: 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:168 +#: app/templates/client_portal/reports.html:81 +#: app/templates/email/weekly_summary.html:104 +msgid "Hours by Project" +msgstr "" + +#: app/templates/analytics/dashboard.html:127 +#: app/templates/analytics/dashboard_improved.html:172 +msgid "Weekly Trends" +msgstr "" + +#: app/templates/analytics/dashboard.html:145 +#: 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:159 +msgid "Project Efficiency" +msgstr "" + +#: app/templates/analytics/dashboard.html:178 +#: app/templates/analytics/dashboard_improved.html:191 +#: app/templates/analytics/mobile_dashboard.html:131 +msgid "User Performance" +msgstr "" + +#: app/templates/analytics/dashboard.html:206 +#: 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:207 +#: 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:210 +#: app/templates/analytics/dashboard_improved.html:217 +#: app/templates/analytics/mobile_dashboard.html:163 +msgid "Hour of Day" +msgstr "" + +#: app/templates/analytics/dashboard.html:211 +#: app/templates/analytics/dashboard_improved.html:218 +#: app/templates/analytics/mobile_dashboard.html:164 +msgid "Revenue" +msgstr "" + +#: app/templates/analytics/dashboard_improved.html:9 +msgid "Key metrics and actionable insights" +msgstr "" + +#: app/templates/analytics/dashboard_improved.html:19 +msgid "Export" +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:74 app/templates/tasks/create.html:88 +#: app/templates/tasks/create.html:460 app/templates/tasks/edit.html:96 +#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:57 +#: app/templates/tasks/my_tasks.html:127 app/utils/i18n_helpers.py:16 +#: app/utils/i18n_helpers.py:28 +msgid "In Progress" +msgstr "" + +#: app/templates/analytics/dashboard_improved.html:118 +#: app/templates/analytics/dashboard_improved.html:223 +#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:88 +#: app/templates/tasks/create.html:459 app/templates/tasks/edit.html:95 +#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:40 +#: app/templates/tasks/my_tasks.html:126 app/utils/i18n_helpers.py:15 +#: app/utils/i18n_helpers.py:27 +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:334 app/templates/main/help.html:193 +#: app/templates/project_templates/view.html:39 +#: 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/reports/user_report.html:83 app/templates/tasks/edit.html:180 +#: app/templates/timer/_time_entries_list.html:149 +#: app/templates/timer/manual_entry.html:117 +#: app/templates/timer/time_entries_overview.html:105 +#: app/templates/timer/view_timer.html:110 +#: app/templates/timer/view_timer.html:114 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/tasks/_kanban.html:1346 app/templates/tasks/edit.html:271 +#: 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:221 +#: app/utils/i18n_helpers.py:233 app/utils/i18n_helpers.py:244 +#: app/utils/i18n_helpers.py:255 +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:77 app/templates/tasks/create.html:88 +#: app/templates/tasks/create.html:463 app/templates/tasks/edit.html:99 +#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:130 +#: app/templates/weekly_goals/edit.html:91 +#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:19 +#: app/utils/i18n_helpers.py:31 app/utils/i18n_helpers.py:67 +#: app/utils/i18n_helpers.py:79 app/utils/i18n_helpers.py:246 +#: app/utils/i18n_helpers.py:257 +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 "" + +#: app/templates/approvals/list.html:14 +#: app/templates/client_portal/approvals.html:15 +msgid "Review and approve time entries" +msgstr "" + +#: app/templates/approvals/list.html:23 +#: app/templates/client_portal/dashboard.html:85 +#: app/templates/invoice_approvals/list.html:4 +msgid "Pending Approvals" +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 "" + +#: 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/unpaid_hours_report.html:92 +#: app/templates/tasks/edit.html:248 app/templates/tasks/edit.html:260 +#: app/templates/user/settings.html:222 +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:361 app/templates/main/dashboard.html:106 +#: app/templates/main/dashboard.html:166 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 "" + +#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:120 +#: app/templates/invoice_approvals/list.html:39 +#: app/templates/invoice_approvals/view.html:108 +#: app/templates/quotes/view.html:200 app/templates/quotes/view.html:541 +msgid "Approve" +msgstr "" + +#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 +#: app/templates/approvals/view.html:124 app/templates/approvals/view.html:147 +#: 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:201 app/templates/quotes/view.html:243 +#: app/templates/quotes/view.html:559 +msgid "Reject" +msgstr "" + +#: app/templates/approvals/list.html:75 +msgid "No pending approvals" +msgstr "" + +#: app/templates/approvals/list.html:76 +msgid "All time entries have been reviewed." +msgstr "" + +#: app/templates/approvals/list.html:85 +msgid "My Requests" +msgstr "" + +#: app/templates/approvals/list.html:116 +msgid "No pending requests" +msgstr "" + +#: app/templates/approvals/list.html:117 +msgid "You have no time entry approval requests." +msgstr "" + +#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:135 +msgid "Reject Time Entry" +msgstr "" + +#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:141 +msgid "Reason for rejection" +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 "" + +#: app/templates/approvals/view.html:15 +msgid "Review time entry approval request" +msgstr "" + +#: app/templates/approvals/view.html:23 +#: app/templates/reports/unpaid_hours_report.html:114 +msgid "Time Entry Details" +msgstr "" + +#: app/templates/approvals/view.html:26 +msgid "Entry ID" +msgstr "" + +#: 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/view.html:34 app/templates/issues/list.html:57 +#: app/templates/issues/list.html:94 app/templates/issues/new.html:37 +#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 +#: app/templates/main/dashboard.html:513 app/templates/main/help.html:185 +#: app/templates/project_templates/create_project.html:21 +#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 +#: app/templates/quotes/_quotes_list.html:35 +#: 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/reports/iterative_view.html:43 +#: app/templates/reports/unpaid_hours_report.html:73 +#: app/templates/reports/user_report.html:81 +#: app/templates/timer/manual_entry.html:56 +#: app/templates/timer/time_entries_overview.html:90 +#: app/templates/timer/timer_page.html:131 +#: app/templates/timer/view_timer.html:81 +msgid "Client" +msgstr "" + +#: 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:335 +#: app/templates/components/offline_indicator.html:78 +#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:145 +#: app/templates/projects/_kanban_tailwind.html:30 +#: app/templates/projects/time_entries_overview.html:71 +#: app/templates/reports/unpaid_hours_report.html:121 +#: app/templates/reports/user_report.html:77 +#: app/templates/timer/_time_entries_list.html:38 +#: app/templates/timer/time_entries_export_pdf.html:17 +#: app/templates/timer/timer_page.html:142 +#: app/templates/timer/view_timer.html:91 +msgid "Task" +msgstr "" + +#: app/templates/approvals/view.html:71 +msgid "Approval Information" +msgstr "" + +#: app/templates/approvals/view.html:90 +msgid "Requested at" +msgstr "" + +#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:206 +msgid "Approved by" +msgstr "" + +#: app/templates/approvals/view.html:101 +#: app/templates/invoice_approvals/view.html:88 +msgid "Approved at" +msgstr "" + +#: app/templates/approvals/view.html:107 +#: app/templates/client_portal/project_comments.html:11 +#: app/templates/comments/_comments_section.html:6 +#: app/templates/quotes/view.html:265 +msgid "Comments" +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:77 +#: 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:157 +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/timer/time_entries_overview.html:61 +msgid "All Users" +msgstr "" + +#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 +#: app/templates/inventory/purchase_orders/form.html:84 +#: app/templates/invoices/edit.html:130 app/templates/invoices/edit.html:218 +#: app/templates/invoices/edit.html:291 app/templates/quotes/create.html:67 +#: app/templates/quotes/edit.html:121 +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:95 +#: app/templates/reports/saved_views_list.html:31 +#: app/templates/tasks/edit.html:269 +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 +msgid "Filter" +msgstr "" + +#: app/templates/audit_logs/list.html:75 +msgid "Timestamp" +msgstr "" + +#: app/templates/audit_logs/list.html:78 +msgid "Entity" +msgstr "" + +#: app/templates/audit_logs/list.html:79 +msgid "Field" +msgstr "" + +#: app/templates/audit_logs/list.html:80 +#: app/templates/budget/project_detail.html:171 +#: app/templates/clients/view.html:15 app/templates/projects/view.html:37 +#: app/templates/tasks/view.html:20 +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/movements/form.html:102 +#: app/templates/inventory/movements/list.html:61 +#: app/templates/inventory/reports/movement_history.html:77 +#: app/templates/inventory/stock_items/history.html:68 +#: app/templates/inventory/stock_items/view.html:243 +#: app/templates/inventory/warehouses/view.html:133 +#: app/templates/kiosk/dashboard.html:192 +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 "" + +#: app/templates/audit_logs/view.html:98 +msgid "TimeEntry Created" +msgstr "" + +#: app/templates/audit_logs/view.html:107 +msgid "Entry Owner" +msgstr "" + +#: app/templates/audit_logs/view.html:119 +msgid "Field Change Details" +msgstr "" + +#: app/templates/audit_logs/view.html:144 +msgid "Full Entity State" +msgstr "" + +#: app/templates/audit_logs/view.html:148 +msgid "Before Change" +msgstr "" + +#: app/templates/audit_logs/view.html:161 +msgid "After Change" +msgstr "" + +#: app/templates/audit_logs/view.html:178 +msgid "Request Information" +msgstr "" + +#: app/templates/auth/change_password.html:6 +#: app/templates/auth/change_password.html:41 +msgid "Change Password" +msgstr "" + +#: app/templates/auth/change_password.html:11 +msgid "Update your password." +msgstr "" + +#: app/templates/auth/change_password.html:23 +msgid "Current Password" +msgstr "" + +#: app/templates/auth/change_password.html:28 +msgid "New Password" +msgstr "" + +#: app/templates/auth/change_password.html:33 +msgid "Confirm New Password" +msgstr "" + +#: app/templates/auth/edit_profile.html:6 app/templates/auth/profile.html:9 +msgid "Edit Profile" +msgstr "" + +#: app/templates/auth/edit_profile.html:170 +msgid "Please fill both password fields or leave both empty" +msgstr "" + +#: app/templates/auth/edit_profile.html:180 +#: app/templates/client_portal/set_password.html:55 +msgid "Password must be at least 8 characters long" +msgstr "" + +#: app/templates/auth/edit_profile.html:189 +msgid "Passwords do not match" +msgstr "" + +#: app/templates/auth/login.html:6 app/templates/errors/403.html:30 +msgid "Login" +msgstr "" + +#: app/templates/auth/login.html:29 app/templates/setup/initial_setup.html:30 +msgid "Track time. Stay organized." +msgstr "" + +#: app/templates/auth/login.html:41 +msgid "Sign in to your account" +msgstr "" + +#: app/templates/auth/login.html:58 app/templates/client_portal/login.html:54 +#: app/templates/kiosk/login.html:153 +msgid "Sign in" +msgstr "" + +#: app/templates/auth/login.html:61 +msgid "Tip: Enter a new username to create your account." +msgstr "" + +#: app/templates/auth/login.html:70 +msgid "Or continue with" +msgstr "" + +#: app/templates/auth/login.html:75 +msgid "Single Sign-On" +msgstr "" + +#: app/templates/auth/profile.html:47 app/templates/user/profile.html:75 +msgid "Member Since" +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/dashboard.html:130 +#: app/templates/projects/dashboard.html:373 +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:237 +msgid "Consumed" +msgstr "" + +#: app/templates/budget/dashboard.html:119 +#: app/templates/budget/project_detail.html:48 +#: app/templates/main/dashboard.html:274 +#: app/templates/projects/dashboard.html:134 +#: app/templates/projects/dashboard.html:373 +#: app/templates/projects/view.html:241 +msgid "Remaining" +msgstr "" + +#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:403 +#: app/templates/tasks/_kanban.html:112 app/templates/tasks/_kanban.html:1281 +#: app/templates/tasks/edit.html:164 app/templates/tasks/my_tasks.html:299 +#: 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:244 +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:267 +msgid "Over Budget" +msgstr "" + +#: app/templates/budget/dashboard.html:157 +#: app/templates/budget/project_detail.html:66 +#: app/templates/projects/view.html:256 app/utils/i18n_helpers.py:274 +#: app/utils/i18n_helpers.py:280 +msgid "Critical" +msgstr "" + +#: app/templates/budget/dashboard.html:165 +#: app/templates/budget/project_detail.html:68 +#: app/templates/projects/view.html:264 +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:173 +msgid "View Project" +msgstr "" + +#: app/templates/budget/project_detail.html:30 +#: app/templates/projects/view.html:233 +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:194 +#: 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/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_levels/item.html:27 +#: app/templates/inventory/stock_levels/list.html:52 +#: app/templates/inventory/warehouses/view.html:89 +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 +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 +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/contacts/form.html:52 app/templates/contacts/list.html:28 +#: app/templates/contacts/view.html:48 app/templates/invoices/edit.html:213 +#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 +#: app/templates/issues/new.html:24 app/templates/leads/form.html:50 +#: app/templates/leads/view.html:59 app/templates/quotes/_quotes_list.html:34 +#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 +#: app/templates/quotes/edit.html:32 app/utils/pdf_generator_fallback.py:532 +msgid "Title" +msgstr "" + +#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 +#: app/templates/import_export/index.html:226 +#: app/templates/import_export/index.html:264 +#: app/templates/projects/time_entries_overview.html:31 +#: app/templates/reports/builder.html:80 +#: app/templates/timer/manual_entry.html:74 +#: app/templates/timer/time_entries_overview.html:71 +msgid "Start Date" +msgstr "" + +#: app/templates/calendar/event_form.html:50 +#: app/templates/reports/user_report.html:86 +#: app/templates/timer/manual_entry.html:85 +#: 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:231 +#: app/templates/import_export/index.html:269 +#: app/templates/projects/time_entries_overview.html:35 +#: app/templates/recurring_tasks/form.html:79 +#: app/templates/reports/builder.html:84 +#: app/templates/timer/manual_entry.html:78 +#: app/templates/timer/time_entries_overview.html:75 +msgid "End Date" +msgstr "" + +#: app/templates/calendar/event_form.html:71 +#: app/templates/reports/user_report.html:87 +#: app/templates/timer/manual_entry.html:89 +#: 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 +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 "" + +#: app/templates/calendar/event_form.html:159 +msgid "15 minutes before" +msgstr "" + +#: app/templates/calendar/event_form.html:160 +msgid "30 minutes before" +msgstr "" + +#: 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 "" + +#: 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 "" + +#: app/templates/calendar/integrations.html:56 +msgid "Last synced" +msgstr "" + +#: app/templates/calendar/integrations.html:71 +msgid "Manage Integration" +msgstr "" + +#: app/templates/calendar/integrations.html:78 +msgid "Are you sure you want to disconnect this integration?" +msgstr "" + +#: app/templates/calendar/integrations.html:78 +msgid "Disconnect" +msgstr "" + +#: app/templates/calendar/integrations.html:91 +msgid "No Calendar Integrations" +msgstr "" + +#: app/templates/calendar/integrations.html:92 +msgid "Connect your calendar to automatically sync time entries and events." +msgstr "" + +#: app/templates/calendar/integrations.html:93 +#: app/templates/integrations/manage.html:688 +msgid "Connect Google Calendar" +msgstr "" + +#: app/templates/calendar/integrations.html:99 +msgid "How Calendar Integration Works" +msgstr "" + +#: app/templates/calendar/integrations.html:101 +msgid "Time entries are automatically synced to your calendar" +msgstr "" + +#: app/templates/calendar/integrations.html:102 +msgid "Calendar events can be converted to time entries" +msgstr "" + +#: app/templates/calendar/integrations.html:103 +msgid "Bidirectional sync keeps everything in sync" +msgstr "" + +#: app/templates/calendar/view.html:18 +msgid "View and manage your events, tasks, and time entries" +msgstr "" + +#: app/templates/calendar/view.html:31 +msgid "Day" +msgstr "" + +#: app/templates/calendar/view.html:36 app/templates/weekly_goals/index.html:79 +msgid "Week" +msgstr "" + +#: app/templates/calendar/view.html:41 +msgid "Month" +msgstr "" + +#: app/templates/calendar/view.html:62 +msgid "Today" +msgstr "" + +#: app/templates/calendar/view.html:90 +msgid "Calendar colors" +msgstr "" + +#: app/templates/calendar/view.html:106 +msgid "Legend" +msgstr "" + +#: app/templates/calendar/view.html:123 +msgid "Loading calendar..." +msgstr "" + +#: app/templates/calendar/view.html:133 +msgid "Event Details" +msgstr "" + +#: app/templates/calendar/view.html:136 +msgid "Go to all details" +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 "" + +#: app/templates/chat/channel.html:15 +msgid "Team chat channel" +msgstr "" + +#: app/templates/chat/channel.html:56 +#: app/templates/components/persistent_chat_widget.html:107 +msgid "Type a message..." +msgstr "" + +#: app/templates/chat/channel.html:75 +msgid "Channel Info" +msgstr "" + +#: app/templates/chat/channel.html:84 +msgid "Members" +msgstr "" + +#: app/templates/chat/channel.html:126 +msgid "Channel Settings" +msgstr "" + +#: app/templates/chat/channel.html:252 +msgid "Upload Attachment" +msgstr "" + +#: app/templates/chat/channel.html:259 +msgid "Select File" +msgstr "" + +#: app/templates/chat/channel.html:261 +msgid "Maximum file size: 10 MB" +msgstr "" + +#: app/templates/chat/channel.html:264 +msgid "Selected:" +msgstr "" + +#: app/templates/chat/channel.html:271 app/templates/clients/view.html:192 +#: app/templates/clients/view.html:219 app/templates/comments/_comment.html:117 +#: app/templates/projects/view.html:306 app/templates/projects/view.html:333 +msgid "Upload" +msgstr "" + +#: app/templates/chat/channel.html:303 +msgid "Please select a file" +msgstr "" + +#: app/templates/chat/channel.html:309 +msgid "File size exceeds 10 MB limit" +msgstr "" + +#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 +msgid "Failed to upload attachment" +msgstr "" + +#: app/templates/chat/index.html:14 +msgid "Communicate with your team" +msgstr "" + +#: app/templates/chat/index.html:22 +#: app/templates/components/persistent_chat_widget.html:53 +msgid "Channels" +msgstr "" + +#: app/templates/chat/index.html:48 +#: app/templates/components/persistent_chat_widget.html:58 +msgid "Direct Messages" +msgstr "" + +#: app/templates/chat/index.html:89 +#: app/templates/components/persistent_chat_widget.html:71 +msgid "Select a channel to start chatting" +msgstr "" + +#: app/templates/chat/index.html:100 +msgid "Create Channel" +msgstr "" + +#: app/templates/chat/index.html:107 +msgid "Channel Name" +msgstr "" + +#: app/templates/chat/index.html:117 +msgid "Private channel" +msgstr "" + +#: app/templates/client_notes/edit.html:3 +#: app/templates/client_notes/edit.html:9 +msgid "Edit Client Note" +msgstr "" + +#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:11 +msgid "Back to Client" +msgstr "" + +#: app/templates/client_notes/edit.html:24 +msgid "Client:" +msgstr "" + +#: app/templates/client_notes/edit.html:38 +msgid "Created on" +msgstr "" + +#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:54 +msgid "Last edited on" +msgstr "" + +#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:419 +msgid "Note Content" +msgstr "" + +#: app/templates/client_notes/edit.html:64 +msgid "Internal note visible only to your team." +msgstr "" + +#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:437 +msgid "Mark as important" +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 "" + +#: 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:238 +#: app/templates/client_portal/base.html:322 +#: 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:29 +#: 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 "" + +#: app/templates/client_portal/activity_feed.html:80 +msgid "No Activity" +msgstr "" + +#: app/templates/client_portal/activity_feed.html:82 +msgid "" +"No recent activity to display. Activity will appear here as projects are " +"updated and time entries are logged." +msgstr "" + +#: app/templates/client_portal/approvals.html:9 +#: app/templates/client_portal/base.html:264 +#: app/templates/client_portal/base.html:349 +msgid "Approvals" +msgstr "" + +#: app/templates/client_portal/approvals.html:30 +#: app/templates/contacts/communication_form.html:60 +#: app/templates/integrations/view.html:57 +#: app/templates/integrations/view.html:88 app/utils/i18n_helpers.py:141 +#: app/utils/i18n_helpers.py:152 app/utils/i18n_helpers.py:219 +#: app/utils/i18n_helpers.py:231 +msgid "Pending" +msgstr "" + +#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:142 +#: app/utils/i18n_helpers.py:153 +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:143 +#: app/utils/i18n_helpers.py:154 +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/timer/time_entries_overview.html:96 +#: app/templates/timer/time_entries_overview.html:104 +msgid "All" +msgstr "" + +#: app/templates/client_portal/approvals.html:90 +msgid "Requested on" +msgstr "" + +#: app/templates/client_portal/approvals.html:160 +msgid "Request Comment" +msgstr "" + +#: app/templates/client_portal/approvals.html:172 +#: app/templates/client_portal/notifications.html:108 +#: app/templates/integrations/manage.html:608 +#: app/templates/tasks/my_tasks.html:317 +#: app/templates/weekly_goals/index.html:122 +msgid "View Details" +msgstr "" + +#: app/templates/client_portal/approvals.html:186 +msgid "No Approvals" +msgstr "" + +#: app/templates/client_portal/approvals.html:189 +msgid "You have no pending time entry approvals. All caught up!" +msgstr "" + +#: app/templates/client_portal/approvals.html:191 +msgid "No approvals found for this status." +msgstr "" + +#: app/templates/client_portal/base.html:275 +#: app/templates/client_portal/base.html:360 +#: app/templates/client_portal/notifications.html:4 +#: app/templates/client_portal/notifications.html:9 +#: app/templates/client_portal/notifications.html:14 +msgid "Notifications" +msgstr "" + +#: app/templates/client_portal/base.html:282 +msgid "More" +msgstr "" + +#: app/templates/client_portal/base.html:288 +#: app/templates/client_portal/base.html:367 +#: app/templates/client_portal/documents.html:4 +#: app/templates/client_portal/documents.html:9 +#: app/templates/client_portal/documents.html:14 +msgid "Documents" +msgstr "" + +#: app/templates/client_portal/base.html:294 +#: app/templates/client_portal/base.html:373 app/templates/deals/view.html:141 +#: app/templates/leads/view.html:134 +msgid "Activity" +msgstr "" + +#: app/templates/client_portal/base.html:305 +msgid "Toggle menu" +msgstr "" + +#: app/templates/client_portal/dashboard.html:14 +#, python-format +msgid "Welcome, %(client_name)s" +msgstr "" + +#: app/templates/client_portal/dashboard.html:26 +msgid "Total active" +msgstr "" + +#: app/templates/client_portal/dashboard.html:40 +#: app/templates/client_portal/reports.html:26 +#: app/templates/main/donate.html:119 +msgid "Hours tracked" +msgstr "" + +#: app/templates/client_portal/dashboard.html:52 +msgid "Total Invoices" +msgstr "" + +#: app/templates/client_portal/dashboard.html:54 +msgid "All invoices" +msgstr "" + +#: app/templates/client_portal/dashboard.html:84 +msgid "Action Required" +msgstr "" + +#: app/templates/client_portal/dashboard.html:86 +msgid "Time entries awaiting your review" +msgstr "" + +#: app/templates/client_portal/dashboard.html:90 +msgid "Review Now" +msgstr "" + +#: app/templates/client_portal/dashboard.html:100 +msgid "New Updates" +msgstr "" + +#: app/templates/client_portal/dashboard.html:101 +#: app/templates/client_portal/notifications.html:41 +msgid "Unread" +msgstr "" + +#: app/templates/client_portal/dashboard.html:102 +msgid "Notifications waiting for you" +msgstr "" + +#: app/templates/client_portal/dashboard.html:106 +#: app/templates/client_portal/dashboard.html:126 +#: app/templates/client_portal/dashboard.html:172 +#: app/templates/client_portal/dashboard.html:223 +msgid "View All" +msgstr "" + +#: app/templates/client_portal/dashboard.html:156 +#: app/templates/client_portal/projects.html:99 +msgid "No projects found" +msgstr "" + +#: app/templates/client_portal/dashboard.html:157 +msgid "Projects will appear here once they are created" +msgstr "" + +#: app/templates/client_portal/dashboard.html:169 +msgid "Recent Invoices" +msgstr "" + +#: app/templates/client_portal/dashboard.html:206 +#: app/templates/client_portal/invoices.html:153 +msgid "No invoices found" +msgstr "" + +#: app/templates/client_portal/dashboard.html:207 +msgid "Invoices will appear here once they are created" +msgstr "" + +#: app/templates/client_portal/dashboard.html:220 +#: app/templates/user/profile.html:89 +msgid "Recent Time Entries" +msgstr "" + +#: app/templates/client_portal/dashboard.html:281 +msgid "Time entries will appear here once they are logged" +msgstr "" + +#: app/templates/client_portal/documents.html:15 +msgid "View and download project documents" +msgstr "" + +#: app/templates/client_portal/documents.html:41 +msgid "Client Document" +msgstr "" + +#: app/templates/client_portal/documents.html:67 +msgid "Download" +msgstr "" + +#: app/templates/client_portal/documents.html:80 +msgid "No Documents" +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 "" + +#: app/templates/client_portal/error.html:18 +msgid "An error occurred" +msgstr "" + +#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:26 +#: app/templates/errors/403.html:27 app/templates/errors/404.html:18 +#: app/templates/errors/500.html:21 app/templates/errors/generic.html:25 +#: app/templates/errors/generic.html:43 app/templates/main/help.html:527 +msgid "Go to Dashboard" +msgstr "" + +#: app/templates/client_portal/error.html:52 +msgid "Login to Client Portal" +msgstr "" + +#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:29 +#: app/templates/errors/404.html:21 app/templates/errors/generic.html:29 +#: app/templates/errors/generic.html:46 +msgid "Go Back" +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 "" + +#: 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:358 +#: app/templates/invoices/pdf_default.html:57 app/utils/pdf_generator.py:1036 +msgid "Issue Date" +msgstr "" + +#: app/templates/client_portal/invoice_detail.html:45 +#, python-format +msgid "This invoice is %(days)d days overdue." +msgstr "" + +#: app/templates/client_portal/invoice_detail.html:52 +#: app/templates/invoices/edit.html:113 app/utils/pdf_generator_fallback.py:235 +msgid "Invoice Items" +msgstr "" + +#: app/templates/client_portal/invoice_detail.html:58 +#: app/templates/client_portal/quote_detail.html:70 +#: app/templates/inventory/adjustments/list.html:59 +#: app/templates/inventory/movements/form.html:61 +#: app/templates/inventory/movements/list.html:58 +#: app/templates/inventory/reports/movement_history.html:74 +#: app/templates/inventory/reports/valuation.html:61 +#: app/templates/inventory/reservations/list.html:41 +#: app/templates/inventory/stock_items/history.html:65 +#: app/templates/inventory/stock_items/view.html:178 +#: app/templates/inventory/stock_items/view.html:242 +#: app/templates/inventory/transfers/form.html:50 +#: app/templates/inventory/transfers/list.html:42 +#: app/templates/inventory/warehouses/view.html:132 +#: app/templates/invoices/edit.html:128 app/templates/invoices/edit.html:171 +#: app/templates/invoices/edit.html:173 app/templates/invoices/edit.html:594 +#: 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/quotes/create.html:63 +#: app/templates/quotes/edit.html:117 app/templates/quotes/pdf_default.html:96 +#: app/templates/quotes/view.html:103 app/utils/pdf_generator_fallback.py:555 +msgid "Quantity" +msgstr "" + +#: app/templates/client_portal/invoice_detail.html:59 +#: app/templates/client_portal/quote_detail.html:71 +#: app/templates/invoices/edit.html:129 app/templates/invoices/edit.html:177 +#: app/templates/invoices/edit.html:597 +#: 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/quotes/create.html:65 +#: app/templates/quotes/edit.html:119 app/templates/quotes/pdf_default.html:97 +#: app/templates/quotes/view.html:104 app/utils/pdf_generator.py:1065 +#: app/utils/pdf_generator_fallback.py:238 +#: app/utils/pdf_generator_fallback.py:555 +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 "" + +#: app/templates/client_portal/invoice_detail.html:115 +#: app/templates/invoices/create.html:9 +msgid "Back to Invoices" +msgstr "" + +#: app/templates/client_portal/invoices.html:15 +#, python-format +msgid "Invoices for %(client_name)s" +msgstr "" + +#: 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:140 +#: app/templates/timer/time_entries_overview.html:97 +#: app/templates/timer/time_entries_overview.html:185 +#: app/templates/timer/view_timer.html:124 +#: app/templates/timer/view_timer.html:128 app/utils/i18n_helpers.py:65 +#: app/utils/i18n_helpers.py:77 +msgid "Paid" +msgstr "" + +#: app/templates/client_portal/invoices.html:50 +#: app/templates/invoices/_invoices_list.html:79 +#: app/templates/timer/_time_entries_list.html:144 +#: app/templates/timer/time_entries_overview.html:98 +#: app/templates/timer/time_entries_overview.html:186 +#: app/templates/timer/view_timer.html:132 app/utils/i18n_helpers.py:87 +#: app/utils/i18n_helpers.py:98 +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:34 app/utils/i18n_helpers.py:66 +#: app/utils/i18n_helpers.py:78 +msgid "Overdue" +msgstr "" + +#: app/templates/client_portal/invoices.html:74 +#: app/templates/client_portal/quotes.html:29 +#: app/templates/invoices/edit.html:216 app/templates/invoices/edit.html:246 +#: app/templates/projects/dashboard.html:375 +#: app/templates/quotes/_quotes_list.html:36 +msgid "Amount" +msgstr "" + +#: app/templates/client_portal/invoices.html:103 +msgid "days overdue" +msgstr "" + +#: app/templates/client_portal/invoices.html:155 +msgid "No paid invoices" +msgstr "" + +#: app/templates/client_portal/invoices.html:157 +msgid "No unpaid invoices" +msgstr "" + +#: app/templates/client_portal/invoices.html:159 +msgid "No overdue invoices" +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 "" + +#: app/templates/client_portal/invoices.html:166 +msgid "" +"There are no invoices matching this filter. Try selecting a different " +"status." +msgstr "" + +#: app/templates/client_portal/invoices.html:173 +msgid "View All Invoices" +msgstr "" + +#: app/templates/client_portal/issue_detail.html:16 +#: app/templates/issues/view.html:8 +#, python-format +msgid "Issue #%(id)s" +msgstr "" + +#: app/templates/client_portal/issue_detail.html:29 +msgid "No description provided." +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/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:400 +#: app/templates/recurring_tasks/form.html:91 +#: app/templates/tasks/_kanban.html:1235 app/templates/tasks/create.html:61 +#: app/templates/tasks/edit.html:84 app/templates/tasks/my_tasks.html:134 +msgid "Priority" +msgstr "" + +#: app/templates/client_portal/issue_detail.html:70 +#: app/templates/issues/view.html:41 +msgid "Linked Task" +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/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 "" + +#: app/templates/client_portal/issue_detail.html:107 +#: app/templates/issues/view.html:189 +msgid "Back to Issues" +msgstr "" + +#: app/templates/client_portal/issues.html:14 +msgid "Issue Reports" +msgstr "" + +#: app/templates/client_portal/issues.html:15 +#, python-format +msgid "Report and track issues for %(client_name)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 "" + +#: 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 "" + +#: 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 "" + +#: app/templates/client_portal/issues.html:93 +#: app/templates/issues/list.html:166 +msgid "No issues found." +msgstr "" + +#: app/templates/client_portal/login.html:6 +msgid "Client Portal Login" +msgstr "" + +#: app/templates/client_portal/login.html:30 +msgid "View your projects and invoices" +msgstr "" + +#: app/templates/client_portal/login.html:34 +msgid "Sign in to Client Portal" +msgstr "" + +#: app/templates/client_portal/login.html:35 +msgid "Enter your portal credentials to access your projects and invoices" +msgstr "" + +#: app/templates/client_portal/login.html:45 +#: app/templates/clients/edit.html:126 +msgid "portal_username" +msgstr "" + +#: app/templates/client_portal/login.html:51 +#: app/templates/client_portal/set_password.html:53 +msgid "Enter your password" +msgstr "" + +#: app/templates/client_portal/new_issue.html:16 +msgid "Report a bug or issue you've encountered" +msgstr "" + +#: app/templates/client_portal/new_issue.html:29 +msgid "Brief description of the issue" +msgstr "" + +#: app/templates/client_portal/new_issue.html:36 +msgid "Detailed description of the issue, steps to reproduce, etc." +msgstr "" + +#: app/templates/client_portal/new_issue.html:44 +#: app/templates/main/dashboard.html:506 +#: app/templates/timer/manual_entry.html:49 +#: app/templates/timer/timer_page.html:123 +msgid "Select a project (optional)" +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:63 app/templates/tasks/create.html:84 +#: app/templates/tasks/create.html:454 app/templates/tasks/edit.html:86 +#: app/templates/tasks/edit.html:647 app/templates/tasks/my_tasks.html:137 +#: app/utils/i18n_helpers.py:38 app/utils/i18n_helpers.py:44 +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:64 app/templates/tasks/create.html:84 +#: app/templates/tasks/create.html:455 app/templates/tasks/edit.html:87 +#: app/templates/tasks/edit.html:648 app/templates/tasks/my_tasks.html:138 +#: app/utils/i18n_helpers.py:38 app/utils/i18n_helpers.py:44 +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:65 app/templates/tasks/create.html:84 +#: app/templates/tasks/create.html:456 app/templates/tasks/edit.html:88 +#: app/templates/tasks/edit.html:649 app/templates/tasks/my_tasks.html:139 +#: app/utils/i18n_helpers.py:38 app/utils/i18n_helpers.py:44 +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:66 app/templates/tasks/create.html:84 +#: app/templates/tasks/create.html:457 app/templates/tasks/edit.html:89 +#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:140 +#: app/utils/i18n_helpers.py:38 app/utils/i18n_helpers.py:44 +msgid "Urgent" +msgstr "" + +#: app/templates/client_portal/new_issue.html:65 +msgid "Your Name" +msgstr "" + +#: app/templates/client_portal/new_issue.html:68 +msgid "Your name (optional)" +msgstr "" + +#: app/templates/client_portal/new_issue.html:72 +msgid "Your Email" +msgstr "" + +#: app/templates/client_portal/new_issue.html:75 +msgid "Your email (optional)" +msgstr "" + +#: app/templates/client_portal/new_issue.html:82 +msgid "Submit Issue" +msgstr "" + +#: app/templates/client_portal/notifications.html:15 +msgid "Stay updated on your projects and invoices" +msgstr "" + +#: app/templates/client_portal/notifications.html:56 +msgid "Mark All as Read" +msgstr "" + +#: app/templates/client_portal/notifications.html:120 +msgid "Mark as read" +msgstr "" + +#: app/templates/client_portal/notifications.html:140 +msgid "No Notifications" +msgstr "" + +#: app/templates/client_portal/notifications.html:143 +msgid "You have no unread notifications. All caught up!" +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 "" + +#: app/templates/client_portal/project_comments.html:4 +#: app/templates/client_portal/project_comments.html:16 +msgid "Project Comments" +msgstr "" + +#: app/templates/client_portal/project_comments.html:22 +#: app/templates/comments/_comments_section.html:12 +#: app/templates/quotes/view.html:271 +msgid "Add Comment" +msgstr "" + +#: app/templates/client_portal/project_comments.html:26 +#: app/templates/comments/_comments_section.html:28 +#: app/templates/quotes/view.html:281 +msgid "Your Comment" +msgstr "" + +#: app/templates/client_portal/project_comments.html:29 +msgid "Enter your comment..." +msgstr "" + +#: app/templates/client_portal/project_comments.html:33 +#: app/templates/comments/_comments_section.html:41 +#: app/templates/quotes/view.html:292 +msgid "Post Comment" +msgstr "" + +#: app/templates/client_portal/project_comments.html:72 +msgid "No Comments" +msgstr "" + +#: app/templates/client_portal/project_comments.html:73 +msgid "Be the first to comment on this project." +msgstr "" + +#: app/templates/client_portal/project_comments.html:81 +#: app/templates/projects/create.html:11 +msgid "Back to Projects" +msgstr "" + +#: app/templates/client_portal/projects.html:15 +#, python-format +msgid "Projects for %(client_name)s" +msgstr "" + +#: app/templates/client_portal/projects.html:85 +msgid "View Time Entries" +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 "" + +#: 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/quotes/create.html:101 app/templates/quotes/edit.html:181 +#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:404 +#: app/utils/pdf_generator_fallback.py:542 +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/create.html:50 app/templates/quotes/edit.html:104 +#: app/templates/quotes/view.html:97 +msgid "Quote Items" +msgstr "" + +#: app/templates/client_portal/quote_detail.html:113 +msgid "Terms & Conditions" +msgstr "" + +#: app/templates/client_portal/quote_detail.html:126 +msgid "Are you sure you want to accept this quote?" +msgstr "" + +#: app/templates/client_portal/quote_detail.html:128 +#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 +#: app/templates/quotes/view.html:239 +msgid "Accept Quote" +msgstr "" + +#: app/templates/client_portal/quote_detail.html:135 +#: app/templates/client_portal/quote_detail.html:146 +#: app/templates/client_portal/quote_detail.html:163 +#: app/templates/quotes/view.html:243 app/templates/quotes/view.html:245 +msgid "Reject Quote" +msgstr "" + +#: app/templates/client_portal/quote_detail.html:139 +#: app/templates/quotes/view.html:15 +msgid "Back to Quotes" +msgstr "" + +#: app/templates/client_portal/quote_detail.html:150 +msgid "Reason (optional)" +msgstr "" + +#: app/templates/client_portal/quote_detail.html:153 +msgid "Please provide a reason for rejecting this quote..." +msgstr "" + +#: app/templates/client_portal/quotes.html:15 +#, python-format +msgid "Quotes for %(client_name)s" +msgstr "" + +#: app/templates/client_portal/quotes.html:48 +#: 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:408 +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 "" + +#: app/templates/client_portal/reports.html:37 +msgid "Total Invoiced" +msgstr "" + +#: app/templates/client_portal/reports.html:125 +msgid "No project hours data available." +msgstr "" + +#: app/templates/client_portal/reports.html:137 +msgid "Recent Time Entries (Last 30 Days)" +msgstr "" + +#: app/templates/client_portal/reports.html:189 +msgid "No recent time entries." +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 "" + +#: app/templates/client_portal/time_entries.html:27 +#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:90 +#: app/templates/tasks/my_tasks.html:146 +#: app/templates/timer/time_entries_overview.html:83 +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:393 +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 "" + +#: 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 "" + +#: app/templates/client_portal/time_entries.html:179 +msgid "Clear Filters" +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/tasks/_tasks_list.html:7 +msgid "Export to CSV" +msgstr "" + +#: app/templates/clients/create.html:3 app/templates/clients/create.html:8 +#: app/templates/clients/create.html:111 app/templates/projects/create.html:430 +#: app/templates/projects/create.html:472 +msgid "Create Client" +msgstr "" + +#: app/templates/clients/create.html:9 +msgid "Add a new client to manage related projects and billing." +msgstr "" + +#: app/templates/clients/create.html:11 +msgid "Back to Clients" +msgstr "" + +#: app/templates/clients/create.html:23 app/templates/clients/edit.html:23 +#: app/templates/projects/create.html:439 +msgid "Enter client name" +msgstr "" + +#: app/templates/clients/create.html:26 app/templates/clients/create.html:126 +#: app/templates/clients/edit.html:26 +#: app/templates/project_templates/create.html:52 +#: app/templates/project_templates/edit.html:52 +#: app/templates/projects/create.html:442 +msgid "Default Hourly Rate" +msgstr "" + +#: app/templates/clients/create.html:27 app/templates/clients/edit.html:27 +#: app/templates/projects/create.html:72 app/templates/projects/create.html:443 +msgid "e.g. 75.00" +msgstr "" + +#: app/templates/clients/create.html:28 app/templates/clients/edit.html:28 +msgid "" +"This rate will be automatically filled when creating projects for this " +"client" +msgstr "" + +#: app/templates/clients/create.html:35 app/templates/projects/create.html:53 +#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:37 +msgid "Supports Markdown" +msgstr "" + +#: app/templates/clients/create.html:38 app/templates/clients/edit.html:34 +#: app/templates/projects/create.html:448 +msgid "Brief description of the client or project scope" +msgstr "" + +#: app/templates/clients/create.html:45 app/templates/clients/edit.html:52 +#: app/templates/inventory/suppliers/form.html:36 +#: app/templates/inventory/suppliers/list.html:43 +#: 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/view.html:47 +#: app/templates/main/help.html:232 app/templates/projects/create.html:452 +msgid "Contact Person" +msgstr "" + +#: app/templates/clients/create.html:46 app/templates/clients/edit.html:53 +#: app/templates/projects/create.html:453 +msgid "Primary contact name" +msgstr "" + +#: app/templates/clients/create.html:50 app/templates/clients/edit.html:57 +#: app/templates/projects/create.html:457 +msgid "contact@client.com" +msgstr "" + +#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 +msgid "Monthly Prepaid Hours" +msgstr "" + +#: app/templates/clients/create.html:57 app/templates/clients/edit.html:40 +msgid "e.g. 50" +msgstr "" + +#: app/templates/clients/create.html:58 app/templates/clients/edit.html:41 +msgid "Leave empty if this client has no prepaid allocation." +msgstr "" + +#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 +msgid "Prepaid Reset Day" +msgstr "" + +#: app/templates/clients/create.html:63 app/templates/clients/edit.html:46 +msgid "Day of the month when prepaid hours reset (1-28)." +msgstr "" + +#: app/templates/clients/create.html:70 app/templates/clients/edit.html:64 +msgid "+1 (555) 123-4567" +msgstr "" + +#: app/templates/clients/create.html:74 app/templates/clients/edit.html:68 +msgid "Client address" +msgstr "" + +#: app/templates/clients/create.html:82 app/templates/clients/edit.html:76 +msgid "These custom fields are defined globally and available for all clients." +msgstr "" + +#: app/templates/clients/create.html:96 app/templates/clients/edit.html:90 +#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 +msgid "Enter value" +msgstr "" + +#: app/templates/clients/create.html:123 +msgid "Choose a clear, descriptive name for the client organization." +msgstr "" + +#: app/templates/clients/create.html:127 +msgid "" +"Set the standard hourly rate for this client. This will automatically " +"populate when creating new projects." +msgstr "" + +#: app/templates/clients/create.html:130 app/templates/contacts/view.html:25 +#: app/templates/leads/view.html:37 +msgid "Contact Information" +msgstr "" + +#: app/templates/clients/create.html:131 +msgid "Add contact details for easy communication and record keeping." +msgstr "" + +#: app/templates/clients/create.html:134 app/templates/clients/view.html:160 +msgid "Prepaid Hours" +msgstr "" + +#: app/templates/clients/create.html:135 +msgid "" +"Configure monthly included hours and the reset day if this client has a " +"retainer or prepaid bundle." +msgstr "" + +#: app/templates/clients/create.html:139 +msgid "Provide context about the client relationship or typical project types." +msgstr "" + +#: app/templates/clients/edit.html:3 app/templates/clients/edit.html:8 +#: app/templates/clients/view.html:13 +msgid "Edit Client" +msgstr "" + +#: app/templates/clients/edit.html:106 +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/edit.html:111 +msgid "Enable Client Portal" +msgstr "" + +#: app/templates/clients/edit.html:117 +msgid "Enable Issue Reporting" +msgstr "" + +#: app/templates/clients/edit.html:120 +msgid "Allow clients to report bugs and issues through the portal" +msgstr "" + +#: app/templates/clients/edit.html:125 +msgid "Portal Username" +msgstr "" + +#: app/templates/clients/edit.html:127 +msgid "Unique username for portal login" +msgstr "" + +#: app/templates/clients/edit.html:130 +msgid "Portal Password" +msgstr "" + +#: app/templates/clients/edit.html:131 +#: app/templates/integrations/caldav_setup.html:99 +#: app/templates/integrations/manage.html:231 +msgid "Leave empty to keep current password" +msgstr "" + +#: app/templates/clients/edit.html:132 +msgid "Set a new password or leave empty to keep current" +msgstr "" + +#: app/templates/clients/edit.html:137 +msgid "Current portal username" +msgstr "" + +#: app/templates/clients/edit.html:146 +msgid "Update Client" +msgstr "" + +#: app/templates/clients/edit.html:155 +msgid "Send Password Setup Email" +msgstr "" + +#: app/templates/clients/edit.html:159 +#, python-format +msgid "Send an email to %(email)s with a link to set their portal password." +msgstr "" + +#: app/templates/clients/edit.html:165 +msgid "" +"Email address is required to send password setup email. Please set the " +"client email address above." +msgstr "" + +#: app/templates/clients/edit.html:174 +msgid "Client Statistics" +msgstr "" + +#: app/templates/clients/edit.html:190 +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:60 +#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:48 +#: 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:266 app/templates/mileage/list.html:295 +#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 +#: app/templates/per_diem/list.html:284 app/templates/per_diem/list.html:313 +#: 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:447 app/templates/tasks/list.html:476 +#: app/templates/tasks/my_tasks.html:595 app/templates/tasks/my_tasks.html:625 +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:273 app/templates/mileage/list.html:289 +#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 +#: app/templates/per_diem/list.html:291 app/templates/per_diem/list.html:307 +#: 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:454 app/templates/tasks/list.html:470 +#: app/templates/tasks/my_tasks.html:602 app/templates/tasks/my_tasks.html:619 +msgid "Show Filters" +msgstr "" + +#: app/templates/clients/view.html:15 +msgid "Mark client as Inactive?" +msgstr "" + +#: app/templates/clients/view.html:15 +msgid "Change Client Status" +msgstr "" + +#: app/templates/clients/view.html:17 app/templates/projects/view.html:39 +msgid "Mark Inactive" +msgstr "" + +#: app/templates/clients/view.html:20 +msgid "Activate client?" +msgstr "" + +#: app/templates/clients/view.html:20 +msgid "Activate Client" +msgstr "" + +#: app/templates/clients/view.html:29 +msgid "Delete Client" +msgstr "" + +#: app/templates/clients/view.html:46 app/templates/integrations/list.html:122 +msgid "Manage" +msgstr "" + +#: app/templates/clients/view.html:60 app/templates/contacts/form.html:65 +#: app/templates/contacts/list.html:42 +msgid "Primary" +msgstr "" + +#: app/templates/clients/view.html:71 +msgid "more contact(s)" +msgstr "" + +#: app/templates/clients/view.html:76 +msgid "No contacts yet" +msgstr "" + +#: app/templates/clients/view.html:78 +msgid "Add Contact" +msgstr "" + +#: app/templates/clients/view.html:84 +msgid "Legacy Contact Info" +msgstr "" + +#: app/templates/clients/view.html:162 +#, python-format +msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +msgstr "" + +#: app/templates/clients/view.html:166 +msgid "Current cycle start" +msgstr "" + +#: app/templates/clients/view.html:170 +msgid "Remaining hours" +msgstr "" + +#: app/templates/clients/view.html:171 app/templates/clients/view.html:175 +#: 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/tasks/edit.html:175 app/templates/tasks/edit.html:177 +#: app/templates/tasks/edit.html:180 +msgid "h" +msgstr "" + +#: app/templates/clients/view.html:174 +msgid "Consumed this cycle" +msgstr "" + +#: app/templates/clients/view.html:185 app/templates/projects/view.html:299 +msgid "Attachments" +msgstr "" + +#: app/templates/clients/view.html:203 app/templates/projects/view.html:317 +msgid "File" +msgstr "" + +#: app/templates/clients/view.html:205 app/templates/projects/view.html:319 +msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" +msgstr "" + +#: app/templates/clients/view.html:208 app/templates/projects/view.html:322 +msgid "Description (optional)" +msgstr "" + +#: app/templates/clients/view.html:209 +msgid "e.g., Contract, Agreement, etc." +msgstr "" + +#: app/templates/clients/view.html:214 app/templates/projects/view.html:328 +msgid "Visible to client in portal" +msgstr "" + +#: app/templates/clients/view.html:256 app/templates/projects/view.html:370 +#: app/templates/quotes/view.html:313 +msgid "Client Visible" +msgstr "" + +#: app/templates/clients/view.html:262 app/templates/comments/_comment.html:83 +#: app/templates/projects/view.html:376 +msgid "Are you sure you want to delete this attachment?" +msgstr "" + +#: app/templates/clients/view.html:262 app/templates/projects/view.html:376 +msgid "Delete Attachment" +msgstr "" + +#: app/templates/clients/view.html:272 app/templates/projects/view.html:386 +msgid "No attachments yet" +msgstr "" + +#: app/templates/clients/view.html:306 app/templates/projects/view.html:95 +#: app/utils/i18n_helpers.py:50 app/utils/i18n_helpers.py:56 +msgid "Archived" +msgstr "" + +#: app/templates/clients/view.html:327 +msgid "Recent Hours History" +msgstr "" + +#: app/templates/clients/view.html:392 +#, python-format +msgid "Showing last %(count)s entries" +msgstr "" + +#: app/templates/clients/view.html:398 +msgid "No recent time entries found." +msgstr "" + +#: app/templates/clients/view.html:408 +#: app/templates/inventory/purchase_orders/form.html:59 +#: app/templates/quotes/create.html:181 app/templates/quotes/edit.html:248 +msgid "Internal Notes" +msgstr "" + +#: app/templates/clients/view.html:410 +msgid "Add Note" +msgstr "" + +#: app/templates/clients/view.html:426 +msgid "Add an internal note about this client..." +msgstr "" + +#: app/templates/clients/view.html:442 +msgid "Save Note" +msgstr "" + +#: app/templates/clients/view.html:466 app/templates/comments/_comment.html:29 +msgid "edited" +msgstr "" + +#: app/templates/clients/view.html:475 +msgid "Important" +msgstr "" + +#: app/templates/clients/view.html:484 +msgid "Unmark" +msgstr "" + +#: app/templates/clients/view.html:484 +msgid "Mark Important" +msgstr "" + +#: app/templates/clients/view.html:511 +msgid "" +"No notes yet. Add a note to keep track of important information about " +"this client." +msgstr "" + +#: app/templates/clients/view.html:560 +msgid "Are you sure you want to delete this note?" +msgstr "" + +#: app/templates/clients/view.html:562 +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:361 +#: app/templates/quotes/view.html:375 +msgid "Reply" +msgstr "" + +#: app/templates/comments/_comment.html:103 +msgid "Add Attachment" +msgstr "" + +#: app/templates/comments/_comment.html:114 +msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +msgstr "" + +#: app/templates/comments/_comment.html:157 +msgid "Write your reply..." +msgstr "" + +#: app/templates/comments/_comment.html:184 +msgid "Replies are too deeply nested to display." +msgstr "" + +#: app/templates/comments/_comment.html:193 +msgid "Comment nesting too deep to display." +msgstr "" + +#: app/templates/comments/_comments_section.html:30 +#: app/templates/quotes/view.html:282 +msgid "Share your thoughts, updates, or questions..." +msgstr "" + +#: app/templates/comments/_comments_section.html:32 +#: app/templates/comments/edit.html:70 +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:11 +#: 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:50 +msgid "Originally posted on" +msgstr "" + +#: app/templates/comments/edit.html:66 +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:289 +#: app/templates/main/dashboard.html:402 +#: 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:290 +msgid "Activity will appear here as you work" +msgstr "" + +#: app/templates/components/activity_feed_widget.html:111 +#: app/templates/components/activity_feed_widget.html:279 +#: app/templates/components/activity_feed_widget.html:317 +msgid "Load More" +msgstr "" + +#: app/templates/components/activity_feed_widget.html:310 +msgid "Failed to load activities" +msgstr "" + +#: app/templates/components/chat_user_selector.html:6 +msgid "Start a Chat" +msgstr "" + +#: app/templates/components/chat_user_selector.html:17 +msgid "Search users..." +msgstr "" + +#: app/templates/components/chat_user_selector.html:26 +msgid "Loading users..." +msgstr "" + +#: app/templates/components/chat_user_selector.html:32 +#: app/templates/components/chat_user_selector.html:116 +msgid "Failed to load users" +msgstr "" + +#: app/templates/components/chat_user_selector.html:43 +msgid "No users found" +msgstr "" + +#: app/templates/components/chat_user_selector.html:213 +msgid "Starting chat..." +msgstr "" + +#: app/templates/components/chat_user_selector.html:270 +msgid "Failed to start chat" +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 "" + +#: app/templates/components/client_select.html:20 +#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 +msgid "Select a client..." +msgstr "" + +#: app/templates/components/client_select.html:20 +msgid "Select a client (optional)" +msgstr "" + +#: app/templates/components/multi_select.html:47 +#: app/templates/components/multi_select.html:209 +msgid "Selected" +msgstr "" + +#: app/templates/components/multi_select.html:67 +msgid "Search..." +msgstr "" + +#: app/templates/components/multi_select.html:80 +msgid "Select all" +msgstr "" + +#: app/templates/components/multi_select.html:105 +msgid "No items available" +msgstr "" + +#: app/templates/components/multi_select.html:122 +#: app/templates/projects/time_entries_overview.html:39 +msgid "Apply" +msgstr "" + +#: app/templates/components/offline_indicator.html:10 +#: app/templates/integrations/manage.html:604 +#: app/templates/integrations/view.html:137 +msgid "Sync Now" +msgstr "" + +#: app/templates/components/offline_indicator.html:18 +msgid "Pending Sync" +msgstr "" + +#: app/templates/components/offline_indicator.html:24 +#: app/templates/components/offline_indicator.html:56 +msgid "No pending items" +msgstr "" + +#: app/templates/components/offline_indicator.html:29 +msgid "Sync All" +msgstr "" + +#: app/templates/components/offline_indicator.html:96 +msgid "Error loading queue" +msgstr "" + +#: app/templates/components/persistent_chat_widget.html:9 +msgid "Toggle chat" +msgstr "" + +#: app/templates/components/persistent_chat_widget.html:27 +msgid "Start new chat" +msgstr "" + +#: app/templates/components/persistent_chat_widget.html:41 +msgid "Minimize chat" +msgstr "" + +#: app/templates/components/persistent_chat_widget.html:90 +msgid "View full" +msgstr "" + +#: app/templates/components/persistent_chat_widget.html:331 +msgid "Failed to load messages" +msgstr "" + +#: app/templates/components/persistent_chat_widget.html:341 +msgid "No messages yet" +msgstr "" + +#: app/templates/components/persistent_chat_widget.html:403 +#: app/templates/components/persistent_chat_widget.html:409 +msgid "Failed to send message" +msgstr "" + +#: app/templates/components/ui.html:52 +msgid "Home" +msgstr "" + +#: app/templates/contacts/communication_form.html:31 +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/quotes/view.html:450 +msgid "Subject" +msgstr "" + +#: app/templates/contacts/communication_form.html:61 +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:150 +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:40 +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:120 app/templates/main/dashboard.html:147 +#: 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/timer/_time_entries_list.html:41 +#: app/templates/timer/manual_entry.html:112 +#: 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/form.html:25 app/templates/deals/list.html:50 +msgid "Deal Name" +msgstr "" + +#: app/templates/deals/form.html:32 +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/view.html:45 +#: app/templates/invoice_approvals/list.html:32 +#: app/templates/invoice_approvals/view.html:70 +msgid "Stage" +msgstr "" + +#: app/templates/deals/form.html:61 +msgid "Deal Value" +msgstr "" + +#: app/templates/deals/form.html:75 +msgid "Win Probability" +msgstr "" + +#: app/templates/deals/form.html:80 +msgid "Expected Close Date" +msgstr "" + +#: app/templates/deals/form.html:86 app/templates/deals/view.html:124 +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/view.html:58 +msgid "Value" +msgstr "" + +#: app/templates/deals/list.html:54 app/templates/deals/view.html:63 +msgid "Probability" +msgstr "" + +#: app/templates/deals/list.html:55 app/templates/deals/view.html:68 +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:14 app/templates/deals/view.html:143 +#: app/templates/leads/view.html:14 app/templates/leads/view.html:136 +msgid "Add Activity" +msgstr "" + +#: app/templates/deals/view.html:15 +msgid "Pipeline" +msgstr "" + +#: app/templates/deals/view.html:30 +msgid "Deal Information" +msgstr "" + +#: app/templates/deals/view.html:74 +msgid "Actual Close" +msgstr "" + +#: app/templates/deals/view.html:80 app/templates/leads/view.html:100 +msgid "Owner" +msgstr "" + +#: app/templates/deals/view.html:86 +msgid "Related Lead" +msgstr "" + +#: app/templates/deals/view.html:117 +msgid "Loss Reason" +msgstr "" + +#: app/templates/deals/view.html:131 app/templates/quotes/view.html:170 +msgid "Related Project" +msgstr "" + +#: app/templates/deals/view.html:156 app/templates/leads/view.html:149 +msgid "by" +msgstr "" + +#: app/templates/deals/view.html:169 app/templates/leads/view.html:162 +msgid "No activities recorded yet" +msgstr "" + +#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 +msgid "Add first activity" +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/utils/pdf_generator.py:941 +#: app/utils/pdf_generator.py:951 +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 +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:2113 +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:285 +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 app/templates/errors/400.html:12 +msgid "400 Bad Request" +msgstr "" + +#: app/templates/errors/400.html:16 +msgid "Invalid Request" +msgstr "" + +#: app/templates/errors/400.html:18 +msgid "The request you made is invalid or contains errors. This could be due to:" +msgstr "" + +#: app/templates/errors/400.html:21 +msgid "Missing or invalid form data" +msgstr "" + +#: app/templates/errors/400.html:22 +msgid "Malformed request parameters" +msgstr "" + +#: app/templates/errors/403.html:18 +msgid "You don't have permission to access this resource. This could be due to:" +msgstr "" + +#: app/templates/errors/403.html:21 +msgid "Insufficient privileges" +msgstr "" + +#: app/templates/errors/403.html:22 +msgid "Not logged in" +msgstr "" + +#: app/templates/errors/403.html:23 +msgid "Resource access restrictions" +msgstr "" + +#: app/templates/errors/500.html:14 +msgid "Something went wrong on our end. Please try again later." +msgstr "" + +#: app/templates/errors/500.html:18 +msgid "Try Again" +msgstr "" + +#: app/templates/errors/generic.html:18 +msgid "An error occurred while processing your request." +msgstr "" + +#: app/templates/errors/generic.html:33 +msgid "Refresh Page" +msgstr "" + +#: app/templates/errors/generic.html:37 +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 "" + +#: app/templates/expenses/form.html:35 +msgid "e.g., Flight to Berlin" +msgstr "" + +#: app/templates/expenses/form.html:44 +msgid "Additional details about the expense..." +msgstr "" + +#: app/templates/expenses/form.html:194 +msgid "e.g., Lufthansa" +msgstr "" + +#: app/templates/expenses/form.html:224 +msgid "Receipt/Invoice Number" +msgstr "" + +#: app/templates/expenses/form.html:228 +msgid "e.g., INV-2024-001" +msgstr "" + +#: app/templates/expenses/form.html:239 +msgid "e.g., conference, client-meeting, urgent" +msgstr "" + +#: app/templates/expenses/form.html:248 app/templates/mileage/form.html:238 +#: app/templates/per_diem/form.html:190 +msgid "Additional notes..." +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:251 +msgid "Associated With" +msgstr "" + +#: app/templates/expenses/view.html:347 +msgid "Reject Expense" +msgstr "" + +#: app/templates/expenses/view.html:356 +msgid "Explain why this expense is being rejected..." +msgstr "" + +#: app/templates/expenses/view.html:396 +msgid "Are you sure you want to delete this expense?" +msgstr "" + +#: app/templates/expenses/view.html:398 +msgid "Delete Expense" +msgstr "" + +#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 +msgid "Add task" +msgstr "" + +#: app/templates/import_export/index.html:4 +#: app/templates/import_export/index.html:13 +msgid "Import/Export Data" +msgstr "" + +#: app/templates/import_export/index.html:8 +msgid "Import/Export" +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 "" + +#: app/templates/import_export/index.html:24 +msgid "Import Data" +msgstr "" + +#: app/templates/import_export/index.html:29 +msgid "CSV Import - Time Entries" +msgstr "" + +#: app/templates/import_export/index.html:30 +msgid "Import time entries from a CSV file" +msgstr "" + +#: app/templates/import_export/index.html:34 +#: app/templates/import_export/index.html:53 +msgid "Choose CSV File" +msgstr "" + +#: app/templates/import_export/index.html:38 +#: app/templates/import_export/index.html:57 +msgid "Download Template" +msgstr "" + +#: app/templates/import_export/index.html:48 +msgid "CSV Import - Clients" +msgstr "" + +#: app/templates/import_export/index.html:49 +msgid "Import clients with custom fields and multiple contacts from a CSV file" +msgstr "" + +#: app/templates/import_export/index.html:63 +msgid "Skip duplicate clients" +msgstr "" + +#: app/templates/import_export/index.html:66 +msgid "Use these fields for duplicate detection:" +msgstr "" + +#: app/templates/import_export/index.html:72 +msgid "Custom fields (comma-separated):" +msgstr "" + +#: app/templates/import_export/index.html:73 +msgid "e.g., debtor_number, erp_id" +msgstr "" + +#: app/templates/import_export/index.html:75 +msgid "" +"Example: Enter \"debtor_number\" to detect duplicates by debtor number " +"only (not by name)" +msgstr "" + +#: app/templates/import_export/index.html:85 +#: app/templates/import_export/index.html:212 +msgid "Import from Toggl Track" +msgstr "" + +#: app/templates/import_export/index.html:86 +msgid "Import time entries from Toggl Track" +msgstr "" + +#: app/templates/import_export/index.html:89 +msgid "Import from Toggl" +msgstr "" + +#: app/templates/import_export/index.html:97 +#: app/templates/import_export/index.html:101 +#: app/templates/import_export/index.html:250 +msgid "Import from Harvest" +msgstr "" + +#: app/templates/import_export/index.html:98 +msgid "Import time entries from Harvest" +msgstr "" + +#: app/templates/import_export/index.html:110 +msgid "Restore from Backup" +msgstr "" + +#: app/templates/import_export/index.html:111 +msgid "Restore data from a JSON or ZIP backup file" +msgstr "" + +#: app/templates/import_export/index.html:125 +msgid "Import History" +msgstr "" + +#: app/templates/import_export/index.html:137 +msgid "Export Data" +msgstr "" + +#: app/templates/import_export/index.html:142 +msgid "Full Data Export (GDPR)" +msgstr "" + +#: app/templates/import_export/index.html:143 +msgid "Export all your personal data" +msgstr "" + +#: app/templates/import_export/index.html:147 +msgid "Export as JSON" +msgstr "" + +#: app/templates/import_export/index.html:150 +msgid "Export as ZIP" +msgstr "" + +#: app/templates/import_export/index.html:160 +msgid "Filtered Export" +msgstr "" + +#: app/templates/import_export/index.html:161 +msgid "Export specific data with filters" +msgstr "" + +#: app/templates/import_export/index.html:164 +msgid "Export with Filters" +msgstr "" + +#: app/templates/import_export/index.html:172 +msgid "Export Clients" +msgstr "" + +#: app/templates/import_export/index.html:173 +msgid "Export all clients with custom fields and contacts to CSV" +msgstr "" + +#: app/templates/import_export/index.html:176 +msgid "Export Clients to CSV" +msgstr "" + +#: app/templates/import_export/index.html:186 +msgid "Create a full database backup" +msgstr "" + +#: app/templates/import_export/index.html:199 +msgid "Export History" +msgstr "" + +#: app/templates/import_export/index.html:216 +#: app/templates/import_export/index.html:259 +msgid "API Token" +msgstr "" + +#: app/templates/import_export/index.html:221 +msgid "Workspace ID" +msgstr "" + +#: app/templates/import_export/index.html:237 +#: app/templates/import_export/index.html:275 +msgid "Import" +msgstr "" + +#: app/templates/import_export/index.html:254 +msgid "Account ID" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:4 +#: app/templates/integrations/activitywatch_setup.html:14 +msgid "ActivityWatch Setup" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:15 +msgid "" +"Import window and web activity from ActivityWatch (aw-server) as " +"automatic time entries" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:25 +#: app/templates/integrations/caldav_setup.html:25 +msgid "Server Connection" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:29 +msgid "ActivityWatch Server URL" +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 "" + +#: app/templates/integrations/activitywatch_setup.html:40 +msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:47 +#: app/templates/integrations/caldav_setup.html:126 +msgid "Import Settings" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:51 +#: app/templates/integrations/caldav_setup.html:130 +msgid "Default Project" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:57 +#: app/templates/integrations/caldav_setup.html:136 +msgid "No project (import without project)" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:66 +msgid "" +"Assign imported activity events to this project. Leave empty to import " +"without a project." +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 "" + +#: 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 "" + +#: app/templates/integrations/activitywatch_setup.html:76 +#: app/templates/integrations/caldav_setup.html:157 +msgid "Create a project" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:84 +#: app/templates/integrations/caldav_setup.html:165 +msgid "Lookback Days" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:94 +msgid "How many days back to import on full sync (1–90, default: 7)." +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:100 +msgid "Bucket IDs" +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 "" + +#: app/templates/integrations/activitywatch_setup.html:119 +#: app/templates/integrations/caldav_setup.html:186 +msgid "Enable automatic sync" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:122 +msgid "" +"Automatically sync activity on a schedule. You can also trigger manual " +"syncs." +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 "" + +#: 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 "" + +#: 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 "" + +#: 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:452 +#: app/templates/reports/schedule_form.html:47 +msgid "Daily" +msgstr "" + +#: app/templates/integrations/activitywatch_setup.html:156 +msgid "Test & Sync" +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 "" + +#: app/templates/integrations/caldav_setup.html:4 +#: app/templates/integrations/caldav_setup.html:14 +msgid "CalDAV Calendar Setup" +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 "" + +#: app/templates/integrations/caldav_setup.html:29 +msgid "CalDAV Server URL" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:29 +msgid "optional if calendar URL is provided" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:38 +msgid "Base URL of your CalDAV server. Used for calendar discovery." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:39 +msgid "Example: https://mail.example.com/dav for Zimbra" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:45 +msgid "Calendar URL" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:45 +msgid "optional if server URL is provided" +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 "" + +#: app/templates/integrations/caldav_setup.html:60 +msgid "Calendar Name" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:67 +msgid "My Calendar" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:73 +msgid "Authentication" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:87 +#: app/templates/integrations/manage.html:219 +msgid "Your CalDAV username (usually your email address)." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:102 +#: app/templates/integrations/manage.html:234 +msgid "Your CalDAV password or app-specific password." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:104 +#: app/templates/integrations/manage.html:236 +msgid "Leave empty to keep your current password." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:116 +msgid "Verify SSL certificate" +msgstr "" + +#: app/templates/integrations/caldav_setup.html:119 +msgid "Uncheck only if using a self-signed certificate." +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 "" + +#: app/templates/integrations/caldav_setup.html:146 +msgid "" +"If an event title contains a project name, that project will be used " +"instead." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:147 +msgid "If no project is selected, events will be imported without a project." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:175 +msgid "How many days back to import events from (default: 90)." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:189 +msgid "" +"Automatically sync calendar events every hour. You can still trigger " +"manual syncs." +msgstr "" + +#: app/templates/integrations/caldav_setup.html:212 +msgid "" +"After saving, you can test the connection and discover available " +"calendars." +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 "" + +#: app/templates/integrations/list.html:34 +msgid "OIDC / Single Sign-On" +msgstr "" + +#: app/templates/integrations/list.html:36 +msgid "" +"Configure OpenID Connect authentication for Single Sign-On (SSO) with " +"your identity provider" +msgstr "" + +#: app/templates/integrations/list.html:91 +#: app/templates/integrations/manage.html:530 +msgid "Not Connected" +msgstr "" + +#: app/templates/integrations/list.html:101 +msgid "Synced" +msgstr "" + +#: app/templates/integrations/list.html:106 +msgid "Not Set Up" +msgstr "" + +#: app/templates/integrations/list.html:124 +#: app/templates/integrations/manage.html:690 +msgid "Connect" +msgstr "" + +#: app/templates/integrations/manage.html:4 +#: app/templates/integrations/view.html:3 +msgid "Integration" +msgstr "" + +#: app/templates/integrations/manage.html:26 +msgid "Guided Setup Wizard" +msgstr "" + +#: app/templates/integrations/manage.html:29 +msgid "Use our step-by-step wizard to configure this integration easily." +msgstr "" + +#: app/templates/integrations/manage.html:34 +msgid "Launch Setup Wizard" +msgstr "" + +#: app/templates/integrations/manage.html:43 +msgid "OAuth Credentials Setup" +msgstr "" + +#: app/templates/integrations/manage.html:87 +msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." +msgstr "" + +#: app/templates/integrations/manage.html:132 +msgid "Use \"common\" for multi-tenant, or leave empty for common" +msgstr "" + +#: app/templates/integrations/manage.html:197 +msgid "CalDAV Authentication" +msgstr "" + +#: app/templates/integrations/manage.html:200 +msgid "" +"CalDAV uses username and password authentication (not OAuth). Update your" +" credentials below." +msgstr "" + +#: app/templates/integrations/manage.html:255 +msgid "Integration Configuration" +msgstr "" + +#: app/templates/integrations/manage.html:258 +msgid "Configure sync settings, data mappings, and other integration options." +msgstr "" + +#: app/templates/integrations/manage.html:504 +msgid "Connection Management" +msgstr "" + +#: app/templates/integrations/manage.html:513 +#: app/templates/integrations/view.html:113 +msgid "Connector Error" +msgstr "" + +#: app/templates/integrations/manage.html:540 +msgid "Sync OK" +msgstr "" + +#: app/templates/integrations/manage.html:544 +msgid "Sync Error" +msgstr "" + +#: app/templates/integrations/manage.html:555 +msgid "Expires" +msgstr "" + +#: app/templates/integrations/manage.html:557 +msgid "No expiration" +msgstr "" + +#: app/templates/integrations/manage.html:564 +msgid "Not connected" +msgstr "" + +#: app/templates/integrations/manage.html:570 +#: app/templates/integrations/manage.html:577 +#: app/templates/integrations/view.html:48 +msgid "Last Sync" +msgstr "" + +#: app/templates/integrations/manage.html:587 +#: app/templates/integrations/view.html:65 +msgid "Last Error" +msgstr "" + +#: app/templates/integrations/manage.html:617 +msgid "" +"CalDAV uses username/password authentication. Click below to set up your " +"CalDAV connection." +msgstr "" + +#: app/templates/integrations/manage.html:620 +msgid "Setup CalDAV Integration" +msgstr "" + +#: app/templates/integrations/manage.html:627 +msgid "" +"ActivityWatch imports window and web activity from your local aw-server. " +"Click below to configure." +msgstr "" + +#: app/templates/integrations/manage.html:630 +msgid "Setup ActivityWatch Integration" +msgstr "" + +#: app/templates/integrations/manage.html:645 +msgid "OAuth credentials are configured. You can now connect Trello." +msgstr "" + +#: app/templates/integrations/manage.html:648 +msgid "Connect Trello" +msgstr "" + +#: app/templates/integrations/manage.html:655 +msgid "" +"Please configure Trello API key and token in the OAuth Credentials Setup " +"section above." +msgstr "" + +#: app/templates/integrations/manage.html:667 +msgid "Please configure OAuth credentials in the section above before connecting." +msgstr "" + +#: app/templates/integrations/manage.html:674 +#: app/templates/integrations/manage.html:699 +msgid "OAuth credentials need to be configured by an administrator first." +msgstr "" + +#: app/templates/integrations/manage.html:680 +msgid "" +"Connect your Google Calendar account. You will be redirected to Google " +"for authorization." +msgstr "" + +#: app/templates/integrations/manage.html:682 +msgid "" +"Connect this integration. You will be redirected to the provider for " +"authorization." +msgstr "" + +#: app/templates/integrations/view.html:11 +msgid "Back to Integrations" +msgstr "" + +#: app/templates/integrations/view.html:17 +msgid "Integration Status" +msgstr "" + +#: app/templates/integrations/view.html:36 +msgid "Token Expires" +msgstr "" + +#: app/templates/integrations/view.html:74 +msgid "Sync History" +msgstr "" + +#: app/templates/integrations/view.html:101 +msgid "No sync events yet" +msgstr "" + +#: app/templates/integrations/view.html:117 +msgid "Configure CalDAV Integration" +msgstr "" + +#: app/templates/integrations/view.html:121 +msgid "Configure ActivityWatch" +msgstr "" + +#: app/templates/integrations/view.html:141 +msgid "" +"Are you sure you want to reset this integration? This will remove all " +"credentials and configuration." +msgstr "" + +#: app/templates/integrations/view.html:147 +msgid "" +"Are you sure you want to delete this integration? This action cannot be " +"undone." +msgstr "" + +#: app/templates/integrations/view.html:155 +#: app/templates/integrations/view.html:159 +msgid "Edit Configuration" +msgstr "" + +#: app/templates/integrations/wizard_asana.html:6 +#: app/templates/integrations/wizard_github.html:6 +msgid "Step 1: OAuth Setup" +msgstr "" + +#: app/templates/integrations/wizard_asana.html:12 +msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +msgstr "" + +#: app/templates/integrations/wizard_asana.html:18 +msgid "Asana OAuth Client ID" +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 "" + +#: app/templates/integrations/wizard_asana.html:27 +msgid "Asana OAuth Client Secret" +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 "" + +#: app/templates/integrations/wizard_asana.html:46 +msgid "Step 2: Workspace Selection" +msgstr "" + +#: app/templates/integrations/wizard_asana.html:50 +#: app/templates/integrations/wizard_asana.html:163 +msgid "Workspace GID" +msgstr "" + +#: app/templates/integrations/wizard_asana.html:57 +msgid "Find your workspace GID in Asana workspace settings or API" +msgstr "" + +#: app/templates/integrations/wizard_asana.html:65 +msgid "Step 3: Project Selection" +msgstr "" + +#: app/templates/integrations/wizard_asana.html:69 +msgid "Project GIDs" +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 "" + +#: app/templates/integrations/wizard_asana.html:84 +msgid "Step 4: Sync Configuration" +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 "" + +#: app/templates/integrations/wizard_asana.html:91 +msgid "Asana → TimeTracker (Import only)" +msgstr "" + +#: app/templates/integrations/wizard_asana.html:94 +msgid "TimeTracker → Asana (Export only)" +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 "" + +#: 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 "" + +#: app/templates/integrations/wizard_asana.html:122 +msgid "Subtasks" +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 "" + +#: app/templates/integrations/wizard_asana.html:148 +msgid "Sync Completed Tasks" +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 "" + +#: 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 "" + +#: 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 +msgid "Finish" +msgstr "" + +#: app/templates/integrations/wizard_base.html:27 +msgid "Step" +msgstr "" + +#: app/templates/integrations/wizard_github.html:12 +msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." +msgstr "" + +#: app/templates/integrations/wizard_github.html:18 +msgid "GitHub OAuth Client ID" +msgstr "" + +#: app/templates/integrations/wizard_github.html:27 +msgid "GitHub OAuth Client Secret" +msgstr "" + +#: app/templates/integrations/wizard_github.html:46 +msgid "Step 2: Repository Selection" +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 "" + +#: 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 "" + +#: 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 "" + +#: app/templates/integrations/wizard_github.html:81 +msgid "GitHub → TimeTracker (Import only)" +msgstr "" + +#: app/templates/integrations/wizard_github.html:84 +msgid "TimeTracker → GitHub (Export only)" +msgstr "" + +#: app/templates/integrations/wizard_github.html:106 +msgid "Pull Requests" +msgstr "" + +#: app/templates/integrations/wizard_github.html:112 +msgid "Projects (Repositories)" +msgstr "" + +#: app/templates/integrations/wizard_github.html:118 +#: app/templates/integrations/wizard_gitlab.html:154 +msgid "Issue States to Sync" +msgstr "" + +#: app/templates/integrations/wizard_github.html:125 +#: app/templates/integrations/wizard_gitlab.html:161 +msgid "Open Issues" +msgstr "" + +#: app/templates/integrations/wizard_github.html:131 +#: app/templates/integrations/wizard_gitlab.html:167 +msgid "Closed Issues" +msgstr "" + +#: app/templates/integrations/wizard_github.html:140 +msgid "Step 4: Webhook Setup" +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 "" + +#: app/templates/integrations/wizard_github.html:148 +#: app/templates/integrations/wizard_gitlab.html:203 +msgid "Enter webhook secret" +msgstr "" + +#: app/templates/integrations/wizard_github.html:150 +msgid "" +"Secret token for verifying webhook signatures. Configure this in your " +"GitHub repository webhook settings." +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:453 +#: app/templates/reports/schedule_form.html:48 +msgid "Weekly" +msgstr "" + +#: app/templates/integrations/wizard_github.html:172 +msgid "Automatically sync when webhooks are received from GitHub" +msgstr "" + +#: app/templates/integrations/wizard_github.html:178 +msgid "Add this URL as a webhook in your GitHub repository settings:" +msgstr "" + +#: app/templates/integrations/wizard_github.html:225 +msgid "All repositories" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:6 +msgid "Step 1: Instance Configuration" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:26 +msgid "You can use GitLab.com or your self-hosted GitLab instance." +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 "" + +#: app/templates/integrations/wizard_gitlab.html:40 +msgid "" +"Configure OAuth credentials. Create an application in GitLab Settings → " +"Applications." +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:46 +msgid "GitLab OAuth Client ID" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:55 +msgid "GitLab OAuth Client Secret" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:66 +msgid "" +"Add this URL as an authorized redirect URI in your GitLab application " +"settings:" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:77 +msgid "Step 3: Repository Selection" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:81 +msgid "Repository IDs" +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 "" + +#: app/templates/integrations/wizard_gitlab.html:101 +msgid "Automatically create projects in TimeTracker from GitLab projects" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:108 +msgid "Step 4: Sync Settings" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:117 +msgid "GitLab → TimeTracker (Import only)" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:120 +msgid "TimeTracker → GitLab (Export only)" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:142 +msgid "Merge Requests" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:194 +msgid "Automatically sync when webhooks are received from GitLab" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:205 +msgid "Secret token for verifying webhook signatures" +msgstr "" + +#: app/templates/integrations/wizard_gitlab.html:221 +msgid "Instance URL" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:6 +msgid "Step 1: OAuth Setup & Basic Configuration" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:12 +msgid "" +"First, configure OAuth credentials for Jira. You can get these from " +"Atlassian Developer Console." +msgstr "" + +#: app/templates/integrations/wizard_jira.html:18 +msgid "Jira OAuth Client ID" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:25 +msgid "Get this from Atlassian Developer Console" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:31 +msgid "Jira OAuth Client Secret" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:41 +msgid "Jira Instance URL" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:48 +msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:55 +msgid "" +"Add this URL as an authorized redirect URI in your Jira OAuth app " +"settings:" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:71 +msgid "" +"Click \"Test Connection\" to verify that Jira is accessible and OAuth " +"credentials are correct." +msgstr "" + +#: app/templates/integrations/wizard_jira.html:86 +msgid "JQL Query" +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 "" + +#: app/templates/integrations/wizard_jira.html:103 +msgid "Jira → TimeTracker (Import only)" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:106 +msgid "TimeTracker → Jira (Export only)" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:113 +msgid "Choose how data flows between Jira and TimeTracker" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:126 +msgid "Issues (Tasks)" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:163 +msgid "Automatically sync when webhooks are received from Jira" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:196 +msgid "Automatically create projects in TimeTracker from Jira projects" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:208 +msgid "" +"Review your configuration below. Click \"Finish\" to save and complete " +"the setup." +msgstr "" + +#: app/templates/integrations/wizard_jira.html:213 +msgid "Jira URL" +msgstr "" + +#: app/templates/integrations/wizard_jira.html:265 +#: app/templates/integrations/wizard_trello.html:100 +msgid "Please test the connection before proceeding." +msgstr "" + +#: app/templates/integrations/wizard_jira.html:277 +msgid "Please enter Jira URL first." +msgstr "" + +#: app/templates/integrations/wizard_microsoft_teams.html:6 +#: app/templates/integrations/wizard_outlook_calendar.html:6 +msgid "Step 1: Tenant ID Configuration" +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 "" + +#: 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 "" + +#: app/templates/integrations/wizard_microsoft_teams.html:46 +msgid "Microsoft Teams OAuth Client ID" +msgstr "" + +#: app/templates/integrations/wizard_microsoft_teams.html:55 +msgid "Microsoft Teams OAuth Client Secret" +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 "" + +#: app/templates/integrations/wizard_outlook_calendar.html:46 +msgid "Outlook Calendar OAuth Client ID" +msgstr "" + +#: app/templates/integrations/wizard_outlook_calendar.html:55 +msgid "Outlook Calendar OAuth Client Secret" +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 "" + +#: app/templates/integrations/wizard_quickbooks.html:6 +#: app/templates/integrations/wizard_xero.html:6 +msgid "Step 1: OAuth Connection" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:12 +msgid "Configure OAuth credentials from Intuit Developer Dashboard." +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:18 +msgid "QuickBooks OAuth Client ID" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:27 +msgid "QuickBooks OAuth Client Secret" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:38 +msgid "" +"After saving OAuth credentials, you will need to connect your QuickBooks " +"account via OAuth." +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:46 +msgid "Step 2: Company Selection" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:50 +msgid "Company ID (Realm ID)" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:57 +msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:65 +msgid "Use Sandbox" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:68 +msgid "Use QuickBooks sandbox environment for testing" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:82 +msgid "QuickBooks → TimeTracker (Import only)" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:85 +msgid "TimeTracker → QuickBooks (Export only)" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:119 +msgid "Customers" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:145 +#: app/templates/integrations/wizard_xero.html:128 +msgid "Step 4: Account Mappings" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:149 +msgid "Default Expense Account ID" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:156 +msgid "QuickBooks account ID to use for expenses when no mapping is configured" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:162 +msgid "Customer Mappings" +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 "" + +#: app/templates/integrations/wizard_quickbooks.html:168 +msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:174 +#: app/templates/integrations/wizard_xero.html:157 +msgid "Account Mappings" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:180 +msgid "" +"Map TimeTracker expense category IDs to QuickBooks account IDs (JSON " +"format)" +msgstr "" + +#: app/templates/integrations/wizard_quickbooks.html:196 +msgid "Company ID" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:6 +msgid "Step 1: API Keys Setup" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:12 +msgid "Get your API key and secret from" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:23 +msgid "Enter API Key" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:32 +msgid "Enter API Secret" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:34 +msgid "Generate a token after creating the API key" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:48 +msgid "" +"Click \"Test Connection\" to verify that your Trello API credentials are " +"correct." +msgstr "" + +#: app/templates/integrations/wizard_trello.html:67 +#: app/templates/payment_gateways/create.html:39 +msgid "API Key" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:72 +msgid "Not tested" +msgstr "" + +#: app/templates/integrations/wizard_trello.html:92 +msgid "Connection failed" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:12 +msgid "Configure OAuth credentials from Xero Developer Portal." +msgstr "" + +#: app/templates/integrations/wizard_xero.html:18 +msgid "Xero OAuth Client ID" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:27 +msgid "Xero OAuth Client Secret" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:39 +msgid "Step 2: Tenant Selection" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:50 +msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." +msgstr "" + +#: app/templates/integrations/wizard_xero.html:65 +msgid "Xero → TimeTracker (Import only)" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:68 +msgid "TimeTracker → Xero (Export only)" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:132 +msgid "Default Expense Account Code" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:139 +msgid "Xero account code to use for expenses when no mapping is configured" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:145 +msgid "Contact Mappings" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:151 +msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +msgstr "" + +#: app/templates/integrations/wizard_xero.html:163 +msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" +msgstr "" + +#: app/templates/inventory/adjustments/form.html:23 +#: app/templates/inventory/adjustments/list.html:30 +#: app/templates/inventory/movements/form.html:43 +#: app/templates/inventory/purchase_orders/form.html:77 +#: app/templates/inventory/reports/movement_history.html:30 +#: app/templates/inventory/transfers/form.html:23 +#: app/templates/quotes/create.html:60 app/templates/quotes/edit.html:114 +msgid "Stock Item" +msgstr "" + +#: app/templates/inventory/adjustments/form.html:25 +#: app/templates/inventory/movements/form.html:45 +#: 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/low_stock/list.html:22 +#: app/templates/inventory/movements/form.html:52 +#: app/templates/inventory/movements/list.html:56 +#: app/templates/inventory/purchase_orders/form.html:82 +#: app/templates/inventory/reports/low_stock.html:31 +#: app/templates/inventory/reports/movement_history.html:21 +#: app/templates/inventory/reports/movement_history.html:72 +#: app/templates/inventory/reports/valuation.html:21 +#: app/templates/inventory/reports/valuation.html:57 +#: app/templates/inventory/reservations/list.html:40 +#: app/templates/inventory/stock_items/history.html:22 +#: app/templates/inventory/stock_items/history.html:63 +#: app/templates/inventory/stock_items/view.html:129 +#: app/templates/inventory/stock_items/view.html:241 +#: app/templates/inventory/stock_levels/item.html:23 +#: app/templates/inventory/stock_levels/list.html:20 +#: app/templates/inventory/stock_levels/list.html:47 +#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:61 +#: app/templates/quotes/edit.html:115 +msgid "Warehouse" +msgstr "" + +#: app/templates/inventory/adjustments/form.html:34 +#: app/templates/inventory/movements/form.html:54 +#: app/templates/inventory/purchase_orders/form.html:131 +#: app/templates/invoices/edit.html:158 app/templates/quotes/edit.html:136 +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/low_stock/list.html:23 +#: app/templates/inventory/movements/list.html:55 +#: app/templates/inventory/purchase_orders/view.html:90 +#: app/templates/inventory/reports/low_stock.html:29 +#: app/templates/inventory/reports/movement_history.html:71 +#: app/templates/inventory/reports/turnover.html:44 +#: app/templates/inventory/reports/valuation.html:58 +#: app/templates/inventory/reservations/list.html:39 +#: app/templates/inventory/stock_levels/list.html:48 +#: app/templates/inventory/stock_levels/warehouse.html:45 +#: app/templates/inventory/suppliers/view.html:114 +#: app/templates/inventory/transfers/list.html:39 +#: app/templates/inventory/warehouses/view.html:84 +#: app/templates/inventory/warehouses/view.html:130 +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/stock_items/view.html:130 +#: app/templates/inventory/stock_levels/list.html:49 +#: app/templates/inventory/warehouses/view.html:86 +msgid "On Hand" +msgstr "" + +#: app/templates/inventory/low_stock/list.html:25 +#: app/templates/inventory/reports/low_stock.html:33 +#: app/templates/inventory/stock_items/form.html:69 +#: app/templates/inventory/stock_items/view.html:91 +#: app/templates/inventory/stock_levels/warehouse.html:51 +msgid "Reorder Point" +msgstr "" + +#: app/templates/inventory/low_stock/list.html:26 +#: app/templates/inventory/reports/low_stock.html:34 +msgid "Shortfall" +msgstr "" + +#: app/templates/inventory/low_stock/list.html:27 +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 "" + +#: app/templates/inventory/movements/form.html:21 +msgid "Use a negative quantity (items written off)" +msgstr "" + +#: app/templates/inventory/movements/form.html:22 +msgid "Quantity to revalue (positive)" +msgstr "" + +#: app/templates/inventory/movements/form.html:23 +#: app/templates/inventory/movements/form.html:63 +msgid "Use positive values for additions, negative for removals" +msgstr "" + +#: app/templates/inventory/movements/form.html:24 +msgid "Return requires a positive quantity." +msgstr "" + +#: app/templates/inventory/movements/form.html:25 +msgid "Waste requires a negative quantity." +msgstr "" + +#: app/templates/inventory/movements/form.html:29 +#: 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:36 +#: 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:37 +#: 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:38 +#: app/templates/inventory/movements/form.html:71 +#: 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 +msgid "Devaluation" +msgstr "" + +#: app/templates/inventory/movements/form.html:40 +msgid "" +"You can apply devaluation below to record returned or wasted items at a " +"reduced cost." +msgstr "" + +#: app/templates/inventory/movements/form.html:72 +msgid "Devalue items without creating a new stock item" +msgstr "" + +#: app/templates/inventory/movements/form.html:76 +msgid "Apply devaluation" +msgstr "" + +#: app/templates/inventory/movements/form.html:82 +msgid "Method" +msgstr "" + +#: app/templates/inventory/movements/form.html:84 +msgid "Percent off default cost" +msgstr "" + +#: app/templates/inventory/movements/form.html:85 +msgid "Fixed new unit cost" +msgstr "" + +#: app/templates/inventory/movements/form.html:90 +msgid "Percent" +msgstr "" + +#: app/templates/inventory/movements/form.html:92 +msgid "Example: 30 = reduce cost by 30%" +msgstr "" + +#: app/templates/inventory/movements/form.html:96 +msgid "New Unit Cost" +msgstr "" + +#: app/templates/inventory/movements/form.html:103 +msgid "e.g., Physical count correction" +msgstr "" + +#: app/templates/inventory/movements/form.html:115 +msgid "Record Movement" +msgstr "" + +#: app/templates/inventory/movements/list.html:35 +msgid "Reference Type" +msgstr "" + +#: app/templates/inventory/movements/list.html:41 +msgid "Manual" +msgstr "" + +#: app/templates/inventory/movements/list.html:59 +#: app/templates/inventory/purchase_orders/form.html:80 +#: app/templates/inventory/purchase_orders/view.html:94 +#: app/templates/inventory/reports/movement_history.html:75 +#: app/templates/inventory/reports/valuation.html:62 +#: 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/view.html:179 +#: app/templates/inventory/suppliers/view.html:116 +msgid "Unit Cost" +msgstr "" + +#: app/templates/inventory/movements/list.html:60 +#: app/templates/inventory/reports/movement_history.html:76 +#: app/templates/inventory/reservations/list.html:43 +#: app/templates/inventory/stock_items/history.html:67 +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 "" + +#: app/templates/inventory/movements/list.html:150 +msgid "No stock movements found." +msgstr "" + +#: 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/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/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/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:387 +msgid "Items" +msgstr "" + +#: app/templates/inventory/purchase_orders/form.html:72 +#: app/templates/invoices/edit.html:119 app/templates/quotes/create.html:54 +#: app/templates/quotes/edit.html:108 +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:288 app/templates/invoices/edit.html:313 +#: app/templates/invoices/edit.html:673 app/templates/quotes/create.html:275 +#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:341 +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 +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:63 +#: app/utils/i18n_helpers.py:75 +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:64 +#: app/utils/i18n_helpers.py:76 +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/view.html:30 +msgid "PO Number" +msgstr "" + +#: app/templates/inventory/purchase_orders/list.html:53 +#: 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 +msgid "Quantity Ordered" +msgstr "" + +#: app/templates/inventory/purchase_orders/view.html:93 +msgid "Quantity Received" +msgstr "" + +#: app/templates/inventory/purchase_orders/view.html:95 +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: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:47 app/templates/reports/builder.html:404 +#: app/templates/reports/builder.html:567 +#: app/templates/reports/custom_view.html:65 +#: app/templates/reports/unpaid_hours_report.html:42 +msgid "Summary" +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 "" + +#: app/templates/inventory/reports/low_stock.html:30 +#: app/templates/inventory/reports/turnover.html:45 +#: app/templates/inventory/reports/valuation.html:59 +#: app/templates/inventory/stock_items/form.html:23 +#: app/templates/inventory/stock_items/list.html:49 +#: app/templates/inventory/stock_items/view.html:28 +#: app/templates/inventory/stock_levels/warehouse.html:46 +#: app/templates/inventory/warehouses/view.html:85 +#: app/templates/invoices/edit.html:290 app/templates/invoices/edit.html:319 +#: app/templates/invoices/edit.html:679 +#: app/templates/invoices/pdf_default.html:139 app/utils/pdf_generator.py:1182 +#: app/utils/pdf_generator_reportlab.py:621 +msgid "SKU" +msgstr "" + +#: app/templates/inventory/reports/low_stock.html:32 +#: app/templates/inventory/stock_levels/item.html:24 +#: app/templates/inventory/stock_levels/warehouse.html:48 +msgid "Quantity On Hand" +msgstr "" + +#: app/templates/inventory/reports/low_stock.html:35 +#: 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 +msgid "Total Sold" +msgstr "" + +#: app/templates/inventory/reports/turnover.html:47 +msgid "Avg Stock Level" +msgstr "" + +#: app/templates/inventory/reports/turnover.html:48 +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:30 +#: app/templates/inventory/reports/valuation.html:60 +#: 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/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/invoices/edit.html:215 app/templates/invoices/edit.html:287 +#: 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_good.html:29 +#: app/templates/projects/edit_good.html:29 +#: app/templates/projects/goods.html:40 app/utils/pdf_generator.py:1185 +#: app/utils/pdf_generator_reportlab.py:624 +msgid "Category" +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: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_levels/list.html:50 +#: app/templates/inventory/warehouses/view.html:87 +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 +msgid "Reserved At" +msgstr "" + +#: app/templates/inventory/reservations/list.html:46 +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/view.html:36 +#: app/templates/kiosk/dashboard.html:132 app/templates/quotes/create.html:64 +#: app/templates/quotes/create.html:276 app/templates/quotes/edit.html:118 +#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:342 +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 +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: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 +msgid "Total Qty" +msgstr "" + +#: app/templates/inventory/stock_items/list.html:54 +#: app/templates/inventory/stock_items/view.html:132 +#: app/templates/inventory/stock_levels/item.html:26 +#: app/templates/inventory/stock_levels/list.html:51 +#: app/templates/inventory/stock_levels/warehouse.html:50 +#: app/templates/inventory/warehouses/view.html:88 +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 "" + +#: app/templates/inventory/stock_items/view.html:164 +msgid "" +"Detailed breakdown showing remaining stock with different devaluation " +"rates" +msgstr "" + +#: app/templates/inventory/stock_items/view.html:198 +msgid "No devaluation" +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/warehouse.html:49 +msgid "Quantity Reserved" +msgstr "" + +#: app/templates/inventory/stock_levels/item.html:28 +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 "" + +#: app/templates/inventory/suppliers/form.html:60 +#: app/templates/inventory/suppliers/view.html:89 +#: app/templates/quotes/create.html:110 app/templates/quotes/create.html:113 +#: app/templates/quotes/edit.html:190 app/templates/quotes/edit.html:193 +#: 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 "" + +#: app/templates/inventory/suppliers/list.html:22 +msgid "Code, name, email" +msgstr "" + +#: app/templates/inventory/suppliers/list.html:41 +#: app/templates/inventory/suppliers/view.html:26 +#: app/templates/inventory/warehouses/list.html:22 +#: app/templates/inventory/warehouses/view.html:26 +#: app/templates/user/settings.html:332 +msgid "Code" +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 +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/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/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 "" + +#: app/templates/inventory/warehouses/form.html:40 +#: app/templates/inventory/warehouses/list.html:25 +#: 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 "" + +#: app/templates/invoice_approvals/list.html:54 +msgid "You" +msgstr "" + +#: app/templates/invoice_approvals/list.html:67 +msgid "No Pending Approvals" +msgstr "" + +#: app/templates/invoice_approvals/list.html:68 +msgid "You have no invoices awaiting your approval." +msgstr "" + +#: app/templates/invoice_approvals/list.html:77 +msgid "Reject Invoice Approval" +msgstr "" + +#: app/templates/invoice_approvals/list.html:81 +msgid "Reason for Rejection" +msgstr "" + +#: app/templates/invoice_approvals/list.html:82 +msgid "Please provide a reason for rejecting this invoice..." +msgstr "" + +#: app/templates/invoice_approvals/request.html:3 +#: app/templates/invoice_approvals/request.html:8 +msgid "Request Invoice Approval" +msgstr "" + +#: app/templates/invoice_approvals/request.html:11 +msgid "Back to Invoice" +msgstr "" + +#: app/templates/invoice_approvals/request.html:19 +msgid "Select Approvers" +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 "" + +#: app/templates/invoice_approvals/request.html:39 +#: app/templates/invoices/view.html:142 app/templates/quotes/view.html:193 +msgid "Request Approval" +msgstr "" + +#: app/templates/invoice_approvals/view.html:19 +#: app/templates/invoices/view.html:109 app/templates/quotes/view.html:187 +msgid "Approval Status" +msgstr "" + +#: app/templates/invoice_approvals/view.html:31 +msgid "Requested By" +msgstr "" + +#: app/templates/invoice_approvals/view.html:36 +msgid "Requested At" +msgstr "" + +#: app/templates/invoice_approvals/view.html:42 +msgid "Approved By" +msgstr "" + +#: app/templates/invoice_approvals/view.html:49 +msgid "Rejected By" +msgstr "" + +#: app/templates/invoice_approvals/view.html:54 +#: app/templates/quotes/view.html:555 +msgid "Rejection Reason" +msgstr "" + +#: app/templates/invoice_approvals/view.html:64 +msgid "Approval Stages" +msgstr "" + +#: app/templates/invoice_approvals/view.html:100 +#: app/templates/invoices/edit.html:429 app/templates/main/help.html:525 +#: app/templates/reports/index.html:150 app/templates/tasks/edit.html:280 +msgid "Quick Actions" +msgstr "" + +#: app/templates/invoice_approvals/view.html:116 +msgid "Waiting for approval from another user." +msgstr "" + +#: app/templates/invoices/_invoices_list.html:9 +#: app/templates/payments/list.html:96 app/templates/reports/summary.html:9 +#: app/templates/reports/task_report.html:55 +#: app/templates/reports/user_report.html:56 +msgid "Export to Excel" +msgstr "" + +#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:88 +#: app/utils/i18n_helpers.py:99 +msgid "Partially Paid" +msgstr "" + +#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:89 +#: app/utils/i18n_helpers.py:100 +msgid "Fully Paid" +msgstr "" + +#: app/templates/invoices/create.html:6 app/templates/invoices/create.html:62 +#: app/templates/main/help.html:437 +msgid "Create Invoice" +msgstr "" + +#: app/templates/invoices/create.html:7 +msgid "Generate a new invoice for a project and client" +msgstr "" + +#: app/templates/invoices/create.html:21 app/templates/issues/view.html:68 +#: app/templates/recurring_tasks/form.html:37 +#: app/templates/tasks/create.html:50 app/templates/tasks/edit.html:71 +msgid "Select a project" +msgstr "" + +#: app/templates/invoices/create.html:26 +msgid "Selecting a project will auto-fill client details" +msgstr "" + +#: app/templates/invoices/create.html:45 app/templates/invoices/edit.html:46 +msgid "Buyer reference (PEPPOL BT-10)" +msgstr "" + +#: app/templates/invoices/create.html:46 app/templates/invoices/edit.html:47 +msgid "Optional; used in PEPPOL UBL" +msgstr "" + +#: app/templates/invoices/create.html:49 app/templates/invoices/edit.html:38 +#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:169 +msgid "Tax Rate (%)" +msgstr "" + +#: app/templates/invoices/create.html:69 +#: app/templates/invoices/generate_from_time.html:173 +msgid "Tips" +msgstr "" + +#: app/templates/invoices/create.html:71 +msgid "Choose the correct project to auto-fill client details." +msgstr "" + +#: app/templates/invoices/create.html:72 +msgid "You can customize notes and terms before sending the invoice." +msgstr "" + +#: app/templates/invoices/edit.html:6 +msgid "Edit Invoice" +msgstr "" + +#: app/templates/invoices/edit.html:7 +msgid "Update invoice details, items, and terms" +msgstr "" + +#: app/templates/invoices/edit.html:65 app/templates/quotes/edit.html:57 +msgid "Decorative Images" +msgstr "" + +#: app/templates/invoices/edit.html:67 app/templates/quotes/edit.html:59 +msgid "Add decorative images to appear in the PDF" +msgstr "" + +#: app/templates/invoices/edit.html:99 app/templates/quotes/edit.html:91 +msgid "No images uploaded yet" +msgstr "" + +#: app/templates/invoices/edit.html:104 app/templates/quotes/edit.html:96 +msgid "Position images in the PDF Designer after uploading" +msgstr "" + +#: app/templates/invoices/edit.html:116 +msgid "Time-based services and hourly work" +msgstr "" + +#: app/templates/invoices/edit.html:125 +msgid "Project / Stock Item" +msgstr "" + +#: app/templates/invoices/edit.html:126 +msgid "Task / Warehouse" +msgstr "" + +#: app/templates/invoices/edit.html:145 +msgid "Project hours" +msgstr "" + +#: app/templates/invoices/edit.html:150 app/templates/quotes/edit.html:130 +msgid "Select Stock Item" +msgstr "" + +#: app/templates/invoices/edit.html:167 app/templates/invoices/edit.html:591 +msgid "e.g., Web Development Services" +msgstr "" + +#: app/templates/invoices/edit.html:171 +msgid "Quantity is from logged hours and cannot be edited" +msgstr "" + +#: app/templates/invoices/edit.html:180 app/templates/invoices/edit.html:600 +#: app/templates/quotes/create.html:278 app/templates/quotes/edit.html:147 +#: app/templates/quotes/edit.html:344 +msgid "Remove item" +msgstr "" + +#: app/templates/invoices/edit.html:190 +msgid "Items Subtotal" +msgstr "" + +#: app/templates/invoices/edit.html:204 +msgid "Billable expenses such as travel, meals, and materials" +msgstr "" + +#: app/templates/invoices/edit.html:207 +msgid "Add Expense" +msgstr "" + +#: app/templates/invoices/edit.html:226 +msgid "e.g., Travel to Client Meeting" +msgstr "" + +#: app/templates/invoices/edit.html:226 +msgid "Linked expense - title cannot be edited" +msgstr "" + +#: app/templates/invoices/edit.html:229 +msgid "Linked expense - description cannot be edited" +msgstr "" + +#: app/templates/invoices/edit.html:232 +msgid "Linked expense - category cannot be edited" +msgstr "" + +#: app/templates/invoices/edit.html:233 app/utils/i18n_helpers.py:163 +#: app/utils/i18n_helpers.py:180 +msgid "Travel" +msgstr "" + +#: app/templates/invoices/edit.html:234 app/utils/i18n_helpers.py:164 +#: app/utils/i18n_helpers.py:181 +msgid "Meals" +msgstr "" + +#: app/templates/invoices/edit.html:235 app/utils/i18n_helpers.py:165 +#: app/utils/i18n_helpers.py:182 +msgid "Accommodation" +msgstr "" + +#: app/templates/invoices/edit.html:236 app/utils/i18n_helpers.py:166 +#: app/utils/i18n_helpers.py:183 +msgid "Supplies" +msgstr "" + +#: app/templates/invoices/edit.html:237 app/utils/i18n_helpers.py:167 +#: app/utils/i18n_helpers.py:184 +msgid "Software" +msgstr "" + +#: app/templates/invoices/edit.html:238 app/utils/i18n_helpers.py:168 +#: app/utils/i18n_helpers.py:185 +msgid "Equipment" +msgstr "" + +#: app/templates/invoices/edit.html:239 app/utils/i18n_helpers.py:169 +#: app/utils/i18n_helpers.py:186 +msgid "Services" +msgstr "" + +#: app/templates/invoices/edit.html:240 app/utils/i18n_helpers.py:170 +#: app/utils/i18n_helpers.py:187 +msgid "Marketing" +msgstr "" + +#: app/templates/invoices/edit.html:241 app/utils/i18n_helpers.py:171 +#: app/utils/i18n_helpers.py:188 +msgid "Training" +msgstr "" + +#: app/templates/invoices/edit.html:242 app/templates/invoices/edit.html:309 +#: app/templates/invoices/edit.html:669 app/templates/kiosk/dashboard.html:203 +#: app/templates/projects/add_good.html:35 +#: app/templates/projects/edit_good.html:35 app/utils/i18n_helpers.py:117 +#: app/utils/i18n_helpers.py:133 app/utils/i18n_helpers.py:172 +#: app/utils/i18n_helpers.py:189 +msgid "Other" +msgstr "" + +#: app/templates/invoices/edit.html:246 +msgid "Linked expense - amount cannot be edited" +msgstr "" + +#: app/templates/invoices/edit.html:249 +msgid "Linked expense - date cannot be edited" +msgstr "" + +#: app/templates/invoices/edit.html:252 +msgid "Unlink expense from invoice" +msgstr "" + +#: app/templates/invoices/edit.html:262 +msgid "Expenses Subtotal" +msgstr "" + +#: app/templates/invoices/edit.html:273 app/templates/invoices/view.html:205 +#: app/templates/projects/goods.html:6 +msgid "Extra Goods" +msgstr "" + +#: app/templates/invoices/edit.html:276 +msgid "Products, materials, licenses, and other goods" +msgstr "" + +#: app/templates/invoices/edit.html:279 app/templates/projects/add_good.html:69 +#: app/templates/projects/goods.html:11 +msgid "Add Good" +msgstr "" + +#: app/templates/invoices/edit.html:289 app/templates/invoices/edit.html:316 +#: app/templates/invoices/edit.html:676 app/templates/quotes/create.html:277 +#: app/templates/quotes/edit.html:145 app/templates/quotes/edit.html:343 +msgid "Price" +msgstr "" + +#: app/templates/invoices/edit.html:298 app/templates/invoices/edit.html:658 +msgid "e.g., Software License" +msgstr "" + +#: app/templates/invoices/edit.html:305 app/templates/invoices/edit.html:665 +#: app/templates/projects/add_good.html:31 +#: app/templates/projects/edit_good.html:31 +msgid "Product" +msgstr "" + +#: app/templates/invoices/edit.html:306 app/templates/invoices/edit.html:666 +#: app/templates/projects/add_good.html:32 +#: app/templates/projects/edit_good.html:32 +msgid "Service" +msgstr "" + +#: app/templates/invoices/edit.html:307 app/templates/invoices/edit.html:667 +#: app/templates/projects/add_good.html:33 +#: app/templates/projects/edit_good.html:33 +msgid "Material" +msgstr "" + +#: app/templates/invoices/edit.html:308 app/templates/invoices/edit.html:668 +#: app/templates/projects/add_good.html:34 +#: app/templates/projects/edit_good.html:34 +msgid "License" +msgstr "" + +#: app/templates/invoices/edit.html:322 app/templates/invoices/edit.html:682 +msgid "Remove good" +msgstr "" + +#: app/templates/invoices/edit.html:332 +msgid "Goods Subtotal" +msgstr "" + +#: app/templates/invoices/edit.html:350 +msgid "Live Preview" +msgstr "" + +#: app/templates/invoices/edit.html:370 +msgid "Payment" +msgstr "" + +#: app/templates/invoices/edit.html:395 +msgid "Goods" +msgstr "" + +#: app/templates/invoices/edit.html:431 +msgid "Generate from Time/Costs" +msgstr "" + +#: app/templates/invoices/edit.html:432 app/templates/invoices/view.html:40 +msgid "Record Payment" +msgstr "" + +#: app/templates/invoices/edit.html:433 app/templates/invoices/view.html:17 +#: app/templates/quotes/view.html:37 +#: app/templates/timer/time_entries_overview.html:48 +msgid "Export PDF" +msgstr "" + +#: app/templates/invoices/edit.html:434 +#: app/templates/timer/time_entries_overview.html:40 +msgid "Export CSV" +msgstr "" + +#: app/templates/invoices/edit.html:435 +msgid "Duplicate Invoice" +msgstr "" + +#: app/templates/invoices/edit.html:719 +msgid "Are you sure you want to unlink this expense from the invoice?" +msgstr "" + +#: app/templates/invoices/edit.html:721 +msgid "Unlink Expense" +msgstr "" + +#: app/templates/invoices/edit.html:722 +msgid "Unlink" +msgstr "" + +#: app/templates/invoices/edit.html:773 +msgid "Please add at least one item, expense, or extra good to the invoice" +msgstr "" + +#: app/templates/invoices/edit.html:960 app/templates/quotes/edit.html:529 +msgid "Are you sure you want to delete this image?" +msgstr "" + +#: app/templates/invoices/edit.html:976 app/templates/invoices/edit.html:981 +#: app/templates/quotes/edit.html:545 app/templates/quotes/edit.html:550 +msgid "Failed to delete image" +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 +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:287 +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 "" + +#: app/templates/invoices/generate_from_time.html:161 +#, python-format +msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +msgstr "" + +#: 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 "" + +#: app/templates/invoices/list.html:72 +msgid "Invoice number or client" +msgstr "" + +#: app/templates/invoices/list.html:105 +msgid "Delete Selected Invoices" +msgstr "" + +#: app/templates/invoices/list.html:125 +msgid "Change Status for Selected Invoices" +msgstr "" + +#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 +msgid "Select Status" +msgstr "" + +#: app/templates/invoices/list.html:135 +#: app/templates/timer/time_entries_overview.html:189 +#: app/templates/timer/view_timer.html:139 +msgid "Invoice Reference" +msgstr "" + +#: app/templates/invoices/list.html:136 +msgid "e.g., Payment confirmation number" +msgstr "" + +#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 +#: app/templates/invoices/view.html:367 app/templates/invoices/view.html:390 +msgid "Delete Invoice" +msgstr "" + +#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:375 +#: app/templates/kanban/columns.html:149 +msgid "Warning:" +msgstr "" + +#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:378 +msgid "Are you sure you want to delete invoice" +msgstr "" + +#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:380 +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:1033 +#: app/utils/pdf_generator_fallback.py:165 +msgid "INVOICE" +msgstr "" + +#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1035 +msgid "Invoice #" +msgstr "" + +#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1046 +msgid "Bill To" +msgstr "" + +#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1064 +#: app/utils/pdf_generator_fallback.py:238 +msgid "Quantity (Hours)" +msgstr "" + +#: app/templates/invoices/pdf_default.html:101 +#, python-format +msgid "Generated from %(num)d time entries" +msgstr "" + +#: app/templates/invoices/pdf_default.html:117 +#: app/utils/pdf_generator_fallback.py:285 +msgid "Expense" +msgstr "" + +#: app/templates/invoices/pdf_default.html:153 +#: app/templates/quotes/pdf_default.html:113 +#: app/utils/pdf_generator_fallback.py:303 +#: app/utils/pdf_generator_fallback.py:596 +msgid "Subtotal:" +msgstr "" + +#: app/templates/invoices/pdf_default.html:158 +#: app/templates/quotes/pdf_default.html:136 +#: app/utils/pdf_generator_fallback.py:310 +#, python-format +msgid "Tax (%(rate).2f%%):" +msgstr "" + +#: app/templates/invoices/pdf_default.html:163 +#: app/templates/quotes/pdf_default.html:141 +#: app/utils/pdf_generator_fallback.py:315 +msgid "Total Amount:" +msgstr "" + +#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1256 +#: app/utils/pdf_generator_fallback.py:375 +msgid "Notes:" +msgstr "" + +#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1266 +#: app/utils/pdf_generator_fallback.py:380 +msgid "Terms:" +msgstr "" + +#: app/templates/invoices/pdf_default.html:189 +#: app/templates/quotes/pdf_default.html:167 app/utils/pdf_generator.py:1287 +#: app/utils/pdf_generator_fallback.py:392 +msgid "Payment Information:" +msgstr "" + +#: app/templates/invoices/pdf_default.html:192 +#: app/templates/quotes/pdf_default.html:158 +#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1084 +#: app/utils/pdf_generator_fallback.py:397 +#: app/utils/pdf_generator_fallback.py:632 +msgid "Terms & Conditions:" +msgstr "" + +#: app/templates/invoices/view.html:32 +msgid "Download UBL" +msgstr "" + +#: app/templates/invoices/view.html:37 +msgid "Pay Online" +msgstr "" + +#: app/templates/invoices/view.html:79 +msgid "Payment Reference" +msgstr "" + +#: app/templates/invoices/view.html:124 +msgid "PEPPOL compliance: the following are missing" +msgstr "" + +#: app/templates/invoices/view.html:137 +msgid "Invoice Approval" +msgstr "" + +#: app/templates/invoices/view.html:138 +msgid "Request approval before sending this invoice to the client." +msgstr "" + +#: app/templates/invoices/view.html:262 app/templates/invoices/view.html:351 +msgid "Payment History" +msgstr "" + +#: app/templates/invoices/view.html:499 +msgid "Send Invoice via Email" +msgstr "" + +#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 +msgid "Edit Issue" +msgstr "" + +#: app/templates/issues/edit.html:62 app/templates/issues/new.html:56 +#: app/templates/main/dashboard.html:108 +#: 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/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:110 app/templates/tasks/edit.html:131 +#: app/templates/tasks/overdue.html:59 +msgid "Unassigned" +msgstr "" + +#: app/templates/issues/list.html:15 app/templates/issues/new.html:77 +msgid "Create Issue" +msgstr "" + +#: app/templates/issues/list.html:28 +msgid "Filter Issues" +msgstr "" + +#: app/templates/issues/list.html:33 +msgid "Search by title or description" +msgstr "" + +#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:173 +msgid "Apply Filters" +msgstr "" + +#: app/templates/issues/list.html:155 app/templates/main/search.html:101 +#: app/templates/project_templates/list.html:104 +#: app/utils/pdf_generator_fallback.py:645 +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 +msgid "of" +msgstr "" + +#: app/templates/issues/new.html:13 +msgid "Create New Issue" +msgstr "" + +#: app/templates/issues/view.html:16 +msgid "Are you sure you want to delete this issue?" +msgstr "" + +#: app/templates/issues/view.html:16 +msgid "Delete Issue" +msgstr "" + +#: app/templates/issues/view.html:38 app/templates/main/help.html:30 +#: app/templates/main/help.html:268 +msgid "Task Management" +msgstr "" + +#: app/templates/issues/view.html:49 +msgid "Link to existing task" +msgstr "" + +#: app/templates/issues/view.html:53 +msgid "Select a task" +msgstr "" + +#: app/templates/issues/view.html:59 +msgid "Link" +msgstr "" + +#: app/templates/issues/view.html:64 +msgid "Create new task from this issue" +msgstr "" + +#: app/templates/issues/view.html:154 +msgid "Submitted By" +msgstr "" + +#: app/templates/kanban/board.html:5 +msgid "Kanban" +msgstr "" + +#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 +msgid "Manage Columns" +msgstr "" + +#: app/templates/kanban/board.html:56 +msgid "Drag tasks between columns to update their status" +msgstr "" + +#: app/templates/kanban/board.html:61 +msgid "Kanban board" +msgstr "" + +#: app/templates/kanban/board.html:113 +msgid "moved to" +msgstr "" + +#: app/templates/kanban/board.html:147 +#: app/templates/projects/_kanban_tailwind.html:86 +msgid "No tasks in this column." +msgstr "" + +#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 +msgid "Manage Kanban Columns" +msgstr "" + +#: app/templates/kanban/columns.html:20 +msgid "Customize your kanban board columns and task states" +msgstr "" + +#: app/templates/kanban/columns.html:25 +msgid "Project:" +msgstr "" + +#: app/templates/kanban/columns.html:27 +msgid "Global Columns" +msgstr "" + +#: app/templates/kanban/columns.html:35 +msgid "Add Column" +msgstr "" + +#: app/templates/kanban/columns.html:44 +msgid "Kanban columns list" +msgstr "" + +#: app/templates/kanban/columns.html:48 +msgid "Key" +msgstr "" + +#: app/templates/kanban/columns.html:53 +msgid "Complete?" +msgstr "" + +#: app/templates/kanban/columns.html:62 +msgid "Drag to reorder" +msgstr "" + +#: app/templates/kanban/columns.html:93 +msgid "Edit column" +msgstr "" + +#: app/templates/kanban/columns.html:96 +msgid "Toggle active state" +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 "" + +#: 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 "" + +#: 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:68 +#: app/templates/kanban/edit_column.html:60 +#: app/templates/user/settings.html:122 +msgid "Dark" +msgstr "" + +#: app/templates/kanban/create_column.html:70 +#: app/templates/kanban/edit_column.html:62 +msgid "Bootstrap color class for styling" +msgstr "" + +#: 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:60 app/templates/tasks/create.html:82 +#: app/templates/tasks/edit.html:104 +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 "" + +#: app/templates/kiosk/base.html:112 +msgid "Show keyboard shortcuts" +msgstr "" + +#: app/templates/kiosk/base.html:127 +msgid "Logout from kiosk mode" +msgstr "" + +#: app/templates/kiosk/base.html:143 +msgid "Scan" +msgstr "" + +#: app/templates/kiosk/base.html:147 +msgid "Adjust Stock" +msgstr "" + +#: app/templates/kiosk/base.html:155 app/templates/main/dashboard.html:85 +#: app/templates/tasks/overdue.html:101 app/templates/timer/timer_page.html:7 +#: app/templates/timer/timer_page.html:12 +msgid "Timer" +msgstr "" + +#: app/templates/kiosk/dashboard.html:10 +msgid "Close keyboard shortcuts" +msgstr "" + +#: app/templates/kiosk/dashboard.html:43 +msgid "Scan Barcode or Enter SKU" +msgstr "" + +#: app/templates/kiosk/dashboard.html:45 +msgid "Use a barcode scanner or type the SKU manually" +msgstr "" + +#: app/templates/kiosk/dashboard.html:55 +msgid "Scan barcode or enter SKU..." +msgstr "" + +#: app/templates/kiosk/dashboard.html:58 +msgid "Barcode or SKU input" +msgstr "" + +#: app/templates/kiosk/dashboard.html:64 +msgid "Use Camera to Scan" +msgstr "" + +#: app/templates/kiosk/dashboard.html:65 +msgid "Open camera scanner" +msgstr "" + +#: app/templates/kiosk/dashboard.html:91 +msgid "Close camera scanner" +msgstr "" + +#: app/templates/kiosk/dashboard.html:93 +msgid "Close Camera" +msgstr "" + +#: app/templates/kiosk/dashboard.html:174 +msgid "Decrease quantity" +msgstr "" + +#: app/templates/kiosk/dashboard.html:183 +msgid "Adjustment quantity" +msgstr "" + +#: app/templates/kiosk/dashboard.html:185 +msgid "Increase quantity" +msgstr "" + +#: app/templates/kiosk/dashboard.html:198 +msgid "Kiosk adjustment" +msgstr "" + +#: app/templates/kiosk/dashboard.html:199 +msgid "Physical count" +msgstr "" + +#: app/templates/kiosk/dashboard.html:200 +msgid "Found" +msgstr "" + +#: app/templates/kiosk/dashboard.html:201 +msgid "Damaged" +msgstr "" + +#: app/templates/kiosk/dashboard.html:211 +msgid "Apply stock adjustment" +msgstr "" + +#: app/templates/kiosk/dashboard.html:213 +msgid "Apply Adjustment" +msgstr "" + +#: app/templates/kiosk/dashboard.html:218 +msgid "Undo last adjustment" +msgstr "" + +#: app/templates/kiosk/dashboard.html:220 +msgid "Undo Last Adjustment" +msgstr "" + +#: app/templates/kiosk/dashboard.html:271 +msgid "Transfer quantity" +msgstr "" + +#: app/templates/kiosk/dashboard.html:275 +msgid "Transfer stock" +msgstr "" + +#: app/templates/kiosk/dashboard.html:277 +msgid "Transfer Stock" +msgstr "" + +#: app/templates/kiosk/dashboard.html:295 +msgid "Stop timer" +msgstr "" + +#: app/templates/kiosk/dashboard.html:297 app/templates/main/dashboard.html:118 +#: app/templates/tasks/_kanban.html:51 app/templates/tasks/my_tasks.html:323 +#: app/templates/timer/timer_page.html:75 +msgid "Stop Timer" +msgstr "" + +#: app/templates/kiosk/dashboard.html:309 +msgid "Select project..." +msgstr "" + +#: app/templates/kiosk/dashboard.html:315 +msgid "No projects available" +msgstr "" + +#: app/templates/kiosk/dashboard.html:321 +msgid "No active projects found. Please create a project first." +msgstr "" + +#: app/templates/kiosk/dashboard.html:337 +#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:482 +#: app/templates/main/dashboard.html:523 +#: app/templates/timer/manual_entry.html:66 +#: app/templates/timer/manual_entry.html:249 +#: app/templates/timer/timer_page.html:145 +#: app/templates/timer/timer_page.html:245 +msgid "No task" +msgstr "" + +#: app/templates/kiosk/dashboard.html:343 +msgid "Tasks will load after selecting a project" +msgstr "" + +#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:490 +#: app/templates/main/dashboard.html:533 +msgid "What are you working on?" +msgstr "" + +#: app/templates/kiosk/dashboard.html:351 +msgid "Start timer" +msgstr "" + +#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:89 +#: app/templates/main/dashboard.html:496 app/templates/tasks/_kanban.html:60 +#: app/templates/tasks/edit.html:290 app/templates/tasks/my_tasks.html:328 +msgid "Start Timer" +msgstr "" + +#: app/templates/kiosk/dashboard.html:369 +msgid "Recent Items" +msgstr "" + +#: app/templates/kiosk/login.html:6 +msgid "Kiosk Login" +msgstr "" + +#: app/templates/kiosk/login.html:40 +msgid "Quick access for warehouse operations" +msgstr "" + +#: app/templates/kiosk/login.html:46 +msgid "Barcode scanning" +msgstr "" + +#: app/templates/kiosk/login.html:52 +msgid "Stock management" +msgstr "" + +#: app/templates/kiosk/login.html:58 +msgid "Time tracking" +msgstr "" + +#: app/templates/kiosk/login.html:68 +msgid "Sign in to Kiosk Mode" +msgstr "" + +#: app/templates/kiosk/login.html:69 +msgid "Select your username to continue" +msgstr "" + +#: app/templates/kiosk/login.html:72 +msgid "Toggle Theme" +msgstr "" + +#: app/templates/kiosk/login.html:98 +msgid "Select User" +msgstr "" + +#: app/templates/kiosk/login.html:126 +msgid "your-username" +msgstr "" + +#: app/templates/kiosk/login.html:159 +msgid "Standard Login" +msgstr "" + +#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 +#: app/templates/leads/list.html:55 app/templates/leads/view.html:65 +#: app/templates/main/dashboard.html:144 +#: app/templates/reports/user_report.html:84 +#: app/templates/timer/view_timer.html:169 +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:94 +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:125 +msgid "All Statuses" +msgstr "" + +#: app/templates/leads/list.html:36 +msgid "Website, referral..." +msgstr "" + +#: app/templates/leads/list.html:54 app/templates/leads/view.html:85 +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:16 +msgid "Convert to Client" +msgstr "" + +#: app/templates/leads/view.html:17 +msgid "Convert to Deal" +msgstr "" + +#: app/templates/leads/view.html:18 +msgid "Mark this lead as lost?" +msgstr "" + +#: app/templates/leads/view.html:20 +msgid "Mark Lost" +msgstr "" + +#: app/templates/leads/view.html:28 +msgid "Lead" +msgstr "" + +#: app/templates/leads/view.html:70 +msgid "No contact details yet" +msgstr "" + +#: app/templates/leads/view.html:76 +msgid "Lead Details" +msgstr "" + +#: app/templates/main/about.html:9 +msgid "Professional time tracking and project management" +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 "" + +#: app/templates/main/about.html:35 app/templates/main/help.html:32 +msgid "Invoicing" +msgstr "" + +#: app/templates/main/about.html:48 app/templates/main/help.html:104 +msgid "Smart Timers" +msgstr "" + +#: app/templates/main/about.html:50 +msgid "Real-time tracking with idle detection and live updates" +msgstr "" + +#: app/templates/main/about.html:55 app/templates/main/help.html:29 +#: app/templates/main/help.html:225 +msgid "Client Management" +msgstr "" + +#: app/templates/main/about.html:57 +msgid "Organize clients with contacts, rates, and project relations" +msgstr "" + +#: app/templates/main/about.html:62 +msgid "Task System" +msgstr "" + +#: app/templates/main/about.html:64 +msgid "Break down projects into tasks with progress tracking" +msgstr "" + +#: app/templates/main/about.html:69 +msgid "PDF Invoices" +msgstr "" + +#: app/templates/main/about.html:71 +msgid "Generate professional invoices from tracked time" +msgstr "" + +#: app/templates/main/about.html:78 app/templates/main/help.html:416 +msgid "Core Features" +msgstr "" + +#: app/templates/main/about.html:80 +msgid "Start/stop timers with project and task association" +msgstr "" + +#: app/templates/main/about.html:81 +msgid "Manual time entry with notes and tags" +msgstr "" + +#: app/templates/main/about.html:82 +msgid "Client and project organization" +msgstr "" + +#: app/templates/main/about.html:83 +msgid "Role-based access and user profiles" +msgstr "" + +#: app/templates/main/about.html:87 +msgid "Advanced Features" +msgstr "" + +#: app/templates/main/about.html:89 +msgid "Branded PDF invoicing with tax and payment tracking" +msgstr "" + +#: app/templates/main/about.html:90 +msgid "Visual analytics and detailed reporting" +msgstr "" + +#: app/templates/main/about.html:91 +msgid "REST API for integrations" +msgstr "" + +#: app/templates/main/about.html:92 +msgid "PWA capabilities and mobile-friendly UI" +msgstr "" + +#: app/templates/main/about.html:99 +msgid "Platform Support" +msgstr "" + +#: app/templates/main/about.html:102 +msgid "Web Application" +msgstr "" + +#: app/templates/main/about.html:104 +msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +msgstr "" + +#: app/templates/main/about.html:105 +msgid "Mobile responsive design" +msgstr "" + +#: app/templates/main/about.html:106 +msgid "Progressive Web App (PWA)" +msgstr "" + +#: app/templates/main/about.html:107 +msgid "Touch-friendly tablet interface" +msgstr "" + +#: app/templates/main/about.html:111 +msgid "Operating Systems" +msgstr "" + +#: app/templates/main/about.html:113 +msgid "Windows, macOS, Linux" +msgstr "" + +#: app/templates/main/about.html:114 +msgid "Android and iOS (browser)" +msgstr "" + +#: app/templates/main/about.html:115 +msgid "Raspberry Pi support" +msgstr "" + +#: app/templates/main/about.html:116 +msgid "Dockerized deployment" +msgstr "" + +#: app/templates/main/about.html:120 +msgid "Database Support" +msgstr "" + +#: app/templates/main/about.html:122 +msgid "PostgreSQL (recommended)" +msgstr "" + +#: app/templates/main/about.html:123 +msgid "SQLite (dev/test)" +msgstr "" + +#: app/templates/main/about.html:124 +msgid "Automatic migrations with Flask-Migrate" +msgstr "" + +#: app/templates/main/about.html:125 +msgid "Backup and restoration tools" +msgstr "" + +#: app/templates/main/about.html:133 +msgid "Technical Specifications" +msgstr "" + +#: app/templates/main/about.html:136 +msgid "Technology Stack" +msgstr "" + +#: app/templates/main/about.html:138 +msgid "Backend" +msgstr "" + +#: app/templates/main/about.html:139 +msgid "Frontend" +msgstr "" + +#: app/templates/main/about.html:141 +msgid "Deployment" +msgstr "" + +#: app/templates/main/about.html:145 +msgid "Key Capabilities" +msgstr "" + +#: app/templates/main/about.html:147 +msgid "Real-time" +msgstr "" + +#: app/templates/main/about.html:148 +msgid "i18n" +msgstr "" + +#: app/templates/main/about.html:149 +msgid "Security" +msgstr "" + +#: app/templates/main/about.html:158 +msgid "Open Source & Community" +msgstr "" + +#: app/templates/main/about.html:161 +msgid "Open Source Benefits" +msgstr "" + +#: app/templates/main/about.html:163 +msgid "Full source code available on GitHub" +msgstr "" + +#: app/templates/main/about.html:164 +msgid "Licensed under GPL v3.0" +msgstr "" + +#: app/templates/main/about.html:165 +msgid "Community-driven development" +msgstr "" + +#: app/templates/main/about.html:166 +msgid "Transparent issue tracking and bug reports" +msgstr "" + +#: app/templates/main/about.html:170 +msgid "Deployment Options" +msgstr "" + +#: app/templates/main/about.html:172 +msgid "Docker images (GHCR)" +msgstr "" + +#: app/templates/main/about.html:173 +msgid "Self-hosted deployment with full control" +msgstr "" + +#: app/templates/main/about.html:174 +msgid "Cloud-ready with Compose configs" +msgstr "" + +#: app/templates/main/about.html:180 +msgid "View on GitHub" +msgstr "" + +#: app/templates/main/about.html:198 app/templates/main/donate.html:17 +msgid "Support TimeTracker Development" +msgstr "" + +#: app/templates/main/about.html:201 +msgid "" +"TimeTracker is free and open-source. Your support helps fund server " +"costs, new features, security updates, and keeps the project alive. Every" +" contribution makes a difference!" +msgstr "" + +#: app/templates/main/about.html:208 app/templates/main/dashboard.html:455 +#: app/templates/main/donate.html:27 +msgid "Donate Now" +msgstr "" + +#: app/templates/main/about.html:219 +msgid "Getting Help & Resources" +msgstr "" + +#: app/templates/main/about.html:225 app/templates/main/help.html:741 +msgid "Documentation" +msgstr "" + +#: app/templates/main/about.html:226 +msgid "Step-by-step guides for all features." +msgstr "" + +#: app/templates/main/about.html:228 +msgid "View Help" +msgstr "" + +#: app/templates/main/about.html:235 +msgid "System Information" +msgstr "" + +#: app/templates/main/about.html:236 +msgid "Status, versions, and configuration details." +msgstr "" + +#: app/templates/main/about.html:242 +msgid "Admin access required" +msgstr "" + +#: app/templates/main/about.html:249 app/templates/main/help.html:751 +msgid "Community Support" +msgstr "" + +#: app/templates/main/about.html:250 +msgid "Report issues, request features, contribute." +msgstr "" + +#: app/templates/main/about.html:252 +msgid "GitHub Issues" +msgstr "" + +#: app/templates/main/dashboard.html:15 +msgid "Here's a quick overview of your work." +msgstr "" + +#: app/templates/main/dashboard.html:29 +msgid "Today's Hours" +msgstr "" + +#: app/templates/main/dashboard.html:45 +msgid "Week's Hours" +msgstr "" + +#: app/templates/main/dashboard.html:61 +msgid "Month's Hours" +msgstr "" + +#: app/templates/main/dashboard.html:99 +msgid "Running" +msgstr "" + +#: app/templates/main/dashboard.html:112 +msgid "Started at" +msgstr "" + +#: app/templates/main/dashboard.html:124 +msgid "No active timer." +msgstr "" + +#: app/templates/main/dashboard.html:125 +msgid "Click \"Start Timer\" to begin tracking your time." +msgstr "" + +#: app/templates/main/dashboard.html:137 app/templates/reports/index.html:202 +msgid "Recent Entries" +msgstr "" + +#: app/templates/main/dashboard.html:206 app/templates/main/search.html:66 +#: app/templates/tasks/view.html:80 +msgid "Resume - Start a new timer with same properties" +msgstr "" + +#: app/templates/main/dashboard.html:209 app/templates/main/search.html:70 +#: app/templates/tasks/view.html:83 +msgid "Edit entry" +msgstr "" + +#: app/templates/main/dashboard.html:212 +msgid "Duplicate entry" +msgstr "" + +#: app/templates/main/dashboard.html:219 app/templates/main/search.html:77 +#: app/templates/tasks/view.html:90 +msgid "Delete entry" +msgstr "" + +#: app/templates/main/dashboard.html:233 +msgid "No recent entries found." +msgstr "" + +#: app/templates/main/dashboard.html:234 +msgid "Start tracking time to see entries here." +msgstr "" + +#: app/templates/main/dashboard.html:256 +msgid "Weekly Goal" +msgstr "" + +#: app/templates/main/dashboard.html:278 +msgid "Days Left" +msgstr "" + +#: app/templates/main/dashboard.html:285 +msgid "Need" +msgstr "" + +#: app/templates/main/dashboard.html:285 +msgid "to reach goal" +msgstr "" + +#: app/templates/main/dashboard.html:296 +msgid "No Weekly Goal" +msgstr "" + +#: app/templates/main/dashboard.html:299 +msgid "Set a weekly time goal to track your progress" +msgstr "" + +#: app/templates/main/dashboard.html:303 +#: app/templates/weekly_goals/create.html:129 +#: app/templates/weekly_goals/index.html:146 +msgid "Create Goal" +msgstr "" + +#: app/templates/main/dashboard.html:316 +msgid "Top Projects (30 days)" +msgstr "" + +#: app/templates/main/dashboard.html:354 +msgid "No activity in the last 30 days." +msgstr "" + +#: app/templates/main/dashboard.html:355 +msgid "Start tracking time on projects to see them here." +msgstr "" + +#: app/templates/main/dashboard.html:371 +msgid "Live" +msgstr "" + +#: app/templates/main/dashboard.html:403 +msgid "Activity will appear here as you use the system." +msgstr "" + +#: app/templates/main/dashboard.html:417 app/templates/main/donate.html:2 +msgid "Support TimeTracker" +msgstr "" + +#: app/templates/main/dashboard.html:422 +msgid "" +"Your support helps fund server costs, new features, and keeps TimeTracker" +" free for everyone." +msgstr "" + +#: app/templates/main/dashboard.html:430 +#, python-format +msgid "You've tracked %(count)s time entries" +msgstr "" + +#: app/templates/main/dashboard.html:436 +#, python-format +msgid "You've logged %(hours)s hours" +msgstr "" + +#: app/templates/main/dashboard.html:483 +msgid "Create new task..." +msgstr "" + +#: app/templates/main/dashboard.html:484 +msgid "Loading tasks..." +msgstr "" + +#: app/templates/main/dashboard.html:485 +msgid "Enter new task name:" +msgstr "" + +#: app/templates/main/dashboard.html:486 +msgid "Failed to create task: " +msgstr "" + +#: app/templates/main/dashboard.html:488 +msgid "Please complete creating the task or select an existing task" +msgstr "" + +#: app/templates/main/dashboard.html:516 +#: app/templates/timer/manual_entry.html:59 +#: app/templates/timer/timer_page.html:135 +msgid "Select either a project or a client" +msgstr "" + +#: app/templates/main/dashboard.html:521 +#: app/templates/timer/manual_entry.html:64 +msgid "Task (optional)" +msgstr "" + +#: app/templates/main/dashboard.html:527 +msgid "" +"Select a project first to load tasks, or choose \"Create new task...\" to" +" add one" +msgstr "" + +#: app/templates/main/dashboard.html:531 +msgid "Notes (optional)" +msgstr "" + +#: app/templates/main/dashboard.html:539 +#: app/templates/timer/timer_page.html:159 +msgid "Or use a template" +msgstr "" + +#: app/templates/main/dashboard.html:561 +msgid "View all templates" +msgstr "" + +#: app/templates/main/dashboard.html:568 app/templates/main/search.html:34 +#: app/templates/projects/_kanban_tailwind.html:78 +#: app/templates/projects/time_entries_overview.html:68 +#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:17 +#: app/templates/timer/time_entries_export_pdf.html:14 +msgid "Start" +msgstr "" + +#: app/templates/main/dashboard.html:576 +msgid "Enter a name for the new task." +msgstr "" + +#: app/templates/main/dashboard.html:577 +#: 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 "" + +#: app/templates/main/dashboard.html:585 +msgid "Create task" +msgstr "" + +#: app/templates/main/dashboard.html:669 +msgid "Task name is required." +msgstr "" + +#: app/templates/main/dashboard.html:1201 +#: app/templates/timer/manual_entry.html:812 +msgid "" +"No valid image files selected. Please select PNG, JPG, GIF, or WebP " +"images." +msgstr "" + +#: app/templates/main/dashboard.html:1213 +#: app/templates/timer/manual_entry.html:824 +msgid "Uploading" +msgstr "" + +#: app/templates/main/dashboard.html:1213 +#: app/templates/main/dashboard.html:1260 +#: app/templates/timer/manual_entry.html:824 +#: app/templates/timer/manual_entry.html:871 +msgid "images" +msgstr "" + +#: app/templates/main/dashboard.html:1214 +#: app/templates/timer/manual_entry.html:825 +msgid "Uploading image" +msgstr "" + +#: app/templates/main/dashboard.html:1260 +#: app/templates/timer/manual_entry.html:871 +msgid "Successfully uploaded" +msgstr "" + +#: app/templates/main/dashboard.html:1271 +#: app/templates/timer/manual_entry.html:882 +msgid "image(s) failed to upload" +msgstr "" + +#: app/templates/main/dashboard.html:1280 +#: app/templates/timer/manual_entry.html:891 +msgid "Failed to upload images. Please try again." +msgstr "" + +#: app/templates/main/dashboard.html:1292 +#: app/templates/timer/manual_entry.html:903 +msgid "Failed to upload images. Please check your connection and try again." +msgstr "" + +#: app/templates/main/donate.html:19 +msgid "Your support helps keep TimeTracker free and continuously improving" +msgstr "" + +#: app/templates/main/donate.html:38 +msgid "Why Your Support Matters" +msgstr "" + +#: app/templates/main/donate.html:42 +msgid "" +"TimeTracker is a free, open-source project built with passion and " +"dedication. Your donations directly support:" +msgstr "" + +#: app/templates/main/donate.html:49 +msgid "Server Infrastructure" +msgstr "" + +#: app/templates/main/donate.html:51 +msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +msgstr "" + +#: app/templates/main/donate.html:59 +msgid "Feature Development" +msgstr "" + +#: app/templates/main/donate.html:61 +msgid "New features, improvements, and bug fixes based on your feedback" +msgstr "" + +#: app/templates/main/donate.html:69 +msgid "Security & Maintenance" +msgstr "" + +#: app/templates/main/donate.html:71 +msgid "" +"Regular security updates, dependency maintenance, and performance " +"optimization" +msgstr "" + +#: app/templates/main/donate.html:79 +msgid "Internationalization" +msgstr "" + +#: app/templates/main/donate.html:81 +msgid "" +"Translation support, localization, and making TimeTracker accessible " +"worldwide" +msgstr "" + +#: app/templates/main/donate.html:94 +msgid "Your TimeTracker Journey" +msgstr "" + +#: app/templates/main/donate.html:101 +msgid "Days using TimeTracker" +msgstr "" + +#: app/templates/main/donate.html:110 +msgid "Time entries tracked" +msgstr "" + +#: app/templates/main/donate.html:125 +msgid "Thank you for being part of the TimeTracker community!" +msgstr "" + +#: app/templates/main/donate.html:134 +msgid "How to Support" +msgstr "" + +#: app/templates/main/donate.html:137 +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/donate.html:147 +msgid "Support on Buy Me a Coffee" +msgstr "" + +#: app/templates/main/donate.html:153 +msgid "" +"You'll be redirected to Buy Me a Coffee where you can choose your " +"contribution amount" +msgstr "" + +#: app/templates/main/donate.html:161 +msgid "The Impact of Your Support" +msgstr "" + +#: app/templates/main/donate.html:166 +msgid "Enables faster development cycles and quicker feature releases" +msgstr "" + +#: app/templates/main/donate.html:170 +msgid "Supports better documentation and user guides" +msgstr "" + +#: app/templates/main/donate.html:174 +msgid "Helps maintain high-quality code and security standards" +msgstr "" + +#: app/templates/main/donate.html:178 +msgid "Keeps TimeTracker free and accessible for everyone" +msgstr "" + +#: app/templates/main/donate.html:187 +msgid "Other Ways to Help" +msgstr "" + +#: app/templates/main/donate.html:196 +msgid "Contribute on GitHub" +msgstr "" + +#: app/templates/main/donate.html:198 +msgid "Report bugs, suggest features, or submit code" +msgstr "" + +#: app/templates/main/donate.html:207 +msgid "Help Others" +msgstr "" + +#: app/templates/main/donate.html:209 +msgid "Share your knowledge in the community" +msgstr "" + +#: app/templates/main/help.html:9 +msgid "Complete documentation and user guide" +msgstr "" + +#: app/templates/main/help.html:20 +msgid "Quick Navigation" +msgstr "" + +#: app/templates/main/help.html:23 +msgid "Filter sections..." +msgstr "" + +#: app/templates/main/help.html:26 +msgid "Quick Start" +msgstr "" + +#: app/templates/main/help.html:34 app/templates/main/help.html:460 +msgid "Reports & Analytics" +msgstr "" + +#: app/templates/main/help.html:35 app/templates/main/help.html:510 +msgid "Productivity Features" +msgstr "" + +#: app/templates/main/help.html:37 +msgid "Admin Features" +msgstr "" + +#: app/templates/main/help.html:39 app/templates/main/help.html:642 +msgid "Mobile Usage" +msgstr "" + +#: app/templates/main/help.html:40 +msgid "Troubleshooting" +msgstr "" + +#: app/templates/main/help.html:49 +msgid "TimeTracker Help Center" +msgstr "" + +#: app/templates/main/help.html:50 +msgid "Everything you need to know to get the most out of TimeTracker" +msgstr "" + +#: app/templates/main/help.html:54 +msgid "Start Tracking Time" +msgstr "" + +#: app/templates/main/help.html:57 +msgid "View Projects" +msgstr "" + +#: app/templates/main/help.html:60 +msgid "Generate Reports" +msgstr "" + +#: app/templates/main/help.html:72 +msgid "Quick Start Guide" +msgstr "" + +#: app/templates/main/help.html:75 +msgid "For New Users" +msgstr "" + +#: app/templates/main/help.html:77 +msgid "Log in with your username (no password required)" +msgstr "" + +#: app/templates/main/help.html:78 +msgid "Explore the dashboard to see your overview" +msgstr "" + +#: app/templates/main/help.html:79 +msgid "Start your first timer on an existing project" +msgstr "" + +#: app/templates/main/help.html:80 +msgid "View your time entries in reports" +msgstr "" + +#: app/templates/main/help.html:84 +msgid "For Administrators" +msgstr "" + +#: app/templates/main/help.html:86 +msgid "Set up clients in the Client Management section" +msgstr "" + +#: app/templates/main/help.html:87 +msgid "Create projects and assign them to clients" +msgstr "" + +#: app/templates/main/help.html:88 +msgid "Configure system settings (timezone, currency, etc.)" +msgstr "" + +#: app/templates/main/help.html:89 +msgid "Manage users and permissions" +msgstr "" + +#: app/templates/main/help.html:95 app/templates/main/help.html:359 +#: app/templates/main/help.html:504 +msgid "Pro Tip:" +msgstr "" + +#: app/templates/main/help.html:95 +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:105 +msgid "Real-time tracking with automatic idle detection and WebSocket updates" +msgstr "" + +#: app/templates/main/help.html:108 +msgid "Manual Entry" +msgstr "" + +#: app/templates/main/help.html:109 +msgid "Log time manually with custom start and end times" +msgstr "" + +#: app/templates/main/help.html:114 +msgid "Starting a Timer" +msgstr "" + +#: app/templates/main/help.html:116 +msgid "Navigate to the Timer page or dashboard" +msgstr "" + +#: app/templates/main/help.html:117 +msgid "Select a project from the dropdown" +msgstr "" + +#: app/templates/main/help.html:118 +msgid "Optionally select a task for more detailed tracking" +msgstr "" + +#: app/templates/main/help.html:119 +msgid "Add notes about what you're working on (optional)" +msgstr "" + +#: app/templates/main/help.html:120 +msgid "Add tags separated by commas (optional)" +msgstr "" + +#: app/templates/main/help.html:121 +msgid "Click \"Start Timer\"" +msgstr "" + +#: app/templates/main/help.html:125 +msgid "Timer Features" +msgstr "" + +#: app/templates/main/help.html:127 +msgid "Real-time duration display" +msgstr "" + +#: app/templates/main/help.html:128 +msgid "Continues running if browser closes" +msgstr "" + +#: app/templates/main/help.html:129 +msgid "Automatic idle detection (configurable)" +msgstr "" + +#: app/templates/main/help.html:130 +msgid "One active timer per user (configurable)" +msgstr "" + +#: app/templates/main/help.html:131 +msgid "WebSocket live updates" +msgstr "" + +#: app/templates/main/help.html:136 +msgid "Manual Time Entry" +msgstr "" + +#: app/templates/main/help.html:137 +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:140 +msgid "Required Information" +msgstr "" + +#: app/templates/main/help.html:142 +msgid "Project selection" +msgstr "" + +#: app/templates/main/help.html:143 +msgid "Start date and time" +msgstr "" + +#: app/templates/main/help.html:144 +msgid "End date and time" +msgstr "" + +#: app/templates/main/help.html:148 +msgid "Optional Information" +msgstr "" + +#: app/templates/main/help.html:150 +msgid "Task assignment" +msgstr "" + +#: app/templates/main/help.html:151 +msgid "Description/notes" +msgstr "" + +#: app/templates/main/help.html:152 +msgid "Tags for categorization" +msgstr "" + +#: app/templates/main/help.html:153 +msgid "Billable status override" +msgstr "" + +#: app/templates/main/help.html:159 +msgid "Advanced Time Entry Features" +msgstr "" + +#: app/templates/main/help.html:162 +msgid "Bulk Entry" +msgstr "" + +#: app/templates/main/help.html:163 +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:166 +msgid "Templates" +msgstr "" + +#: app/templates/main/help.html:167 +msgid "" +"Save frequently used time entries as templates for quick reuse. Saves " +"project, task, and notes." +msgstr "" + +#: app/templates/main/help.html:171 +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:182 +msgid "Project Information" +msgstr "" + +#: app/templates/main/help.html:184 +msgid "Descriptive project name" +msgstr "" + +#: app/templates/main/help.html:185 +msgid "Associated client organization" +msgstr "" + +#: app/templates/main/help.html:186 +msgid "Project details and scope" +msgstr "" + +#: app/templates/main/help.html:187 +msgid "Active, completed, or archived" +msgstr "" + +#: app/templates/main/help.html:191 +msgid "Billing Information" +msgstr "" + +#: app/templates/main/help.html:193 +msgid "Whether time should be tracked for billing" +msgstr "" + +#: app/templates/main/help.html:194 +msgid "Rate for billable time calculations" +msgstr "" + +#: app/templates/main/help.html:195 app/templates/projects/create.html:78 +#: app/templates/projects/edit.html:72 +msgid "Billing Reference" +msgstr "" + +#: app/templates/main/help.html:195 +msgid "PO number or billing code" +msgstr "" + +#: app/templates/main/help.html:202 +msgid "Project Operations" +msgstr "" + +#: app/templates/main/help.html:204 +msgid "Create new projects with client relationships" +msgstr "" + +#: app/templates/main/help.html:205 +msgid "Edit existing projects to update details" +msgstr "" + +#: app/templates/main/help.html:206 +msgid "Archive projects to hide from timers (preserves data)" +msgstr "" + +#: app/templates/main/help.html:207 +msgid "Delete projects (removes all associated time entries)" +msgstr "" + +#: app/templates/main/help.html:211 +msgid "Best Practices" +msgstr "" + +#: app/templates/main/help.html:213 +msgid "Use descriptive project names" +msgstr "" + +#: app/templates/main/help.html:214 +msgid "Set accurate hourly rates for billing" +msgstr "" + +#: app/templates/main/help.html:215 +msgid "Archive instead of delete when possible" +msgstr "" + +#: app/templates/main/help.html:216 +msgid "Use billing references for external tracking" +msgstr "" + +#: app/templates/main/help.html:226 +msgid "" +"The client management system helps organize your work by client " +"organizations, preventing errors and streamlining project creation." +msgstr "" + +#: app/templates/main/help.html:229 +msgid "Client Information" +msgstr "" + +#: app/templates/main/help.html:231 +msgid "Organization Name" +msgstr "" + +#: app/templates/main/help.html:231 +msgid "Company or client name" +msgstr "" + +#: app/templates/main/help.html:232 +msgid "Primary contact details" +msgstr "" + +#: app/templates/main/help.html:233 +msgid "Email & Phone" +msgstr "" + +#: app/templates/main/help.html:233 +msgid "Contact information" +msgstr "" + +#: app/templates/main/help.html:234 +msgid "Business address" +msgstr "" + +#: app/templates/main/help.html:238 +msgid "Benefits" +msgstr "" + +#: app/templates/main/help.html:240 +msgid "Dropdown selection prevents typos" +msgstr "" + +#: app/templates/main/help.html:241 +msgid "Default rates auto-populate projects" +msgstr "" + +#: app/templates/main/help.html:242 +msgid "Consistent client naming" +msgstr "" + +#: app/templates/main/help.html:243 +msgid "Easier project organization" +msgstr "" + +#: app/templates/main/help.html:250 +msgid "Project Count" +msgstr "" + +#: app/templates/main/help.html:251 +msgid "Total and active projects" +msgstr "" + +#: app/templates/main/help.html:256 +msgid "Total hours worked" +msgstr "" + +#: app/templates/main/help.html:260 +msgid "Cost Estimation" +msgstr "" + +#: app/templates/main/help.html:261 +msgid "Estimated billing amounts" +msgstr "" + +#: app/templates/main/help.html:269 +msgid "" +"Break down projects into manageable tasks with detailed tracking and " +"progress monitoring." +msgstr "" + +#: app/templates/main/help.html:272 +msgid "Task Properties" +msgstr "" + +#: app/templates/main/help.html:274 +msgid "Name & Description" +msgstr "" + +#: app/templates/main/help.html:274 +msgid "Clear task identification" +msgstr "" + +#: app/templates/main/help.html:275 +msgid "Priority Levels" +msgstr "" + +#: app/templates/main/help.html:275 +msgid "Low, Medium, High, Urgent" +msgstr "" + +#: app/templates/main/help.html:276 +msgid "Due Dates" +msgstr "" + +#: app/templates/main/help.html:276 +msgid "Deadline tracking" +msgstr "" + +#: app/templates/main/help.html:277 +msgid "Assignment" +msgstr "" + +#: app/templates/main/help.html:277 +msgid "Task ownership" +msgstr "" + +#: app/templates/main/help.html:281 +msgid "Status Tracking" +msgstr "" + +#: app/templates/main/help.html:283 +msgid "To Do - Not started" +msgstr "" + +#: app/templates/main/help.html:284 +msgid "In Progress - Currently working" +msgstr "" + +#: app/templates/main/help.html:285 +msgid "Review - Ready for review" +msgstr "" + +#: app/templates/main/help.html:286 +msgid "Done - Completed" +msgstr "" + +#: app/templates/main/help.html:287 +msgid "Cancelled - Not needed" +msgstr "" + +#: app/templates/main/help.html:293 +msgid "Time Tracking Features" +msgstr "" + +#: app/templates/main/help.html:295 +msgid "Start timers directly from tasks" +msgstr "" + +#: app/templates/main/help.html:296 +msgid "Link time entries to specific tasks" +msgstr "" + +#: app/templates/main/help.html:297 +msgid "Track estimated vs actual hours" +msgstr "" + +#: app/templates/main/help.html:298 +msgid "Monitor task progress automatically" +msgstr "" + +#: app/templates/main/help.html:302 +msgid "Task Views" +msgstr "" + +#: app/templates/main/help.html:304 +msgid "My Tasks - Your assigned tasks" +msgstr "" + +#: app/templates/main/help.html:305 +msgid "All Tasks - Complete task list" +msgstr "" + +#: app/templates/main/help.html:306 +msgid "Overdue Tasks - Past due items" +msgstr "" + +#: app/templates/main/help.html:307 +msgid "Project Tasks - Tasks within projects" +msgstr "" + +#: app/templates/main/help.html:313 +msgid "Collaboration Features" +msgstr "" + +#: app/templates/main/help.html:315 +msgid "Task Comments - Threaded discussions on tasks" +msgstr "" + +#: app/templates/main/help.html:316 +msgid "Markdown Support - Rich formatting in descriptions" +msgstr "" + +#: app/templates/main/help.html:317 +msgid "User Mentions - Tag team members (if enabled)" +msgstr "" + +#: app/templates/main/help.html:318 +msgid "File Attachments - Attach files to tasks (if enabled)" +msgstr "" + +#: app/templates/main/help.html:322 +msgid "Markdown Formatting" +msgstr "" + +#: app/templates/main/help.html:323 +msgid "Task and project descriptions support Markdown:" +msgstr "" + +#: app/templates/main/help.html:325 +msgid "**Bold**, *Italic*, ~~Strikethrough~~" +msgstr "" + +#: app/templates/main/help.html:326 +msgid "# Headings, - Lists, [Links](url)" +msgstr "" + +#: app/templates/main/help.html:327 +msgid "```code blocks```, tables, images" +msgstr "" + +#: app/templates/main/help.html:336 +msgid "" +"Visualize your workflow with a drag-and-drop Kanban board for intuitive " +"task management." +msgstr "" + +#: app/templates/main/help.html:339 +msgid "Board Features" +msgstr "" + +#: app/templates/main/help.html:341 +msgid "Customizable columns matching task statuses" +msgstr "" + +#: app/templates/main/help.html:342 +msgid "Drag-and-drop tasks between columns" +msgstr "" + +#: app/templates/main/help.html:343 +msgid "Filter by project, user, or priority" +msgstr "" + +#: app/templates/main/help.html:344 +msgid "Quick search across all tasks" +msgstr "" + +#: app/templates/main/help.html:348 +msgid "Using the Kanban Board" +msgstr "" + +#: app/templates/main/help.html:350 +msgid "Access from the Tasks menu or project page" +msgstr "" + +#: app/templates/main/help.html:351 +msgid "Drag tasks to different columns to change status" +msgstr "" + +#: app/templates/main/help.html:352 +msgid "Click on a task card to view/edit details" +msgstr "" + +#: app/templates/main/help.html:353 +msgid "Use filters to focus on specific work" +msgstr "" + +#: app/templates/main/help.html:359 +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:365 +msgid "Expense Tracking" +msgstr "" + +#: app/templates/main/help.html:366 +msgid "" +"Track business expenses, manage receipts, and handle reimbursements " +"efficiently." +msgstr "" + +#: app/templates/main/help.html:369 +msgid "Expense Features" +msgstr "" + +#: app/templates/main/help.html:371 +msgid "Categorize expenses (travel, meals, supplies, etc.)" +msgstr "" + +#: app/templates/main/help.html:372 +msgid "Attach receipt images and documents" +msgstr "" + +#: app/templates/main/help.html:373 +msgid "Track amounts, tax, and payment methods" +msgstr "" + +#: app/templates/main/help.html:374 +msgid "Approval workflow for expense requests" +msgstr "" + +#: app/templates/main/help.html:378 +msgid "Billing & Reimbursement" +msgstr "" + +#: app/templates/main/help.html:380 +msgid "Mark expenses as billable to clients" +msgstr "" + +#: app/templates/main/help.html:381 +msgid "Include expenses in client invoices" +msgstr "" + +#: app/templates/main/help.html:382 +msgid "Track reimbursement status" +msgstr "" + +#: app/templates/main/help.html:383 +msgid "Link expenses to specific projects" +msgstr "" + +#: app/templates/main/help.html:390 +msgid "Record Expense" +msgstr "" + +#: app/templates/main/help.html:391 +msgid "Enter details and upload receipt" +msgstr "" + +#: app/templates/main/help.html:395 +msgid "Submit for Approval" +msgstr "" + +#: app/templates/main/help.html:396 +msgid "Admin reviews and approves" +msgstr "" + +#: app/templates/main/help.html:400 +msgid "Invoice/Reimburse" +msgstr "" + +#: app/templates/main/help.html:401 +msgid "Add to invoice or reimburse" +msgstr "" + +#: app/templates/main/help.html:405 app/templates/main/help.html:452 +msgid "Track Payment" +msgstr "" + +#: app/templates/main/help.html:406 +msgid "Monitor reimbursement status" +msgstr "" + +#: app/templates/main/help.html:413 +msgid "Professional Invoicing" +msgstr "" + +#: app/templates/main/help.html:418 +msgid "Professional PDF generation" +msgstr "" + +#: app/templates/main/help.html:419 +msgid "Company branding and logos" +msgstr "" + +#: app/templates/main/help.html:420 +msgid "Automatic invoice numbering" +msgstr "" + +#: app/templates/main/help.html:421 +msgid "Tax calculations" +msgstr "" + +#: app/templates/main/help.html:425 +msgid "Time Integration" +msgstr "" + +#: app/templates/main/help.html:427 +msgid "Generate from time entries" +msgstr "" + +#: app/templates/main/help.html:428 +msgid "Smart grouping by task/project" +msgstr "" + +#: app/templates/main/help.html:429 +msgid "Prevent double-billing" +msgstr "" + +#: app/templates/main/help.html:430 +msgid "Use project hourly rates" +msgstr "" + +#: app/templates/main/help.html:438 +msgid "Set up client and project details" +msgstr "" + +#: app/templates/main/help.html:442 +msgid "Add Items" +msgstr "" + +#: app/templates/main/help.html:443 +msgid "Generate from time or add manually" +msgstr "" + +#: app/templates/main/help.html:447 +msgid "Review & Send" +msgstr "" + +#: app/templates/main/help.html:448 +msgid "Export PDF and update status" +msgstr "" + +#: app/templates/main/help.html:453 +msgid "Monitor status and payments" +msgstr "" + +#: app/templates/main/help.html:463 +msgid "Standard Reports" +msgstr "" + +#: app/templates/main/help.html:465 +msgid "Project Report - Time breakdown by project" +msgstr "" + +#: app/templates/main/help.html:466 +msgid "User Report - Individual performance metrics" +msgstr "" + +#: app/templates/main/help.html:467 +msgid "Summary Report - Key metrics and trends" +msgstr "" + +#: app/templates/main/help.html:468 +msgid "Time Entry Report - Detailed time logs" +msgstr "" + +#: app/templates/main/help.html:472 +msgid "Export Options" +msgstr "" + +#: app/templates/main/help.html:474 +msgid "CSV Export - For external analysis" +msgstr "" + +#: app/templates/main/help.html:475 +msgid "Configurable delimiters" +msgstr "" + +#: app/templates/main/help.html:476 +msgid "Custom date ranges" +msgstr "" + +#: app/templates/main/help.html:477 +msgid "Filtered data export" +msgstr "" + +#: app/templates/main/help.html:483 +msgid "Filter Options" +msgstr "" + +#: app/templates/main/help.html:485 +msgid "Date Range - Custom start and end dates" +msgstr "" + +#: app/templates/main/help.html:486 +msgid "Project - Filter by specific projects" +msgstr "" + +#: app/templates/main/help.html:487 +msgid "User - Filter by team members" +msgstr "" + +#: app/templates/main/help.html:488 +msgid "Client - Filter by client organization" +msgstr "" + +#: app/templates/main/help.html:489 +msgid "Saved Filters - Save frequently used filters" +msgstr "" + +#: app/templates/main/help.html:493 +msgid "Visual Analytics" +msgstr "" + +#: app/templates/main/help.html:495 +msgid "Interactive bar charts" +msgstr "" + +#: app/templates/main/help.html:496 +msgid "Time distribution pie charts" +msgstr "" + +#: app/templates/main/help.html:497 +msgid "Trend analysis over time" +msgstr "" + +#: app/templates/main/help.html:498 +msgid "Mobile-optimized charts" +msgstr "" + +#: app/templates/main/help.html:504 +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:511 +msgid "" +"Boost your efficiency with keyboard shortcuts, command palette, and " +"automation features." +msgstr "" + +#: app/templates/main/help.html:514 +msgid "Command Palette" +msgstr "" + +#: app/templates/main/help.html:515 +msgid "Access any feature instantly without leaving the keyboard" +msgstr "" + +#: app/templates/main/help.html:518 +msgid "Opening the Command Palette" +msgstr "" + +#: app/templates/main/help.html:520 +msgid "Press the question mark key" +msgstr "" + +#: app/templates/main/help.html:521 +msgid "Quick search" +msgstr "" + +#: app/templates/main/help.html:528 +msgid "Go to Projects" +msgstr "" + +#: app/templates/main/help.html:529 +msgid "Go to Tasks" +msgstr "" + +#: app/templates/main/help.html:530 +msgid "New Time Entry" +msgstr "" + +#: app/templates/main/help.html:538 +msgid "Keyboard Shortcuts" +msgstr "" + +#: app/templates/main/help.html:539 +msgid "" +"Navigate faster with keyboard-driven commands. Press Shift+? to see all " +"shortcuts." +msgstr "" + +#: app/templates/main/help.html:542 +msgid "Global Search" +msgstr "" + +#: app/templates/main/help.html:543 +msgid "" +"Quickly find projects, tasks, clients, and time entries from anywhere in " +"the app." +msgstr "" + +#: app/templates/main/help.html:546 +msgid "Email Notifications" +msgstr "" + +#: app/templates/main/help.html:547 +msgid "" +"Get notified about task assignments, overdue invoices, and weekly " +"summaries via email." +msgstr "" + +#: app/templates/main/help.html:555 +msgid "Administrator Features" +msgstr "" + +#: app/templates/main/help.html:560 +msgid "Create new users with flexible authentication" +msgstr "" + +#: app/templates/main/help.html:561 +msgid "Assign custom roles with specific permissions" +msgstr "" + +#: app/templates/main/help.html:562 +msgid "Activate/deactivate user accounts" +msgstr "" + +#: app/templates/main/help.html:563 +msgid "View user statistics and activity" +msgstr "" + +#: app/templates/main/help.html:564 +msgid "Generate API tokens for users" +msgstr "" + +#: app/templates/main/help.html:568 +msgid "Access Control" +msgstr "" + +#: app/templates/main/help.html:570 +msgid "Granular role-based permissions system" +msgstr "" + +#: app/templates/main/help.html:571 +msgid "Custom roles with fine-grained access" +msgstr "" + +#: app/templates/main/help.html:572 +msgid "User data access controls" +msgstr "" + +#: app/templates/main/help.html:573 +msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +msgstr "" + +#: app/templates/main/help.html:574 +msgid "API token management for integrations" +msgstr "" + +#: app/templates/main/help.html:580 +msgid "Authentication Methods" +msgstr "" + +#: app/templates/main/help.html:582 +msgid "Username-only (simple internal use)" +msgstr "" + +#: app/templates/main/help.html:583 +msgid "OIDC/SSO (enterprise authentication)" +msgstr "" + +#: app/templates/main/help.html:584 +msgid "Both methods simultaneously" +msgstr "" + +#: app/templates/main/help.html:585 +msgid "Automatic role assignment via groups" +msgstr "" + +#: app/templates/main/help.html:589 +msgid "Role & Permission Management" +msgstr "" + +#: app/templates/main/help.html:591 +msgid "Create custom roles beyond Admin/User" +msgstr "" + +#: app/templates/main/help.html:592 +msgid "Set granular permissions per feature" +msgstr "" + +#: app/templates/main/help.html:593 +msgid "Assign users to multiple roles" +msgstr "" + +#: app/templates/main/help.html:594 +msgid "View and manage all permissions" +msgstr "" + +#: app/templates/main/help.html:600 +msgid "General Settings" +msgstr "" + +#: app/templates/main/help.html:602 +msgid "Timezone and locale settings" +msgstr "" + +#: app/templates/main/help.html:603 +msgid "Currency configuration" +msgstr "" + +#: app/templates/main/help.html:604 +msgid "Time rounding rules" +msgstr "" + +#: app/templates/main/help.html:605 +msgid "Self-registration settings" +msgstr "" + +#: app/templates/main/help.html:609 +msgid "Timer Settings" +msgstr "" + +#: app/templates/main/help.html:611 +msgid "Idle timeout configuration" +msgstr "" + +#: app/templates/main/help.html:612 +msgid "Single active timer mode" +msgstr "" + +#: app/templates/main/help.html:613 +msgid "Timer display preferences" +msgstr "" + +#: app/templates/main/help.html:614 +msgid "Notification settings" +msgstr "" + +#: app/templates/main/help.html:620 +msgid "Database Management" +msgstr "" + +#: app/templates/main/help.html:622 +msgid "Create manual database backups" +msgstr "" + +#: app/templates/main/help.html:623 +msgid "View database migration status" +msgstr "" + +#: app/templates/main/help.html:624 +msgid "Monitor database performance" +msgstr "" + +#: app/templates/main/help.html:625 +msgid "Clean up old data and logs" +msgstr "" + +#: app/templates/main/help.html:629 +msgid "System Monitoring" +msgstr "" + +#: app/templates/main/help.html:631 +msgid "View system information and health" +msgstr "" + +#: app/templates/main/help.html:632 +msgid "Monitor application performance" +msgstr "" + +#: app/templates/main/help.html:633 +msgid "Review system logs and errors" +msgstr "" + +#: app/templates/main/help.html:645 +msgid "Mobile-Friendly Features" +msgstr "" + +#: app/templates/main/help.html:647 +msgid "Optimized for phones and tablets" +msgstr "" + +#: app/templates/main/help.html:648 +msgid "Touch-friendly interface" +msgstr "" + +#: app/templates/main/help.html:649 +msgid "Adaptive layouts for all screen sizes" +msgstr "" + +#: app/templates/main/help.html:650 +msgid "High contrast for outdoor visibility" +msgstr "" + +#: app/templates/main/help.html:654 +msgid "Mobile Navigation" +msgstr "" + +#: app/templates/main/help.html:656 +msgid "Bottom tab bar for easy access" +msgstr "" + +#: app/templates/main/help.html:657 +msgid "Quick access to dashboard" +msgstr "" + +#: app/templates/main/help.html:658 +msgid "One-tap time logging" +msgstr "" + +#: app/templates/main/help.html:659 +msgid "Mobile-optimized reports" +msgstr "" + +#: app/templates/main/help.html:665 +msgid "Installation" +msgstr "" + +#: app/templates/main/help.html:667 +msgid "Open TimeTracker in your mobile browser" +msgstr "" + +#: app/templates/main/help.html:668 +msgid "Look for \"Add to Home Screen\" option" +msgstr "" + +#: app/templates/main/help.html:669 +msgid "Follow browser-specific installation prompts" +msgstr "" + +#: app/templates/main/help.html:670 +msgid "Launch from your home screen like a native app" +msgstr "" + +#: app/templates/main/help.html:674 +msgid "PWA Benefits" +msgstr "" + +#: app/templates/main/help.html:676 +msgid "Offline capability for basic functions" +msgstr "" + +#: app/templates/main/help.html:677 +msgid "Faster loading times" +msgstr "" + +#: app/templates/main/help.html:678 +msgid "Native app-like experience" +msgstr "" + +#: app/templates/main/help.html:679 +msgid "Push notifications (where supported)" +msgstr "" + +#: app/templates/main/help.html:687 +msgid "Troubleshooting & FAQ" +msgstr "" + +#: app/templates/main/help.html:690 +msgid "What happens if I forget to stop my timer?" +msgstr "" + +#: app/templates/main/help.html:691 +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 "" + +#: app/templates/main/help.html:694 +msgid "Can I edit time entries after they're created?" +msgstr "" + +#: app/templates/main/help.html:695 +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 "" + +#: app/templates/main/help.html:698 +msgid "How do I track time for multiple projects?" +msgstr "" + +#: app/templates/main/help.html:699 +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 "" + +#: app/templates/main/help.html:702 +msgid "How do I export my time data?" +msgstr "" + +#: app/templates/main/help.html:703 +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 "" + +#: app/templates/main/help.html:706 +msgid "What's the difference between billable and non-billable time?" +msgstr "" + +#: app/templates/main/help.html:707 +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 "" + +#: app/templates/main/help.html:710 +msgid "How do I create an invoice from my time entries?" +msgstr "" + +#: app/templates/main/help.html:711 +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 "" + +#: app/templates/main/help.html:714 +msgid "Can I use TimeTracker on my mobile device?" +msgstr "" + +#: app/templates/main/help.html:715 +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 "" + +#: app/templates/main/help.html:718 +msgid "How do I use the command palette and keyboard shortcuts?" +msgstr "" + +#: app/templates/main/help.html:719 +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 "" + +#: app/templates/main/help.html:722 +msgid "How do I create bulk time entries for multiple days?" +msgstr "" + +#: app/templates/main/help.html:723 +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 "" + +#: app/templates/main/help.html:726 +msgid "What are time entry templates and how do I use them?" +msgstr "" + +#: app/templates/main/help.html:727 +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 "" + +#: app/templates/main/help.html:730 +msgid "How do I track expenses and add them to invoices?" +msgstr "" + +#: app/templates/main/help.html:731 +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 "" + +#: app/templates/main/help.html:734 +msgid "Can I use Markdown in descriptions?" +msgstr "" + +#: app/templates/main/help.html:735 +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 "" + +#: app/templates/main/help.html:738 +msgid "Where can I get additional help?" +msgstr "" + +#: app/templates/main/help.html:742 +msgid "" +"This help page covers most common questions and features. For complete " +"documentation:" +msgstr "" + +#: app/templates/main/help.html:744 +msgid "Complete Documentation Index" +msgstr "" + +#: app/templates/main/help.html:745 +msgid "Getting Started Guide" +msgstr "" + +#: app/templates/main/help.html:746 +msgid "Product Overview & Features" +msgstr "" + +#: app/templates/main/help.html:747 +msgid "Changelog" +msgstr "" + +#: app/templates/main/help.html:752 +msgid "Report issues and request features on" +msgstr "" + +#: app/templates/main/help.html:757 +msgid "" +"As an admin, you can access additional system information and diagnostics" +" in the" +msgstr "" + +#: app/templates/main/help.html:757 +msgid "section." +msgstr "" + +#: app/templates/main/help.html:759 +msgid "Admin documentation:" +msgstr "" + +#: app/templates/main/help.html:759 +msgid "Administrator Guide" +msgstr "" + +#: app/templates/main/help.html:769 +msgid "Still Need Help?" +msgstr "" + +#: app/templates/main/help.html:770 +msgid "Can't find what you're looking for? Here are additional resources:" +msgstr "" + +#: app/templates/main/help.html:775 +msgid "Complete Documentation" +msgstr "" + +#: app/templates/main/help.html:779 +msgid "Documentation Index" +msgstr "" + +#: app/templates/main/help.html:782 +msgid "Getting Started" +msgstr "" + +#: app/templates/main/help.html:785 +msgid "Feature Guides" +msgstr "" + +#: app/templates/main/help.html:789 +msgid "Admin Documentation" +msgstr "" + +#: app/templates/main/help.html:803 +msgid "GitHub Repository" +msgstr "" + +#: app/templates/main/help.html:806 +msgid "Report Issue" +msgstr "" + +#: app/templates/main/search.html:11 +msgid "Search Results" +msgstr "" + +#: app/templates/main/search.html:14 +msgid "Search notes or tags" +msgstr "" + +#: app/templates/main/search.html:25 +msgid "Results" +msgstr "" + +#: app/templates/main/search.html:35 +#: app/templates/projects/time_entries_overview.html:69 +#: app/templates/timer/time_entries_export_pdf.html:15 +msgid "End" +msgstr "" + +#: app/templates/main/search.html:75 +msgid "" +"Are you sure you want to delete this time entry? This action cannot be " +"undone." +msgstr "" + +#: app/templates/main/search.html:115 +msgid "No results found" +msgstr "" + +#: app/templates/main/search.html:116 +msgid "Try a different query or check your spelling." +msgstr "" + +#: app/templates/mileage/form.html:56 +msgid "e.g., Client meeting, Site visit" +msgstr "" + +#: app/templates/mileage/form.html:65 +msgid "Additional details..." +msgstr "" + +#: app/templates/mileage/form.html:84 +msgid "e.g., Office, Home" +msgstr "" + +#: app/templates/mileage/form.html:94 +msgid "e.g., Client site, Airport" +msgstr "" + +#: app/templates/mileage/form.html:125 +msgid "e.g., 12345" +msgstr "" + +#: app/templates/mileage/form.html:135 +msgid "e.g., 12400" +msgstr "" + +#: app/templates/mileage/form.html:185 +msgid "e.g., VW Golf" +msgstr "" + +#: app/templates/mileage/form.html:195 +msgid "e.g., ABC-123" +msgstr "" + +#: app/templates/mileage/list.html:59 +msgid "Filter Mileage" +msgstr "" + +#: app/templates/mileage/list.html:69 +msgid "Purpose, location..." +msgstr "" + +#: app/templates/mileage/view.html:247 +msgid "Optional approval notes..." +msgstr "" + +#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 +msgid "Rejection reason (required)" +msgstr "" + +#: app/templates/payment_gateways/create.html:3 +#: app/templates/payment_gateways/create.html:8 +msgid "Configure Payment Gateway" +msgstr "" + +#: app/templates/payment_gateways/create.html:9 +msgid "Set up payment processing for online invoice payments" +msgstr "" + +#: app/templates/payment_gateways/create.html:11 +msgid "Back to Gateways" +msgstr "" + +#: app/templates/payment_gateways/create.html:20 +msgid "Gateway Name" +msgstr "" + +#: app/templates/payment_gateways/create.html:21 +msgid "e.g., Stripe Production" +msgstr "" + +#: app/templates/payment_gateways/create.html:22 +msgid "A descriptive name for this gateway configuration" +msgstr "" + +#: app/templates/payment_gateways/create.html:26 +#: app/templates/payment_gateways/list.html:26 +msgid "Provider" +msgstr "" + +#: app/templates/payment_gateways/create.html:28 +msgid "Select provider..." +msgstr "" + +#: app/templates/payment_gateways/create.html:36 +msgid "Stripe Configuration" +msgstr "" + +#: app/templates/payment_gateways/create.html:41 +msgid "Your Stripe secret key" +msgstr "" + +#: app/templates/payment_gateways/create.html:44 +msgid "Publishable Key" +msgstr "" + +#: app/templates/payment_gateways/create.html:46 +msgid "Your Stripe publishable key" +msgstr "" + +#: app/templates/payment_gateways/create.html:51 +msgid "Webhook signing secret for verifying webhook events" +msgstr "" + +#: app/templates/payment_gateways/create.html:57 +msgid "PayPal Configuration" +msgstr "" + +#: app/templates/payment_gateways/create.html:73 +#: app/templates/payment_gateways/list.html:50 +msgid "Test Mode" +msgstr "" + +#: app/templates/payment_gateways/create.html:75 +msgid "Enable test mode for development and testing" +msgstr "" + +#: app/templates/payment_gateways/create.html:80 +msgid "Save Gateway" +msgstr "" + +#: app/templates/payment_gateways/list.html:28 +msgid "Mode" +msgstr "" + +#: app/templates/payment_gateways/list.html:52 +msgid "Production" +msgstr "" + +#: app/templates/payment_gateways/list.html:70 +msgid "Add Gateway" +msgstr "" + +#: app/templates/payment_gateways/list.html:74 +msgid "No Payment Gateways" +msgstr "" + +#: app/templates/payment_gateways/list.html:75 +msgid "Configure a payment gateway to enable online invoice payments." +msgstr "" + +#: app/templates/payment_gateways/pay.html:15 +msgid "Amount Due" +msgstr "" + +#: app/templates/payment_gateways/pay.html:31 +msgid "You will be redirected to a secure payment page to complete your payment." +msgstr "" + +#: app/templates/payment_gateways/pay.html:37 +msgid "Continue to Payment" +msgstr "" + +#: app/templates/payment_gateways/pay.html:46 +msgid "Payment gateway not yet supported. Please contact support." +msgstr "" + +#: app/templates/payments/create.html:7 +msgid "Record New Payment" +msgstr "" + +#: app/templates/payments/list.html:24 +msgid "Total Payments" +msgstr "" + +#: app/templates/payments/list.html:37 +msgid "Gateway Fees" +msgstr "" + +#: app/templates/payments/list.html:45 +msgid "Filter Payments" +msgstr "" + +#: app/templates/payments/list.html:222 +msgid "Delete Selected Payments" +msgstr "" + +#: app/templates/payments/list.html:242 +msgid "Change Status for Selected Payments" +msgstr "" + +#: app/templates/payments/view.html:21 +msgid "Payment Details" +msgstr "" + +#: app/templates/payments/view.html:151 +msgid "Related Invoice" +msgstr "" + +#: app/templates/per_diem/form.html:35 +msgid "e.g., Business trip to Berlin" +msgstr "" + +#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 +msgid "e.g., DE, US, GB" +msgstr "" + +#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 +msgid "e.g., Berlin" +msgstr "" + +#: app/templates/per_diem/list.html:47 +msgid "Filter Claims" +msgstr "" + +#: app/templates/per_diem/list.html:122 +msgid "Delete Selected Claims" +msgstr "" + +#: app/templates/per_diem/list.html:142 +msgid "Change Status for Selected Claims" +msgstr "" + +#: app/templates/per_diem/rate_form.html:162 +msgid "Additional notes about this rate..." +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 "" + +#: app/templates/per_diem/rates_list.html:111 +msgid "Delete Per Diem Rate" +msgstr "" + +#: app/templates/project_templates/create.html:3 +#: app/templates/project_templates/create.html:8 +msgid "Create Project Template" +msgstr "" + +#: app/templates/project_templates/create.html:9 +msgid "Create a reusable template for quick project setup" +msgstr "" + +#: app/templates/project_templates/create.html:11 +msgid "Back to Templates" +msgstr "" + +#: app/templates/project_templates/create.html:21 +msgid "e.g., Web Development Project" +msgstr "" + +#: app/templates/project_templates/create.html:26 +msgid "Describe what this template is used for..." +msgstr "" + +#: app/templates/project_templates/create.html:31 +msgid "e.g., Web Development, Marketing" +msgstr "" + +#: app/templates/project_templates/create.html:36 +msgid "Comma-separated tags" +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 "" + +#: 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:100 app/templates/tasks/edit.html:121 +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 "" + +#: 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 "" + +#: 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:28 app/templates/tasks/edit.html:46 +msgid "Task Name" +msgstr "" + +#: app/templates/project_templates/create.html:94 +#: app/templates/project_templates/edit.html:124 +msgid "Add Task" +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 "" + +#: app/templates/project_templates/create_project.html:4 +#: app/templates/project_templates/create_project.html:9 +msgid "Create Project from Template" +msgstr "" + +#: app/templates/project_templates/create_project.html:10 +msgid "Using template:" +msgstr "" + +#: app/templates/project_templates/create_project.html:12 +#: app/templates/project_templates/edit.html:11 +msgid "Back to Template" +msgstr "" + +#: app/templates/project_templates/create_project.html:28 +msgid "Leave empty to use template name" +msgstr "" + +#: app/templates/project_templates/create_project.html:33 +msgid "Override Settings (Optional)" +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:10 app/templates/projects/view.html:77 +msgid "Project Code" +msgstr "" + +#: app/templates/project_templates/create_project.html:49 +msgid "The following tasks will be created:" +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 "" + +#: app/templates/project_templates/edit.html:94 +#: app/templates/project_templates/edit.html:162 +msgid "Remove Task" +msgstr "" + +#: app/templates/project_templates/list.html:33 +msgid "Show Public Templates" +msgstr "" + +#: app/templates/project_templates/list.html:74 +msgid "uses" +msgstr "" + +#: app/templates/project_templates/list.html:78 +#: app/templates/project_templates/view.html:11 +#: app/templates/reports/builder.html:183 +msgid "Public" +msgstr "" + +#: app/templates/project_templates/list.html:124 +msgid "No Templates Found" +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 "" + +#: app/templates/project_templates/view.html:3 +msgid "Project Template" +msgstr "" + +#: app/templates/project_templates/view.html:91 +msgid "Template Info" +msgstr "" + +#: app/templates/project_templates/view.html:98 +msgid "Usage Count" +msgstr "" + +#: app/templates/project_templates/view.html:103 +msgid "Last Used" +msgstr "" + +#: app/templates/projects/_kanban_tailwind.html:4 +msgid "Kanban board columns" +msgstr "" + +#: app/templates/projects/_kanban_tailwind.html:16 +msgid "Add task to this column" +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:152 +#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 +#: app/templates/projects/list.html:234 app/templates/projects/view.html:33 +msgid "Edit Project" +msgstr "" + +#: app/templates/projects/add_good.html:6 +msgid "Add Extra Good" +msgstr "" + +#: app/templates/projects/add_good.html:7 +msgid "Add a product or service to" +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 "" + +#: app/templates/projects/archive.html:24 +msgid "What happens when you archive a project?" +msgstr "" + +#: app/templates/projects/archive.html:26 +msgid "The project will be hidden from active project lists" +msgstr "" + +#: app/templates/projects/archive.html:27 +msgid "No new time entries can be added to this project" +msgstr "" + +#: app/templates/projects/archive.html:28 +msgid "Existing data and time entries are preserved" +msgstr "" + +#: app/templates/projects/archive.html:29 +msgid "You can unarchive the project later if needed" +msgstr "" + +#: app/templates/projects/archive.html:41 +msgid "Reason for Archiving" +msgstr "" + +#: app/templates/projects/archive.html:48 +msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +msgstr "" + +#: app/templates/projects/archive.html:51 +msgid "Adding a reason helps with project organization and future reference." +msgstr "" + +#: app/templates/projects/archive.html:58 +msgid "Quick Select" +msgstr "" + +#: app/templates/projects/archive.html:61 +msgid "Project completed successfully" +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 "" + +#: 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 "" + +#: app/templates/projects/create.html:56 +msgid "" +"Provide detailed information about the project, objectives, and " +"deliverables..." +msgstr "" + +#: app/templates/projects/create.html:59 +msgid "" +"Optional: Add context, objectives, or specific requirements for the " +"project" +msgstr "" + +#: app/templates/projects/create.html:68 +msgid "Enable billing for this project" +msgstr "" + +#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 +msgid "Leave empty for non-billable projects" +msgstr "" + +#: app/templates/projects/create.html:79 +msgid "PO number, contract reference, etc." +msgstr "" + +#: app/templates/projects/create.html:80 +msgid "Optional: Add a reference number or identifier for billing purposes" +msgstr "" + +#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 +msgid "e.g. 10000.00" +msgstr "" + +#: app/templates/projects/create.html:87 +msgid "Optional: Set a total project budget to monitor spend" +msgstr "" + +#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 +msgid "Alert Threshold (%)" +msgstr "" + +#: app/templates/projects/create.html:92 +msgid "Notify when consumed budget exceeds this threshold" +msgstr "" + +#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 +#: app/templates/tasks/create.html:120 app/templates/tasks/edit.html:141 +msgid "Gantt color" +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 "" + +#: 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 "" + +#: app/templates/projects/create.html:146 +msgid "Project Creation Tips" +msgstr "" + +#: app/templates/projects/create.html:148 app/templates/tasks/create.html:147 +msgid "Clear Naming" +msgstr "" + +#: app/templates/projects/create.html:148 +msgid "Use descriptive names that clearly indicate the project's purpose" +msgstr "" + +#: app/templates/projects/create.html:149 +msgid "Billing Setup" +msgstr "" + +#: app/templates/projects/create.html:149 +msgid "Set appropriate hourly rates based on project complexity and client budget" +msgstr "" + +#: app/templates/projects/create.html:150 +msgid "Detailed Description" +msgstr "" + +#: app/templates/projects/create.html:150 +msgid "Include project objectives, deliverables, and key requirements" +msgstr "" + +#: app/templates/projects/create.html:151 +msgid "Client Selection" +msgstr "" + +#: app/templates/projects/create.html:151 +msgid "Choose the right client to ensure proper project organization" +msgstr "" + +#: app/templates/projects/create.html:386 +#: app/templates/projects/create.html:507 app/templates/reports/index.html:494 +msgid "Creating..." +msgstr "" + +#: app/templates/projects/create.html:526 +msgid "Could not create client. Please try again." +msgstr "" + +#: app/templates/projects/create.html:536 +#: app/templates/projects/create.html:561 +msgid "Client created" +msgstr "" + +#: app/templates/projects/create.html:565 +msgid "Network error while creating client" +msgstr "" + +#: app/templates/projects/dashboard.html:19 +msgid "Project Dashboard & Analytics" +msgstr "" + +#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:18 +msgid "Entries Overview" +msgstr "" + +#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:29 +msgid "Budget Analysis" +msgstr "" + +#: app/templates/projects/dashboard.html:37 +msgid "All Time" +msgstr "" + +#: app/templates/projects/dashboard.html:38 +msgid "Last 7 Days" +msgstr "" + +#: app/templates/projects/dashboard.html:39 +msgid "Last 30 Days" +msgstr "" + +#: app/templates/projects/dashboard.html:40 +msgid "Last 3 Months" +msgstr "" + +#: app/templates/projects/dashboard.html:41 +msgid "Last Year" +msgstr "" + +#: app/templates/projects/dashboard.html:57 +msgid "estimated" +msgstr "" + +#: app/templates/projects/dashboard.html:71 +#: app/templates/projects/view.html:220 +msgid "Budget Used" +msgstr "" + +#: app/templates/projects/dashboard.html:75 +msgid "of budget" +msgstr "" + +#: app/templates/projects/dashboard.html:89 +msgid "Tasks Complete" +msgstr "" + +#: app/templates/projects/dashboard.html:92 +msgid "completion" +msgstr "" + +#: app/templates/projects/dashboard.html:105 +msgid "Team Members" +msgstr "" + +#: app/templates/projects/dashboard.html:107 +msgid "contributing" +msgstr "" + +#: app/templates/projects/dashboard.html:122 +msgid "Budget vs. Actual" +msgstr "" + +#: app/templates/projects/dashboard.html:144 +msgid "No budget set for this project" +msgstr "" + +#: app/templates/projects/dashboard.html:154 +msgid "Task Status Distribution" +msgstr "" + +#: app/templates/projects/dashboard.html:172 +msgid "No tasks created yet" +msgstr "" + +#: app/templates/projects/dashboard.html:185 +msgid "Team Member Contributions" +msgstr "" + +#: app/templates/projects/dashboard.html:209 +msgid "No time entries recorded yet" +msgstr "" + +#: app/templates/projects/dashboard.html:219 +msgid "Time Tracking Timeline" +msgstr "" + +#: app/templates/projects/dashboard.html:229 +msgid "Select a time period to view timeline" +msgstr "" + +#: app/templates/projects/dashboard.html:277 +msgid "Team Member Details" +msgstr "" + +#: app/templates/projects/dashboard.html:294 +msgid "tasks" +msgstr "" + +#: app/templates/projects/dashboard.html:312 +msgid "No team members have logged time yet" +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_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/timer/time_entries_overview.html:106 +#: app/templates/timer/view_timer.html:118 +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 "" + +#: app/templates/projects/time_entries_overview.html:24 +msgid "Days" +msgstr "" + +#: app/templates/projects/time_entries_overview.html:48 +msgid "No time entries found for this project in the selected period." +msgstr "" + +#: app/templates/projects/view.html:37 +msgid "Mark project as Inactive?" +msgstr "" + +#: app/templates/projects/view.html:37 +msgid "Change Project Status" +msgstr "" + +#: app/templates/projects/view.html:42 +msgid "Activate project?" +msgstr "" + +#: app/templates/projects/view.html:42 +msgid "Activate Project" +msgstr "" + +#: app/templates/projects/view.html:50 +msgid "Archive" +msgstr "" + +#: app/templates/projects/view.html:52 +msgid "Unarchive project?" +msgstr "" + +#: app/templates/projects/view.html:52 +msgid "Unarchive Project" +msgstr "" + +#: app/templates/projects/view.html:52 app/templates/projects/view.html:54 +msgid "Unarchive" +msgstr "" + +#: app/templates/projects/view.html:61 +msgid "Delete Project" +msgstr "" + +#: app/templates/projects/view.html:106 +msgid "Archive Information" +msgstr "" + +#: app/templates/projects/view.html:109 +msgid "Archived on:" +msgstr "" + +#: app/templates/projects/view.html:114 +msgid "Archived by:" +msgstr "" + +#: app/templates/projects/view.html:120 +msgid "Reason:" +msgstr "" + +#: app/templates/projects/view.html:181 +msgid "Quick Links" +msgstr "" + +#: app/templates/projects/view.html:203 +msgid "Budget Overview" +msgstr "" + +#: app/templates/projects/view.html:252 +msgid "Over" +msgstr "" + +#: app/templates/projects/view.html:275 +msgid "View Full Budget Analysis" +msgstr "" + +#: app/templates/projects/view.html:323 +msgid "e.g., Contract, Specification, etc." +msgstr "" + +#: app/templates/projects/view.html:395 +msgid "Tasks for this project" +msgstr "" + +#: app/templates/projects/view.html:402 +msgid "Due" +msgstr "" + +#: app/templates/projects/view.html:448 +msgid "No tasks for this project." +msgstr "" + +#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 +#: app/templates/quotes/view.html:24 +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/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:198 +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:85 app/templates/quotes/edit.html:165 +msgid "Financial Details" +msgstr "" + +#: app/templates/quotes/create.html:115 app/templates/quotes/edit.html:195 +msgid "Select payment terms" +msgstr "" + +#: app/templates/quotes/create.html:116 app/templates/quotes/edit.html:196 +msgid "Due on Receipt" +msgstr "" + +#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:204 +msgid "Or enter custom payment terms" +msgstr "" + +#: app/templates/quotes/create.html:126 app/templates/quotes/edit.html:206 +msgid "Use custom terms" +msgstr "" + +#: app/templates/quotes/create.html:134 app/templates/quotes/edit.html:214 +#: app/templates/quotes/pdf_default.html:119 app/templates/quotes/view.html:126 +msgid "Discount" +msgstr "" + +#: app/templates/quotes/create.html:138 app/templates/quotes/edit.html:218 +msgid "Discount Type" +msgstr "" + +#: app/templates/quotes/create.html:140 app/templates/quotes/edit.html:220 +msgid "No Discount" +msgstr "" + +#: app/templates/quotes/create.html:141 app/templates/quotes/edit.html:221 +msgid "Percentage (%)" +msgstr "" + +#: app/templates/quotes/create.html:142 app/templates/quotes/edit.html:222 +msgid "Fixed Amount" +msgstr "" + +#: app/templates/quotes/create.html:146 app/templates/quotes/edit.html:226 +msgid "Discount Amount" +msgstr "" + +#: app/templates/quotes/create.html:147 app/templates/quotes/edit.html:227 +msgid "0.00" +msgstr "" + +#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:232 +msgid "Coupon Code" +msgstr "" + +#: app/templates/quotes/create.html:153 app/templates/quotes/edit.html:233 +msgid "Optional coupon code" +msgstr "" + +#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:236 +msgid "Discount Reason" +msgstr "" + +#: app/templates/quotes/create.html:157 app/templates/quotes/edit.html:237 +msgid "Reason for discount" +msgstr "" + +#: app/templates/quotes/create.html:165 +msgid "Approval Workflow" +msgstr "" + +#: app/templates/quotes/create.html:170 +msgid "Requires approval before sending" +msgstr "" + +#: app/templates/quotes/create.html:178 app/templates/quotes/edit.html:245 +msgid "Additional Information" +msgstr "" + +#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:249 +msgid "Internal notes (not visible to client)" +msgstr "" + +#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:250 +msgid "These notes are only visible to your team" +msgstr "" + +#: app/templates/quotes/create.html:186 app/templates/quotes/edit.html:253 +#: app/templates/quotes/view.html:162 +msgid "Terms and Conditions" +msgstr "" + +#: app/templates/quotes/create.html:187 app/templates/quotes/edit.html:254 +msgid "Terms and conditions" +msgstr "" + +#: app/templates/quotes/create.html:188 app/templates/quotes/edit.html:255 +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:265 +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:511 +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:130 +msgid "Subtotal After Discount:" +msgstr "" + +#: app/templates/quotes/pdf_default.html:152 +#: app/utils/pdf_generator_fallback.py:627 +msgid "Description:" +msgstr "" + +#: app/templates/quotes/view.html:140 +msgid "Subtotal After Discount" +msgstr "" + +#: app/templates/quotes/view.html:189 +msgid "Approval not yet requested" +msgstr "" + +#: app/templates/quotes/view.html:197 +msgid "Pending approval" +msgstr "" + +#: app/templates/quotes/view.html:208 app/templates/quotes/view.html:215 +msgid "on" +msgstr "" + +#: app/templates/quotes/view.html:213 +msgid "Rejected by" +msgstr "" + +#: app/templates/quotes/view.html:224 +msgid "Request Approval Again" +msgstr "" + +#: app/templates/quotes/view.html:234 +msgid "Send Quote" +msgstr "" + +#: app/templates/quotes/view.html:243 +msgid "Are you sure you want to reject this quote?" +msgstr "" + +#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:569 +msgid "Delete Quote" +msgstr "" + +#: app/templates/quotes/view.html:287 +msgid "Internal comment (not visible to client)" +msgstr "" + +#: app/templates/quotes/view.html:311 app/templates/quotes/view.html:338 +#: app/templates/quotes/view.html:371 +msgid "Internal" +msgstr "" + +#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:345 +msgid "Are you sure you want to delete this comment?" +msgstr "" + +#: app/templates/quotes/view.html:367 +msgid "Write a reply..." +msgstr "" + +#: app/templates/quotes/view.html:386 +msgid "No comments yet. Start the conversation by adding the first comment." +msgstr "" + +#: app/templates/quotes/view.html:415 +msgid "Sent At" +msgstr "" + +#: app/templates/quotes/view.html:421 +msgid "Accepted At" +msgstr "" + +#: app/templates/quotes/view.html:436 +msgid "Send Quote via Email" +msgstr "" + +#: app/templates/quotes/view.html:444 +msgid "Recipient Email" +msgstr "" + +#: app/templates/quotes/view.html:452 +#, python-format +msgid "Quote %(quote_number)s" +msgstr "" + +#: app/templates/quotes/view.html:456 +msgid "Custom Message (Optional)" +msgstr "" + +#: app/templates/quotes/view.html:459 +msgid "Add a custom message to the email..." +msgstr "" + +#: app/templates/quotes/view.html:463 +msgid "Attach PDF" +msgstr "" + +#: app/templates/quotes/view.html:533 +msgid "Approve Quote" +msgstr "" + +#: app/templates/quotes/view.html:537 +msgid "Notes (Optional)" +msgstr "" + +#: app/templates/quotes/view.html:538 +msgid "Add approval notes..." +msgstr "" + +#: app/templates/quotes/view.html:551 +msgid "Reject Quote Approval" +msgstr "" + +#: app/templates/quotes/view.html:556 +msgid "Please provide a reason for rejection..." +msgstr "" + +#: app/templates/quotes/view.html:570 +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_tasks/form.html:58 +#: app/templates/recurring_tasks/list.html:32 +#: app/templates/reports/index.html:450 +#: app/templates/reports/schedule_form.html:44 +#: app/templates/reports/scheduled.html:28 +msgid "Frequency" +msgstr "" + +#: app/templates/recurring_invoices/list.html:27 +#: app/templates/recurring_tasks/list.html:33 +#: app/templates/reports/scheduled.html:29 +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 "" + +#: 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 "" + +#: 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 "" + +#: app/templates/recurring_tasks/form.html:9 +#: app/templates/recurring_tasks/form.html:14 +msgid "Edit Recurring Task" +msgstr "" + +#: app/templates/recurring_tasks/form.html:15 +msgid "Set up automated task creation" +msgstr "" + +#: app/templates/recurring_tasks/form.html:29 +msgid "Task Name Template" +msgstr "" + +#: app/templates/recurring_tasks/form.html:30 +msgid "e.g., Weekly Team Meeting" +msgstr "" + +#: app/templates/recurring_tasks/form.html:31 +msgid "This will be used as the base name for created tasks" +msgstr "" + +#: app/templates/recurring_tasks/form.html:55 +msgid "Schedule" +msgstr "" + +#: app/templates/recurring_tasks/form.html:62 +#: app/templates/reports/index.html:454 +#: app/templates/reports/schedule_form.html:49 +msgid "Monthly" +msgstr "" + +#: app/templates/recurring_tasks/form.html:63 +msgid "Yearly" +msgstr "" + +#: app/templates/recurring_tasks/form.html:68 +msgid "Interval" +msgstr "" + +#: app/templates/recurring_tasks/form.html:70 +msgid "Repeat every N periods (e.g., every 2 weeks)" +msgstr "" + +#: app/templates/recurring_tasks/form.html:74 +msgid "Next Run Date" +msgstr "" + +#: app/templates/recurring_tasks/form.html:81 +msgid "Optional: Stop creating tasks after this date" +msgstr "" + +#: app/templates/recurring_tasks/form.html:88 +msgid "Task Settings" +msgstr "" + +#: app/templates/recurring_tasks/form.html:106 +#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:129 +msgid "Assign To" +msgstr "" + +#: app/templates/recurring_tasks/form.html:120 +msgid "Auto-assign to creator" +msgstr "" + +#: app/templates/recurring_tasks/list.html:14 +msgid "Automated task creation templates" +msgstr "" + +#: app/templates/recurring_tasks/list.html:68 +#: app/templates/reports/scheduled.html:65 +msgid "Not scheduled" +msgstr "" + +#: app/templates/recurring_tasks/list.html:84 +msgid "Are you sure you want to delete this recurring task?" +msgstr "" + +#: app/templates/recurring_tasks/list.html:101 +msgid "No recurring tasks" +msgstr "" + +#: app/templates/recurring_tasks/list.html:102 +msgid "" +"Create recurring task templates to automatically generate tasks on a " +"schedule." +msgstr "" + +#: app/templates/reports/builder.html:4 +#: app/templates/reports/custom_view.html:58 +#: app/templates/reports/custom_view.html:101 +msgid "Edit Report" +msgstr "" + +#: app/templates/reports/builder.html:4 +msgid "Custom Report Builder" +msgstr "" + +#: app/templates/reports/builder.html:24 +msgid "Quick start" +msgstr "" + +#: app/templates/reports/builder.html:26 +msgid "Unpaid time entries" +msgstr "" + +#: app/templates/reports/builder.html:28 +msgid "Time entries, unpaid only, last 30 days" +msgstr "" + +#: app/templates/reports/builder.html:29 +msgid "Data Sources" +msgstr "" + +#: app/templates/reports/builder.html:38 +msgid "Components" +msgstr "" + +#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:402 +msgid "Table" +msgstr "" + +#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:403 +#: app/templates/reports/custom_view.html:81 +msgid "Chart" +msgstr "" + +#: app/templates/reports/builder.html:57 +msgid "Report Canvas" +msgstr "" + +#: app/templates/reports/builder.html:70 app/templates/reports/builder.html:243 +#: app/templates/reports/builder.html:389 +#: app/templates/reports/builder.html:442 +msgid "Drag data sources and components here to build your report" +msgstr "" + +#: app/templates/reports/builder.html:97 +msgid "Advanced Filters" +msgstr "" + +#: app/templates/reports/builder.html:105 +msgid "Unpaid Hours Only" +msgstr "" + +#: app/templates/reports/builder.html:109 +msgid "Unpaid = billable, not yet on any invoice." +msgstr "" + +#: app/templates/reports/builder.html:118 +msgid "Custom Field" +msgstr "" + +#: app/templates/reports/builder.html:121 +msgid "No Filter" +msgstr "" + +#: app/templates/reports/builder.html:129 +msgid "Field Value" +msgstr "" + +#: app/templates/reports/builder.html:132 +msgid "e.g., MM, PB" +msgstr "" + +#: app/templates/reports/builder.html:134 +msgid "Enter the value to filter by (e.g., salesman initial)" +msgstr "" + +#: app/templates/reports/builder.html:148 +msgid "Report Preview" +msgstr "" + +#: app/templates/reports/builder.html:156 +msgid "Loading preview..." +msgstr "" + +#: app/templates/reports/builder.html:172 +msgid "Save Report" +msgstr "" + +#: app/templates/reports/builder.html:175 +msgid "Report Name" +msgstr "" + +#: app/templates/reports/builder.html:176 +msgid "My Custom Report" +msgstr "" + +#: app/templates/reports/builder.html:179 +#: app/templates/reports/saved_views_list.html:28 +msgid "Scope" +msgstr "" + +#: app/templates/reports/builder.html:181 +msgid "Private" +msgstr "" + +#: app/templates/reports/builder.html:182 +msgid "Team" +msgstr "" + +#: app/templates/reports/builder.html:193 +#: app/templates/reports/saved_views_list.html:47 +msgid "Iterative Report Generation" +msgstr "" + +#: app/templates/reports/builder.html:197 +msgid "Generate one report per custom field value (e.g., one report per salesman)" +msgstr "" + +#: app/templates/reports/builder.html:200 +#: app/templates/reports/schedule_form.html:78 +msgid "Custom Field Name" +msgstr "" + +#: app/templates/reports/builder.html:202 +msgid "Select Field" +msgstr "" + +#: app/templates/reports/builder.html:208 +msgid "Select the custom field to iterate over (e.g., \"salesman\")" +msgstr "" + +#: app/templates/reports/builder.html:450 +#: app/templates/reports/builder.html:672 +msgid "Please select a data source first" +msgstr "" + +#: app/templates/reports/builder.html:542 +msgid "Failed to generate preview" +msgstr "" + +#: app/templates/reports/builder.html:550 +msgid "Unknown error occurred" +msgstr "" + +#: app/templates/reports/builder.html:551 +msgid "Error loading preview" +msgstr "" + +#: app/templates/reports/builder.html:602 +msgid "No data found for the selected filters" +msgstr "" + +#: app/templates/reports/builder.html:664 +msgid "Please enter a report name" +msgstr "" + +#: app/templates/reports/builder.html:751 +msgid "Report created successfully!" +msgstr "" + +#: app/templates/reports/builder.html:752 +msgid "Report updated successfully!" +msgstr "" + +#: app/templates/reports/builder.html:773 +msgid "Failed to save report" +msgstr "" + +#: app/templates/reports/builder.html:787 +msgid "Error saving report" +msgstr "" + +#: app/templates/reports/custom_view.html:4 +msgid "Custom Report" +msgstr "" + +#: app/templates/reports/custom_view.html:26 +msgid "Data Table" +msgstr "" + +#: app/templates/reports/custom_view.html:53 +msgid "No data found" +msgstr "" + +#: app/templates/reports/custom_view.html:55 +msgid "" +"This report has no data matching the current filters. Try adjusting your " +"date range or filters." +msgstr "" + +#: app/templates/reports/custom_view.html:76 +msgid "No summary data available." +msgstr "" + +#: app/templates/reports/custom_view.html:85 +msgid "No data available for chart." +msgstr "" + +#: app/templates/reports/custom_view.html:96 +msgid "No components configured" +msgstr "" + +#: app/templates/reports/custom_view.html:98 +msgid "" +"This report has no components configured. Please edit the report to add " +"components." +msgstr "" + +#: app/templates/reports/export_form.html:165 +msgid "e.g., development, meeting, urgent" +msgstr "" + +#: app/templates/reports/index.html:62 +msgid "Date Range & Comparison" +msgstr "" + +#: app/templates/reports/index.html:66 +msgid "Quick Date Ranges" +msgstr "" + +#: app/templates/reports/index.html:95 +msgid "Comparison View" +msgstr "" + +#: app/templates/reports/index.html:121 +msgid "Comparison Results" +msgstr "" + +#: app/templates/reports/index.html:130 +msgid "Export Reports" +msgstr "" + +#: app/templates/reports/index.html:133 +msgid "Export Format" +msgstr "" + +#: app/templates/reports/index.html:164 +msgid "Report Types" +msgstr "" + +#: app/templates/reports/index.html:167 +#: app/templates/reports/project_report.html:5 +msgid "Project Report" +msgstr "" + +#: app/templates/reports/index.html:170 +#: app/templates/reports/user_report.html:5 +msgid "User Report" +msgstr "" + +#: app/templates/reports/index.html:173 app/templates/reports/summary.html:6 +msgid "Summary Report" +msgstr "" + +#: app/templates/reports/index.html:176 +#: app/templates/reports/task_report.html:5 +msgid "Task Report" +msgstr "" + +#: app/templates/reports/index.html:179 +#: app/templates/reports/unpaid_hours_report.html:6 +msgid "Unpaid Hours Report" +msgstr "" + +#: app/templates/reports/index.html:188 +msgid "Report Management" +msgstr "" + +#: app/templates/reports/index.html:191 +#: app/templates/reports/saved_views_list.html:4 +msgid "Saved Report Views" +msgstr "" + +#: app/templates/reports/index.html:192 +msgid "View and manage your saved report configurations" +msgstr "" + +#: app/templates/reports/index.html:196 +msgid "Manage automated report delivery via email" +msgstr "" + +#: app/templates/reports/index.html:418 +msgid "" +"You need to create a saved report view first. Please create one from the " +"reports page." +msgstr "" + +#: app/templates/reports/index.html:430 +#: app/templates/reports/schedule_form.html:3 +#: app/templates/reports/schedule_form.html:8 +#: app/templates/reports/scheduled.html:116 +msgid "Schedule Report" +msgstr "" + +#: app/templates/reports/index.html:437 +#: app/templates/reports/schedule_form.html:20 +msgid "Report View" +msgstr "" + +#: app/templates/reports/index.html:439 +msgid "Select a report view..." +msgstr "" + +#: app/templates/reports/index.html:444 app/templates/reports/scheduled.html:27 +msgid "Recipients" +msgstr "" + +#: app/templates/reports/index.html:447 +msgid "Comma-separated email addresses" +msgstr "" + +#: app/templates/reports/index.html:462 +#: app/templates/reports/schedule_form.html:101 +msgid "Create Schedule" +msgstr "" + +#: app/templates/reports/index.html:473 +msgid "Failed to load report views" +msgstr "" + +#: app/templates/reports/index.html:510 +msgid "Scheduled report created successfully" +msgstr "" + +#: app/templates/reports/index.html:513 app/templates/reports/index.html:520 +msgid "Failed to create scheduled report" +msgstr "" + +#: app/templates/reports/index.html:538 app/templates/reports/index.html:543 +msgid "Failed to update schedule" +msgstr "" + +#: app/templates/reports/index.html:548 app/templates/reports/scheduled.html:98 +msgid "Are you sure you want to delete this scheduled report?" +msgstr "" + +#: app/templates/reports/index.html:563 +msgid "Scheduled report deleted successfully" +msgstr "" + +#: app/templates/reports/index.html:566 app/templates/reports/index.html:571 +msgid "Failed to delete scheduled report" +msgstr "" + +#: app/templates/reports/iterative_view.html:4 +msgid "Iterative Report" +msgstr "" + +#: app/templates/reports/iterative_view.html:17 +#, python-format +msgid "Iterative Report - One report per %(field_name)s value" +msgstr "" + +#: app/templates/reports/iterative_view.html:74 +msgid "Summary by Client" +msgstr "" + +#: app/templates/reports/iterative_view.html:90 +#, python-format +msgid "No data found for this %(field_name)s value" +msgstr "" + +#: app/templates/reports/iterative_view.html:99 +#, python-format +msgid "No unique values found for custom field \"%(field_name)s\"" +msgstr "" + +#: app/templates/reports/saved_views_list.html:29 +msgid "Features" +msgstr "" + +#: app/templates/reports/saved_views_list.html:48 +msgid "Iterative" +msgstr "" + +#: app/templates/reports/saved_views_list.html:67 +msgid "Are you sure you want to delete this report view?" +msgstr "" + +#: app/templates/reports/saved_views_list.html:83 +msgid "No Saved Report Views" +msgstr "" + +#: app/templates/reports/saved_views_list.html:84 +msgid "Create and save report configurations to use them in scheduled reports." +msgstr "" + +#: app/templates/reports/saved_views_list.html:85 +msgid "Create Report" +msgstr "" + +#: app/templates/reports/schedule_form.html:9 +msgid "Set up automated email delivery for reports" +msgstr "" + +#: app/templates/reports/schedule_form.html:11 +msgid "Back to Scheduled Reports" +msgstr "" + +#: app/templates/reports/schedule_form.html:22 +msgid "Select a saved report view..." +msgstr "" + +#: app/templates/reports/schedule_form.html:27 +msgid "Select a saved report view to schedule" +msgstr "" + +#: app/templates/reports/schedule_form.html:32 +msgid "Email Recipients" +msgstr "" + +#: app/templates/reports/schedule_form.html:34 +msgid "email1@example.com, email2@example.com" +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 "" + +#: 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 "" + +#: app/templates/reports/schedule_form.html:46 +msgid "Select frequency..." +msgstr "" + +#: app/templates/reports/schedule_form.html:50 +msgid "Custom (Cron)" +msgstr "" + +#: app/templates/reports/schedule_form.html:57 +msgid "Use previous calendar month as date range" +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 "" + +#: app/templates/reports/schedule_form.html:63 +msgid "Cron Expression" +msgstr "" + +#: app/templates/reports/schedule_form.html:65 +msgid "Cron format: minute hour day month weekday" +msgstr "" + +#: app/templates/reports/schedule_form.html:70 +msgid "Report Iteration (Optional)" +msgstr "" + +#: app/templates/reports/schedule_form.html:74 +msgid "Split report by custom field value" +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 "" + +#: app/templates/reports/schedule_form.html:83 +msgid "Email distribution" +msgstr "" + +#: app/templates/reports/schedule_form.html:85 +msgid "All reports to recipients below" +msgstr "" + +#: app/templates/reports/schedule_form.html:86 +msgid "Per value: SalesmanEmailMapping table" +msgstr "" + +#: app/templates/reports/schedule_form.html:87 +msgid "Per value: email from template" +msgstr "" + +#: app/templates/reports/schedule_form.html:91 +msgid "Recipient email template" +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 "" + +#: app/templates/reports/scheduled.html:26 +msgid "Report" +msgstr "" + +#: app/templates/reports/scheduled.html:41 +msgid "Split by" +msgstr "" + +#: app/templates/reports/scheduled.html:46 +msgid "Distribution" +msgstr "" + +#: app/templates/reports/scheduled.html:54 +msgid "Template" +msgstr "" + +#: app/templates/reports/scheduled.html:70 +msgid "Invalid: saved view not found" +msgstr "" + +#: app/templates/reports/scheduled.html:86 +msgid "Trigger report now (for testing)" +msgstr "" + +#: app/templates/reports/scheduled.html:93 +msgid "Fix or remove invalid schedule" +msgstr "" + +#: app/templates/reports/scheduled.html:114 +msgid "No Scheduled Reports" +msgstr "" + +#: app/templates/reports/scheduled.html:115 +msgid "Create scheduled reports to automatically receive reports via email." +msgstr "" + +#: app/templates/reports/scheduled.html:152 +msgid "Report triggered successfully!" +msgstr "" + +#: app/templates/reports/scheduled.html:153 +msgid "Report sent to recipients." +msgstr "" + +#: app/templates/reports/scheduled.html:156 +msgid "Error triggering report:" +msgstr "" + +#: app/templates/reports/scheduled.html:161 +msgid "Error triggering report. Please check the console for details." +msgstr "" + +#: app/templates/reports/unpaid_hours_report.html:45 +msgid "Total Unpaid Hours" +msgstr "" + +#: app/templates/reports/unpaid_hours_report.html:49 +#: app/templates/reports/unpaid_hours_report.html:75 +msgid "Estimated Amount" +msgstr "" + +#: app/templates/reports/unpaid_hours_report.html:53 +msgid "Clients with Unpaid Hours" +msgstr "" + +#: app/templates/reports/unpaid_hours_report.html:61 +msgid "Unpaid Hours by Client" +msgstr "" + +#: app/templates/reports/unpaid_hours_report.html:151 +msgid "No unpaid hours found for the selected period." +msgstr "" + +#: app/templates/reports/user_report.html:69 +#: app/templates/reports/user_report.html:94 +msgid "Export entries (Excel)" +msgstr "" + +#: app/templates/reports/user_report.html:70 +msgid "Select columns:" +msgstr "" + +#: app/templates/reports/user_report.html:78 +msgid "Duration (hours)" +msgstr "" + +#: app/templates/reports/user_report.html:88 +msgid "Duration (formatted)" +msgstr "" + +#: app/templates/reports/user_report.html:158 +msgid "About Overtime Tracking" +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/settings/keyboard_shortcuts.html:227 +msgid "Customize Shortcuts" +msgstr "" + +#: app/templates/settings/keyboard_shortcuts.html:235 +msgid "Search shortcuts..." +msgstr "" + +#: app/templates/settings/keyboard_shortcuts.html:461 +msgid "This will reset all keyboard shortcuts to their default values. Continue?" +msgstr "" + +#: app/templates/settings/keyboard_shortcuts.html:463 +msgid "Reset to Defaults" +msgstr "" + +#: app/templates/setup/initial_setup.html:6 +msgid "Welcome" +msgstr "" + +#: app/templates/setup/initial_setup.html:34 +msgid "Privacy First" +msgstr "" + +#: app/templates/setup/initial_setup.html:39 +msgid "Self-hosted on your server" +msgstr "" + +#: app/templates/setup/initial_setup.html:45 +msgid "Anonymous telemetry (opt-in)" +msgstr "" + +#: app/templates/setup/initial_setup.html:51 +msgid "No PII collected ever" +msgstr "" + +#: app/templates/setup/initial_setup.html:57 +msgid "Open source & transparent" +msgstr "" + +#: app/templates/setup/initial_setup.html:65 +msgid "Welcome to TimeTracker" +msgstr "" + +#: app/templates/setup/initial_setup.html:66 +msgid "Let's get you set up in just a moment" +msgstr "" + +#: app/templates/setup/initial_setup.html:73 +msgid "Thank you for choosing TimeTracker!" +msgstr "" + +#: app/templates/setup/initial_setup.html:75 +msgid "Your data stays on your server, and you have complete control." +msgstr "" + +#: app/templates/setup/initial_setup.html:81 +msgid "Integration Setup (Optional)" +msgstr "" + +#: app/templates/setup/initial_setup.html:83 +msgid "" +"Configure OAuth credentials now to enable calendar and other " +"integrations. You can also configure these later in Admin → Settings." +msgstr "" + +#: app/templates/setup/initial_setup.html:89 +msgid "Google Calendar OAuth" +msgstr "" + +#: app/templates/setup/initial_setup.html:96 +msgid "Client ID (optional)" +msgstr "" + +#: app/templates/setup/initial_setup.html:104 +msgid "Client Secret (optional)" +msgstr "" + +#: app/templates/setup/initial_setup.html:110 +msgid "Get these from" +msgstr "" + +#: app/templates/setup/initial_setup.html:110 +#: app/templates/setup/initial_setup.html:120 +msgid "Google Cloud Console" +msgstr "" + +#: app/templates/setup/initial_setup.html:116 +msgid "How to get Google Calendar OAuth credentials?" +msgstr "" + +#: app/templates/setup/initial_setup.html:120 +msgid "Go to" +msgstr "" + +#: app/templates/setup/initial_setup.html:121 +msgid "Create a new project or select an existing one" +msgstr "" + +#: app/templates/setup/initial_setup.html:122 +msgid "Enable the Google Calendar API" +msgstr "" + +#: app/templates/setup/initial_setup.html:123 +msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +msgstr "" + +#: app/templates/setup/initial_setup.html:124 +msgid "Set application type to \"Web application\"" +msgstr "" + +#: app/templates/setup/initial_setup.html:125 +msgid "Add authorized redirect URI:" +msgstr "" + +#: app/templates/setup/initial_setup.html:126 +msgid "Copy the Client ID and Client Secret" +msgstr "" + +#: app/templates/setup/initial_setup.html:134 +msgid "Help Us Improve (Optional)" +msgstr "" + +#: app/templates/setup/initial_setup.html:140 +msgid "Enable anonymous telemetry" +msgstr "" + +#: app/templates/setup/initial_setup.html:142 +msgid "Help us understand usage patterns to improve TimeTracker" +msgstr "" + +#: app/templates/setup/initial_setup.html:151 +msgid "What data is collected?" +msgstr "" + +#: app/templates/setup/initial_setup.html:155 +msgid "What we collect:" +msgstr "" + +#: app/templates/setup/initial_setup.html:157 +msgid "Anonymous installation fingerprint (hashed)" +msgstr "" + +#: app/templates/setup/initial_setup.html:158 +msgid "Application version & platform info" +msgstr "" + +#: app/templates/setup/initial_setup.html:159 +msgid "Feature usage statistics" +msgstr "" + +#: app/templates/setup/initial_setup.html:160 +msgid "Internal numeric IDs only" +msgstr "" + +#: app/templates/setup/initial_setup.html:165 +msgid "What we DON'T collect:" +msgstr "" + +#: app/templates/setup/initial_setup.html:167 +msgid "No usernames or emails" +msgstr "" + +#: app/templates/setup/initial_setup.html:168 +msgid "No project names or descriptions" +msgstr "" + +#: app/templates/setup/initial_setup.html:169 +msgid "No time entry data or notes" +msgstr "" + +#: app/templates/setup/initial_setup.html:170 +msgid "No client or business data" +msgstr "" + +#: app/templates/setup/initial_setup.html:171 +msgid "No IP addresses or PII" +msgstr "" + +#: app/templates/setup/initial_setup.html:177 +msgid "Why?" +msgstr "" + +#: app/templates/setup/initial_setup.html:177 +msgid "Anonymous usage data helps us prioritize features and fix issues." +msgstr "" + +#: app/templates/setup/initial_setup.html:178 +msgid "You can change this anytime in" +msgstr "" + +#: app/templates/setup/initial_setup.html:178 +msgid "Privacy & Analytics section" +msgstr "" + +#: app/templates/setup/initial_setup.html:188 +msgid "Complete Setup & Continue" +msgstr "" + +#: app/templates/setup/initial_setup.html:192 +msgid "By continuing, you agree to use TimeTracker under the" +msgstr "" + +#: app/templates/setup/initial_setup.html:192 +msgid "GPL-3.0 License" +msgstr "" + +#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 +#: app/templates/tasks/edit.html:3 app/templates/tasks/edit.html:14 +#: app/templates/tasks/edit.html:27 app/templates/tasks/view.html:12 +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:197 +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:1324 app/templates/tasks/edit.html:177 +msgid "Estimated" +msgstr "" + +#: app/templates/tasks/_kanban.html:1357 +msgid "View Full Details" +msgstr "" + +#: app/templates/tasks/create.html:15 +msgid "" +"Add a new task to your project to break down work into manageable " +"components" +msgstr "" + +#: app/templates/tasks/create.html:17 app/templates/tasks/edit.html:295 +#: app/templates/tasks/overdue.html:10 +msgid "Back to Tasks" +msgstr "" + +#: app/templates/tasks/create.html:29 app/templates/tasks/edit.html:49 +msgid "Enter a descriptive task name" +msgstr "" + +#: app/templates/tasks/create.html:30 app/templates/tasks/edit.html:50 +msgid "Choose a clear, descriptive name that explains what needs to be done" +msgstr "" + +#: app/templates/tasks/create.html:40 app/templates/tasks/edit.html:59 +#: app/templates/tasks/edit.html:520 +msgid "" +"Provide detailed information about the task, requirements, and any " +"specific instructions..." +msgstr "" + +#: app/templates/tasks/create.html:43 app/templates/tasks/edit.html:62 +msgid "Optional: Add context, requirements, or specific instructions for the task" +msgstr "" + +#: app/templates/tasks/create.html:55 app/templates/tasks/edit.html:78 +msgid "Select the project this task belongs to" +msgstr "" + +#: app/templates/tasks/create.html:70 +msgid "Initial Status" +msgstr "" + +#: app/templates/tasks/create.html:76 app/templates/tasks/create.html:88 +#: app/templates/tasks/create.html:462 app/templates/tasks/edit.html:98 +#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:129 +#: app/utils/i18n_helpers.py:18 app/utils/i18n_helpers.py:30 +msgid "Done" +msgstr "" + +#: app/templates/tasks/create.html:97 app/templates/tasks/edit.html:118 +msgid "Optional: Set a deadline for this task" +msgstr "" + +#: app/templates/tasks/create.html:102 app/templates/tasks/edit.html:123 +msgid "Optional: Estimate how long this task will take" +msgstr "" + +#: app/templates/tasks/create.html:115 app/templates/tasks/edit.html:136 +msgid "Optional: Assign this task to a team member" +msgstr "" + +#: app/templates/tasks/create.html:125 app/templates/tasks/edit.html:146 +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:140 +msgid "Task Creation Tips" +msgstr "" + +#: app/templates/tasks/create.html:148 +msgid "Use action verbs and be specific about what needs to be done" +msgstr "" + +#: app/templates/tasks/create.html:156 +msgid "Realistic Estimates" +msgstr "" + +#: app/templates/tasks/create.html:157 +msgid "Consider complexity and dependencies when estimating time" +msgstr "" + +#: app/templates/tasks/create.html:165 +msgid "Set Deadlines" +msgstr "" + +#: app/templates/tasks/create.html:166 +msgid "Due dates help prioritize work and track progress" +msgstr "" + +#: app/templates/tasks/create.html:174 +msgid "Priority Matters" +msgstr "" + +#: app/templates/tasks/create.html:175 +msgid "Use priority levels to help team members focus on what's most important" +msgstr "" + +#: app/templates/tasks/edit.html:15 app/templates/tasks/edit.html:28 +#, python-format +msgid "Update task details and settings for \"%(task)s\"" +msgstr "" + +#: app/templates/tasks/edit.html:17 +msgid "Back to Task" +msgstr "" + +#: app/templates/tasks/edit.html:38 +msgid "Task Information" +msgstr "" + +#: app/templates/tasks/edit.html:152 +msgid "Update Task" +msgstr "" + +#: app/templates/tasks/edit.html:168 +msgid "Estimate used" +msgstr "" + +#: app/templates/tasks/edit.html:175 app/templates/weekly_goals/index.html:185 +msgid "Actual" +msgstr "" + +#: app/templates/tasks/edit.html:188 +msgid "Current Task Info" +msgstr "" + +#: app/templates/tasks/edit.html:192 +msgid "Current Status" +msgstr "" + +#: app/templates/tasks/edit.html:199 +msgid "Current Priority" +msgstr "" + +#: app/templates/tasks/edit.html:217 +msgid "Currently Assigned To" +msgstr "" + +#: app/templates/tasks/edit.html:229 +msgid "Current Due Date" +msgstr "" + +#: app/templates/tasks/edit.html:243 +msgid "Current Estimate" +msgstr "" + +#: app/templates/tasks/edit.html:255 app/templates/weekly_goals/index.html:87 +#: app/templates/weekly_goals/view.html:47 +msgid "Actual Hours" +msgstr "" + +#: app/templates/tasks/edit.html:270 +msgid "Started" +msgstr "" + +#: app/templates/tasks/edit.html:304 +msgid "Edit Tips" +msgstr "" + +#: app/templates/tasks/edit.html:313 +msgid "Status Changes" +msgstr "" + +#: app/templates/tasks/edit.html:314 +msgid "Changing status may affect time tracking and progress calculations" +msgstr "" + +#: app/templates/tasks/edit.html:325 +msgid "Due Date Updates" +msgstr "" + +#: app/templates/tasks/edit.html:326 +msgid "Consider team workload when adjusting deadlines" +msgstr "" + +#: app/templates/tasks/edit.html:337 +msgid "Assignment Changes" +msgstr "" + +#: app/templates/tasks/edit.html:338 +msgid "Notify team members when reassigning tasks" +msgstr "" + +#: app/templates/tasks/edit.html:596 +msgid "Updating..." +msgstr "" + +#: app/templates/tasks/list.html:33 +msgid "Filter Tasks" +msgstr "" + +#: app/templates/tasks/list.html:135 +msgid "Delete Selected Tasks" +msgstr "" + +#: app/templates/tasks/list.html:155 +msgid "Change Status for Selected Tasks" +msgstr "" + +#: app/templates/tasks/list.html:183 +msgid "Assign Selected Tasks" +msgstr "" + +#: app/templates/tasks/list.html:193 +msgid "Assign Tasks" +msgstr "" + +#: app/templates/tasks/list.html:203 +msgid "Move Selected Tasks to Project" +msgstr "" + +#: app/templates/tasks/list.html:204 app/templates/tasks/list.html:206 +msgid "Select Project" +msgstr "" + +#: app/templates/tasks/list.html:213 +msgid "Move Tasks" +msgstr "" + +#: app/templates/tasks/list.html:228 +#, python-brace-format +msgid "Are you sure you want to delete the task \"{name}\"?" +msgstr "" + +#: app/templates/tasks/list.html:229 +#, python-brace-format +msgid "" +"Cannot delete task \"{name}\" because it has time entries. Please delete " +"the time entries first." +msgstr "" + +#: app/templates/tasks/list.html:412 app/templates/tasks/view.html:39 +msgid "Delete Task" +msgstr "" + +#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 +msgid "My Tasks" +msgstr "" + +#: app/templates/tasks/my_tasks.html:20 +msgid "New Task" +msgstr "" + +#: app/templates/tasks/my_tasks.html:23 +msgid "Tasks assigned to or created by you" +msgstr "" + +#: app/templates/tasks/my_tasks.html:23 +msgid "total" +msgstr "" + +#: app/templates/tasks/my_tasks.html:105 +msgid "Filter My Tasks" +msgstr "" + +#: app/templates/tasks/my_tasks.html:119 +msgid "Task name or description" +msgstr "" + +#: app/templates/tasks/my_tasks.html:136 +msgid "All Priorities" +msgstr "" + +#: app/templates/tasks/my_tasks.html:155 +msgid "Task Type" +msgstr "" + +#: app/templates/tasks/my_tasks.html:158 +msgid "Assigned to Me" +msgstr "" + +#: app/templates/tasks/my_tasks.html:159 +msgid "Created by Me" +msgstr "" + +#: app/templates/tasks/my_tasks.html:166 +msgid "Show overdue only" +msgstr "" + +#: app/templates/tasks/my_tasks.html:289 +msgid "Created by me" +msgstr "" + +#: app/templates/tasks/my_tasks.html:340 +msgid "My tasks pagination" +msgstr "" + +#: app/templates/tasks/my_tasks.html:363 +msgid "..." +msgstr "" + +#: app/templates/tasks/my_tasks.html:387 +msgid "No tasks found" +msgstr "" + +#: app/templates/tasks/my_tasks.html:388 +msgid "You don't have any tasks assigned to you or created by you yet." +msgstr "" + +#: app/templates/tasks/my_tasks.html:391 +msgid "Create Your First Task" +msgstr "" + +#: app/templates/tasks/my_tasks.html:394 app/templates/tasks/overdue.html:140 +msgid "View All Tasks" +msgstr "" + +#: app/templates/tasks/overdue.html:3 app/templates/tasks/overdue.html:13 +msgid "Overdue Tasks" +msgstr "" + +#: app/templates/tasks/overdue.html:13 +msgid "Requires immediate attention" +msgstr "" + +#: app/templates/tasks/overdue.html:13 +msgid "items" +msgstr "" + +#: app/templates/tasks/overdue.html:18 +msgid "Overdue Tasks Detected" +msgstr "" + +#: app/templates/tasks/overdue.html:21 +msgid "There are" +msgstr "" + +#: app/templates/tasks/overdue.html:21 +msgid "overdue tasks that require immediate attention." +msgstr "" + +#: app/templates/tasks/overdue.html:22 +msgid "Please review and update these tasks to prevent further delays." +msgstr "" + +#: app/templates/tasks/overdue.html:63 +msgid "Due:" +msgstr "" + +#: app/templates/tasks/overdue.html:68 +msgid "Est:" +msgstr "" + +#: app/templates/tasks/overdue.html:73 +msgid "Actual:" +msgstr "" + +#: app/templates/tasks/overdue.html:137 +msgid "No Overdue Tasks!" +msgstr "" + +#: app/templates/tasks/overdue.html:138 +msgid "Great job! All tasks are currently on schedule." +msgstr "" + +#: app/templates/tasks/overdue.html:148 +msgid "Enter new due date (YYYY-MM-DD):" +msgstr "" + +#: app/templates/tasks/overdue.html:149 +msgid "Are you sure you want to extend the due date to" +msgstr "" + +#: app/templates/tasks/overdue.html:150 app/templates/tasks/overdue.html:154 +msgid "for all overdue tasks?" +msgstr "" + +#: app/templates/tasks/overdue.html:152 +msgid "Enter new priority (low/medium/high/urgent):" +msgstr "" + +#: app/templates/tasks/overdue.html:153 +msgid "Are you sure you want to set priority to" +msgstr "" + +#: app/templates/tasks/overdue.html:156 +msgid "Invalid priority. Please use: low, medium, high, or urgent" +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:20 +msgid "Change Task Status" +msgstr "" + +#: app/templates/tasks/view.html:20 +msgid "Mark task as To Do?" +msgstr "" + +#: app/templates/tasks/view.html:23 +msgid "Pause" +msgstr "" + +#: app/templates/tasks/view.html:25 +msgid "Mark task as Done?" +msgstr "" + +#: app/templates/tasks/view.html:25 +msgid "Complete Task" +msgstr "" + +#: app/templates/tasks/view.html:25 app/templates/tasks/view.html:28 +msgid "Complete" +msgstr "" + +#: app/templates/tasks/view.html:31 +msgid "Reopen task to Review?" +msgstr "" + +#: app/templates/tasks/view.html:31 +msgid "Reopen Task" +msgstr "" + +#: app/templates/tasks/view.html:31 app/templates/tasks/view.html:34 +msgid "Reopen" +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 "" + +#: 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/view.html:96 +msgid "Usage Statistics" +msgstr "" + +#: app/templates/timer/_time_entries_list.html:6 +msgid "Select All" +msgstr "" + +#: app/templates/timer/_time_entries_list.html:9 +msgid "selected" +msgstr "" + +#: app/templates/timer/_time_entries_list.html:15 +msgid "Bulk Actions" +msgstr "" + +#: app/templates/timer/_time_entries_list.html:18 +msgid "Mark Paid/Unpaid" +msgstr "" + +#: app/templates/timer/_time_entries_list.html:37 +#: app/templates/timer/time_entries_export_pdf.html:16 +msgid "Project/Client" +msgstr "" + +#: app/templates/timer/_time_entries_list.html:42 +msgid "Invoice Ref" +msgstr "" + +#: app/templates/timer/_time_entries_list.html:180 +#, python-format +msgid "Showing %(start)s to %(end)s of %(total)s entries" +msgstr "" + +#: app/templates/timer/manual_entry.html:8 +msgid "Duplicate Entry" +msgstr "" + +#: app/templates/timer/manual_entry.html:13 +msgid "Duplicate Time Entry" +msgstr "" + +#: app/templates/timer/manual_entry.html:13 +msgid "Log Time Manually" +msgstr "" + +#: app/templates/timer/manual_entry.html:14 +msgid "Create a copy of a previous entry with new times" +msgstr "" + +#: app/templates/timer/manual_entry.html:14 +msgid "Create a new time entry" +msgstr "" + +#: app/templates/timer/manual_entry.html:25 +msgid "Duplicating entry:" +msgstr "" + +#: app/templates/timer/manual_entry.html:33 +msgid "Original:" +msgstr "" + +#: app/templates/timer/manual_entry.html:33 +msgid "to" +msgstr "" + +#: app/templates/timer/manual_entry.html:68 +msgid "Tasks load after selecting a project" +msgstr "" + +#: app/templates/timer/manual_entry.html:96 +msgid "Worked Time" +msgstr "" + +#: app/templates/timer/manual_entry.html:98 +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:113 +msgid "tag1, tag2" +msgstr "" + +#: app/templates/timer/manual_entry.html:250 +#: app/templates/timer/timer_page.html:246 +msgid "Failed to load tasks" +msgstr "" + +#: app/templates/timer/manual_entry.html:300 +msgid "Session may have expired. Please refresh the page and try again." +msgstr "" + +#: app/templates/timer/manual_entry.html:312 +msgid "Project not found or inactive" +msgstr "" + +#: app/templates/timer/manual_entry.html:607 +msgid "What did you work on?" +msgstr "" + +#: app/templates/timer/time_entries_export_pdf.html:2 +#: app/templates/timer/time_entries_export_pdf.html:5 +msgid "Time Entries Export" +msgstr "" + +#: app/templates/timer/time_entries_export_pdf.html:7 +msgid "Generated at" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:15 +msgid "View and manage all time entries" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:24 +msgid "Paid Hours" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:33 +msgid "Exports use current filters" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:50 +msgid "Toggle filters" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:94 +msgid "Paid Status" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:102 +msgid "Billable Status" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:111 +msgid "Search in notes and tags..." +msgstr "" + +#: app/templates/timer/time_entries_overview.html:158 +msgid "Delete Selected Time Entries" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:162 +msgid "Reason for Deletion" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:162 +msgid "Optional but recommended" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:164 +msgid "e.g., Duplicate entry, incorrect time, etc." +msgstr "" + +#: app/templates/timer/time_entries_overview.html:182 +msgid "Mark Selected Entries as Paid/Unpaid" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:190 +msgid "e.g., Invoice number or payment reference" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:296 +#: app/templates/timer/time_entries_overview.html:358 +msgid "Please select at least one time entry" +msgstr "" + +#: app/templates/timer/time_entries_overview.html:362 +msgid "time entry/entries" +msgstr "" + +#: app/templates/timer/timer_page.html:13 +msgid "Track your time with a visual timer" +msgstr "" + +#: app/templates/timer/timer_page.html:82 +msgid "Estimated Completion" +msgstr "" + +#: app/templates/timer/timer_page.html:84 +msgid "Calculating..." +msgstr "" + +#: app/templates/timer/timer_page.html:87 +msgid "Based on average session duration" +msgstr "" + +#: app/templates/timer/timer_page.html:104 +msgid "No active timer. Start one below!" +msgstr "" + +#: app/templates/timer/timer_page.html:112 +msgid "Start New Timer" +msgstr "" + +#: app/templates/timer/timer_page.html:153 +msgid "Add notes about what you're working on..." +msgstr "" + +#: app/templates/timer/timer_page.html:202 +msgid "Recent Projects" +msgstr "" + +#: app/templates/timer/timer_page.html:220 +msgid "Today's Stats" +msgstr "" + +#: app/templates/timer/view_timer.html:9 +msgid "View Entry" +msgstr "" + +#: app/templates/timer/view_timer.html:15 +msgid "View time entry details" +msgstr "" + +#: app/templates/timer/view_timer.html:24 +msgid "Entry Details" +msgstr "" + +#: app/templates/timer/view_timer.html:67 +msgid "Project & Client" +msgstr "" + +#: app/templates/timer/view_timer.html:103 +msgid "Status & Billing" +msgstr "" + +#: app/templates/user/profile.html:106 +msgid "In progress" +msgstr "" + +#: app/templates/user/profile.html:120 +msgid "View all time entries" +msgstr "" + +#: app/templates/user/profile.html:124 +msgid "No recent time entries" +msgstr "" + +#: app/templates/user/settings.html:8 +msgid "Manage your account settings and preferences" +msgstr "" + +#: app/templates/user/settings.html:17 +msgid "Profile Information" +msgstr "" + +#: app/templates/user/settings.html:27 +msgid "Username cannot be changed" +msgstr "" + +#: app/templates/user/settings.html:45 +msgid "Required for email notifications" +msgstr "" + +#: app/templates/user/settings.html:53 +msgid "Notification Preferences" +msgstr "" + +#: app/templates/user/settings.html:62 +msgid "Enable Email Notifications" +msgstr "" + +#: app/templates/user/settings.html:63 +msgid "Master switch for all email notifications" +msgstr "" + +#: app/templates/user/settings.html:73 +msgid "Overdue Invoice Notifications" +msgstr "" + +#: app/templates/user/settings.html:82 +msgid "Task Assignment Notifications" +msgstr "" + +#: app/templates/user/settings.html:91 +msgid "Comment & Mention Notifications" +msgstr "" + +#: app/templates/user/settings.html:100 +msgid "Weekly Time Summary Email" +msgstr "" + +#: app/templates/user/settings.html:110 +msgid "Display Preferences" +msgstr "" + +#: app/templates/user/settings.html:120 app/templates/user/settings.html:132 +#: app/templates/user/settings.html:253 +msgid "System Default" +msgstr "" + +#: app/templates/user/settings.html:121 +msgid "Light" +msgstr "" + +#: app/templates/user/settings.html:144 +msgid "Time Rounding Preferences" +msgstr "" + +#: app/templates/user/settings.html:147 +msgid "" +"Configure how your time entries are rounded. This affects how durations " +"are calculated when you stop timers." +msgstr "" + +#: app/templates/user/settings.html:157 +msgid "Enable Time Rounding" +msgstr "" + +#: app/templates/user/settings.html:158 +msgid "Round time entries to configured intervals" +msgstr "" + +#: app/templates/user/settings.html:165 +msgid "Rounding Interval" +msgstr "" + +#: app/templates/user/settings.html:173 +msgid "Time entries will be rounded to this interval" +msgstr "" + +#: app/templates/user/settings.html:178 +msgid "Rounding Method" +msgstr "" + +#: app/templates/user/settings.html:206 +msgid "Overtime Settings" +msgstr "" + +#: app/templates/user/settings.html:209 +msgid "" +"Set your standard working hours per day. Any time worked beyond this will" +" be counted as overtime." +msgstr "" + +#: app/templates/user/settings.html:215 +msgid "Standard Hours Per Day" +msgstr "" + +#: app/templates/user/settings.html:224 +msgid "Typically 8 hours for a full-time job" +msgstr "" + +#: app/templates/user/settings.html:230 +msgid "How it works" +msgstr "" + +#: app/templates/user/settings.html:233 +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 +msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." +msgstr "" + +#: app/templates/user/settings.html +msgid "Calculate overtime by" +msgstr "" + +#: app/templates/user/settings.html +msgid "Daily hours" +msgstr "" + +#: app/templates/user/settings.html +msgid "Weekly hours" +msgstr "" + +#: app/templates/user/settings.html +msgid "Standard Hours Per Week" +msgstr "" + +#: app/templates/user/settings.html +msgid "e.g. 20 for a part-time week, 40 for full-time" +msgstr "" + +#: app/templates/user/settings.html +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/routes/user.py +msgid "Standard hours per week must be between 1 and 168" +msgstr "" + +#: app/templates/user/settings.html:243 +msgid "Regional Settings" +msgstr "" + +#: app/templates/user/settings.html:249 +msgid "Timezone" +msgstr "" + +#: app/templates/user/settings.html:266 app/templates/user/settings.html:280 +msgid "Use system default" +msgstr "" + +#: app/templates/user/settings.html:276 +msgid "Time Format" +msgstr "" + +#: app/templates/user/settings.html:288 +msgid "Week Starts On" +msgstr "" + +#: app/templates/user/settings.html:292 +msgid "Sunday" +msgstr "" + +#: app/templates/user/settings.html:293 +msgid "Monday" +msgstr "" + +#: app/templates/user/settings.html:294 +msgid "Saturday" +msgstr "" + +#: app/templates/user/settings.html +msgid "Calendar default view" +msgstr "" + +#: app/templates/user/settings.html +msgid "Remember last view" +msgstr "" + +#: app/templates/user/settings.html:303 +msgid "Support visibility" +msgstr "" + +#: app/templates/user/settings.html:306 +msgid "" +"You can hide donate and support buttons and the support banner by " +"entering a valid code." +msgstr "" + +#: app/templates/user/settings.html:311 +msgid "System ID" +msgstr "" + +#: app/templates/user/settings.html:320 +msgid "Use this ID when requesting a code to hide donate prompts." +msgstr "" + +#: app/templates/user/settings.html:326 +msgid "Donate and support prompts are hidden." +msgstr "" + +#: app/templates/user/settings.html:333 +msgid "Enter code" +msgstr "" + +#: app/templates/user/settings.html:337 +msgid "Verify" +msgstr "" + +#: app/templates/user/settings.html:416 +msgid "Time rounding is disabled. All times will be recorded exactly as tracked." +msgstr "" + +#: app/templates/user/settings.html:421 +msgid "No rounding - times will be recorded exactly as tracked." +msgstr "" + +#: app/templates/user/settings.html:447 +msgid "Actual time:" +msgstr "" + +#: app/templates/user/settings.html:447 +msgid "Rounded:" +msgstr "" + +#: app/templates/user/settings.html:448 +msgid "With " +msgstr "" + +#: app/templates/user/settings.html:448 +msgid " minute intervals" +msgstr "" + +#: app/templates/user/settings.html:472 +msgid "Copied" +msgstr "" + +#: app/templates/user/settings.html:487 +msgid "Please enter a code." +msgstr "" + +#: app/templates/user/settings.html:516 +msgid "Error verifying code." +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 "" + +#: 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 "" + +#: app/templates/weekly_goals/create.html:88 +#: app/templates/weekly_goals/edit.html:103 +msgid "Optional notes about your goal..." +msgstr "" + +#: app/templates/weekly_goals/create.html:95 +msgid "Quick Presets" +msgstr "" + +#: app/templates/weekly_goals/create.html:143 +msgid "Tips for Setting Goals" +msgstr "" + +#: app/templates/weekly_goals/create.html:147 +msgid "Be realistic: Consider holidays, meetings, and other commitments" +msgstr "" + +#: app/templates/weekly_goals/create.html:148 +msgid "Start conservative: You can always adjust your goal later" +msgstr "" + +#: app/templates/weekly_goals/create.html:149 +msgid "Track progress: Check your dashboard regularly to stay on track" +msgstr "" + +#: app/templates/weekly_goals/create.html:150 +msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +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 "" + +#: 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 "" + +#: app/templates/weekly_goals/view.html:124 +msgid "Daily Breakdown" +msgstr "" + +#: app/templates/weekly_goals/view.html:136 +msgid "excluded" +msgstr "" + +#: app/templates/weekly_goals/view.html:174 +msgid "Time Entries This Week" +msgstr "" + +#: app/templates/weekly_goals/view.html:188 +msgid "No Project" +msgstr "" + +#: app/templates/weekly_goals/view.html:224 +msgid "No time entries recorded for this week yet" +msgstr "" + +#: app/utils/i18n_helpers.py:90 app/utils/i18n_helpers.py:101 +msgid "Overpaid" +msgstr "" + +#: app/utils/i18n_helpers.py:109 app/utils/i18n_helpers.py:125 +msgid "Cash" +msgstr "" + +#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 +msgid "Check" +msgstr "" + +#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 +msgid "Bank Transfer" +msgstr "" + +#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 +msgid "Credit Card" +msgstr "" + +#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 +msgid "Debit Card" +msgstr "" + +#: app/utils/i18n_helpers.py:115 app/utils/i18n_helpers.py:131 +msgid "Stripe" +msgstr "" + +#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 +msgid "Company Card" +msgstr "" + +#: app/utils/i18n_helpers.py:144 app/utils/i18n_helpers.py:155 +msgid "Reimbursed" +msgstr "" + +#: app/utils/i18n_helpers.py:220 app/utils/i18n_helpers.py:232 +msgid "Processing" +msgstr "" + +#: app/utils/i18n_helpers.py:223 app/utils/i18n_helpers.py:235 +msgid "Partial" +msgstr "" + +#: app/utils/i18n_helpers.py:265 +msgid "80% Budget Warning" +msgstr "" + +#: app/utils/i18n_helpers.py:266 +msgid "Budget Limit Reached" +msgstr "" + +#: app/utils/i18n_helpers.py:274 app/utils/i18n_helpers.py:280 +msgid "Info" +msgstr "" + +#: app/utils/module_helpers.py:45 +msgid "Authentication required." +msgstr "" + +#: app/utils/module_helpers.py:59 +#, python-format +msgid "Module '%(module)s' is disabled." +msgstr "" + +#: app/utils/module_helpers.py:66 +#, python-format +msgid "Module '%(module)s' is disabled. Enable it in Settings." +msgstr "" + +#: app/utils/pdf_generator_fallback.py:167 +#, python-format +msgid "Invoice #: %(num)s" +msgstr "" + +#: app/utils/pdf_generator_fallback.py:171 +#: app/utils/pdf_generator_fallback.py:174 +#, python-format +msgid "Issue Date: %(date)s" +msgstr "" + +#: app/utils/pdf_generator_fallback.py:172 +#: app/utils/pdf_generator_fallback.py:175 +#, python-format +msgid "Due Date: %(date)s" +msgstr "" + +#: app/utils/pdf_generator_fallback.py:521 +msgid "Quote For:" +msgstr "" + +#: app/utils/pdf_generator_fallback.py:531 +msgid "Quote Details:" +msgstr "" + +#: app/utils/pdf_generator_fallback.py:552 +msgid "Items:" +msgstr "" + +#: app/utils/pdf_generator_fallback.py:602 +msgid "Total:" +msgstr "" + +#: app/utils/permissions.py:31 app/utils/permissions.py:66 +msgid "Please log in to access this page" +msgstr "" + +#: app/templates/main/donate.html +msgid "Remove Donation Messages" +msgstr "" + +#: app/templates/main/donate.html +msgid "Purchase a key to hide donate and support prompts in this TimeTracker instance. One key per instance; the key is sent by email after payment (€25 one-time)." +msgstr "" + +#: app/templates/main/donate.html +msgid "Admins: find your System ID in Admin → Settings → Support visibility." +msgstr "" + +#: app/templates/main/donate.html +msgid "Get Key" +msgstr "" + +#: app/templates/main/donate.html +msgid "Purchase a key to hide donate UI" +msgstr "" + +#: app/templates/main/donate.html +msgid "One-time key per instance to remove donate and support prompts" +msgstr "" + +#: app/templates/admin/settings.html +msgid "Hide donate and support UI for all users by entering a code. Get your code by purchasing a key at the link below (one key per instance)." +msgstr "" + +#: app/templates/admin/settings.html +msgid "Get key at Support & Purchase" +msgstr "" + +#: app/templates/admin/settings.html +msgid "Use this ID when requesting your key at the support page above." +msgstr "" + +#: app/templates/user/settings.html +msgid "Administrators can purchase a key to hide these prompts:" +msgstr "" + +#: app/templates/user/settings.html +msgid "Support & Purchase Key" +msgstr "" + +#: app/templates/base.html +msgid "Purchase key to hide" +msgstr "" + +#: app/templates/base.html +msgid "Support development — or purchase a key to hide this" +msgstr "" + +#: app/templates/base.html +msgid "Support development (key available to hide this)" +msgstr "" + +#: app/templates/main/donate.html +msgid "Prefer to remove these prompts?" +msgstr "" + +#: app/templates/main/donate.html +msgid "Get a one-time key" +msgstr "" + +#: app/templates/main/about.html +msgid "Admins can purchase a key to hide support prompts for this instance." +msgstr "" + +#: app/templates/main/dashboard.html +msgid "You can hide this with a one-time key." +msgstr "" + +#: app/templates/main/dashboard.html +msgid "Get key" +msgstr "" + +#: app/templates/main/dashboard.html +msgid "Want to hide this widget?" +msgstr "" + +#: app/templates/main/dashboard.html +msgid "Purchase a key" +msgstr "" + +#~ msgid "Log" +#~ msgstr "Log" + +#~ msgid "All rights reserved." +#~ msgstr "All rights reserved." + +#~ msgid "Work" +#~ msgstr "Work" + +#~ msgid "Insights" +#~ msgstr "Insights" + +#~ msgid "Ctrl" +#~ msgstr "Ctrl" + +#~ msgid "App installed" +#~ msgstr "App installed" + +#~ msgid "Please confirm" +#~ msgstr "Please confirm" + +#~ msgid "No Active Timer" +#~ msgstr "No Active Timer" + +#~ msgid "Choose a project or one of its tasks to start tracking." +#~ msgstr "Choose a project or one of its tasks to start tracking." + +#~ msgid "Hours This Month" +#~ msgstr "Hours This Month" + +#~ msgid "Multi-day time entry" +#~ msgstr "Multi-day time entry" + +#~ msgid "Today by Task" +#~ msgstr "Today by Task" + +#~ msgid "Start tracking your time to see entries here" +#~ msgstr "Start tracking your time to see entries here" + +#~ msgid "Select Task (Optional)" +#~ msgstr "Select Task (Optional)" + +#~ msgid "Choose a task..." +#~ msgstr "Choose a task..." + +#~ msgid "" +#~ "Tasks list updates after choosing a " +#~ "project. Leave empty to log at " +#~ "project level." +#~ msgstr "" +#~ "Tasks list updates after choosing a " +#~ "project. Leave empty to log at " +#~ "project level." + +#~ msgid "Bulk action completed" +#~ msgstr "Bulk action completed" + +#~ msgid "Bulk action failed" +#~ msgstr "Bulk action failed" + +#~ msgid "DryTrix Logo" +#~ msgstr "DryTrix Logo" + +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Welcome to TimeTracker" + +#~ msgid "Powered by" +#~ msgstr "Powered by" + +#~ msgid "Enter your username to start tracking time" +#~ msgstr "Enter your username to start tracking time" + +#~ msgid "Signing in..." +#~ msgstr "Signing in..." + +#~ msgid "or" +#~ msgstr "or" + +#~ msgid "Sign in with SSO" +#~ msgstr "Sign in with SSO" + +#~ msgid "Internal Tool:" +#~ msgstr "Internal Tool:" + +#~ msgid "This is a private time tracking application for internal use only." +#~ msgstr "This is a private time tracking application for internal use only." + +#~ msgid "Plan and track work" +#~ msgstr "Plan and track work" + +#~ msgid "Type a command or search..." +#~ msgstr "Type a command or search..." + +# Theme toggle +#~ msgid "Switch to light mode" +#~ msgstr "Switch to light mode" + +#~ msgid "Switch to dark mode" +#~ msgstr "Switch to dark mode" + +# About page +#~ msgid "About TimeTracker" +#~ msgstr "About TimeTracker" + +#~ msgid "Developed by DryTrix" +#~ msgstr "Developed by DryTrix" + +#~ msgid "What is" +#~ msgstr "What is" + +#~ msgid "A simple, efficient time tracking solution for teams and individuals." +#~ msgstr "A simple, efficient time tracking solution for teams and individuals." + +#~ msgid "" +#~ "It provides a simple and intuitive " +#~ "interface for tracking time spent on " +#~ "various projects and tasks." +#~ msgstr "" +#~ "It provides a simple and intuitive " +#~ "interface for tracking time spent on " +#~ "various projects and tasks." + +#~ msgid "" +#~ "%(app)s is a web-based time " +#~ "tracking application designed for internal " +#~ "use within organizations." +#~ msgstr "" +#~ "%(app)s is a web-based time " +#~ "tracking application designed for internal " +#~ "use within organizations." + +#~ msgid "Learn more about " +#~ msgstr "Learn more about " + +#~ msgid "Your session expired or the page was open too long. Please try again." +#~ msgstr "" + +#~ msgid "Administrator access required" +#~ msgstr "" + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "" + +#~ msgid "PDF layout updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "" + +#~ msgid "PDF layout reset to defaults" +#~ msgstr "" + +#~ msgid "Username is required" +#~ msgstr "This field is required" + +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" + +#~ msgid "Welcome! Your account has been created." +#~ msgstr "" + +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "" + +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "" + +# Dashboard +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Welcome back," + +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" + +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "" + +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "" + +#~ msgid "Invalid image file." +#~ msgstr "Invalid language" + +#~ msgid "Failed to save avatar on server." +#~ msgstr "Failed to stop timer" + +#~ msgid "Profile updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "" + +#~ msgid "Avatar removed" +#~ msgstr "Remove" + +#~ msgid "Failed to remove avatar." +#~ msgstr "" + +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Single Sign-On is not configured." +#~ msgstr "" + +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" + +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "" + +#~ msgid "Could not create your account due to a database error." +#~ msgstr "" + +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" + +#~ msgid "Event created successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Event updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "You do not have permission to delete this event." +#~ msgstr "" + +#~ msgid "Failed to delete event" +#~ msgstr "Failed to stop timer" + +#~ msgid "Event deleted successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "" + +#~ msgid "Event moved successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Event resized successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "You do not have permission to view this event." +#~ msgstr "" + +#~ msgid "You do not have permission to edit this event." +#~ msgstr "" + +#~ msgid "Note content cannot be empty" +#~ msgstr "" + +#~ msgid "Note added successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error adding note" +#~ msgstr "Error stopping timer" + +#~ msgid "Error adding note: %(error)s" +#~ msgstr "" + +#~ msgid "Note does not belong to this client" +#~ msgstr "" + +#~ msgid "You do not have permission to edit this note" +#~ msgstr "" + +#~ msgid "Error updating note" +#~ msgstr "Error stopping timer" + +#~ msgid "Note updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error updating note: %(error)s" +#~ msgstr "" + +#~ msgid "You do not have permission to delete this note" +#~ msgstr "" + +#~ msgid "Error deleting note" +#~ msgstr "Error stopping timer" + +#~ msgid "Note deleted successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "" + +#~ msgid "You do not have permission to create clients" +#~ msgstr "" + +#~ msgid "Comment content cannot be empty" +#~ msgstr "" + +#~ msgid "Comment must be associated with a project or task" +#~ msgstr "" + +#~ msgid "Comment cannot be associated with both a project and a task" +#~ msgstr "" + +#~ msgid "Invalid parent comment" +#~ msgstr "" + +#~ msgid "Comment added successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error adding comment" +#~ msgstr "Error stopping timer" + +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "" + +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "" + +#~ msgid "Comment updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "" + +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "" + +#~ msgid "Comment deleted successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "" + +#~ msgid "Category name is required" +#~ msgstr "This field is required" + +#~ msgid "Expense category created successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error creating expense category" +#~ msgstr "" + +#~ msgid "Expense category updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error updating expense category" +#~ msgstr "" + +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error deactivating expense category" +#~ msgstr "" + +#~ msgid "Title is required" +#~ msgstr "This field is required" + +#~ msgid "Category is required" +#~ msgstr "This field is required" + +#~ msgid "Amount is required" +#~ msgstr "This field is required" + +#~ msgid "Expense date is required" +#~ msgstr "This field is required" + +#~ msgid "Invalid date format" +#~ msgstr "" + +#~ msgid "Invalid amount format" +#~ msgstr "" + +#~ msgid "Expense created successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error creating expense" +#~ msgstr "" + +#~ msgid "You do not have permission to view this expense" +#~ msgstr "" + +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "" + +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "" + +#~ msgid "Please fill in all required fields" +#~ msgstr "" + +#~ msgid "Expense updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error updating expense" +#~ msgstr "" + +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "" + +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "" + +#~ msgid "Expense deleted successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error deleting expense" +#~ msgstr "" + +#~ msgid "Only administrators can approve expenses" +#~ msgstr "" + +#~ msgid "Only pending expenses can be approved" +#~ msgstr "" + +#~ msgid "Expense approved successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error approving expense" +#~ msgstr "Error stopping timer" + +#~ msgid "Only administrators can reject expenses" +#~ msgstr "" + +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "" + +#~ msgid "Rejection reason is required" +#~ msgstr "This field is required" + +#~ msgid "Expense rejected" +#~ msgstr "Rejected" + +#~ msgid "Error rejecting expense" +#~ msgstr "" + +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "" + +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "" + +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "" + +#~ msgid "Expense marked as reimbursed" +#~ msgstr "" + +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "" + +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "" + +#~ msgid "No file provided" +#~ msgstr "" + +#~ msgid "No file selected" +#~ msgstr "No items selected" + +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "" + +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" + +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" + +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" + +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "" + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "" + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" + +#~ msgid "Mileage entry created successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error creating mileage entry" +#~ msgstr "" + +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "" + +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "" + +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "" + +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error updating mileage entry" +#~ msgstr "" + +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "" + +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error deleting mileage entry" +#~ msgstr "Delete Entry" + +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "" + +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "" + +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error approving mileage entry" +#~ msgstr "" + +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "" + +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "" + +#~ msgid "Mileage entry rejected" +#~ msgstr "" + +#~ msgid "Error rejecting mileage entry" +#~ msgstr "" + +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "" + +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "" + +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "" + +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "" + +#~ msgid "Start date must be before end date" +#~ msgstr "" + +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" + +#~ msgid "Per diem claim created successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error creating per diem claim" +#~ msgstr "" + +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "" + +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "" + +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "" + +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Error updating per diem claim" +#~ msgstr "" + +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "" + +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error deleting per diem claim" +#~ msgstr "" + +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "" + +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "" + +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error approving per diem claim" +#~ msgstr "" + +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "" + +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "" + +#~ msgid "Per diem claim rejected" +#~ msgstr "" + +#~ msgid "Error rejecting per diem claim" +#~ msgstr "" + +#~ msgid "Per diem rate created successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error creating per diem rate" +#~ msgstr "" + +#~ msgid "You do not have permission to access this page" +#~ msgstr "" + +#~ msgid "Role name is required" +#~ msgstr "This field is required" + +#~ msgid "A role with this name already exists" +#~ msgstr "" + +#~ msgid "Could not create role due to a database error" +#~ msgstr "" + +#~ msgid "Role created successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "System roles cannot be edited" +#~ msgstr "" + +#~ msgid "Could not update role due to a database error" +#~ msgstr "" + +#~ msgid "Role updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "You do not have permission to perform this action" +#~ msgstr "" + +#~ msgid "System roles cannot be deleted" +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" + +#~ msgid "Could not delete role due to a database error" +#~ msgstr "" + +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "" + +#~ msgid "User roles updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Project code already in use" +#~ msgstr "" + +#~ msgid "Project is already in favorites" +#~ msgstr "" + +#~ msgid "Project added to favorites" +#~ msgstr "" + +#~ msgid "Failed to add project to favorites" +#~ msgstr "" + +#~ msgid "Project is not in favorites" +#~ msgstr "" + +#~ msgid "Project removed from favorites" +#~ msgstr "" + +#~ msgid "Failed to remove project from favorites" +#~ msgstr "" + +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "" + +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" + +#~ msgid "Cost added successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Cost not found" +#~ msgstr "No timer found" + +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "" + +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" + +#~ msgid "Cost updated successfully" +#~ msgstr "Language updated successfully" + +#~ 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 "" + +#~ 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 "" + +#~ msgid "Extra good added successfully" +#~ msgstr "Operation completed successfully" + +#~ 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 "" + +#~ msgid "Extra good updated successfully" +#~ msgstr "Language updated successfully" + +#~ 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 "Invalid project selected" +#~ msgstr "All Projects" + +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" + +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "" + +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" + +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "" + +#~ msgid "Invalid timezone selected" +#~ msgstr "" + +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "" + +#~ msgid "Settings saved successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Error saving settings" +#~ msgstr "Error stopping timer" + +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "" + +#~ msgid "Preferences updated" +#~ msgstr "" + +#~ msgid "Language updated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Invalid language" +#~ msgstr "Invalid language" + +#~ msgid "Language updated to %(language)s" +#~ msgstr "Language updated to %(language)s" + +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "" + +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" + +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Operation completed successfully" + +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "" + +#~ msgid "You do not have permission to view this goal" +#~ msgstr "" + +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "" + +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Language updated successfully" + +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "" + +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "" + +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "" + +#~ msgid "remaining" +#~ msgstr "Training" + +# Toast and JavaScript UI strings +#~ msgid "Success" +#~ msgstr "Success" + +#~ msgid "Error" +#~ msgstr "Error" + +#~ msgid "Warning" +#~ msgstr "Warning" + +#~ msgid "Information" +#~ msgstr "Information" + +#~ msgid "Loading..." +#~ msgstr "Loading..." + +#~ msgid "Saving..." +#~ msgstr "Saving..." + +#~ msgid "Deleting..." +#~ msgstr "Deleting..." + +#~ msgid "Cancel" +#~ msgstr "Cancel" + +#~ msgid "Confirm" +#~ msgstr "Confirm" + +#~ msgid "Close" +#~ msgstr "Close" + +#~ msgid "Save" +#~ msgstr "Save" + +#~ msgid "Delete" +#~ msgstr "Delete" + +#~ msgid "Edit" +#~ msgstr "Edit" + +#~ msgid "Add" +#~ msgstr "Add" + +#~ msgid "Remove" +#~ msgstr "Remove" + +#~ msgid "Yes" +#~ msgstr "Yes" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "You have unsaved changes. Are you sure you want to leave?" + +#~ msgid "Operation failed" +#~ msgstr "Operation failed" + +#~ msgid "Operation completed successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "No items selected" +#~ msgstr "No items selected" + +#~ msgid "Invalid input" +#~ msgstr "Invalid input" + +#~ msgid "This field is required" +#~ msgstr "This field is required" + +# Timer and action messages +#~ msgid "No active timer" +#~ msgstr "No active timer" + +#~ msgid "Timer stopped" +#~ msgstr "Timer stopped" + +#~ msgid "Failed to stop timer" +#~ msgstr "Failed to stop timer" + +#~ msgid "Error stopping timer" +#~ msgstr "Error stopping timer" + +#~ msgid "No form to save" +#~ msgstr "No form to save" + +#~ msgid "No timer found" +#~ msgstr "No timer found" + +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Timer stopped due to inactivity" + +#~ msgid "Navigation" +#~ msgstr "" + +#~ msgid "Dashboard" +#~ msgstr "Dashboard" + +#~ msgid "Calendar" +#~ msgstr "Calendar" + +# Navigation and Common +#~ msgid "Time Tracking" +#~ msgstr "Time Tracker" + +#~ msgid "Log Time" +#~ msgstr "Log Time" + +#~ msgid "Projects" +#~ msgstr "Projects" + +#~ msgid "Clients" +#~ msgstr "Clients" + +#~ msgid "Tasks" +#~ msgstr "Tasks" + +#~ msgid "Kanban Board" +#~ msgstr "" + +#~ msgid "Weekly Goals" +#~ msgstr "" + +#~ msgid "Templates" +#~ msgstr "" + +#~ msgid "Finance & Expenses" +#~ msgstr "" + +#~ msgid "Reports" +#~ msgstr "Reports" + +#~ msgid "Invoices" +#~ msgstr "Invoices" + +#~ msgid "Payments" +#~ msgstr "" + +#~ msgid "Expenses" +#~ msgstr "" + +#~ msgid "Mileage" +#~ msgstr "" + +#~ msgid "Per Diem" +#~ msgstr "" + +#~ msgid "Budget Alerts" +#~ msgstr "" + +#~ msgid "Analytics" +#~ msgstr "Analytics" + +#~ msgid "Tools & Data" +#~ msgstr "" + +#~ msgid "Import / Export" +#~ msgstr "" + +#~ msgid "Saved Filters" +#~ msgstr "Toggle Filters" + +#~ msgid "Admin" +#~ msgstr "Admin" + +#~ msgid "Admin Dashboard" +#~ msgstr "Dashboard" + +#~ msgid "Users" +#~ msgstr "Username" + +#~ msgid "API Tokens" +#~ msgstr "" + +#~ msgid "Roles & Permissions" +#~ msgstr "" + +#~ msgid "System Settings" +#~ msgstr "" + +#~ msgid "PDF Layout" +#~ msgstr "" + +#~ msgid "Expense Categories" +#~ msgstr "" + +#~ msgid "Per Diem Rates" +#~ msgstr "" + +#~ msgid "System Info" +#~ msgstr "" + +#~ msgid "Backups" +#~ msgstr "" + +#~ msgid "OIDC Settings" +#~ msgstr "" + +#~ msgid "About" +#~ msgstr "About" + +#~ msgid "Help" +#~ msgstr "Help" + +#~ msgid "Buy me a coffee" +#~ msgstr "" + +#~ msgid "Support TimeTracker" +#~ msgstr "Support TimeTracker" + +#~ msgid "" +#~ "Enjoying TimeTracker? Consider buying me " +#~ "a coffee to support continued " +#~ "development!" +#~ msgstr "" + +#~ msgid "Made with" +#~ msgstr "Made with" + +#~ msgid "by" +#~ msgstr "by" + +#~ msgid "Support TimeTracker development" +#~ msgstr "Support TimeTracker development" + +#~ msgid "Support" +#~ msgstr "Support" + +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Enjoying TimeTracker?" + +#~ msgid "Support continued development with a coffee" +#~ msgstr "" + +#~ msgid "Dismiss" +#~ msgstr "Dismiss" + +#~ msgid "Search" +#~ msgstr "Search" + +#~ msgid "Toggle dark mode" +#~ msgstr "Dark mode" + +# Language names +#~ msgid "Change language" +#~ msgstr "Change language" + +#~ msgid "Language" +#~ msgstr "Language" + +#~ msgid "User menu" +#~ msgstr "Username" + +#~ msgid "Guest" +#~ msgstr "" + +#~ msgid "My Profile" +#~ msgstr "Profile" + +#~ msgid "My Settings" +#~ msgstr "Marketing" + +#~ msgid "Logout" +#~ msgstr "Logout" + +#~ msgid "Profile" +#~ msgstr "Profile" + +#~ msgid "Are you sure you want to" +#~ msgstr "Are you sure you want to delete this?" + +# Model Field Values - Status, Priority, Categories, etc. +# Project statuses +#~ msgid "deactivate" +#~ msgstr "Active" + +# Model Field Values - Status, Priority, Categories, etc. +# Project statuses +#~ msgid "activate" +#~ msgstr "Active" + +#~ msgid "this token?" +#~ msgstr "" + +#~ msgid "Deactivate Token" +#~ msgstr "" + +# Timer and action messages +#~ msgid "Activate Token" +#~ msgstr "No active timer" + +# Model Field Values - Status, Priority, Categories, etc. +# Project statuses +#~ msgid "Deactivate" +#~ msgstr "Active" + +# Model Field Values - Status, Priority, Categories, etc. +# Project statuses +#~ msgid "Activate" +#~ msgstr "Active" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Token" +#~ msgstr "Delete Entry" + +#~ msgid "Email Configuration & Testing" +#~ msgstr "" + +#~ msgid "Configure and test email delivery" +#~ msgstr "" + +#~ msgid "Back to Admin" +#~ msgstr "" + +#~ msgid "Email Configuration" +#~ msgstr "Information" + +#~ msgid "" +#~ "Configure email settings here to save" +#~ " them in the database. Database " +#~ "settings take precedence over environment " +#~ "variables." +#~ msgstr "" + +#~ msgid "Enable Database Email Configuration" +#~ msgstr "" + +#~ msgid "Mail Server" +#~ msgstr "" + +#~ msgid "Mail Port" +#~ msgstr "All Priorities" + +#~ msgid "Use TLS" +#~ msgstr "" + +#~ msgid "Use SSL" +#~ msgstr "" + +#~ msgid "Username" +#~ msgstr "Username" + +#~ msgid "Password" +#~ msgstr "" + +#~ msgid "Leave empty to keep current" +#~ msgstr "" + +#~ msgid "Default Sender" +#~ msgstr "Delete Entry" + +#~ msgid "Save Configuration" +#~ msgstr "" + +#~ msgid "Reset" +#~ msgstr "Sent" + +#~ msgid "Email Configuration Status" +#~ msgstr "" + +#~ msgid "Refresh" +#~ msgstr "" + +#~ msgid "Email is configured!" +#~ msgstr "" + +#~ msgid "Your email settings are properly set up." +#~ msgstr "" + +#~ msgid "Email is not configured" +#~ msgstr "" + +#~ msgid "Please configure email settings in your environment variables." +#~ msgstr "" + +#~ msgid "Configuration Errors" +#~ msgstr "" + +#~ msgid "Configuration Warnings" +#~ msgstr "" + +#~ msgid "Current Email Settings" +#~ msgstr "" + +#~ msgid "Port" +#~ msgstr "Reports" + +#~ msgid "Password Set" +#~ msgstr "" + +#~ msgid "Send Test Email" +#~ msgstr "" + +#~ msgid "Recipient Email Address" +#~ msgstr "" + +#~ msgid "Configuration Guide" +#~ msgstr "" + +#~ msgid "To configure email, set the following environment variables:" +#~ msgstr "" + +#~ msgid "Basic SMTP Settings" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Sender Information" +#~ msgstr "Information" + +#~ msgid "Common SMTP Providers" +#~ msgstr "" + +#~ msgid "Requires app password" +#~ msgstr "" + +#~ msgid "Important Notes" +#~ msgstr "No notes" + +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "" + +#~ msgid "Restart the application after changing email settings" +#~ msgstr "" + +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "" + +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" + +#~ msgid "password is set" +#~ msgstr "" + +#~ msgid "no password set" +#~ msgstr "" + +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "" + +# Toast and JavaScript UI strings +#~ msgid "Success!" +#~ msgstr "Success" + +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "" + +#~ msgid "Please enter a valid email address" +#~ msgstr "" + +#~ msgid "Sending..." +#~ msgstr "Saving..." + +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "" + +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "Dashboard" + +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "" + +#~ msgid "Test Configuration" +#~ msgstr "" + +#~ msgid "OIDC Configuration" +#~ msgstr "Information" + +#~ msgid "Status" +#~ msgstr "Status" + +#~ msgid "Enabled" +#~ msgstr "Table" + +#~ msgid "Disabled" +#~ msgstr "Table" + +#~ msgid "Auth Method" +#~ msgstr "" + +#~ msgid "Issuer" +#~ msgstr "" + +#~ msgid "Not configured" +#~ msgstr "" + +#~ msgid "Client ID" +#~ msgstr "Clients" + +#~ msgid "Client Secret" +#~ msgstr "Clients" + +#~ msgid "Set" +#~ msgstr "Sent" + +#~ msgid "Not set" +#~ msgstr "Notes" + +#~ msgid "Redirect URI" +#~ msgstr "Credit Card" + +#~ msgid "Auto-generated" +#~ msgstr "" + +# Toast and JavaScript UI strings +#~ msgid "Scopes" +#~ msgstr "Success" + +#~ msgid "Claim Mapping" +#~ msgstr "" + +#~ msgid "Username Claim" +#~ msgstr "Username" + +#~ msgid "Email Claim" +#~ msgstr "" + +#~ msgid "Full Name Claim" +#~ msgstr "" + +#~ msgid "Groups Claim" +#~ msgstr "" + +#~ msgid "Admin Group" +#~ msgstr "Admin" + +#~ msgid "Admin Emails" +#~ msgstr "" + +#~ msgid "Post-Logout URI" +#~ msgstr "" + +#~ msgid "Provider Metadata" +#~ msgstr "" + +#~ msgid "Error loading metadata:" +#~ msgstr "Error stopping timer" + +#~ msgid "Discovery endpoint:" +#~ msgstr "" + +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "" + +#~ msgid "Endpoints" +#~ msgstr "Reports" + +#~ msgid "Authorization" +#~ msgstr "Duration" + +#~ msgid "Token" +#~ msgstr "" + +#~ msgid "UserInfo" +#~ msgstr "Info" + +#~ msgid "End Session" +#~ msgstr "" + +#~ msgid "JWKS URI" +#~ msgstr "" + +#~ msgid "Supported Features" +#~ msgstr "" + +#~ msgid "Response Types" +#~ msgstr "" + +#~ msgid "Grant Types" +#~ msgstr "" + +#~ msgid "Auth Methods" +#~ msgstr "" + +#~ msgid "Claims" +#~ msgstr "Clients" + +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" + +#~ msgid "OIDC Users" +#~ msgstr "" + +#~ msgid "Email" +#~ msgstr "Meals" + +#~ msgid "Full Name" +#~ msgstr "Fully Paid" + +#~ msgid "Role" +#~ msgstr "Profile" + +# Login +#~ msgid "Last Login" +#~ msgstr "Login" + +#~ msgid "OIDC Subject" +#~ msgstr "" + +#~ msgid "Actions" +#~ msgstr "Actions" + +#~ msgid "Inactive" +#~ msgstr "Inactive" + +#~ msgid "User" +#~ msgstr "Username" + +#~ msgid "Never" +#~ msgstr "" + +#~ msgid "Details" +#~ msgstr "Meals" + +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "" + +#~ msgid "Environment Variables Reference" +#~ msgstr "" + +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "" + +#~ msgid "Variable" +#~ msgstr "Partial" + +#~ msgid "Description" +#~ msgstr "Duration" + +#~ msgid "Example" +#~ msgstr "" + +#~ msgid "Authentication method" +#~ msgstr "" + +#~ msgid "OIDC provider issuer URL" +#~ msgstr "" + +#~ msgid "Client ID from OIDC provider" +#~ msgstr "" + +#~ msgid "Client secret from OIDC provider" +#~ msgstr "" + +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "" + +#~ msgid "Requested scopes" +#~ msgstr "" + +#~ msgid "Claim containing username" +#~ msgstr "Please enter a username" + +#~ 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 User Details" +#~ msgstr "" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "" + +#~ msgid "User Profile" +#~ msgstr "Profile" + +# Model Field Values - Status, Priority, Categories, etc. +# Project statuses +#~ msgid "Active" +#~ msgstr "Active" + +#~ msgid "Preferred Language" +#~ msgstr "Language" + +#~ msgid "Theme" +#~ msgstr "Home" + +#~ msgid "Created At" +#~ msgstr "Started at" + +#~ msgid "Unknown" +#~ msgstr "" + +#~ msgid "OIDC Information" +#~ msgstr "Information" + +#~ msgid "OIDC Issuer" +#~ msgstr "" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "" + +#~ msgid "Authentication Method" +#~ msgstr "" + +#~ msgid "Local" +#~ msgstr "total" + +#~ 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 "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" + +#~ msgid "Activity Statistics" +#~ msgstr "" + +#~ msgid "Time Entries" +#~ msgstr "Find entries" + +#~ msgid "None" +#~ msgstr "Done" + +# Timer and action messages +#~ msgid "Active Timer" +#~ msgstr "No active timer" + +#~ msgid "Tasks Created" +#~ msgstr "" + +#~ msgid "Edit User" +#~ msgstr "Edit entry" + +#~ msgid "View All Users" +#~ msgstr "View All" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Are you sure you want to delete the time entry for" + +#~ msgid "Remove Logo" +#~ msgstr "Remove" + +#~ msgid "Admin Access" +#~ msgstr "" + +#~ msgid "Migrate to new role system" +#~ msgstr "" + +#~ msgid "Migrate" +#~ msgstr "" + +#~ msgid "Roles" +#~ msgstr "Profile" + +#~ msgid "No users found." +#~ msgstr "No timer found" + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" + +#~ msgid "Cannot Delete User" +#~ msgstr "Delete Entry" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete User" +#~ msgstr "Delete Entry" + +#~ msgid "System Permissions" +#~ msgstr "" + +#~ msgid "All available permissions in the system" +#~ msgstr "" + +#~ msgid "Back to Roles" +#~ msgstr "" + +#~ msgid "permissions" +#~ msgstr "Version" + +#~ 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 "Edit entry" + +#~ 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 "Version" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "" + +#~ msgid "Toggle All" +#~ msgstr "Toggle Filters" + +#~ msgid "Update Role" +#~ msgstr "" + +#~ msgid "Create Role" +#~ msgstr "" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "" + +#~ msgid "View Permissions" +#~ msgstr "Version" + +#~ msgid "Total Roles" +#~ msgstr "total" + +#~ msgid "System Roles" +#~ msgstr "" + +#~ msgid "Custom Roles" +#~ msgstr "" + +#~ msgid "Assigned Users" +#~ msgstr "" + +#~ msgid "Type" +#~ msgstr "Stripe" + +#~ msgid "Default role" +#~ msgstr "" + +#~ msgid "user" +#~ msgstr "Username" + +#~ msgid "users" +#~ msgstr "Username" + +#~ msgid "No users" +#~ msgstr "No notes" + +#~ msgid "System" +#~ msgstr "" + +#~ msgid "Custom" +#~ msgstr "" + +#~ msgid "View" +#~ msgstr "Review" + +#~ msgid "Permissions for" +#~ msgstr "" + +#~ msgid "No permissions assigned." +#~ msgstr "Operation failed" + +#~ msgid "No roles found." +#~ msgstr "No timer found" + +#~ 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 "Are you sure you want to delete this?" + +#~ msgid "Delete Role" +#~ msgstr "Delete" + +#~ msgid "No description" +#~ msgstr "Task name or description" + +#~ msgid "Role Information" +#~ msgstr "Information" + +#~ msgid "System Role" +#~ msgstr "" + +#~ msgid "Custom Role" +#~ msgstr "" + +#~ msgid "Total Permissions" +#~ msgstr "" + +#~ msgid "Created" +#~ msgstr "Rejected" + +#~ 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 "Bank Transfer" + +#~ msgid "Manage Roles for" +#~ msgstr "Manage projects" + +#~ msgid "Assign Roles" +#~ msgstr "In Progress" + +#~ 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 "Analytics Dashboard" +#~ msgstr "Dashboard" + +#~ msgid "Last 7 days" +#~ msgstr "" + +#~ msgid "Last 30 days" +#~ msgstr "" + +#~ msgid "Last 90 days" +#~ msgstr "" + +#~ msgid "Last year" +#~ msgstr "" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "" + +#~ msgid "Total Hours" +#~ msgstr "total" + +#~ msgid "Billable Hours" +#~ msgstr "Set Billable" + +#~ msgid "Active Projects" +#~ msgstr "All Projects" + +#~ msgid "Avg Daily Hours" +#~ msgstr "" + +#~ msgid "Daily Hours Trend" +#~ msgstr "" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Set Non-billable" + +#~ msgid "Hours by Project" +#~ msgstr "Choose a project..." + +#~ msgid "Weekly Trends" +#~ msgstr "" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Hours Today" + +#~ 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 "Hours" +#~ msgstr "Hours Today" + +#~ msgid "Date" +#~ msgstr "Date" + +#~ msgid "Hour of Day" +#~ msgstr "Hours Today" + +#~ msgid "Revenue" +#~ msgstr "Review" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Reports" + +#~ msgid "vs previous period" +#~ msgstr "" + +#~ msgid "of total" +#~ msgstr "total" + +#~ msgid "Potential Revenue" +#~ msgstr "" + +#~ msgid "Avg rate:" +#~ msgstr "" + +#~ msgid "Trend" +#~ msgstr "" + +#~ msgid "active projects" +#~ msgstr "All Projects" + +#~ msgid "Insights & Recommendations" +#~ msgstr "" + +# Model Field Values - Status, Priority, Categories, etc. +# Project statuses +#~ msgid "Cumulative" +#~ msgstr "Active" + +#~ msgid "Billable Distribution" +#~ msgstr "" + +#~ msgid "Task Status Overview" +#~ msgstr "" + +#~ msgid "Tasks Completed" +#~ msgstr "Completed" + +#~ msgid "In Progress" +#~ msgstr "In Progress" + +#~ msgid "To Do" +#~ msgstr "To Do" + +#~ msgid "Revenue by Project" +#~ msgstr "Select Project" + +#~ msgid "Payments Over Time" +#~ msgstr "" + +#~ msgid "Payment Status" +#~ msgstr "Timer Status" + +#~ msgid "Payment Methods" +#~ msgstr "" + +#~ msgid "Revenue vs Payments" +#~ msgstr "" + +#~ msgid "Collection Rate" +#~ msgstr "" + +#~ msgid "Project Completion Rate" +#~ msgstr "" + +#~ msgid "Billable" +#~ msgstr "Set Billable" + +#~ msgid "Non-Billable" +#~ msgstr "Set Non-billable" + +#~ msgid "Completed" +#~ msgstr "Completed" + +#~ msgid "Review" +#~ msgstr "Review" + +#~ msgid "Cancelled" +#~ msgstr "Cancelled" + +#~ msgid "Completion Rate (%)" +#~ msgstr "" + +#~ msgid "Mobile insights overview" +#~ msgstr "" + +#~ msgid "Daily Avg" +#~ msgstr "" + +#~ msgid "Daily Hours" +#~ msgstr "" + +#~ msgid "Top Projects" +#~ msgstr "Projects" + +# Login +#~ msgid "Login" +#~ msgstr "Login" + +#~ msgid "Track time. Stay organized." +#~ msgstr "" + +#~ msgid "Sign in to your account" +#~ msgstr "Sign in to your account to start tracking your time" + +#~ msgid "Sign in" +#~ msgstr "Sign In" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "" + +#~ msgid "Or continue with" +#~ msgstr "Continue" + +#~ msgid "Single Sign-On" +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "" + +#~ msgid "Critical Alerts" +#~ msgstr "Critical" + +#~ msgid "Projects with Budgets" +#~ msgstr "" + +#~ msgid "Warning Alerts" +#~ msgstr "Warning" + +# Timer and action messages +#~ msgid "Active Alerts" +#~ msgstr "No active timer" + +#~ msgid "Acknowledge" +#~ msgstr "" + +#~ msgid "Project Budget Status" +#~ msgstr "" + +#~ msgid "Project" +#~ msgstr "Project" + +#~ msgid "Budget" +#~ msgstr "Over Budget" + +#~ msgid "Consumed" +#~ msgstr "Continue" + +#~ msgid "Remaining" +#~ msgstr "Training" + +#~ msgid "Progress" +#~ msgstr "In Progress" + +#~ msgid "over" +#~ msgstr "Overdue" + +#~ msgid "Over Budget" +#~ msgstr "Over Budget" + +#~ msgid "Critical" +#~ msgstr "Critical" + +#~ msgid "Healthy" +#~ msgstr "" + +#~ msgid "No projects with budgets found" +#~ msgstr "" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "" + +#~ msgid "Back to Dashboard" +#~ msgstr "Dashboard" + +#~ msgid "View Project" +#~ msgstr "Project" + +#~ msgid "Total Budget" +#~ msgstr "Over Budget" + +#~ 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 "Training" + +#~ msgid "Confidence Level" +#~ msgstr "" + +#~ msgid "No completion estimate available" +#~ msgstr "" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "" + +#~ msgid "Average" +#~ msgstr "" + +#~ msgid "Change" +#~ msgstr "Cancel" + +#~ msgid "Resource Allocation" +#~ msgstr "" + +#~ msgid "Total Cost" +#~ msgstr "total" + +#~ msgid "Hourly Rate" +#~ msgstr "" + +#~ msgid "Team Member" +#~ msgstr "" + +#~ msgid "Cost" +#~ msgstr "Close" + +#~ msgid "Hours %" +#~ msgstr "Hours Today" + +#~ msgid "Cost %" +#~ msgstr "" + +#~ msgid "Entries" +#~ msgstr "Find entries" + +#~ msgid "Date & Time" +#~ msgstr "" + +#~ msgid "Duration" +#~ msgstr "Duration" + +#~ msgid "Location" +#~ msgstr "Actions" + +#~ msgid "Task" +#~ msgstr "Tasks" + +#~ msgid "Client" +#~ msgstr "Clients" + +#~ msgid "Reminder" +#~ msgstr "" + +#~ msgid "minutes before" +#~ msgstr "" + +#~ msgid "hours before" +#~ msgstr "Hours Today" + +#~ msgid "days before" +#~ msgstr "Dashboard" + +#~ msgid "Recurring" +#~ msgstr "" + +#~ msgid "Until" +#~ msgstr "" + +#~ msgid "Last Updated" +#~ msgstr "" + +#~ msgid "Back to Calendar" +#~ msgstr "Calendar" + +#~ msgid "Delete Event" +#~ msgstr "Delete Entry" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Edit Event" +#~ msgstr "Edit entry" + +#~ msgid "New Event" +#~ msgstr "" + +#~ msgid "Title" +#~ msgstr "Idle" + +#~ msgid "Start Date" +#~ msgstr "Started at" + +#~ msgid "Start Time" +#~ msgstr "Start Timer" + +#~ msgid "End Date" +#~ msgstr "Date" + +# Mobile +#~ msgid "End Time" +#~ msgstr "Log time" + +#~ msgid "All Day Event" +#~ msgstr "" + +#~ msgid "Event Type" +#~ msgstr "" + +#~ msgid "Event" +#~ msgstr "Sent" + +#~ msgid "Meeting" +#~ msgstr "Marketing" + +#~ msgid "Appointment" +#~ msgstr "" + +#~ msgid "Deadline" +#~ msgstr "Admin" + +#~ msgid "-- None --" +#~ msgstr "" + +#~ msgid "No reminder" +#~ msgstr "" + +#~ msgid "5 minutes before" +#~ msgstr "" + +#~ msgid "15 minutes before" +#~ msgstr "" + +#~ msgid "30 minutes before" +#~ msgstr "" + +#~ msgid "1 hour before" +#~ msgstr "" + +#~ msgid "1 day before" +#~ msgstr "" + +#~ msgid "Color" +#~ msgstr "Close" + +#~ 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 "" + +#~ msgid "Recurrence End Date" +#~ msgstr "Recent Entries" + +#~ msgid "Update Event" +#~ msgstr "" + +#~ msgid "Create Event" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "" + +#~ msgid "Day" +#~ msgstr "h today" + +#~ msgid "Week" +#~ msgstr "" + +#~ msgid "Month" +#~ msgstr "Other" + +#~ msgid "Today" +#~ msgstr "h today" + +#~ msgid "Events" +#~ msgstr "Clients" + +#~ msgid "Loading calendar..." +#~ msgstr "Loading..." + +#~ msgid "Event Details" +#~ msgstr "Recent Entries" + +#~ msgid "Edit Client Note" +#~ msgstr "Edit entry" + +#~ msgid "Back to Client" +#~ msgstr "Skip to content" + +#~ msgid "Client:" +#~ msgstr "Clients" + +#~ msgid "Created on" +#~ msgstr "" + +#~ msgid "Last edited on" +#~ msgstr "" + +#~ msgid "Note Content" +#~ msgstr "Skip to content" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "" + +#~ msgid "Mark as important" +#~ msgstr "" + +#~ msgid "Save Changes" +#~ msgstr "" + +#~ msgid "Create Client" +#~ msgstr "Clients" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" + +#~ msgid "Back to Clients" +#~ msgstr "Clients" + +#~ msgid "Client Name" +#~ msgstr "Clients" + +#~ msgid "Enter client name" +#~ msgstr "Enter your username" + +#~ msgid "Default Hourly Rate" +#~ msgstr "" + +#~ msgid "e.g. 75.00" +#~ msgstr "" + +#~ 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 "" + +#~ msgid "Phone" +#~ msgstr "Home" + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "" + +#~ msgid "Address" +#~ msgstr "Add" + +#~ msgid "Client address" +#~ msgstr "Clients" + +#~ 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 "Information" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "" + +#~ msgid "Edit Client" +#~ msgstr "Edit entry" + +#~ msgid "Update Client" +#~ msgstr "Clients" + +#~ msgid "Client Statistics" +#~ msgstr "" + +#~ msgid "Total Projects" +#~ msgstr "All Projects" + +#~ msgid "Est. Total Cost" +#~ msgstr "" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "" + +#~ msgid "Change Client Status" +#~ msgstr "" + +#~ msgid "Mark Inactive" +#~ msgstr "Inactive" + +#~ msgid "Activate client?" +#~ msgstr "" + +#~ msgid "Activate Client" +#~ msgstr "" + +#~ msgid "Delete Client" +#~ msgstr "Delete Entry" + +#~ msgid "Archived" +#~ msgstr "Archived" + +#~ msgid "Internal Notes" +#~ msgstr "Internal Tool" + +#~ msgid "Add Note" +#~ msgstr "No notes" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "" + +#~ msgid "Save Note" +#~ msgstr "Sent" + +#~ msgid "edited" +#~ msgstr "Edit" + +#~ 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 "Are you sure you want to delete this note?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Note" +#~ msgstr "Delete" + +#~ msgid "Edited on" +#~ msgstr "Edit entry" + +#~ msgid "Reply" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Clients" + +#~ msgid "Add Comment" +#~ msgstr "" + +#~ msgid "Your Comment" +#~ 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 "Post Comment" +#~ msgstr "" + +#~ msgid "No comments yet" +#~ msgstr "No recent entries" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "" + +#~ msgid "Add First Comment" +#~ msgstr "" + +#~ msgid "Edit Comment" +#~ msgstr "Edit entry" + +#~ msgid "Back" +#~ msgstr "" + +#~ msgid "Editing comment on:" +#~ msgstr "" + +#~ msgid "Originally posted on" +#~ msgstr "" + +#~ msgid "Comment Content" +#~ msgstr "Skip to content" + +#~ msgid "Recent Activity" +#~ msgstr "Recent Entries" + +#~ msgid "All Activities" +#~ msgstr "All Priorities" + +#~ msgid "Time Templates" +#~ msgstr "Timer Status" + +#~ msgid "No recent activity" +#~ msgstr "No recent entries" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "" + +#~ msgid "Load More" +#~ msgstr "" + +#~ msgid "Failed to load activities" +#~ msgstr "Failed to stop timer" + +#~ msgid "Home" +#~ msgstr "Home" + +#~ msgid "400 Bad Request" +#~ msgstr "" + +#~ msgid "Invalid Request" +#~ msgstr "Invalid input" + +#~ 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 "Go to Dashboard" +#~ msgstr "Dashboard" + +# Dashboard +#~ msgid "Go Back" +#~ msgstr "Welcome back," + +#~ msgid "403 Forbidden" +#~ msgstr "" + +#~ msgid "Access Denied" +#~ 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 "Page Not Found" +#~ msgstr "No timer found" + +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "" + +#~ msgid "Server Error" +#~ 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 "Are you sure you want to delete this expense?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Expense" +#~ msgstr "Delete Entry" + +#~ 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" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "" + +#~ msgid "Choose CSV File" +#~ msgstr "" + +#~ msgid "Download Template" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "" + +#~ 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 backup file" +#~ msgstr "" + +#~ msgid "Restore Backup" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "" + +#~ msgid "Export Data" +#~ msgstr "" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "" + +#~ msgid "Export all your personal data" +#~ msgstr "" + +#~ msgid "Export as JSON" +#~ msgstr "" + +#~ msgid "Export as ZIP" +#~ msgstr "Reports" + +#~ msgid "Filtered Export" +#~ msgstr "" + +#~ msgid "Export specific data with filters" +#~ msgstr "" + +#~ msgid "Export with Filters" +#~ msgstr "" + +#~ msgid "Create Backup" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "" + +#~ msgid "Export History" +#~ msgstr "" + +#~ msgid "API Token" +#~ msgstr "" + +#~ msgid "Workspace ID" +#~ msgstr "Overpaid" + +#~ msgid "Import" +#~ msgstr "Reports" + +#~ msgid "Account ID" +#~ msgstr "" + +#~ msgid "Create Invoice" +#~ msgstr "Invoices" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Invoices" + +#~ msgid "Select a project" +#~ msgstr "Select Project" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "" + +#~ msgid "Client Email" +#~ msgstr "Clients" + +#~ msgid "Due Date" +#~ msgstr "Date" + +#~ msgid "Client Address" +#~ msgstr "Clients" + +#~ msgid "Tax Rate (%)" +#~ msgstr "" + +#~ msgid "Notes" +#~ msgstr "Notes" + +#~ msgid "Terms" +#~ msgstr "Other" + +#~ msgid "Tips" +#~ msgstr "Stripe" + +#~ 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 "Invoices" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "" + +#~ msgid "Invoice Items" +#~ msgstr "Invoices" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "" + +#~ msgid "Add Item" +#~ msgstr "" + +#~ msgid "Quantity" +#~ msgstr "" + +#~ msgid "Unit Price" +#~ msgstr "" + +#~ msgid "Action" +#~ msgstr "Actions" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Remove" + +#~ msgid "Items Subtotal" +#~ msgstr "" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "" + +#~ msgid "Add Expense" +#~ msgstr "" + +#~ msgid "Category" +#~ msgstr "" + +#~ msgid "Amount" +#~ msgstr "About" + +#~ 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 "" + +# Expense categories +#~ msgid "Travel" +#~ msgstr "Travel" + +#~ msgid "Meals" +#~ msgstr "Meals" + +#~ msgid "Accommodation" +#~ msgstr "Accommodation" + +#~ msgid "Supplies" +#~ msgstr "Supplies" + +#~ msgid "Software" +#~ msgstr "Software" + +#~ msgid "Equipment" +#~ msgstr "Equipment" + +#~ msgid "Services" +#~ msgstr "Services" + +#~ msgid "Marketing" +#~ msgstr "Marketing" + +#~ msgid "Training" +#~ msgstr "Training" + +#~ msgid "Other" +#~ msgstr "Other" + +#~ 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 "Name" +#~ msgstr "Username" + +#~ msgid "Qty" +#~ msgstr "" + +#~ msgid "Price" +#~ msgstr "Profile" + +#~ msgid "SKU" +#~ msgstr "" + +#~ msgid "e.g., Software License" +#~ msgstr "" + +#~ msgid "Product" +#~ msgstr "Project" + +#~ msgid "Service" +#~ msgstr "Services" + +#~ msgid "Material" +#~ msgstr "Partial" + +#~ msgid "License" +#~ msgstr "Clients" + +#~ msgid "Remove good" +#~ msgstr "Remove" + +#~ msgid "Goods Subtotal" +#~ msgstr "" + +#~ msgid "Live Preview" +#~ msgstr "Review" + +#~ msgid "Issue Date" +#~ msgstr "" + +#~ msgid "Payment" +#~ msgstr "Equipment" + +#~ msgid "Currency" +#~ msgstr "" + +#~ msgid "Items" +#~ msgstr "Notes" + +#~ msgid "Goods" +#~ msgstr "" + +#~ msgid "Subtotal" +#~ msgstr "total" + +#~ msgid "Tax" +#~ msgstr "" + +#~ msgid "Total" +#~ msgstr "total" + +# Payment statuses +#~ msgid "Amount Paid" +#~ msgstr "Unpaid" + +#~ msgid "Outstanding" +#~ msgstr "Training" + +#~ msgid "Quick Actions" +#~ msgstr "Quick Actions" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "" + +#~ msgid "Record Payment" +#~ msgstr "" + +#~ msgid "Export PDF" +#~ msgstr "" + +#~ msgid "Export CSV" +#~ msgstr "Reports" + +#~ msgid "Duplicate Invoice" +#~ msgstr "" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Are you sure you want to delete this?" + +#~ 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 "Bulk Time Entry" + +#~ msgid "Time Entry" +#~ msgstr "Bulk Time Entry" + +#~ msgid "h" +#~ msgstr "h" + +#~ 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 "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 "Delete Invoice" +#~ msgstr "Invoices" + +#~ msgid "Warning:" +#~ msgstr "Warning:" + +#~ msgid "This action cannot be undone." +#~ msgstr "This action cannot be undone." + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" + +#~ msgid "Invoice" +#~ msgstr "Invoices" + +#~ msgid "Company Logo" +#~ msgstr "Company Logo" + +#~ msgid "Website" +#~ msgstr "" + +#~ msgid "Tax ID" +#~ msgstr "Paid" + +#~ msgid "INVOICE" +#~ msgstr "Invoices" + +#~ msgid "Invoice #" +#~ msgstr "Invoices" + +#~ msgid "Bill To" +#~ msgstr "" + +#~ msgid "Quantity (Hours)" +#~ msgstr "" + +#~ msgid "Total Amount" +#~ msgstr "" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "" + +#~ msgid "Expense" +#~ msgstr "" + +#~ msgid "Subtotal:" +#~ msgstr "total" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "" + +#~ msgid "Total Amount:" +#~ msgstr "" + +#~ msgid "Notes:" +#~ msgstr "Notes" + +#~ msgid "Terms:" +#~ msgstr "" + +#~ msgid "Payment Information:" +#~ msgstr "Information" + +#~ msgid "Terms & Conditions:" +#~ msgstr "" + +#~ msgid "Kanban" +#~ msgstr "" + +#~ msgid "All" +#~ msgstr "" + +#~ msgid "Manage Columns" +#~ msgstr "Manage projects" + +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "" + +#~ msgid "Kanban board" +#~ msgstr "" + +#~ msgid "moved to" +#~ msgstr "" + +#~ msgid "No tasks in this column." +#~ msgstr "" + +#~ msgid "Manage Kanban Columns" +#~ msgstr "" + +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "" + +#~ msgid "Add Column" +#~ msgstr "" + +#~ msgid "Kanban columns list" +#~ msgstr "" + +#~ msgid "Key" +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Table" + +#~ msgid "Icon" +#~ msgstr "" + +#~ msgid "Complete?" +#~ msgstr "Completed" + +#~ msgid "Drag to reorder" +#~ msgstr "" + +#~ msgid "Edit column" +#~ msgstr "" + +# Timer and action messages +#~ msgid "Toggle active state" +#~ msgstr "No active timer" + +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" + +#~ msgid "Tips:" +#~ msgstr "" + +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "" + +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" + +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" + +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" + +#~ msgid "Delete Kanban Column" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Key:" +#~ msgstr "" + +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" + +#~ msgid "Delete Column" +#~ msgstr "Delete Entry" + +#~ msgid "Columns reordered successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "" + +#~ msgid "Create Kanban Column" +#~ msgstr "" + +#~ msgid "Add a new column to your kanban board" +#~ msgstr "" + +#~ msgid "Create Kanban Column form" +#~ msgstr "" + +#~ msgid "Column Label" +#~ msgstr "" + +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "" + +#~ msgid "The display name shown on the kanban board" +#~ msgstr "" + +#~ msgid "Column Key" +#~ msgstr "" + +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" + +#~ msgid "Icon Class" +#~ msgstr "" + +#~ msgid "Font Awesome icon class" +#~ msgstr "" + +#~ msgid "Browse icons" +#~ msgstr "" + +#~ msgid "Primary (Blue)" +#~ msgstr "" + +#~ msgid "Secondary (Gray)" +#~ msgstr "" + +# Toast and JavaScript UI strings +#~ msgid "Success (Green)" +#~ msgstr "Success" + +#~ msgid "Danger (Red)" +#~ msgstr "" + +#~ msgid "Warning (Yellow)" +#~ msgstr "Warning" + +#~ msgid "Info (Cyan)" +#~ msgstr "" + +#~ msgid "Dark" +#~ msgstr "Dark mode" + +#~ msgid "Bootstrap color class for styling" +#~ msgstr "" + +#~ msgid "Mark as Complete State" +#~ msgstr "" + +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "" + +#~ msgid "Create Column" +#~ msgstr "" + +#~ msgid "Note:" +#~ msgstr "Notes" + +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" + +#~ msgid "Edit Kanban Column" +#~ msgstr "" + +#~ msgid "Modify column settings" +#~ msgstr "" + +#~ msgid "Edit Kanban Column form" +#~ msgstr "" + +#~ msgid "The key cannot be changed after creation" +#~ msgstr "" + +#~ msgid "Preview" +#~ msgstr "Review" + +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "" + +#~ msgid "System Column:" +#~ msgstr "" + +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Professional Time Management" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" + +#~ msgid "Project Management" +#~ msgstr "Professional Time Management" + +#~ msgid "Invoicing" +#~ msgstr "Invoices" + +#~ msgid "Smart Timers" +#~ msgstr "Start Timer" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "" + +#~ msgid "Client Management" +#~ msgstr "Professional Time Management" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "" + +#~ msgid "Task System" +#~ msgstr "Tasks" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "" + +#~ msgid "PDF Invoices" +#~ msgstr "Invoices" + +#~ 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 "" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "" + +#~ msgid "REST API for integrations" +#~ msgstr "" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "" + +#~ msgid "Platform Support" +#~ msgstr "" + +#~ msgid "Web Application" +#~ msgstr "" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "" + +#~ msgid "Mobile responsive design" +#~ msgstr "" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "" + +#~ msgid "Operating Systems" +#~ msgstr "Operation failed" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "" + +#~ msgid "Raspberry Pi support" +#~ msgstr "" + +#~ msgid "Dockerized deployment" +#~ msgstr "" + +#~ msgid "Database Support" +#~ msgstr "" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "" + +#~ msgid "Backup and restoration tools" +#~ msgstr "" + +#~ msgid "Technical Specifications" +#~ msgstr "" + +#~ msgid "Technology Stack" +#~ msgstr "" + +#~ msgid "Backend" +#~ msgstr "" + +#~ msgid "Frontend" +#~ msgstr "" + +#~ msgid "Database" +#~ msgstr "Date" + +#~ msgid "Deployment" +#~ msgstr "Equipment" + +#~ msgid "Key Capabilities" +#~ msgstr "" + +#~ msgid "Real-time" +#~ msgstr "" + +#~ msgid "i18n" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "" + +#~ msgid "Mobile" +#~ msgstr "Profile" + +#~ 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 "" + +#~ msgid "Community-driven development" +#~ msgstr "" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "" + +#~ msgid "Deployment Options" +#~ msgstr "" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "" + +#~ msgid "View on GitHub" +#~ msgstr "" + +#~ msgid "Support Development" +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "" + +#~ msgid "Documentation" +#~ msgstr "Duration" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "" + +#~ msgid "View Help" +#~ msgstr "View All" + +#~ msgid "System Information" +#~ msgstr "Information" + +#~ 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 "Here's a quick overview of your work." +#~ msgstr "" + +#~ msgid "Timer" +#~ msgstr "Stop Timer" + +#~ msgid "Start Timer" +#~ msgstr "Start Timer" + +#~ msgid "Started at" +#~ msgstr "Started at" + +#~ msgid "Stop Timer" +#~ msgstr "Stop Timer" + +# Timer and action messages +#~ msgid "No active timer." +#~ msgstr "No active timer" + +#~ msgid "Tags" +#~ msgstr "Tasks" + +#~ msgid "Edit entry" +#~ msgstr "Edit entry" + +#~ msgid "Duplicate entry" +#~ msgstr "Delete Entry" + +#~ msgid "Delete entry" +#~ msgstr "Delete entry" + +#~ msgid "No recent entries found." +#~ msgstr "No recent entries" + +#~ msgid "Weekly Goal" +#~ msgstr "" + +#~ msgid "Days Left" +#~ msgstr "" + +#~ msgid "Need" +#~ msgstr "Cancelled" + +#~ msgid "to reach goal" +#~ msgstr "" + +#~ msgid "No Weekly Goal" +#~ msgstr "" + +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "" + +#~ msgid "Create Goal" +#~ msgstr "" + +#~ msgid "Top Projects (30 days)" +#~ msgstr "" + +#~ msgid "No activity in the last 30 days." +#~ msgstr "" + +#~ msgid "Task (optional)" +#~ msgstr "Notes (Optional)" + +#~ msgid "Notes (optional)" +#~ msgstr "Notes (Optional)" + +#~ msgid "What are you working on?" +#~ msgstr "What are you working on?" + +#~ msgid "Or use a template" +#~ msgstr "" + +#~ msgid "View all templates" +#~ msgstr "View All" + +#~ msgid "Start" +#~ msgstr "Status" + +#~ msgid "Complete documentation and user guide" +#~ msgstr "" + +#~ msgid "Quick Navigation" +#~ msgstr "Quick Actions" + +#~ msgid "Filter sections..." +#~ msgstr "Filter Tasks" + +#~ msgid "Quick Start" +#~ msgstr "Quick Actions" + +#~ msgid "Task Management" +#~ msgstr "" + +#~ msgid "Reports & Analytics" +#~ msgstr "View analytics" + +#~ msgid "Productivity Features" +#~ msgstr "" + +#~ msgid "Admin Features" +#~ msgstr "Find entries" + +#~ msgid "Mobile Usage" +#~ msgstr "" + +#~ msgid "Troubleshooting" +#~ msgstr "" + +#~ msgid "TimeTracker Help Center" +#~ msgstr "TimeTracker" + +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "" + +#~ msgid "Start Tracking Time" +#~ msgstr "Start Timer" + +#~ msgid "View Projects" +#~ msgstr "Projects" + +#~ msgid "Generate Reports" +#~ msgstr "Reports" + +#~ msgid "Quick Start Guide" +#~ msgstr "Quick Actions" + +#~ msgid "For New Users" +#~ msgstr "" + +#~ msgid "Log in with your username (no password required)" +#~ msgstr "" + +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "" + +#~ msgid "Start your first timer on an existing project" +#~ msgstr "" + +#~ msgid "View your time entries in reports" +#~ msgstr "" + +#~ msgid "For Administrators" +#~ msgstr "" + +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "" + +#~ msgid "Create projects and assign them to clients" +#~ msgstr "" + +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "" + +#~ msgid "Manage users and permissions" +#~ msgstr "" + +#~ msgid "Pro Tip:" +#~ msgstr "" + +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" + +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" + +#~ msgid "Manual Entry" +#~ msgstr "Manual entry" + +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "" + +#~ msgid "Starting a Timer" +#~ msgstr "Start Timer" + +#~ msgid "Navigate to the Timer page or dashboard" +#~ msgstr "" + +#~ msgid "Select a project from the dropdown" +#~ msgstr "" + +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "" + +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "" + +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "" + +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Start Timer" + +#~ msgid "Timer Features" +#~ msgstr "Timer Status" + +#~ msgid "Real-time duration display" +#~ msgstr "" + +#~ msgid "Continues running if browser closes" +#~ msgstr "" + +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "" + +#~ msgid "One active timer per user (configurable)" +#~ msgstr "" + +#~ msgid "WebSocket live updates" +#~ msgstr "" + +#~ msgid "Manual Time Entry" +#~ msgstr "Manual entry" + +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" + +#~ msgid "Required Information" +#~ msgstr "Information" + +#~ msgid "Project selection" +#~ msgstr "Projects" + +#~ msgid "Start date and time" +#~ msgstr "Start Timer" + +#~ msgid "End date and time" +#~ msgstr "" + +#~ msgid "Optional Information" +#~ msgstr "Information" + +#~ msgid "Task assignment" +#~ msgstr "" + +#~ msgid "Description/notes" +#~ msgstr "" + +#~ msgid "Tags for categorization" +#~ msgstr "" + +#~ msgid "Billable status override" +#~ msgstr "" + +#~ msgid "Advanced Time Entry Features" +#~ msgstr "" + +#~ msgid "Bulk Entry" +#~ msgstr "Bulk Entry" + +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" + +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" + +#~ msgid "Calendar View" +#~ msgstr "Calendar" + +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" + +#~ msgid "Project Information" +#~ msgstr "Information" + +#~ msgid "Descriptive project name" +#~ msgstr "" + +#~ msgid "Associated client organization" +#~ msgstr "" + +#~ msgid "Project details and scope" +#~ msgstr "" + +#~ msgid "Active, completed, or archived" +#~ msgstr "" + +#~ msgid "Billing Information" +#~ msgstr "Information" + +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "" + +#~ msgid "Rate for billable time calculations" +#~ msgstr "" + +#~ msgid "Billing Reference" +#~ msgstr "" + +#~ msgid "PO number or billing code" +#~ msgstr "" + +#~ msgid "Project Operations" +#~ msgstr "Projects" + +#~ msgid "Create new projects with client relationships" +#~ msgstr "" + +#~ msgid "Edit existing projects to update details" +#~ msgstr "" + +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "" + +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "" + +#~ msgid "Best Practices" +#~ msgstr "" + +#~ msgid "Use descriptive project names" +#~ msgstr "Select Project" + +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "" + +#~ msgid "Archive instead of delete when possible" +#~ msgstr "" + +#~ msgid "Use billing references for external tracking" +#~ msgstr "" + +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" + +#~ msgid "Client Information" +#~ msgstr "Information" + +#~ msgid "Organization Name" +#~ msgstr "Operation failed" + +#~ msgid "Company or client name" +#~ msgstr "" + +#~ msgid "Primary contact details" +#~ msgstr "" + +#~ msgid "Email & Phone" +#~ msgstr "" + +#~ msgid "Contact information" +#~ msgstr "Information" + +#~ msgid "Business address" +#~ msgstr "" + +#~ msgid "Benefits" +#~ msgstr "" + +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "" + +#~ msgid "Default rates auto-populate projects" +#~ msgstr "" + +#~ msgid "Consistent client naming" +#~ msgstr "" + +#~ msgid "Easier project organization" +#~ msgstr "" + +#~ msgid "Project Count" +#~ msgstr "Project" + +#~ msgid "Total and active projects" +#~ msgstr "Manage projects" + +#~ msgid "Total hours worked" +#~ msgstr "" + +#~ msgid "Cost Estimation" +#~ msgstr "" + +#~ msgid "Estimated billing amounts" +#~ msgstr "" + +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" + +#~ msgid "Task Properties" +#~ msgstr "All Priorities" + +#~ msgid "Name & Description" +#~ msgstr "Task name or description" + +#~ msgid "Clear task identification" +#~ msgstr "" + +#~ msgid "Priority Levels" +#~ msgstr "Priority" + +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "" + +#~ msgid "Due Dates" +#~ msgstr "Date" + +#~ msgid "Deadline tracking" +#~ msgstr "" + +#~ msgid "Assignment" +#~ msgstr "" + +#~ msgid "Task ownership" +#~ msgstr "" + +#~ msgid "Status Tracking" +#~ msgstr "" + +#~ msgid "To Do - Not started" +#~ msgstr "" + +#~ msgid "In Progress - Currently working" +#~ msgstr "" + +#~ msgid "Review - Ready for review" +#~ msgstr "" + +#~ msgid "Done - Completed" +#~ msgstr "Completed" + +#~ msgid "Cancelled - Not needed" +#~ msgstr "" + +# Navigation and Common +#~ msgid "Time Tracking Features" +#~ msgstr "Time Tracker" + +#~ msgid "Start timers directly from tasks" +#~ msgstr "" + +#~ msgid "Link time entries to specific tasks" +#~ msgstr "" + +#~ msgid "Track estimated vs actual hours" +#~ msgstr "" + +#~ msgid "Monitor task progress automatically" +#~ msgstr "" + +#~ msgid "Task Views" +#~ msgstr "Tasks" + +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "" + +#~ msgid "All Tasks - Complete task list" +#~ msgstr "" + +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "" + +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "" + +#~ msgid "Collaboration Features" +#~ msgstr "" + +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "" + +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "" + +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "" + +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "" + +#~ msgid "Markdown Formatting" +#~ msgstr "Information" + +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "" + +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "" + +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "" + +#~ msgid "```code blocks```, tables, images" +#~ msgstr "" + +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" + +#~ msgid "Board Features" +#~ msgstr "" + +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "" + +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "" + +#~ msgid "Filter by project, user, or priority" +#~ msgstr "" + +#~ msgid "Quick search across all tasks" +#~ msgstr "" + +#~ msgid "Using the Kanban Board" +#~ msgstr "" + +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "" + +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "" + +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "" + +#~ msgid "Use filters to focus on specific work" +#~ msgstr "" + +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" + +#~ msgid "Expense Tracking" +#~ msgstr "" + +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" + +#~ msgid "Expense Features" +#~ msgstr "" + +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "" + +#~ msgid "Attach receipt images and documents" +#~ msgstr "" + +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "" + +#~ msgid "Approval workflow for expense requests" +#~ msgstr "" + +#~ msgid "Billing & Reimbursement" +#~ msgstr "" + +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "" + +#~ msgid "Include expenses in client invoices" +#~ msgstr "" + +#~ msgid "Track reimbursement status" +#~ msgstr "" + +#~ msgid "Link expenses to specific projects" +#~ msgstr "" + +#~ msgid "Record Expense" +#~ msgstr "" + +#~ msgid "Enter details and upload receipt" +#~ msgstr "" + +#~ msgid "Submit for Approval" +#~ msgstr "" + +#~ msgid "Admin reviews and approves" +#~ msgstr "" + +#~ msgid "Invoice/Reimburse" +#~ msgstr "Reimbursed" + +#~ msgid "Add to invoice or reimburse" +#~ msgstr "" + +#~ msgid "Track Payment" +#~ msgstr "" + +#~ msgid "Monitor reimbursement status" +#~ msgstr "" + +#~ msgid "Professional Invoicing" +#~ msgstr "Professional Time Management" + +#~ msgid "Professional PDF generation" +#~ msgstr "" + +#~ msgid "Company branding and logos" +#~ msgstr "Company Logo" + +#~ msgid "Automatic invoice numbering" +#~ msgstr "" + +#~ msgid "Tax calculations" +#~ msgstr "Actions" + +#~ msgid "Time Integration" +#~ msgstr "Timer stopped. Duration:" + +#~ msgid "Generate from time entries" +#~ msgstr "Delete Time Entry" + +#~ msgid "Smart grouping by task/project" +#~ msgstr "" + +#~ msgid "Prevent double-billing" +#~ msgstr "" + +#~ msgid "Use project hourly rates" +#~ msgstr "" + +#~ msgid "Set up client and project details" +#~ msgstr "" + +#~ msgid "Add Items" +#~ msgstr "" + +#~ msgid "Generate from time or add manually" +#~ msgstr "" + +#~ msgid "Review & Send" +#~ msgstr "Review" + +#~ msgid "Export PDF and update status" +#~ msgstr "" + +#~ msgid "Monitor status and payments" +#~ msgstr "" + +#~ msgid "Standard Reports" +#~ msgstr "Reports" + +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "" + +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "" + +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "" + +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "" + +#~ msgid "Export Options" +#~ msgstr "Notes (Optional)" + +#~ msgid "CSV Export - For external analysis" +#~ msgstr "" + +#~ msgid "Configurable delimiters" +#~ msgstr "" + +#~ msgid "Custom date ranges" +#~ msgstr "" + +#~ msgid "Filtered data export" +#~ msgstr "" + +#~ msgid "Filter Options" +#~ msgstr "Filter Tasks" + +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "" + +#~ msgid "Project - Filter by specific projects" +#~ msgstr "" + +#~ msgid "User - Filter by team members" +#~ msgstr "" + +#~ msgid "Client - Filter by client organization" +#~ msgstr "" + +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "" + +#~ msgid "Visual Analytics" +#~ msgstr "View analytics" + +#~ msgid "Interactive bar charts" +#~ msgstr "" + +#~ msgid "Time distribution pie charts" +#~ msgstr "" + +#~ msgid "Trend analysis over time" +#~ msgstr "" + +#~ msgid "Mobile-optimized charts" +#~ 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 "" + +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" + +# Command Palette +#~ msgid "Command Palette" +#~ msgstr "Command Palette" + +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "" + +#~ msgid "Opening the Command Palette" +#~ msgstr "Open Command Palette" + +#~ msgid "Press the question mark key" +#~ msgstr "" + +#~ msgid "Quick search" +#~ msgstr "Search" + +#~ msgid "Go to Projects" +#~ msgstr "Projects" + +#~ msgid "Go to Tasks" +#~ msgstr "Tasks" + +#~ msgid "New Time Entry" +#~ msgstr "Delete Time Entry" + +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Keyboard Shortcuts" + +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" + +#~ msgid "Global Search" +#~ msgstr "Search" + +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" + +#~ msgid "Email Notifications" +#~ msgstr "" + +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" + +#~ msgid "Administrator Features" +#~ msgstr "" + +#~ msgid "User Management" +#~ msgstr "Username" + +#~ msgid "Create new users with flexible authentication" +#~ msgstr "" + +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "" + +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "" + +#~ msgid "View user statistics and activity" +#~ msgstr "" + +#~ msgid "Generate API tokens for users" +#~ msgstr "" + +#~ msgid "Access Control" +#~ msgstr "" + +#~ msgid "Granular role-based permissions system" +#~ msgstr "" + +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "" + +#~ msgid "User data access controls" +#~ msgstr "" + +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "" + +#~ msgid "API token management for integrations" +#~ msgstr "" + +#~ msgid "Authentication Methods" +#~ msgstr "" + +#~ msgid "Username-only (simple internal use)" +#~ msgstr "" + +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "" + +#~ msgid "Both methods simultaneously" +#~ msgstr "" + +#~ msgid "Automatic role assignment via groups" +#~ msgstr "" + +#~ msgid "Role & Permission Management" +#~ msgstr "Professional Time Management" + +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "" + +#~ msgid "Set granular permissions per feature" +#~ msgstr "" + +#~ msgid "Assign users to multiple roles" +#~ msgstr "" + +#~ msgid "View and manage all permissions" +#~ msgstr "" + +#~ msgid "General Settings" +#~ msgstr "" + +#~ msgid "Timezone and locale settings" +#~ msgstr "" + +#~ msgid "Currency configuration" +#~ msgstr "" + +#~ msgid "Time rounding rules" +#~ msgstr "" + +#~ msgid "Self-registration settings" +#~ msgstr "" + +#~ msgid "Timer Settings" +#~ msgstr "Timer Status" + +#~ msgid "Idle timeout configuration" +#~ msgstr "" + +# Timer and action messages +#~ msgid "Single active timer mode" +#~ msgstr "No active timer" + +#~ msgid "Timer display preferences" +#~ msgstr "" + +#~ msgid "Notification settings" +#~ msgstr "" + +#~ msgid "Database Management" +#~ msgstr "" + +#~ msgid "Create manual database backups" +#~ msgstr "" + +#~ msgid "View database migration status" +#~ msgstr "" + +#~ msgid "Monitor database performance" +#~ msgstr "" + +#~ msgid "Clean up old data and logs" +#~ msgstr "" + +#~ msgid "System Monitoring" +#~ msgstr "" + +#~ msgid "View system information and health" +#~ msgstr "" + +#~ msgid "Monitor application performance" +#~ msgstr "" + +#~ msgid "Review system logs and errors" +#~ msgstr "" + +#~ msgid "Mobile-Friendly Features" +#~ msgstr "" + +#~ msgid "Optimized for phones and tablets" +#~ msgstr "" + +#~ msgid "Touch-friendly interface" +#~ msgstr "" + +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "" + +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "" + +#~ msgid "Mobile Navigation" +#~ msgstr "" + +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "" + +#~ msgid "Quick access to dashboard" +#~ msgstr "" + +#~ msgid "One-tap time logging" +#~ msgstr "" + +#~ msgid "Mobile-optimized reports" +#~ msgstr "" + +#~ msgid "Installation" +#~ msgstr "Install App" + +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "" + +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "" + +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "" + +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "" + +#~ msgid "PWA Benefits" +#~ msgstr "" + +#~ msgid "Offline capability for basic functions" +#~ msgstr "" + +#~ msgid "Faster loading times" +#~ msgstr "" + +#~ msgid "Native app-like experience" +#~ msgstr "" + +#~ msgid "Push notifications (where supported)" +#~ 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." +#~ 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 "Actions" + +#~ msgid "Still Need Help?" +#~ msgstr "" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "" + +#~ msgid "GitHub Repository" +#~ msgstr "" + +#~ msgid "Report Issue" +#~ msgstr "Reports" + +#~ msgid "Search Results" +#~ msgstr "Search" + +#~ msgid "Search notes or tags" +#~ msgstr "" + +#~ msgid "Results" +#~ msgstr "" + +# Approval statuses +#~ msgid "End" +#~ msgstr "Pending" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "Are you sure you want to delete the time entry for" + +#~ msgid "Previous" +#~ msgstr "" + +#~ msgid "Page" +#~ msgstr "" + +#~ msgid "of" +#~ msgstr "" + +#~ msgid "Next" +#~ msgstr "" + +#~ msgid "No results found" +#~ msgstr "No timer found" + +#~ msgid "Try a different query or check your spelling." +#~ msgstr "" + +#~ msgid "Kanban board columns" +#~ msgstr "" + +#~ msgid "Edit swimlane" +#~ msgstr "" + +#~ msgid "Column" +#~ msgstr "" + +#~ msgid "Add Extra Good" +#~ msgstr "" + +#~ msgid "Add a product or service to" +#~ msgstr "" + +#~ msgid "Back to Project" +#~ msgstr "Select Project" + +#~ msgid "SKU/Product Code" +#~ msgstr "" + +#~ msgid "What happens when you archive a project?" +#~ msgstr "" + +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "" + +#~ msgid "No new time entries can be added to this project" +#~ msgstr "" + +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "" + +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "" + +#~ msgid "Reason for Archiving" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Partial" + +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" + +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" + +#~ msgid "Quick Select" +#~ msgstr "Quick Actions" + +#~ msgid "Project completed successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Project Completed" +#~ msgstr "Completed" + +#~ msgid "Client contract ended" +#~ msgstr "" + +#~ msgid "Contract Ended" +#~ msgstr "" + +#~ msgid "Project cancelled by client" +#~ msgstr "" + +#~ msgid "Project on hold indefinitely" +#~ msgstr "" + +#~ msgid "On Hold" +#~ msgstr "" + +#~ msgid "Maintenance period ended" +#~ msgstr "" + +#~ msgid "Maintenance Ended" +#~ msgstr "" + +#~ msgid "Archive Project" +#~ msgstr "Manage projects" + +#~ msgid "Create Project" +#~ msgstr "Select Project" + +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "All Projects" + +#~ msgid "Project Name" +#~ msgstr "Project" + +#~ msgid "Enter a descriptive project name" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "" + +#~ msgid "Project Code" +#~ msgstr "Project" + +#~ msgid "Short code, e.g., ABC" +#~ msgstr "" + +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Select all" + +#~ msgid "Create new client" +#~ msgstr "" + +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" + +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" + +#~ msgid "Billable Project" +#~ msgstr "All Projects" + +#~ msgid "Enable billing for this project" +#~ msgstr "" + +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "" + +#~ msgid "PO number, contract reference, etc." +#~ msgstr "" + +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" + +#~ msgid "Budget Amount" +#~ msgstr "" + +#~ msgid "e.g. 10000.00" +#~ msgstr "" + +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "" + +#~ msgid "Alert Threshold (%)" +#~ msgstr "" + +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "" + +#~ msgid "Project Creation Tips" +#~ msgstr "" + +#~ msgid "Clear Naming" +#~ msgstr "Warning" + +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "" + +#~ msgid "Billing Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" + +#~ msgid "Detailed Description" +#~ msgstr "Task name or description" + +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "" + +#~ msgid "Client Selection" +#~ msgstr "Clients" + +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "" + +#~ msgid "Creating..." +#~ msgstr "Starting..." + +#~ msgid "Could not create client. Please try again." +#~ msgstr "" + +#~ msgid "Client created" +#~ msgstr "" + +#~ msgid "Network error while creating client" +#~ msgstr "" + +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "" + +#~ msgid "Budget Analysis" +#~ msgstr "View analytics" + +# Mobile +#~ msgid "All Time" +#~ msgstr "Log time" + +#~ msgid "Last 7 Days" +#~ msgstr "" + +#~ msgid "Last 30 Days" +#~ msgstr "" + +#~ msgid "Last 3 Months" +#~ msgstr "" + +#~ msgid "Last Year" +#~ msgstr "" + +#~ msgid "estimated" +#~ msgstr "Started at" + +#~ msgid "Budget Used" +#~ msgstr "" + +#~ msgid "of budget" +#~ msgstr "Over Budget" + +#~ msgid "Tasks Complete" +#~ msgstr "Completed" + +#~ msgid "completion" +#~ msgstr "Completed" + +#~ msgid "Team Members" +#~ msgstr "" + +#~ msgid "contributing" +#~ msgstr "Training" + +#~ msgid "Budget vs. Actual" +#~ msgstr "" + +#~ msgid "No budget set for this project" +#~ msgstr "" + +#~ msgid "Task Status Distribution" +#~ msgstr "Task name or description" + +#~ msgid "No tasks created yet" +#~ msgstr "" + +#~ msgid "Team Member Contributions" +#~ msgstr "" + +#~ msgid "No time entries recorded yet" +#~ msgstr "No time tracked yet today" + +# Navigation and Common +#~ msgid "Time Tracking Timeline" +#~ msgstr "Time Tracker" + +#~ msgid "Select a time period to view timeline" +#~ msgstr "" + +#~ msgid "Team Member Details" +#~ msgstr "" + +#~ msgid "entries" +#~ msgstr "Find entries" + +#~ msgid "tasks" +#~ msgstr "Tasks" + +#~ msgid "No team members have logged time yet" +#~ msgstr "" + +#~ msgid "Attention Required" +#~ msgstr "" + +#~ msgid "task(s) are overdue" +#~ msgstr "" + +#~ msgid "Edit Project" +#~ msgstr "Select Project" + +#~ msgid "Edit Extra Good" +#~ msgstr "Edit entry" + +#~ msgid "Manage products and services for this project" +#~ msgstr "" + +#~ msgid "Total Goods" +#~ msgstr "total" + +#~ msgid "Billable Amount" +#~ msgstr "" + +#~ msgid "Categories" +#~ msgstr "" + +#~ msgid "Invoiced" +#~ msgstr "Invoices" + +#~ msgid "Non-billable" +#~ msgstr "Set Non-billable" + +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Extra Good" +#~ msgstr "Delete Entry" + +#~ msgid "No extra goods found for this project" +#~ msgstr "" + +#~ msgid "Add Your First Good" +#~ msgstr "Log Your First Entry" + +#~ msgid "Breakdown by Category" +#~ msgstr "" + +#~ msgid "item(s)" +#~ msgstr "" + +#~ msgid "Mark project as Inactive?" +#~ msgstr "" + +#~ msgid "Change Project Status" +#~ msgstr "Manage projects" + +#~ msgid "Activate project?" +#~ msgstr "Manage projects" + +#~ msgid "Activate Project" +#~ msgstr "Manage projects" + +#~ msgid "Archive" +#~ msgstr "Archived" + +#~ msgid "Unarchive project?" +#~ msgstr "Manage projects" + +#~ msgid "Unarchive Project" +#~ msgstr "Manage projects" + +#~ msgid "Unarchive" +#~ msgstr "Archived" + +#~ msgid "Delete Project" +#~ msgstr "Select Project" + +#~ msgid "Archive Information" +#~ msgstr "Information" + +#~ msgid "Archived on:" +#~ msgstr "Archived" + +#~ msgid "Archived by:" +#~ msgstr "Archived" + +#~ msgid "Reason:" +#~ msgstr "Duration:" + +#~ msgid "Budget Overview" +#~ msgstr "" + +#~ msgid "Over" +#~ msgstr "Overdue" + +#~ msgid "View Full Budget Analysis" +#~ msgstr "View analytics" + +#~ msgid "Tasks for this project" +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Priority" + +#~ msgid "Due" +#~ msgstr "Overdue" + +#~ msgid "No tasks for this project." +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Filter" +#~ msgstr "Delete Entry" + +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" + +#~ msgid "Reset to Defaults" +#~ msgstr "" + +#~ msgid "Edit Task" +#~ msgstr "New Task" + +#~ msgid "Overdue" +#~ msgstr "Overdue" + +#~ msgid "Failed to update status" +#~ msgstr "Failed to stop timer" + +#~ msgid "Failed to update task status" +#~ msgstr "" + +#~ msgid "Kanban column created" +#~ msgstr "" + +#~ msgid "Kanban column deleted" +#~ msgstr "" + +#~ msgid "Kanban columns reordered" +#~ msgstr "" + +#~ msgid "Kanban column visibility changed" +#~ msgstr "" + +#~ msgid "Kanban columns updated" +#~ msgstr "" + +#~ msgid "Update" +#~ msgstr "Date" + +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "" + +#~ msgid "Loading task details..." +#~ msgstr "Loading..." + +#~ msgid "Assigned To" +#~ msgstr "" + +#~ msgid "Tracked" +#~ msgstr "TimeTracker" + +#~ msgid "Estimated" +#~ msgstr "Started at" + +#~ msgid "View Full Details" +#~ msgstr "" + +#~ msgid "Create Task" +#~ msgstr "New Task" + +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" + +#~ msgid "Back to Tasks" +#~ msgstr "" + +#~ msgid "Task Name" +#~ msgstr "" + +#~ msgid "Enter a descriptive task name" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "" + +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" + +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" + +#~ msgid "Select the project this task belongs to" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Low" + +#~ msgid "Medium" +#~ msgstr "Medium" + +#~ msgid "High" +#~ msgstr "High" + +#~ msgid "Urgent" +#~ msgstr "Urgent" + +#~ msgid "Initial Status" +#~ msgstr "Timer Status" + +#~ msgid "Done" +#~ msgstr "Done" + +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "" + +# Socket.IO messages +#~ msgid "Estimated Hours" +#~ msgstr "Timer started for" + +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "" + +#~ msgid "Assign To" +#~ msgstr "Sign In" + +# Payment statuses +#~ msgid "Unassigned" +#~ msgstr "Unpaid" + +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "" + +#~ msgid "Task Creation Tips" +#~ msgstr "" + +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "" + +#~ msgid "Realistic Estimates" +#~ msgstr "" + +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "" + +#~ msgid "Set Deadlines" +#~ msgstr "" + +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" + +#~ msgid "Priority Matters" +#~ msgstr "Priority" + +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" + +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "" + +#~ msgid "Back to Task" +#~ msgstr "" + +#~ msgid "Task Information" +#~ msgstr "Information" + +#~ msgid "Update Task" +#~ msgstr "New Task" + +#~ msgid "Estimate used" +#~ msgstr "Status" + +#~ msgid "Actual" +#~ msgstr "Partial" + +#~ msgid "Current Task Info" +#~ msgstr "" + +#~ msgid "Current Status" +#~ msgstr "Timer Status" + +#~ msgid "Current Priority" +#~ msgstr "Priority" + +#~ msgid "Currently Assigned To" +#~ msgstr "" + +#~ msgid "Current Due Date" +#~ msgstr "" + +#~ msgid "Current Estimate" +#~ msgstr "Recent Entries" + +#~ msgid "hours" +#~ msgstr "Hours Today" + +#~ msgid "Actual Hours" +#~ msgstr "" + +#~ msgid "Updated" +#~ msgstr "Date" + +#~ msgid "Started" +#~ msgstr "Started at" + +#~ msgid "View Task" +#~ msgstr "New Task" + +#~ msgid "Edit Tips" +#~ msgstr "Edit entry" + +#~ msgid "Status Changes" +#~ msgstr "All Statuses" + +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" + +#~ msgid "Due Date Updates" +#~ msgstr "" + +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "" + +#~ msgid "Assignment Changes" +#~ msgstr "" + +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "" + +#~ msgid "Updating..." +#~ msgstr "Starting..." + +#~ msgid "Toggle Filters" +#~ msgstr "Toggle Filters" + +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" + +#~ msgid "Delete Task" +#~ msgstr "Delete" + +#~ msgid "Hide Filters" +#~ msgstr "Toggle Filters" + +#~ msgid "Show Filters" +#~ msgstr "Toggle Filters" + +#~ msgid "My Tasks" +#~ msgstr "Tasks" + +#~ msgid "New Task" +#~ msgstr "New Task" + +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "" + +#~ msgid "total" +#~ msgstr "total" + +#~ msgid "Filter My Tasks" +#~ msgstr "Filter Tasks" + +#~ msgid "Task name or description" +#~ msgstr "Task name or description" + +#~ msgid "All Statuses" +#~ msgstr "All Statuses" + +#~ msgid "All Priorities" +#~ msgstr "All Priorities" + +#~ msgid "All Projects" +#~ msgstr "All Projects" + +#~ msgid "Task Type" +#~ msgstr "" + +#~ msgid "All Types" +#~ msgstr "All Statuses" + +#~ msgid "Assigned to Me" +#~ msgstr "" + +#~ msgid "Created by Me" +#~ msgstr "" + +#~ msgid "Show overdue only" +#~ msgstr "" + +#~ msgid "Apply Filters" +#~ msgstr "Toggle Filters" + +#~ msgid "Clear" +#~ msgstr "Calendar" + +#~ msgid "Created by me" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "View All" + +#~ msgid "My tasks pagination" +#~ msgstr "" + +#~ msgid "..." +#~ msgstr "" + +#~ msgid "No tasks found" +#~ msgstr "No timer found" + +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "" + +#~ msgid "Create Your First Task" +#~ msgstr "Log Your First Entry" + +#~ msgid "View All Tasks" +#~ msgstr "View All" + +#~ msgid "Overdue Tasks" +#~ msgstr "Overdue" + +#~ msgid "Requires immediate attention" +#~ msgstr "" + +#~ msgid "items" +#~ msgstr "Notes" + +#~ msgid "Overdue Tasks Detected" +#~ msgstr "" + +#~ msgid "There are" +#~ msgstr "" + +#~ msgid "overdue tasks that require immediate attention." +#~ msgstr "" + +#~ msgid "Please review and update these tasks to prevent further delays." +#~ msgstr "" + +#~ msgid "Due:" +#~ msgstr "" + +#~ msgid "Est:" +#~ msgstr "" + +#~ msgid "Actual:" +#~ msgstr "" + +#~ msgid "No Overdue Tasks!" +#~ msgstr "" + +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "" + +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "" + +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Are you sure you want to delete the time entry for" + +#~ msgid "for all overdue tasks?" +#~ msgstr "" + +#~ msgid "Bulk due date update feature coming soon!" +#~ msgstr "" + +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "" + +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Bulk priority update feature coming soon!" +#~ msgstr "" + +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "" + +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "" + +#~ msgid "Change Task Status" +#~ msgstr "" + +#~ msgid "Mark task as To Do?" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "" + +#~ msgid "Mark task as Done?" +#~ msgstr "" + +#~ msgid "Complete Task" +#~ msgstr "Completed" + +#~ msgid "Complete" +#~ msgstr "Completed" + +#~ msgid "Reopen task to Review?" +#~ msgstr "" + +#~ msgid "Reopen Task" +#~ msgstr "New Task" + +#~ msgid "Reopen" +#~ msgstr "Remove" + +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Template" +#~ msgstr "Delete Entry" + +#~ msgid "Settings" +#~ msgstr "Starting..." + +#~ msgid "No project" +#~ msgstr "Project" + +#~ msgid "Member Since" +#~ msgstr "" + +#~ msgid "N/A" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Recent Entries" + +#~ msgid "In progress" +#~ msgstr "In Progress" + +#~ msgid "View all time entries" +#~ msgstr "Delete Time Entry" + +#~ msgid "No recent time entries" +#~ msgstr "No recent entries" + +#~ msgid "Manage your account settings and preferences" +#~ msgstr "" + +#~ msgid "Profile Information" +#~ msgstr "Information" + +#~ msgid "Username cannot be changed" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "" + +#~ msgid "Required for email notifications" +#~ msgstr "" + +#~ msgid "Notification Preferences" +#~ msgstr "" + +#~ msgid "Enable Email Notifications" +#~ msgstr "" + +#~ msgid "Master switch for all email notifications" +#~ msgstr "" + +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "" + +#~ msgid "Task Assignment Notifications" +#~ msgstr "" + +#~ msgid "Comment & Mention Notifications" +#~ msgstr "" + +#~ msgid "Weekly Time Summary Email" +#~ msgstr "" + +#~ msgid "Display Preferences" +#~ msgstr "" + +#~ msgid "System Default" +#~ msgstr "" + +#~ msgid "Light" +#~ msgstr "Light mode" + +#~ msgid "Time Rounding Preferences" +#~ msgstr "" + +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" + +#~ msgid "Enable Time Rounding" +#~ msgstr "Timer Running" + +#~ msgid "Round time entries to configured intervals" +#~ msgstr "" + +#~ msgid "Rounding Interval" +#~ msgstr "" + +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "" + +#~ msgid "Rounding Method" +#~ msgstr "" + +#~ msgid "Overtime Settings" +#~ msgstr "Timer Status" + +#~ msgid "" +#~ "Set your standard working hours per " +#~ "day. Any time worked beyond this " +#~ "will be counted as overtime." +#~ msgstr "" + +#~ msgid "Standard Hours Per Day" +#~ msgstr "" + +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "" + +#~ msgid "How it works" +#~ 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 "" + +#~ msgid "Regional Settings" +#~ msgstr "" + +#~ msgid "Timezone" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "" + +#~ msgid "Time Format" +#~ msgstr "Information" + +#~ msgid "Week Starts On" +#~ msgstr "" + +#~ msgid "Sunday" +#~ msgstr "" + +#~ msgid "Monday" +#~ msgstr "h today" + +#~ msgid "Saturday" +#~ msgstr "" + +#~ msgid "Save Settings" +#~ msgstr "" + +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" + +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "" + +#~ msgid "Actual time:" +#~ msgstr "Start Timer" + +#~ msgid "Rounded:" +#~ msgstr "" + +#~ msgid "With " +#~ msgstr "" + +#~ msgid " minute intervals" +#~ msgstr "" + +#~ msgid "Create Weekly Goal" +#~ msgstr "" + +#~ msgid "Create Weekly Time Goal" +#~ msgstr "" + +#~ msgid "Set a target for hours to work this week" +#~ msgstr "" + +#~ msgid "Target Hours" +#~ msgstr "" + +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "" + +#~ msgid "Week Start Date" +#~ msgstr "Started at" + +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "" + +#~ msgid "Optional notes about your goal..." +#~ msgstr "" + +#~ msgid "Quick Presets" +#~ msgstr "Quick Actions" + +#~ msgid "Tips for Setting Goals" +#~ msgstr "" + +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "" + +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "" + +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" + +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "" + +#~ msgid "Edit Weekly Goal" +#~ msgstr "" + +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "" + +#~ msgid "Week Period" +#~ msgstr "" + +#~ msgid "Current Progress" +#~ msgstr "In Progress" + +#~ msgid "Failed" +#~ msgstr "Failed" + +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Goal" +#~ msgstr "Delete" + +#~ msgid "Weekly Time Goals" +#~ msgstr "" + +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "" + +#~ msgid "New Goal" +#~ msgstr "View All" + +#~ msgid "Total Goals" +#~ msgstr "total" + +# Toast and JavaScript UI strings +#~ msgid "Success Rate" +#~ msgstr "Success" + +#~ msgid "Current Week Goal" +#~ msgstr "" + +#~ msgid "Remaining Hours" +#~ msgstr "Training" + +#~ msgid "Days Remaining" +#~ msgstr "Training" + +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "" + +#~ msgid "Edit Goal" +#~ msgstr "Edit" + +#~ msgid "No goal set for this week" +#~ msgstr "Hours This Week" + +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "" + +#~ msgid "Goal History" +#~ msgstr "" + +#~ msgid "Target" +#~ msgstr "Urgent" + +#~ msgid "Weekly Goal Details" +#~ msgstr "" + +#~ msgid "Daily Breakdown" +#~ msgstr "" + +#~ msgid "Time Entries This Week" +#~ msgstr "Hours This Week" + +#~ msgid "No Project" +#~ msgstr "Project" + +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "" + +# Invoice statuses +#~ msgid "Draft" +#~ msgstr "Draft" + +#~ msgid "Sent" +#~ msgstr "Sent" + +#~ msgid "Paid" +#~ msgstr "Paid" + +# Payment statuses +#~ msgid "Unpaid" +#~ msgstr "Unpaid" + +#~ msgid "Partially Paid" +#~ msgstr "Partially Paid" + +#~ msgid "Fully Paid" +#~ msgstr "Fully Paid" + +#~ msgid "Overpaid" +#~ msgstr "Overpaid" + +# Payment methods +#~ msgid "Cash" +#~ msgstr "Cash" + +#~ msgid "Check" +#~ msgstr "Check" + +#~ msgid "Bank Transfer" +#~ msgstr "Bank Transfer" + +#~ msgid "Credit Card" +#~ msgstr "Credit Card" + +#~ msgid "Debit Card" +#~ msgstr "Debit Card" + +#~ msgid "PayPal" +#~ msgstr "PayPal" + +#~ msgid "Stripe" +#~ msgstr "Stripe" + +#~ msgid "Company Card" +#~ msgstr "Company Card" + +# Approval statuses +#~ msgid "Pending" +#~ msgstr "Pending" + +#~ msgid "Approved" +#~ msgstr "Approved" + +#~ msgid "Rejected" +#~ msgstr "Rejected" + +#~ msgid "Reimbursed" +#~ msgstr "Reimbursed" + +# Processing statuses +#~ msgid "Processing" +#~ msgstr "Processing" + +#~ msgid "Partial" +#~ msgstr "Partial" + +# Alert types and levels +#~ msgid "80% Budget Warning" +#~ msgstr "80% Budget Warning" + +#~ msgid "Budget Limit Reached" +#~ msgstr "Budget Limit Reached" + +#~ msgid "Info" +#~ msgstr "Info" + +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Invoices" + +#~ msgid "Issue Date: %(date)s" +#~ msgstr "" + +#~ msgid "Due Date: %(date)s" +#~ msgstr "" + +#~ msgid "Please log in to access this page" +#~ msgstr "" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "" + +#~ 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 "Keyboard Shortcuts" + +#~ msgid "Clear Canvas" +#~ msgstr "" + +#~ msgid "Generate Preview" +#~ msgstr "" + +#~ msgid "Save Design" +#~ msgstr "" + +#~ msgid "View Code" +#~ msgstr "" + +#~ msgid "Toolbox" +#~ msgstr "" + +#~ msgid "Search elements & variables..." +#~ msgstr "" + +#~ msgid "Elements" +#~ msgstr "Clients" + +#~ msgid "Variables" +#~ msgstr "Partial" + +#~ msgid "Basic Elements" +#~ msgstr "" + +#~ msgid "Custom Text" +#~ msgstr "" + +#~ msgid "Text" +#~ msgstr "" + +# Approval statuses +#~ msgid "Heading" +#~ msgstr "Pending" + +# Login +#~ msgid "Line" +#~ msgstr "Login" + +#~ msgid "Rectangle" +#~ msgstr "" + +#~ msgid "Circle" +#~ msgstr "Idle" + +#~ msgid "Company Info" +#~ msgstr "Company Logo" + +#~ msgid "Company Name" +#~ msgstr "Company Card" + +#~ msgid "Company Details" +#~ msgstr "Company Logo" + +#~ msgid "Invoice Data" +#~ msgstr "Invoices" + +#~ msgid "Invoice Number" +#~ msgstr "Invoices" + +#~ msgid "Invoice Date" +#~ msgstr "Invoices" + +#~ msgid "Client Info" +#~ msgstr "Clients" + +#~ msgid "Items Table" +#~ msgstr "Table" + +#~ msgid "Payment & Project" +#~ msgstr "Select Project" + +#~ msgid "Payment Date" +#~ msgstr "" + +#~ msgid "Payment Method" +#~ msgstr "" + +#~ msgid "Client Phone" +#~ msgstr "Clients" + +#~ msgid "Advanced" +#~ msgstr "" + +#~ msgid "QR Code" +#~ msgstr "Dark mode" + +# Tasks +#~ msgid "Barcode" +#~ msgstr "Board" + +#~ msgid "Page Number" +#~ msgstr "" + +#~ msgid "Current Date" +#~ msgstr "" + +#~ msgid "Watermark" +#~ msgstr "" + +#~ msgid "Bank Info" +#~ msgstr "Bank Transfer" + +#~ msgid "Invoice Fields" +#~ msgstr "Invoices" + +#~ msgid "Invoice number" +#~ msgstr "Invoices" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "" + +#~ msgid "Issue date" +#~ msgstr "" + +#~ msgid "Due date" +#~ msgstr "Date" + +#~ 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 "No notes" + +#~ msgid "Terms & conditions" +#~ msgstr "" + +#~ msgid "Client Fields" +#~ msgstr "Clients" + +#~ 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 "Timer Status" + +#~ msgid "Payment date" +#~ msgstr "" + +#~ msgid "Payment method" +#~ msgstr "" + +#~ msgid "Payment reference number" +#~ msgstr "" + +# Payment statuses +#~ msgid "Amount paid" +#~ msgstr "Unpaid" + +#~ msgid "Outstanding amount" +#~ msgstr "" + +#~ msgid "Payment notes" +#~ msgstr "No notes" + +#~ msgid "Project Fields" +#~ msgstr "Projects" + +#~ msgid "Project name" +#~ msgstr "Project" + +#~ msgid "Project code" +#~ msgstr "Project" + +#~ msgid "Project description" +#~ msgstr "Task name or description" + +#~ msgid "Project billing reference" +#~ msgstr "" + +#~ msgid "Company/Settings Fields" +#~ msgstr "" + +#~ msgid "Your company name" +#~ msgstr "Company Card" + +#~ msgid "Your company address" +#~ msgstr "Company Card" + +#~ msgid "Your company email" +#~ msgstr "Company Logo" + +#~ msgid "Your company phone" +#~ msgstr "Company Logo" + +#~ 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 "Invoices" + +#~ msgid "Loop through invoice items" +#~ msgstr "" + +#~ msgid "Item description" +#~ msgstr "Task name or description" + +#~ msgid "Item quantity" +#~ msgstr "" + +#~ msgid "Item unit price" +#~ msgstr "" + +#~ msgid "Item total amount" +#~ msgstr "" + +#~ msgid "End loop" +#~ msgstr "" + +#~ msgid "Design Canvas" +#~ msgstr "Sign In" + +#~ msgid "Zoom In" +#~ msgstr "" + +#~ msgid "Zoom Out" +#~ msgstr "" + +#~ msgid "Delete Selected" +#~ msgstr "No items selected" + +#~ msgid "Properties" +#~ msgstr "Projects" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "" + +#~ msgid "Generating..." +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "" + +#~ msgid "Reset PDF Layout" +#~ msgstr "" + +#~ msgid "Danger Operation" +#~ msgstr "Timer stopped. Duration:" + +#~ msgid "Upload Backup Archive (.zip)" +#~ msgstr "" + +#~ msgid "" +#~ "Restoring a backup will overwrite your" +#~ " current database and files. Ensure " +#~ "you have a recent backup before " +#~ "proceeding." +#~ msgstr "" + +#~ msgid "Status:" +#~ msgstr "Status" + +#~ msgid "Backup Archive (.zip)" +#~ msgstr "" + +#~ msgid "Select a .zip archive previously created via the Backup action." +#~ msgstr "" + +#~ msgid "Restore" +#~ msgstr "Stripe" + +#~ msgid "Safety Tips" +#~ msgstr "" + +#~ msgid "Verify the backup archive integrity before restoring." +#~ msgstr "" + +#~ msgid "Ensure no active writes are occurring during restore." +#~ msgstr "" + +#~ msgid "Keep a copy of the current data in case you need to roll back." +#~ msgstr "" + +#~ msgid "After restore, review settings and re-run migrations if required." +#~ msgstr "" + +#~ msgid "Add Cost" +#~ msgstr "" + +#~ msgid "Add Cost to Project" +#~ msgstr "Choose a project..." + +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "" + +#~ msgid "Brief description of the cost" +#~ msgstr "" + +#~ msgid "Select category" +#~ msgstr "Select all" + +#~ msgid "Materials" +#~ msgstr "Meals" + +#~ msgid "Software/Licenses" +#~ msgstr "Software" + +#~ msgid "Additional details about this cost" +#~ msgstr "" + +#~ msgid "Billable to client" +#~ msgstr "" + +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" + +#~ msgid "Edit Cost" +#~ msgstr "Edit entry" + +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" + +#~ msgid "Update Cost" +#~ msgstr "" + +#~ msgid "Bulk Time Entry" +#~ msgstr "Bulk Time Entry" + +#~ msgid "Single Entry" +#~ msgstr "Manual entry" + +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "" + +#~ msgid "Bulk Entry Form" +#~ msgstr "Bulk Entry" + +#~ msgid "Select the project to log time for" +#~ msgstr "" + +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Please select a project" + +#~ msgid "Date Range" +#~ msgstr "" + +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" + +#~ msgid "Entries will be created for these dates" +#~ msgstr "" + +#~ msgid "Same start time for all days" +#~ msgstr "" + +#~ msgid "Same end time for all days" +#~ msgstr "" + +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" + +#~ msgid "tag1, tag2, tag3" +#~ msgstr "" + +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" + +#~ msgid "Include in invoices" +#~ msgstr "" + +#~ msgid "Create Entries" +#~ msgstr "Recent Entries" + +#~ msgid "Bulk Entry Tips" +#~ msgstr "Bulk Entry" + +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" + +#~ msgid "Skip Weekends" +#~ msgstr "" + +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" + +#~ msgid "Same Time Daily" +#~ msgstr "" + +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" + +#~ msgid "Conflict Check" +#~ msgstr "" + +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "New Task" + +#~ msgid "Failed to load tasks" +#~ msgstr "Failed to stop timer" + +#~ msgid "Total days" +#~ msgstr "total" + +#~ msgid "Weekdays only" +#~ msgstr "" + +#~ msgid "Total hours" +#~ msgstr "total" + +#~ msgid "Entries will be created for" +#~ msgstr "New users will be created automatically" + +#~ msgid "Agenda" +#~ msgstr "Calendar" + +#~ msgid "iCal Format" +#~ msgstr "Information" + +#~ msgid "CSV Format" +#~ msgstr "" + +#~ msgid "All Tasks" +#~ msgstr "All Statuses" + +#~ msgid "Filter by tags..." +#~ msgstr "Filter Tasks" + +#~ msgid "Show billable entries only" +#~ msgstr "" + +#~ msgid "Billable Only" +#~ msgstr "Set Billable" + +#~ msgid "Assign to project for new events..." +#~ msgstr "" + +#~ msgid "Total Hours:" +#~ msgstr "" + +#~ msgid "Colors assigned by project" +#~ msgstr "Choose a project..." + +#~ msgid "Create Time Entry" +#~ msgstr "Delete Time Entry" + +#~ msgid "Select a project..." +#~ msgstr "" + +#~ msgid "Comma-separated tags" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "Date" + +#~ msgid "Time Entry Details" +#~ msgstr "Bulk Time Entry" + +#~ msgid "Duplicate" +#~ msgstr "Date" + +#~ msgid "Recurring Time Blocks" +#~ msgstr "" + +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "" + +#~ msgid "New Recurring Block" +#~ msgstr "" + +#~ msgid "Jump to Today" +#~ msgstr "h today" + +#~ msgid "Next Week/Month" +#~ msgstr "" + +#~ msgid "Previous Week/Month" +#~ msgstr "" + +#~ msgid "Navigate Days" +#~ msgstr "" + +#~ msgid "Views" +#~ msgstr "Review" + +#~ msgid "Day View" +#~ msgstr "" + +#~ msgid "Week View" +#~ msgstr "Review" + +#~ msgid "Month View" +#~ msgstr "" + +#~ msgid "Agenda View" +#~ msgstr "" + +#~ msgid "Create New Entry" +#~ msgstr "Delete Time Entry" + +#~ msgid "Focus Filter" +#~ msgstr "Toggle Filters" + +#~ msgid "Clear All Filters" +#~ msgstr "Toggle Filters" + +#~ msgid "Close Modal" +#~ msgstr "Close" + +#~ msgid "Show This Help" +#~ msgstr "Hours This Week" + +#~ msgid "Got it!" +#~ msgstr "" + +#~ msgid "Failed to load events" +#~ msgstr "" + +#~ msgid "Please select a project for new entries" +#~ msgstr "Please select a project" + +#~ msgid "Please select a project first" +#~ msgstr "Please select a project" + +#~ msgid "Showing billable entries only" +#~ msgstr "" + +#~ msgid "Entry created successfully" +#~ msgstr "Operation completed successfully" + +#~ msgid "Failed to create entry" +#~ msgstr "Failed to stop timer" + +#~ msgid "Entry updated" +#~ msgstr "" + +#~ msgid "Failed to update entry" +#~ msgstr "Failed to stop timer" + +# Toast and JavaScript UI strings +#~ msgid "Source" +#~ msgstr "Success" + +#~ msgid "Automatic Timer" +#~ msgstr "Start Timer" + +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Entry" +#~ msgstr "Delete Entry" + +#~ msgid "Entry deleted" +#~ msgstr "Delete" + +#~ msgid "Failed to delete entry" +#~ msgstr "Delete Entry" + +#~ msgid "Export started" +#~ msgstr "" + +#~ msgid "No recurring blocks yet" +#~ msgstr "" + +#~ msgid "Unknown Project" +#~ msgstr "Project" + +#~ msgid "Failed to load recurring blocks" +#~ msgstr "" + +#~ msgid "No events in this period" +#~ msgstr "" + +#~ msgid "Failed to load agenda view" +#~ msgstr "Failed to stop timer" + +#~ msgid "Failed to load event details" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Are you sure you want to delete this?" + +#~ msgid "Delete Recurring Block" +#~ msgstr "" + +#~ msgid "Recurring block deleted" +#~ msgstr "" + +#~ msgid "Failed to delete recurring block" +#~ msgstr "" + +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "" + +#~ msgid "Entry duplicated successfully" +#~ msgstr "Language updated successfully" + +#~ msgid "Failed to duplicate entry" +#~ msgstr "Failed to stop timer" + +#~ msgid "Jumped to today" +#~ msgstr "" + +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Keyboard Shortcuts" + +#~ msgid "Edit Time Entry" +#~ msgstr "Delete Time Entry" + +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" + +#~ msgid "Confirm Changes" +#~ msgstr "Confirm" + +#~ msgid "Confirm & Save" +#~ msgstr "No form to save" + +#~ msgid "Admin Mode" +#~ msgstr "Admin" + +#~ msgid "Admin Mode:" +#~ msgstr "Admin" + +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" + +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "" + +#~ msgid "Task (Optional)" +#~ msgstr "Notes (Optional)" + +#~ msgid "Select a specific task within the project" +#~ msgstr "" + +#~ msgid "When the work started" +#~ msgstr "" + +# Socket.IO messages +#~ msgid "Time the work started" +#~ msgstr "Timer started for" + +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" + +#~ msgid "Time the work ended" +#~ msgstr "" + +#~ msgid "Manual" +#~ msgstr "Manual entry" + +#~ msgid "Automatic" +#~ msgstr "" + +#~ msgid "How this entry was created" +#~ msgstr "" + +#~ msgid "Duration:" +#~ msgstr "Duration:" + +#~ msgid "Describe what you worked on" +#~ msgstr "What are you working on?" + +#~ msgid "tag1, tag2" +#~ msgstr "" + +#~ msgid "Separate tags with commas" +#~ msgstr "" + +#~ msgid "Project:" +#~ msgstr "Project" + +#~ msgid "Task:" +#~ msgstr "Tasks" + +#~ msgid "Start:" +#~ msgstr "Status" + +#~ msgid "End:" +#~ msgstr "" + +#~ msgid "Running" +#~ msgstr "Warning" + +#~ msgid "Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Admin Notice" +#~ msgstr "No notes" + +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" + +#~ msgid "{editor}: Editing failed" +#~ msgstr "Operation failed" + +#~ msgid "{editor}: Editing failed: {e}" +#~ msgstr "" + +#~ msgid "{text} {deprecated_message}" +#~ msgstr "" + +#~ msgid "Options" +#~ msgstr "Actions" + +#~ msgid "Got unexpected extra argument ({args})" +#~ msgid_plural "Got unexpected extra arguments ({args})" +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "DeprecationWarning: The command {name!r} is deprecated.{extra_message}" +#~ msgstr "" + +# Tasks +#~ msgid "Aborted!" +#~ msgstr "Board" + +# Command Palette +#~ msgid "Commands" +#~ msgstr "Command Palette" + +#~ msgid "Missing command." +#~ msgstr "" + +#~ msgid "No such command {name!r}." +#~ msgstr "" + +#~ msgid "Value must be an iterable." +#~ msgstr "" + +#~ msgid "Takes {nargs} values but 1 was given." +#~ msgid_plural "Takes {nargs} values but {len} were given." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "" +#~ "DeprecationWarning: The {param_type} {name!r} " +#~ "is deprecated.{extra_message}" +#~ msgstr "" + +#~ msgid "env var: {var}" +#~ msgstr "" + +#~ msgid "default: {default}" +#~ msgstr "" + +#~ msgid "required" +#~ msgstr "Reimbursed" + +#~ msgid "(dynamic)" +#~ msgstr "" + +#~ msgid "%(prog)s, version %(version)s" +#~ msgstr "" + +#~ msgid "Show the version and exit." +#~ msgstr "" + +#~ msgid "Show this message and exit." +#~ msgstr "" + +#~ msgid "Error: {message}" +#~ msgstr "" + +#~ msgid "Try '{command} {option}' for help." +#~ msgstr "" + +#~ msgid "Invalid value: {message}" +#~ msgstr "Invalid language" + +#~ msgid "Invalid value for {param_hint}: {message}" +#~ msgstr "" + +#~ msgid "Missing argument" +#~ msgstr "" + +#~ msgid "Missing option" +#~ msgstr "" + +#~ msgid "Missing parameter" +#~ msgstr "" + +#~ msgid "Missing {param_type}" +#~ msgstr "" + +#~ msgid "Missing parameter: {param_name}" +#~ msgstr "" + +#~ msgid "No such option: {name}" +#~ msgstr "" + +#~ msgid "Did you mean {possibility}?" +#~ msgid_plural "(Possible options: {possibilities})" +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "unknown error" +#~ msgstr "" + +#~ msgid "Could not open file {filename!r}: {message}" +#~ msgstr "" + +#~ msgid "Usage:" +#~ msgstr "Save" + +#~ msgid "Argument {name!r} takes {nargs} values." +#~ msgstr "" + +#~ msgid "Option {name!r} does not take a value." +#~ msgstr "" + +#~ msgid "Option {name!r} requires an argument." +#~ msgid_plural "Option {name!r} requires {nargs} arguments." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "Shell completion is not supported for Bash versions older than 4.4." +#~ msgstr "" + +#~ msgid "Couldn't detect Bash version, shell completion is not supported." +#~ msgstr "" + +#~ msgid "Repeat for confirmation" +#~ msgstr "" + +#~ msgid "Error: The value you entered was invalid." +#~ msgstr "" + +#~ msgid "Error: {e.message}" +#~ msgstr "" + +#~ msgid "Error: The two entered values do not match." +#~ msgstr "" + +#~ msgid "Error: invalid input" +#~ msgstr "Invalid input" + +#~ msgid "Press any key to continue..." +#~ msgstr "" + +#~ msgid "" +#~ "Choose from:\n" +#~ "\t{choices}" +#~ msgstr "" + +#~ msgid "{value!r} is not {choice}." +#~ msgid_plural "{value!r} is not one of {choices}." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "{value!r} does not match the format {format}." +#~ msgid_plural "{value!r} does not match the formats {formats}." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "{value!r} is not a valid {number_type}." +#~ msgstr "" + +#~ msgid "{value} is not in the range {range}." +#~ msgstr "" + +#~ msgid "{value!r} is not a valid boolean. Recognized values: {states}" +#~ msgstr "" + +#~ msgid "{value!r} is not a valid UUID." +#~ msgstr "" + +#~ msgid "file" +#~ msgstr "Failed" + +#~ msgid "directory" +#~ msgstr "" + +#~ msgid "path" +#~ msgstr "" + +#~ msgid "{name} {filename!r} does not exist." +#~ msgstr "" + +#~ msgid "{name} {filename!r} is a file." +#~ msgstr "" + +#~ msgid "{name} {filename!r} is a directory." +#~ msgstr "" + +#~ msgid "{name} {filename!r} is not readable." +#~ msgstr "" + +#~ msgid "{name} {filename!r} is not writable." +#~ msgstr "" + +#~ msgid "{name} {filename!r} is not executable." +#~ msgstr "" + +#~ msgid "{len_type} values are required, but {len_value} was given." +#~ msgid_plural "{len_type} values are required, but {len_value} were given." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "This field is required." +#~ msgstr "This field is required" + +#~ msgid "File does not have an approved extension: {extensions}" +#~ msgstr "" + +#~ msgid "File does not have an approved extension." +#~ msgstr "" + +#~ msgid "File must be between {min_size} and {max_size} bytes." +#~ msgstr "" + +#~ msgid "show this help message and exit" +#~ msgstr "" + +#~ msgid "%(prog)s: error: %(message)s\n" +#~ msgstr "" + +#~ msgid "Arguments" +#~ msgstr "Urgent" + +#~ msgid "(deprecated) " +#~ msgstr "Rejected" + +#~ msgid "[default: {}]" +#~ msgstr "" + +#~ msgid "[env var: {}]" +#~ msgstr "" + +#~ msgid "[required]" +#~ msgstr "Reimbursed" + +# Tasks +#~ msgid "Aborted." +#~ msgstr "Board" + +#~ msgid "Try [blue]'{command_path} {help_option}'[/] for help." +#~ msgstr "" + +#~ msgid "Invalid field name '%s'." +#~ msgstr "" + +#~ msgid "Field must be equal to %(other_name)s." +#~ msgstr "" + +#~ msgid "Field must be at least %(min)d character long." +#~ msgid_plural "Field must be at least %(min)d characters long." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "Field cannot be longer than %(max)d character." +#~ msgid_plural "Field cannot be longer than %(max)d characters." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "Field must be exactly %(max)d character long." +#~ msgid_plural "Field must be exactly %(max)d characters long." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "Field must be between %(min)d and %(max)d characters long." +#~ msgstr "" + +#~ msgid "Number must be at least %(min)s." +#~ msgstr "" + +#~ msgid "Number must be at most %(max)s." +#~ msgstr "" + +#~ msgid "Number must be between %(min)s and %(max)s." +#~ msgstr "" + +#~ msgid "Invalid input." +#~ msgstr "Invalid input" + +#~ msgid "Invalid email address." +#~ msgstr "" + +#~ msgid "Invalid IP address." +#~ msgstr "Invalid input" + +#~ msgid "Invalid Mac address." +#~ msgstr "Invalid language" + +#~ msgid "Invalid URL." +#~ msgstr "Invalid input" + +#~ msgid "Invalid UUID." +#~ msgstr "Invalid input" + +#~ msgid "Invalid value, must be one of: %(values)s." +#~ msgstr "" + +#~ msgid "Invalid value, can't be any of: %(values)s." +#~ msgstr "" + +#~ msgid "This field cannot be edited." +#~ msgstr "This action cannot be undone." + +#~ msgid "This field is disabled and cannot have a value." +#~ msgstr "" + +#~ msgid "Invalid CSRF Token." +#~ msgstr "" + +#~ msgid "CSRF token missing." +#~ msgstr "" + +#~ msgid "CSRF failed." +#~ msgstr "Failed" + +#~ msgid "CSRF token expired." +#~ msgstr "" + +#~ msgid "Invalid Choice: could not coerce." +#~ msgstr "" + +#~ msgid "Choices cannot be None." +#~ msgstr "This action cannot be undone." + +#~ msgid "Not a valid choice." +#~ msgstr "" + +#~ msgid "Invalid choice(s): one or more data inputs could not be coerced." +#~ msgstr "" + +#~ msgid "'%(value)s' is not a valid choice for this field." +#~ msgid_plural "'%(value)s' are not valid choices for this field." +#~ msgstr[0] "" +#~ msgstr[1] "" + +#~ msgid "Not a valid datetime value." +#~ msgstr "" + +#~ msgid "Not a valid date value." +#~ msgstr "" + +#~ msgid "Not a valid time value." +#~ msgstr "" + +#~ msgid "Not a valid week value." +#~ msgstr "" + +#~ msgid "Not a valid integer value." +#~ msgstr "" + +#~ msgid "Not a valid decimal value." +#~ msgstr "" + +#~ msgid "Not a valid float value." +#~ msgstr "" + +#~ msgid "Privacy First" +#~ msgstr "Privacy First" + +#~ msgid "Self-hosted on your server" +#~ msgstr "Self-hosted on your server" + +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Anonymous telemetry (opt-in)" + +#~ msgid "No PII collected ever" +#~ msgstr "No PII collected ever" + +#~ msgid "Open source & transparent" +#~ msgstr "Open source & transparent" + +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Let's get you set up in just a moment" + +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Thank you for choosing TimeTracker!" + +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Your data stays on your server, and you have complete control." + +#~ msgid "Help Us Improve (Optional)" +#~ msgstr "Help Us Improve (Optional)" + +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Enable anonymous telemetry" + +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Help us understand usage patterns to improve TimeTracker" + +#~ msgid "What data is collected?" +#~ msgstr "What data is collected?" + +#~ msgid "What we collect:" +#~ msgstr "What we collect:" + +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Anonymous installation fingerprint (hashed)" + +#~ msgid "Application version & platform info" +#~ msgstr "Application version & platform info" + +#~ msgid "Feature usage statistics" +#~ msgstr "Feature usage statistics" + +#~ msgid "Internal numeric IDs only" +#~ msgstr "Internal numeric IDs only" + +#~ msgid "What we DON'T collect:" +#~ msgstr "What we DON'T collect:" + +#~ msgid "No usernames or emails" +#~ msgstr "No usernames or emails" + +#~ msgid "No project names or descriptions" +#~ msgstr "No project names or descriptions" + +#~ msgid "No time entry data or notes" +#~ msgstr "No time entry data or notes" + +#~ msgid "No client or business data" +#~ msgstr "No client or business data" + +#~ msgid "No IP addresses or PII" +#~ msgstr "No IP addresses or PII" + +#~ msgid "Why?" +#~ msgstr "Why?" + +#~ msgid "Anonymous usage data helps us prioritize features and fix issues." +#~ msgstr "Anonymous usage data helps us prioritize features and fix issues." + +#~ msgid "You can change this anytime in" +#~ msgstr "You can change this anytime in" + +#~ msgid "Admin → Settings" +#~ msgstr "Admin → Settings" + +#~ msgid "Privacy & Analytics section" +#~ msgstr "Privacy & Analytics section" + +#~ msgid "Complete Setup & Continue" +#~ msgstr "Complete Setup & Continue" + +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "By continuing, you agree to use TimeTracker under the" + +#~ msgid "GPL-3.0 License" +#~ msgstr "GPL-3.0 License" + +#~ msgid "Duplicate Time Entry" +#~ msgstr "Duplicate Time Entry" + +#~ msgid "Log Time Manually" +#~ msgstr "Log Time Manually" + +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Create a copy of a previous entry with new times" + +#~ msgid "Create a new time entry" +#~ msgstr "Create a new time entry" + +#~ msgid "Duplicating entry:" +#~ msgstr "Duplicating entry:" + +#~ msgid "Original:" +#~ msgstr "Original:" + +#~ msgid "to" +#~ msgstr "to" + +#~ msgid "What did you work on?" +#~ msgstr "What did you work on?" + +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Move Selected Tasks to Project" + +#~ msgid "Move Tasks" +#~ msgstr "Move Tasks" + +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Add notes about what you're working on..." + +#~ msgid "Set as default template" +#~ msgstr "Set as default template" + +#~ msgid "HTML Template" +#~ msgstr "HTML Template" + +#~ msgid "Custom Message" +#~ msgstr "Custom Message" + +#~ msgid "More Variables" +#~ msgstr "More Variables" + +#~ msgid "Invoice number or client" +#~ msgstr "Invoice number or client" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Receipt/Invoice Number" + +#~ msgid "✗ Timeout fetching discovery document from %(url)s" +#~ msgstr "" + +#~ msgid "Cannot delete client with existing projects" +#~ msgstr "" + +#~ msgid "A project with this name already exists" +#~ msgstr "" + +#~ msgid "" +#~ "Could not create project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" + +#~ msgid "" +#~ "Could not update project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" + +#~ msgid "" +#~ "Could not update timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create manual entry due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" + +#~ msgid "Advanced Permissions" +#~ msgstr "" + +#~ msgid "Change Details" +#~ msgstr "" + +#~ msgid "No projects found." +#~ msgstr "" + +#~ msgid "No invoices found." +#~ msgstr "" + +#~ msgid "No time entries found." +#~ msgstr "" + +#~ msgid "Quote Accepted" +#~ msgstr "" + +#~ msgid "Quote Rejected" +#~ msgstr "" + +#~ msgid "Select a client" +#~ msgstr "" +