From fc5062357fa651493327967b2656f5406a2c5762 Mon Sep 17 00:00:00 2001 From: Frank Faulstich Date: Mon, 29 Jun 2026 13:00:40 +0200 Subject: [PATCH] Update Translation --- locale/cs/LC_MESSAGES/timetracker.mo | Bin 26742 -> 47720 bytes locale/cs/LC_MESSAGES/timetracker.po | 2606 ++++++++++++++++---- locale/de/LC_MESSAGES/timetracker.mo | Bin 30628 -> 49053 bytes locale/de/LC_MESSAGES/timetracker.po | 2978 +++++++++++++++++------ locale/en/LC_MESSAGES/timetracker.mo | Bin 28695 -> 44535 bytes locale/en/LC_MESSAGES/timetracker.po | 3023 +++++++++++++++++------ locale/es/LC_MESSAGES/timetracker.mo | Bin 39663 -> 48541 bytes locale/es/LC_MESSAGES/timetracker.po | 3327 +++++++++++++++++-------- locale/fr/LC_MESSAGES/timetracker.mo | Bin 29502 -> 49763 bytes locale/fr/LC_MESSAGES/timetracker.po | 3360 ++++++++++++++++++-------- locale/timetracker.pot | 2476 +++++++++++++++++++ tt/TimeTracker.py | 2 +- 12 files changed, 13863 insertions(+), 3909 deletions(-) create mode 100644 locale/timetracker.pot diff --git a/locale/cs/LC_MESSAGES/timetracker.mo b/locale/cs/LC_MESSAGES/timetracker.mo index 91d33f1aad958d7fc435dbe9e10ff7cc09bc2421..18c47dd7c3f3f8f7ea0483822006e033e51786d7 100644 GIT binary patch literal 47720 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

h%7a5o)Q=B)+fG`~!p>uTSV zuEgEGCtZijeNVd16q<^`K8V-W6nIw*)b{H5CRXQW@bno z@u~+k$8b_Us9eiF#Lk?}=Q&tAiqz4tZAeX9zV_^sy{klLZG=WwTY-o}%?X;rWnG^ zK@+4jM@0WYB*F@4|FA~}cIV0Tn@HagRFFtuHCx{FwR|L0o{j0%hIowZ%t1ISLNZUI zHfY0An}s)P;i$uj)`)C{A3z%Xl!TiQa!w&8;d;|obXI#-MQpG)SYeTal>*kBcl{kj zITUiJ=VX8vmLq6K@$&yK?aUlFf`*QSB(%HpgjFXi=SNs?ceTdVI%aQd503KgXiTwa zMFHhlr*f68VaOj~)d`6iU#4rhs=LUOBN{^S+xOLOQrI?fFQwU1o8lu_pm`VC_HhKQ z%)87--ij94>9P+hwlUDyM9-Qoq=uK~5R2kx-zK_J${(|~m5;TDYt#C1W_>!wupyo- zwa3V#+$B#~C)aD94=P%0w9Uo*kAU7f{f4KQVeV|nC*mf9Q_3uy-?{ybl_RsSIB&qj zzwDQ(Zo8BX&JeFLJ6y{)Kf(V~B#WEPx)iFZ+B1;#bJ!ED7*_E-y59=TyO64GbO}D^ zdoiC&78y6nsZzc)ceScblkAQ>>zb(PFjq&Nc7{RH)t=o35mBp4FwQsr*kZpi3pP4bq2H|Uf{-iLwFef#$3YYMe zc$9OYi|`Y$HSs9BbIqd8GJHHCbrc4IT%>-U?;u0+4AThwiuQ3p-{WHdjUD&5T4iiHGhS)8A&dxDX>Zehfz*zm2$-iR5R|FaC_D zkMN@lh@=ykQ=!^#3lPkaaZ7Ioc>B{-$ZUdAguWv%W={E~V9WR%Uw8bG-x##Se+kIP z=8awIv>;{=G6IMm@%NVg<|;bSadUNJEH|1v++1CqevrFlawuxaC`{v2d+1L0?ZIzQ zbN7~wEoU!N!IUMFL!PoUBkwSVhcTk|Q^=ydzgw-`XOq0Omu={{$G(NV5Of zf+i6pMurr>(V@AFf6D)MAPrd&A?XbHXL^SM6G+(9`9Z@-Tbl}?y_hp&+7AB(Wou*u z9=bYVy>1@`VS{1Gvmi+5!b<*I)RU;mc&r!WXJhWy9N~r8+5JfTjfa$Of#w1}muKf0 zVk!ilSCKvtsHtqFI&Ra-FXY>SjjM50r0q&AlAGv?klTbSF2Hk8v40vZMgcOb{aT>` z>Y5O66IZ0;&^v3z{TZ0W9>S5C{iTt{%;F+8?HXyN$Hzxq{Rv%PqEmu&oIxwmfV`ow z(d1UFxkAfDtZJeWk5~$3%LT2O*M-H*g~Fk{(XvV(pO}u(yXFy9^at!Duy-cfu4P7Z T+_}{ql(~!AOWLpFdM*7QB->oB diff --git a/locale/cs/LC_MESSAGES/timetracker.po b/locale/cs/LC_MESSAGES/timetracker.po index cf1331a..cb3c532 100644 --- a/locale/cs/LC_MESSAGES/timetracker.po +++ b/locale/cs/LC_MESSAGES/timetracker.po @@ -3,9 +3,10 @@ # This file is distributed under the same license as the TimeTracker package. # msgid "" -msgstr "Project-Id-Version: TimeControl\n" -"Report-Msgid-Bugs-To: https://github.com/FrankFaulstich/TimeControl/issues\n" -"POT-Creation-Date: 2024-05-15 10:00+0200\n" +msgstr "" +"Project-Id-Version: TimeControl\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-06-18 12:24+0200\n" "PO-Revision-Date: 2024-05-15 12:00+0200\n" "Last-Translator: Frank Faulstich\n" "Language-Team: Czech\n" @@ -15,934 +16,2643 @@ msgstr "Project-Id-Version: TimeControl\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -msgid "Edit current task" -msgstr "Upravit aktuální úkol" - -msgid "Warning: Could not read {file}. Error: {error}" -msgstr "Varování: Nelze přečíst soubor {file}. Chyba: {error}" - -msgid "Some required packages are missing. Attempting to install them..." -msgstr "Některé požadované balíčky chybí. Pokouším se je nainstalovat..." - -msgid "Installing {package}..." -msgstr "Instaluji {package}..." - -msgid "\nDependencies installed successfully." -msgstr "\nZávislosti byly úspěšně nainstalovány." - -msgid "Please restart the application for the changes to take effect." -msgstr "Prosím, restartujte aplikaci, aby se změny projevily." - +#: TimeTrackerCLI.py:25 msgid "" "\n" -"Error: Failed to install dependencies. Please install them manually using: " -"pip install -r {requirements_path}" +"--- Project Management ---" msgstr "" "\n" -"Chyba: Instalace závislostí se nezdařila. Prosím, nainstalujte je ručně " -"pomocí: pip install -r {requirements_path}" +"--- Správa projektů ---" -msgid "An unexpected error occurred during dependency check: {error}" -msgstr "Během kontroly závislostí došlo k neočekávané chybě: {error}" +#: TimeTrackerCLI.py:26 +msgid "1. Main Project Management" +msgstr "1. Hlavní správa projektu" -msgid "Info: Report content has been copied to the clipboard." -msgstr "Info: Obsah zprávy byl zkopírován do schránky." +#: TimeTrackerCLI.py:27 +msgid "2. Task Management" +msgstr "2. Správa úloh" -msgid "Warning: Could not copy to clipboard. Error: {error}" -msgstr "Varování: Nelze kopírovat do schránky. Chyba: {error}" +#: TimeTrackerCLI.py:29 +msgid "0. Back to Main Menu" +msgstr "0. Zpět do hlavního menu" -msgid "" -"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " -"install pyperclip`)." -msgstr "" -"Varování: Nelze kopírovat do schránky. Prosím, nainstalujte 'pyperclip' " -"(`pip install pyperclip`)." +#: TimeTrackerCLI.py:32 TimeTrackerCLI.py:60 TimeTrackerCLI.py:257 +#: TimeTrackerCLI.py:662 TimeTrackerCLI.py:701 TimeTrackerCLI.py:811 +#: TimeTrackerCLI.py:953 +msgid "Choice: " +msgstr "Volba: " -msgid "{hours} hours ({dlp} DLP)" -msgid_plural "{hours} hours ({dlp} DLP)" -msgstr[0] "{hours} hodina ({dlp} DLP)" -msgstr[1] "{hours} hodiny ({dlp} DLP)" -msgstr[2] "{hours} hodin ({dlp} DLP)" +#: TimeTrackerCLI.py:41 +msgid "Invalid choice. Please enter a number from 0 to 2." +msgstr "Neplatná volba. Zadejte číslo od 0 do 2." -msgid "closed" -msgstr "uzavřeno" +#: TimeTrackerCLI.py:46 +msgid "" +"\n" +"--- Main Project Management ---" +msgstr "" +"\n" +"--- Správa hlavního projektu ---" -msgid "Source project '{name}' not found." -msgstr "Zdrojový projekt '{name}' nebyl nalezen." +#: TimeTrackerCLI.py:47 +msgid "1. Add Main Project" +msgstr "1. Přidat hlavní projekt" -msgid "Destination project '{name}' not found." -msgstr "Cílový projekt '{name}' nebyl nalezen." +#: TimeTrackerCLI.py:48 +msgid "2. List Main Projects" +msgstr "2. Seznam hlavních projektů" -msgid "A task named '{sub_name}' already exists in '{main_name}'." -msgstr "Úkol s názvem '{sub_name}' již v projektu '{main_name}' existuje." +#: TimeTrackerCLI.py:49 +msgid "3. Rename Main Project" +msgstr "3. Přejmenovat hlavní projekt" -msgid "Task '{name}' moved successfully." -msgstr "Úkol '{name}' byl úspěšně přesunut." +#: TimeTrackerCLI.py:50 +msgid "4. Close Main Project" +msgstr "4. Zavřít hlavní projekt" -msgid "No project selected. Please start again." -msgstr "Nebyl vybrán žádný projekt. Začněte prosím znovu." +#: TimeTrackerCLI.py:51 +msgid "5. Re-open Main Project" +msgstr "5. Smazat Znovu otevřít hlavní projekt" -msgid "A project named '{name}' already exists." -msgstr "Projekt s názvem '{name}' již existuje." +#: TimeTrackerCLI.py:52 +msgid "6. Delete Main Project" +msgstr "SPL" -msgid "Project '{old_name}' renamed to '{new_name}'." -msgstr "Projekt '{old_name}' přejmenován na '{new_name}'." +#: TimeTrackerCLI.py:53 +msgid "7. List Inactive Main Projects" +msgstr "7. Vypsat neaktivní hlavní projekty" -msgid "Task '{sub_name}' not found in '{main_name}'." -msgstr "Úkol '{sub_name}' nebyl v projektu '{main_name}' nalezen." +#: TimeTrackerCLI.py:54 +msgid "8. Demote Main-Project to Sub-Project" +msgstr "8. Snížit hlavní projekt na podprojekt" -msgid "General" -msgstr "Obecné" +#: TimeTrackerCLI.py:55 +msgid "9. List Completed Main Projects" +msgstr "9. Vypsat dokončené hlavní projekty" -msgid "Task '{name}' was promoted to a new project." -msgstr "Úkol '{name}' byl povýšen na nový projekt." +#: TimeTrackerCLI.py:57 TimeTrackerCLI.py:254 +msgid "0. Back" +msgstr "0. Zpět" -msgid "Project to demote '{name}' not found." -msgstr "Projekt k degradaci '{name}' nebyl nalezen." +#: TimeTrackerCLI.py:64 +msgid "" +"\n" +"--- Add New Main Project ---" +msgstr "" +"\n" +"--- Přidat nový hlavní projekt ---" -msgid "New parent project '{name}' not found." -msgstr "Nový nadřazený projekt '{name}' nebyl nalezen." +#: TimeTrackerCLI.py:65 +msgid "Name of the main project: " +msgstr "Název hlavního projektu:" -msgid "Task '{old_name}' has been renamed to '{new_name}'." -msgstr "Úkol '{old_name}' byl přejmenován na '{new_name}'." +#: TimeTrackerCLI.py:67 +#, python-brace-format +msgid "Main project '{name}' added." +msgstr "Přidán hlavní projekt '{name}'." +#: TimeTrackerCLI.py:70 msgid "" -"Project '{demoted_name}' was demoted to a task under " -"'{parent_name}'." +"\n" +"--- List Main Projects ---" msgstr "" -"Projekt '{demoted_name}' byl degradován na úkol pod '" -"{parent_name}'." - -msgid "No open projects found." -msgstr "Nebyly nalezeny žádné otevřené projekty." +"\n" +"--- Seznam hlavních projektů ---" -msgid "# Daily Time Report: {date}\n" -msgstr "# Denní zpráva o čase: {date}\n" +#: TimeTrackerCLI.py:76 TimeTrackerCLI.py:313 sl/SL_Menu.py:1246 +#: sl/SL_Menu.py:1310 +msgid "closed" +msgstr "uzavřeno" -msgid "- {name}: {hours} hours" -msgid_plural "- {name}: {hours} hours" -msgstr[0] "- {name}: {hours} hodina" -msgstr[1] "- {name}: {hours} hodiny" -msgstr[2] "- {name}: {hours} hodin" +#: TimeTrackerCLI.py:79 +msgid "No main projects found." +msgstr "Nebyly nalezeny žádné hlavní projekty." -msgid "## {name} ({hours} hours)\n" -msgid_plural "## {name} ({hours} hours)\n" -msgstr[0] "## {name} ({hours} hodina)\n" -msgstr[1] "## {name} ({hours} hodiny)\n" -msgstr[2] "## {name} ({hours} hodin)\n" +#: TimeTrackerCLI.py:82 +msgid "" +"\n" +"--- Rename Main Project ---" +msgstr "" +"\n" +"--- Přejmenovat hlavní projekt ---" + +#: TimeTrackerCLI.py:85 +msgid "No main projects to rename." +msgstr "Žádné hlavní projekty k přejmenování." + +#: TimeTrackerCLI.py:88 +msgid "Select an open main project to rename:" +msgstr "Vyberte otevřený hlavní projekt, který chcete přejmenovat:" + +#: TimeTrackerCLI.py:93 TimeTrackerCLI.py:117 TimeTrackerCLI.py:139 +#: TimeTrackerCLI.py:162 TimeTrackerCLI.py:272 TimeTrackerCLI.py:301 +#: TimeTrackerCLI.py:333 TimeTrackerCLI.py:370 TimeTrackerCLI.py:405 +#: TimeTrackerCLI.py:441 TimeTrackerCLI.py:568 TimeTrackerCLI.py:604 +#: TimeTrackerCLI.py:855 TimeTrackerCLI.py:888 TimeTrackerCLI.py:969 +msgid "Enter the number of the main project: " +msgstr "Zadejte číslo hlavního projektu:" + +#: TimeTrackerCLI.py:96 TimeTrackerCLI.py:349 +#, python-brace-format +msgid "Enter the new name for '{name}': " +msgstr "Zadejte nový název pro '{name}': " -msgid "\n**Total Daily Time: {hours} hours**" -msgstr "\n**Celkový denní čas: {hours} hodin**" +#: TimeTrackerCLI.py:99 +#, python-brace-format +msgid "Main project '{old_name}' successfully renamed to '{new_name}'." +msgstr "Hlavní projekt '{old_name}' byl úspěšně přejmenován na '{new_name}'." -msgid "No time tracked for {date}." -msgstr "Pro den {date} nebyl zaznamenán žádný čas." +#: TimeTrackerCLI.py:101 sl/SL_Menu.py:1283 +#, python-brace-format +msgid "" +"Error: Could not rename. The new name '{new_name}' might already exist." +msgstr "Chyba: Nelze přejmenovat. Nový název '{new_name}' již možná existuje." -msgid "# Time Report: {start_date} to {end_date}\n" -msgstr "# Zpráva o čase: od {start_date} do {end_date}\n" +#: TimeTrackerCLI.py:103 TimeTrackerCLI.py:125 TimeTrackerCLI.py:147 +#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:221 TimeTrackerCLI.py:287 +#: TimeTrackerCLI.py:319 TimeTrackerCLI.py:356 TimeTrackerCLI.py:391 +#: TimeTrackerCLI.py:426 TimeTrackerCLI.py:463 TimeTrackerCLI.py:510 +#: TimeTrackerCLI.py:589 TimeTrackerCLI.py:794 TimeTrackerCLI.py:875 +#: TimeTrackerCLI.py:894 TimeTrackerCLI.py:992 +msgid "Invalid input. Please enter a valid number." +msgstr "Neplatný vstup. Zadejte prosím platné číslo." -msgid "\n**Total Time in Period: {total_time}**" -msgstr "\n**Celkový čas v období: {total_time}**" +#: TimeTrackerCLI.py:106 +msgid "" +"\n" +"--- Close Main Project ---" +msgstr "" +"\n" +"--- Zavřít hlavní projekt ---" -msgid "No time tracked between {start_date} and {end_date}." -msgstr "Mezi {start_date} a {end_date} nebyl zaznamenán žádný čas." +#: TimeTrackerCLI.py:109 +msgid "No open main projects to close." +msgstr "Žádné otevřené hlavní projekty k uzavření." -msgid "\n--- Project Management ---" -msgstr "\n--- Správa projektů ---" +#: TimeTrackerCLI.py:112 +msgid "Select a main project to close:" +msgstr "Vyberte hlavní projekt k uzavření:" -msgid "1. Add Project" -msgstr "1. Přidat projekt" +#: TimeTrackerCLI.py:121 +#, python-brace-format +msgid "Main project '{name}' has been closed." +msgstr "Hlavní projekt '{name}' byl uzavřen." -msgid "2. List Projects" -msgstr "2. Vypsat projekty" +#: TimeTrackerCLI.py:123 TimeTrackerCLI.py:145 +msgid "Error: Main project not found." +msgstr "Chyba: Hlavní projekt nebyl nalezen." -msgid "3. Rename Project" -msgstr "3. Přejmenovat projekt" +#: TimeTrackerCLI.py:128 +msgid "" +"\n" +"--- Re-open Main Project ---" +msgstr "" +"\n" +"--- Znovu otevřít hlavní projekt ---" -msgid "4. Delete Project" -msgstr "4. Smazat projekt" +#: TimeTrackerCLI.py:131 +msgid "No closed main projects to reopen." +msgstr "Žádné uzavřené hlavní projekty ke znovuotevření." -msgid "5. List Inactive Projects" -msgstr "5. Vypsat neaktivní projekty" +#: TimeTrackerCLI.py:134 +msgid "Select a main project to reopen:" +msgstr "Vyberte hlavní projekt, který chcete znovu otevřít:" -msgid "6. Demote Project to Task" -msgstr "6. Degradovat projekt na úkol" +#: TimeTrackerCLI.py:143 +#, python-brace-format +msgid "Main project '{name}' has been reopened." +msgstr "Hlavní projekt '{name}' byl znovu otevřen." -msgid "7. Add Task" -msgstr "7. Přidat úkol" +#: TimeTrackerCLI.py:150 +msgid "" +"\n" +"--- Delete Main Project ---" +msgstr "" +"\n" +"--- Smazat hlavní projekt ---" -msgid "8. List Tasks" -msgstr "8. Vypsat úkoly" +#: TimeTrackerCLI.py:153 +msgid "No main projects to delete." +msgstr "Žádné hlavní projekty k odstranění." -msgid "9. Rename Task" -msgstr "9. Přejmenovat úkol" +#: TimeTrackerCLI.py:156 +msgid "Select a main project to delete:" +msgstr "Vyberte hlavní projekt, který chcete odstranit:" -msgid "10. Close Task" -msgstr "10. Uzavřít úkol" +#: TimeTrackerCLI.py:165 +#, python-brace-format +msgid "Main project '{name}' deleted." +msgstr "Hlavní projekt '{name}' byl odstraněn." -msgid "11. Re-open Task" -msgstr "11. Znovu otevřít úkol" +#: TimeTrackerCLI.py:167 TimeTrackerCLI.py:285 +#, python-brace-format +msgid "Error: Main project '{name}' not found." +msgstr "Chyba: Hlavní projekt '{name}' nebyl nalezen." -msgid "12. Delete Task" -msgstr "12. Smazat úkol" +#: TimeTrackerCLI.py:172 +msgid "" +"\n" +"--- List Inactive Main-Projects ---" +msgstr "" +"\n" +"--- Vypsat neaktivní hlavní projekty ---" -msgid "13. Move Task" -msgstr "13. Přesunout úkol" +#: TimeTrackerCLI.py:174 +msgid "Enter the number of weeks without activity (e.g., 8): " +msgstr "Zadejte počet týdnů bez aktivity (např. 8): " -msgid "14. List Inactive Tasks" -msgstr "14. Vypsat neaktivní úkoly" +#: TimeTrackerCLI.py:176 TimeTrackerCLI.py:518 +msgid "Please enter a positive number." +msgstr "Zadejte prosím kladné číslo." -msgid "15. List All Closed Tasks" -msgstr "15. Vypsat všechny uzavřené úkoly" +#: TimeTrackerCLI.py:182 +#, python-brace-format +msgid "" +"\n" +"Inactive Main-Projects (>{weeks} weeks):" +msgstr "" +"\n" +"Neaktivní hlavní projekty (>{weeks}týdnů):" -msgid "16. Delete All Closed Tasks" -msgstr "16. Smazat všechny uzavřené úkoly" +#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:526 +#, python-brace-format +msgid " - Main Project: {name}" +msgstr "- Hlavní projekt:{name}" -msgid "17. Promote Task to Project" -msgstr "17. Povýšit úkol na projekt" +#: TimeTrackerCLI.py:185 TimeTrackerCLI.py:528 +#, python-brace-format +msgid " Last Activity: {date}" +msgstr " Poslední aktivita: {date}" -msgid "0. Back to Main Menu" -msgstr "0. Zpět do hlavního menu" +#: TimeTrackerCLI.py:188 +#, python-brace-format +msgid "No main-projects found inactive for more than {weeks} weeks." +msgstr "" +"Žádné hlavní projekty nebyly nalezeny jako neaktivní déle než{weeks}týdnů." -msgid "Choice: " -msgstr "Volba: " +#: TimeTrackerCLI.py:191 TimeTrackerCLI.py:534 +msgid "Invalid input. Please enter a valid number for weeks." +msgstr "Neplatný vstup. Zadejte prosím platné číslo pro týdny." -msgid "\n--- Add New Project ---" -msgstr "\n--- Přidat nový projekt ---" +#: TimeTrackerCLI.py:194 +msgid "" +"\n" +"--- Demote Main-Project to Sub-Project ---" +msgstr "" +"\n" +"--- Snížit hlavní projekt na podprojekt ---" -msgid "Name of the project: " -msgstr "Název projektu: " +#: TimeTrackerCLI.py:197 +msgid "You need at least two open main projects for this operation." +msgstr "Pro tuto operaci potřebujete alespoň dva otevřené hlavní projekty." -msgid "Project '{name}' added." -msgstr "Projekt '{name}' byl přidán." +#: TimeTrackerCLI.py:202 +msgid "Select the main project to demote:" +msgstr "Vyberte hlavní projekt, který chcete snížit:" -msgid "\n--- List Projects ---" -msgstr "\n--- Seznam projektů ---" +#: TimeTrackerCLI.py:205 +msgid "Enter the number of the project to demote: " +msgstr "Zadejte číslo projektu k degradaci: " -msgid "No projects found." -msgstr "Nebyly nalezeny žádné projekty." +#: TimeTrackerCLI.py:209 +msgid "" +"\n" +"Select the new parent main project:" +msgstr "" +"\n" +"Vyberte nový nadřazený hlavní projekt:" -msgid "\n--- Rename Project ---" -msgstr "\n--- Přejmenovat projekt ---" +#: TimeTrackerCLI.py:213 +msgid "Enter the number of the new parent project: " +msgstr "Zadejte číslo nového nadřazeného projektu: " -msgid "No projects to rename." -msgstr "Žádné projekty k přejmenování." +#: TimeTrackerCLI.py:224 +msgid "" +"\n" +"--- List Completed Main Projects ---" +msgstr "" +"\n" +"--- Seznam dokončených hlavních projektů ---" -msgid "Select a project to rename:" -msgstr "Vyberte projekt k přejmenování:" +#: TimeTrackerCLI.py:227 +msgid "Main projects with only closed or no sub-projects:" +msgstr "Hlavní projekty pouze s uzavřenými nebo žádnými dílčími projekty:" -msgid "Enter the number of the project: " -msgstr "Zadejte číslo projektu: " +#: TimeTrackerCLI.py:231 +msgid "No completed main projects found." +msgstr "Nebyly nalezeny žádné dokončené hlavní projekty." -msgid "Enter the new name for '{name}': " -msgstr "Zadejte nový název pro '{name}': " +#: TimeTrackerCLI.py:235 +msgid "Invalid choice. Please enter a number from 0 to 9." +msgstr "Neplatná volba. Zadejte číslo od 0 do 9." +#: TimeTrackerCLI.py:240 msgid "" -"Project '{old_name}' successfully renamed to '{new_name}'." -msgstr "Projekt '{old_name}' byl úspěšně přejmenován na '{new_name}'." +"\n" +"--- Task Management ---" +msgstr "" +"\n" +"--- Správa úloh ---" -msgid "" -"Error: Could not rename. The new name '{new_name}' might already exist." -msgstr "Chyba: Nelze přejmenovat. Nový název '{new_name}' již možná existuje." +#: TimeTrackerCLI.py:241 +msgid "1. Add Task" +msgstr "1. Přidat úkol" -msgid "Invalid input. Please enter a valid number." -msgstr "Neplatný vstup. Zadejte prosím platné číslo." +#: TimeTrackerCLI.py:242 +msgid "2. List Tasks" +msgstr "2. Seznam úkolů" -msgid "\n--- Delete Project ---" -msgstr "\n--- Smazat projekt ---" +#: TimeTrackerCLI.py:243 +msgid "3. Rename Task" +msgstr "3. Přejmenovat úkol" -msgid "No projects to delete." -msgstr "Žádné projekty ke smazání." +#: TimeTrackerCLI.py:244 +msgid "4. Close Task" +msgstr "4. Zavřít úkol" -msgid "Select a project to delete:" -msgstr "Vyberte projekt ke smazání:" +#: TimeTrackerCLI.py:245 +msgid "5. Re-open Task" +msgstr "5. Smazat Znovu otevřít úkol" -msgid "Project '{name}' deleted." -msgstr "Projekt '{name}' byl smazán." +#: TimeTrackerCLI.py:246 +msgid "6. Delete Task" +msgstr "SPLIT" -msgid "Error: Project '{name}' not found." -msgstr "Chyba: Projekt '{name}' nebyl nalezen." +#: TimeTrackerCLI.py:247 +msgid "7. Move Task" +msgstr "7. Přesunout úkol" -msgid "\n--- List Inactive Projects ---" -msgstr "\n--- Seznam neaktivních projektů ---" +#: TimeTrackerCLI.py:248 +msgid "8. List Inactive Tasks" +msgstr "8. Vypsat neaktivní úkoly" -msgid "Enter the number of weeks without activity (e.g., 8): " -msgstr "Zadejte počet týdnů bez aktivity (např. 8): " +#: TimeTrackerCLI.py:249 +msgid "9. List All Closed Tasks" +msgstr "9. Vypsat všechny uzavřené úkoly" -msgid "Please enter a positive number." -msgstr "Zadejte prosím kladné číslo." +#: TimeTrackerCLI.py:250 +msgid "10. Delete All Closed Tasks" +msgstr "10. Smazat všechny uzavřené úkoly" -msgid "\nInactive Projects (>{weeks} weeks):" -msgstr "\nNeaktivní projekty (>{weeks} týdnů):" +#: TimeTrackerCLI.py:251 +msgid "11. Promote Task to Main-Project" +msgstr "11. Povýšit úkol na hlavní projekt" -msgid " - Project: {name}" -msgstr " - Projekt: {name}" +#: TimeTrackerCLI.py:252 +msgid "12. Edit Task (Name & Due Date)" +msgstr "12. Upravit úkol (název a datum dokončení)" -msgid " Last Activity: {date}" -msgstr " Poslední aktivita: {date}" +#: TimeTrackerCLI.py:261 +msgid "" +"\n" +"--- Add New Task ---" +msgstr "" +"\n" +"--- Přidat nový úkol ---" -msgid "No projects found inactive for more than {weeks} week." -msgid_plural "No projects found inactive for more than {weeks} weeks." -msgstr[0] "Nebyl nalezen žádný projekt neaktivní déle než {weeks} týden." -msgstr[1] "Nebyly nalezeny žádné projekty neaktivní déle než {weeks} týdny." -msgstr[2] "Nebyly nalezeny žádné projekty neaktivní déle než {weeks} týdnů." +#: TimeTrackerCLI.py:264 TimeTrackerCLI.py:960 +msgid "No open main projects found. Please add one first." +msgstr "" +"Nebyly nalezeny žádné otevřené hlavní projekty. Nejprve přidejte jednu." -msgid "Invalid input. Please enter a valid number for weeks." -msgstr "Neplatný vstup. Zadejte prosím platné číslo pro týdny." +#: TimeTrackerCLI.py:267 +msgid "Select a main project to add a task to:" +msgstr "Vyberte hlavní projekt, do kterého chcete přidat úkol:" -msgid "\n--- Add New Task ---" -msgstr "\n--- Přidat nový úkol ---" +#: TimeTrackerCLI.py:275 +msgid "Name of the new task: " +msgstr "Název nového úkolu: " -msgid "No projects found. Please add one first." -msgstr "Nebyly nalezeny žádné projekty. Nejprve prosím nějaký přidejte." +#: TimeTrackerCLI.py:276 +msgid "Due date (YYYY-MM-DD, press Enter to skip): " +msgstr "Termín (RRRR-MM-DD, přeskočte stisknutím klávesy Enter):" -msgid "Select a project to add a task to:" -msgstr "Vyberte projekt, do kterého chcete přidat úkol:" +#: TimeTrackerCLI.py:278 +msgid "Add to 'Today' list? (y/n, default n): " +msgstr "Přidat do seznamu „Dnes“? (y/n, výchozí n):" -msgid "Name of the new task: " -msgstr "Název nového úkolu: " +#: TimeTrackerCLI.py:280 +msgid "Note (Markdown supported): " +msgstr "Poznámka (podporováno označení):" -msgid "Task '{sub_name}' added to '{main_name}'." -msgstr "Úkol '{sub_name}' byl přidán do '{main_name}'." +#: TimeTrackerCLI.py:283 +#, python-brace-format +msgid "Task '{task_name}' added." +msgstr "Úkol '{task_name}' přidán." -msgid "\n--- List Tasks ---" -msgstr "\n--- Seznam úkolů ---" +#: TimeTrackerCLI.py:290 +msgid "" +"\n" +"--- List Tasks ---" +msgstr "" +"\n" +"--- Seznam úkolů ---" -msgid "No projects found. Cannot list tasks." -msgstr "Nebyly nalezeny žádné projekty. Nelze vypsat úkoly." +#: TimeTrackerCLI.py:293 +msgid "No main projects found. Cannot list tasks." +msgstr "Nebyly nalezeny žádné hlavní projekty. Nelze vypsat úkoly." -msgid "Select the project whose tasks you want to list:" -msgstr "Vyberte projekt, jehož úkoly chcete vypsat:" +#: TimeTrackerCLI.py:296 +msgid "Select the main project whose tasks you want to list:" +msgstr "Vyberte hlavní projekt, jehož úkoly chcete vypsat:" +#: TimeTrackerCLI.py:305 sl/SL_Menu.py:1307 +#, python-brace-format msgid "Tasks for '{name}':" msgstr "Úkoly pro '{name}':" +#: TimeTrackerCLI.py:308 sl/SL_Menu.py:524 sl/SL_Menu.py:612 +msgid "Due" +msgstr "Termín" + +#: TimeTrackerCLI.py:309 sl/SL_Menu.py:409 sl/SL_Menu.py:419 sl/SL_Menu.py:484 +#: sl/SL_Menu.py:546 sl/SL_Menu.py:747 sl/SL_Menu.py:1603 sl/SL_Menu.py:1771 +msgid "Today" +msgstr "Dnes" + +#: TimeTrackerCLI.py:317 TimeTrackerCLI.py:861 sl/SL_Menu.py:1315 +#: sl/SL_Menu.py:2276 +#, python-brace-format msgid "No tasks found for '{name}'." msgstr "Pro '{name}' nebyly nalezeny žádné úkoly." -msgid "\n--- Rename Task ---" -msgstr "\n--- Přejmenovat úkol ---" +#: TimeTrackerCLI.py:322 +msgid "" +"\n" +"--- Rename Task ---" +msgstr "" +"\n" +"--- Přejmenovat úkol ---" -msgid "Select the project:" -msgstr "Vyberte projekt:" +#: TimeTrackerCLI.py:325 TimeTrackerCLI.py:362 TimeTrackerCLI.py:397 +#: TimeTrackerCLI.py:432 TimeTrackerCLI.py:560 +msgid "No open main projects found." +msgstr "Nebyly nalezeny žádné otevřené hlavní projekty." +#: TimeTrackerCLI.py:328 TimeTrackerCLI.py:365 TimeTrackerCLI.py:400 +#: TimeTrackerCLI.py:435 TimeTrackerCLI.py:599 TimeTrackerCLI.py:852 +msgid "Select the main project:" +msgstr "Vyberte hlavní projekt:" + +#: TimeTrackerCLI.py:338 +#, python-brace-format msgid "No tasks to rename for '{name}'." msgstr "Žádné úkoly k přejmenování pro '{name}'." +#: TimeTrackerCLI.py:341 +#, python-brace-format msgid "Select a task from '{name}' to rename:" msgstr "Vyberte úkol z '{name}' k přejmenování:" +#: TimeTrackerCLI.py:345 TimeTrackerCLI.py:382 TimeTrackerCLI.py:417 +#: TimeTrackerCLI.py:453 TimeTrackerCLI.py:489 TimeTrackerCLI.py:580 +#: TimeTrackerCLI.py:867 TimeTrackerCLI.py:982 msgid "Enter the number of the task: " msgstr "Zadejte číslo úkolu: " +#: TimeTrackerCLI.py:352 sl/SL_Menu.py:1358 +#, python-brace-format msgid "Task '{old_name}' renamed to '{new_name}'." msgstr "Úkol '{old_name}' byl přejmenován na '{new_name}'." +#: TimeTrackerCLI.py:354 msgid "" -"Error: Could not rename. The new name might already exist or the project " -"was not found." +"Error: Could not rename. The new name might already exist or the project was" +" not found." msgstr "" "Chyba: Nelze přejmenovat. Nový název již možná existuje nebo projekt nebyl " "nalezen." -msgid "\n--- Delete Task ---" -msgstr "\n--- Smazat úkol ---" +#: TimeTrackerCLI.py:359 +msgid "" +"\n" +"--- Close Task ---" +msgstr "" +"\n" +"--- Zavřít úlohu ---" + +#: TimeTrackerCLI.py:375 +#, python-brace-format +msgid "No open tasks to close for '{name}'." +msgstr "Žádné otevřené úlohy k uzavření pro '{name}'." -msgid "No tasks to delete for '{name}'." -msgstr "Žádné úkoly ke smazání pro '{name}'." +#: TimeTrackerCLI.py:378 +#, python-brace-format +msgid "Select a task from '{name}' to close:" +msgstr "Vyberte úlohu z '{name}', kterou chcete zavřít:" -msgid "Select a task from '{name}' to delete:" -msgstr "Vyberte úkol z '{name}' ke smazání:" +#: TimeTrackerCLI.py:387 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been closed." +msgstr "Úloha '{task_name}' v '{main_name}' byla uzavřena." -msgid "Task '{sub_name}' deleted from '{main_name}'." -msgstr "Úkol '{sub_name}' byl smazán z '{main_name}'." +#: TimeTrackerCLI.py:389 TimeTrackerCLI.py:424 TimeTrackerCLI.py:460 +#: sl/SL_Menu.py:945 sl/SL_Menu.py:990 sl/SL_Menu.py:1036 +msgid "Error: Main project or task not found." +msgstr "Chyba: Hlavní projekt nebo úkol nebyl nalezen." -msgid "\n--- List All Closed Tasks ---" -msgstr "\n--- Seznam všech uzavřených úkolů ---" +#: TimeTrackerCLI.py:394 +msgid "" +"\n" +"--- Re-open Task ---" +msgstr "" +"\n" +"--- Znovu otevřít úlohu ---" -msgid "No closed tasks found." -msgstr "Nebyly nalezeny žádné uzavřené úkoly." +#: TimeTrackerCLI.py:410 +#, python-brace-format +msgid "No closed tasks to reopen for '{name}'." +msgstr "Žádné uzavřené úlohy k opětovnému otevření pro '{name}'." -msgid "Error: Project or task not found." -msgstr "Chyba: Projekt nebo úkol nebyl nalezen." +#: TimeTrackerCLI.py:413 +#, python-brace-format +msgid "Select a task from '{name}' to reopen:" +msgstr "Vyberte úlohu z '{name}', kterou chcete znovu otevřít:" -msgid "\n--- List Inactive Tasks ---" -msgstr "\n--- Seznam neaktivních úkolů ---" +#: TimeTrackerCLI.py:422 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been reopened." +msgstr "Úloha '{task_name}' v '{main_name}' byla znovu otevřena." -msgid "Enter the number of weeks without activity (e.g., 4): " -msgstr "Zadejte počet týdnů bez aktivity (např. 4): " +#: TimeTrackerCLI.py:429 +msgid "" +"\n" +"--- Delete Task ---" +msgstr "" +"\n" +"--- Smazat úkol ---" -msgid "\nInactive Tasks (>{weeks} weeks):" -msgstr "\nNeaktivní úkoly (>{weeks} týdnů):" +#: TimeTrackerCLI.py:446 +#, python-brace-format +msgid "No tasks to delete for '{name}'." +msgstr "Žádné úkoly ke smazání pro '{name}'." -msgid " Task: {name}" -msgstr " Úkol: {name}" +#: TimeTrackerCLI.py:449 +#, python-brace-format +msgid "Select a task from '{name}' to delete:" +msgstr "Vyberte úkol z '{name}' ke smazání:" -msgid "No tasks found inactive for more than {weeks} week." -msgid_plural "No tasks found inactive for more than {weeks} weeks." -msgstr[0] "Nebyl nalezen žádný úkol neaktivní déle než {weeks} týden." -msgstr[1] "Nebyly nalezeny žádné úkoly neaktivní déle než {weeks} týdny." -msgstr[2] "Nebyly nalezeny žádné úkoly neaktivní déle než {weeks} týdnů." +#: TimeTrackerCLI.py:458 +#, python-brace-format +msgid "Task '{task_name}' deleted from '{main_name}'." +msgstr "Úloha '{task_name}' byla odstraněna z '{main_name}'." -msgid "\n--- Move Task ---" -msgstr "\n--- Přesunout úkol ---" +#: TimeTrackerCLI.py:466 +msgid "" +"\n" +"--- Move Task ---" +msgstr "" +"\n" +"--- Přesunout úkol ---" -msgid "You need at least two projects to move a task." -msgstr "K přesunutí úkolu potřebujete alespoň dva projekty." +#: TimeTrackerCLI.py:469 +msgid "You need at least two open main projects to move a task." +msgstr "K přesunutí úlohy potřebujete alespoň dva otevřené hlavní projekty." -msgid "Select the source project:" -msgstr "Vyberte zdrojový projekt:" +#: TimeTrackerCLI.py:474 +msgid "Select the source main project:" +msgstr "Vyberte zdrojový hlavní projekt:" -msgid "Enter the number of the source project: " -msgstr "Zadejte číslo zdrojového projektu: " +#: TimeTrackerCLI.py:477 +msgid "Enter the number of the source main project: " +msgstr "Zadejte číslo zdrojového hlavního projektu:" +#: TimeTrackerCLI.py:483 +#, python-brace-format msgid "No tasks to move from '{name}'." msgstr "Žádné úkoly k přesunutí z '{name}'." -msgid "\nSelect a task from '{name}' to move:" -msgstr "\nVyberte úkol z '{name}' k přesunutí:" +#: TimeTrackerCLI.py:486 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to move:" +msgstr "" +"\n" +"Vyberte úkol z '{name}' k přesunutí:" -msgid "\nSelect the destination project:" -msgstr "\nVyberte cílový projekt:" +#: TimeTrackerCLI.py:494 +msgid "" +"\n" +"Select the destination main project:" +msgstr "" +"\n" +"Vyberte cílový hlavní projekt:" -msgid "Enter the number of the destination project: " -msgstr "Zadejte číslo cílového projektu: " +#: TimeTrackerCLI.py:499 +msgid "Enter the number of the destination main project: " +msgstr "Zadejte číslo cílového hlavního projektu:" +#: TimeTrackerCLI.py:505 +#, python-brace-format msgid "" -"Successfully moved '{sub_name}' from '{source_name}' to '{dest_name}'." +"Successfully moved '{task_name}' from '{source_main_project}' to " +"'{dest_main_project}'." msgstr "" -"Úkol '{sub_name}' byl úspěšně přesunut z '{source_name}' do " -"'{dest_name}'." +"Úspěšně přesunuto „{task_name}“ z „{source_main_project}“ do " +"„{dest_main_project}“." +#: TimeTrackerCLI.py:507 +#, python-brace-format msgid "Error: {message}" msgstr "Chyba: {message}" -msgid "\n--- Promote Task to Project ---" -msgstr "\n--- Povýšit úkol na projekt ---" +#: TimeTrackerCLI.py:514 +msgid "" +"\n" +"--- List Inactive Tasks ---" +msgstr "" +"\n" +"--- Seznam neaktivních úkolů ---" -msgid "Select the project containing the task to promote:" -msgstr "Vyberte projekt obsahující úkol k povýšení:" +#: TimeTrackerCLI.py:516 +msgid "Enter the number of weeks without activity (e.g., 4): " +msgstr "Zadejte počet týdnů bez aktivity (např. 4): " -msgid "No tasks to promote in '{name}'." -msgstr "Žádné úkoly k povýšení v '{name}'." +#: TimeTrackerCLI.py:524 +#, python-brace-format +msgid "" +"\n" +"Inactive Tasks (>{weeks} weeks):" +msgstr "" +"\n" +"Neaktivní úkoly (>{weeks} týdnů):" -msgid "\nSelect a task from '{name}' to promote:" -msgstr "\nVyberte úkol z '{name}' k povýšení:" +#: TimeTrackerCLI.py:527 +#, python-brace-format +msgid " Task: {name}" +msgstr " Úkol: {name}" -msgid "\n--- Demote Project to Task ---" -msgstr "\n--- Degradovat projekt na úkol ---" +#: TimeTrackerCLI.py:531 sl/SL_Menu.py:1118 +#, python-brace-format +msgid "No tasks found inactive for more than {weeks} weeks." +msgstr "Žádné úkoly nebyly nalezeny neaktivní déle než{weeks}týdnů." -msgid "You need at least two projects for this operation." -msgstr "Pro tuto operaci potřebujete alespoň dva projekty." +#: TimeTrackerCLI.py:537 +msgid "" +"\n" +"--- List All Closed Tasks ---" +msgstr "" +"\n" +"--- Seznam všech uzavřených úkolů ---" -msgid "Select the project to demote:" -msgstr "Vyberte projekt k degradaci:" +#: TimeTrackerCLI.py:543 sl/SL_Menu.py:1143 sl/SL_Menu.py:1166 +msgid "No closed tasks found." +msgstr "Nebyly nalezeny žádné uzavřené úkoly." -msgid "Enter the number of the project to demote: " -msgstr "Zadejte číslo projektu k degradaci: " +#: TimeTrackerCLI.py:547 +msgid "" +"\n" +"--- Delete All Closed Tasks ---" +msgstr "" +"\n" +"--- Smazat všechny uzavřené úkoly ---" -msgid "\nSelect the new parent project:" -msgstr "\nVyberte nový nadřazený projekt:" +#: TimeTrackerCLI.py:548 +msgid "Are you sure you want to delete ALL closed tasks? (y/n): " +msgstr "Opravdu chcete smazat VŠECHNY uzavřené úkoly? (y/n):" -msgid "Enter the number of the new parent project: " -msgstr "Zadejte číslo nového nadřazeného projektu: " +#: TimeTrackerCLI.py:551 +#, python-brace-format +msgid "{count} closed tasks were deleted." +msgstr "{count}uzavřené úkoly byly smazány." -msgid "Invalid choice. Please enter a number from 0 to 17." -msgstr "Neplatná volba. Zadejte prosím číslo od 0 do 17." +#: TimeTrackerCLI.py:553 +msgid "Operation cancelled." +msgstr "Operace zrušena." -msgid "1. Daily Report (Today)" -msgstr "1. Denní zpráva (dnes)" +#: TimeTrackerCLI.py:557 +msgid "" +"\n" +"--- Promote Task to Main-Project ---" +msgstr "" +"\n" +"--- Povýšit úkol na hlavní projekt ---" -msgid "2. Daily Report (Specific Day)" -msgstr "2. Denní zpráva (konkrétní den)" +#: TimeTrackerCLI.py:565 +msgid "Select the main project containing the task to promote:" +msgstr "Vyberte hlavní projekt obsahující úkol k podpoře:" -msgid "3. Date Range Report" -msgstr "3. Zpráva za období" +#: TimeTrackerCLI.py:574 +#, python-brace-format +msgid "No tasks to promote in '{name}'." +msgstr "Žádné úkoly k povýšení v '{name}'." -msgid "4. Detailed Task Report" -msgstr "4. Podrobná zpráva o úkolu" +#: TimeTrackerCLI.py:577 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to promote:" +msgstr "" +"\n" +"Vyberte úkol z '{name}' k povýšení:" -msgid "5. Detailed Project Report" -msgstr "5. Podrobná zpráva o projektu" +#: TimeTrackerCLI.py:593 +msgid "" +"\n" +"--- Edit Task ---" +msgstr "" +"\n" +"--- Upravit úkol ---" -msgid "\n--- Generate Daily Report (Today) ---" -msgstr "\n--- Generovat denní zprávu (dnes) ---" +#: TimeTrackerCLI.py:596 sl/SL_Menu.py:913 sl/SL_Menu.py:958 +#: sl/SL_Menu.py:1003 sl/SL_Menu.py:1049 sl/SL_Menu.py:1198 sl/SL_Menu.py:1328 +#: sl/SL_Menu.py:1487 sl/SL_Menu.py:1677 +msgid "No open projects found." +msgstr "Nebyly nalezeny žádné otevřené projekty." -msgid "\n--- Generate Daily Report for a specific Day ---" -msgstr "\n--- Generovat denní zprávu pro konkrétní den ---" +#: TimeTrackerCLI.py:609 +#, python-brace-format +msgid "No open tasks in '{name}'." +msgstr "Žádné otevřené úkoly v '{name}'." -msgid "Enter the date (YYYY-MM-DD): " -msgstr "Zadejte datum (RRRR-MM-DD): " +#: TimeTrackerCLI.py:612 +msgid "Select a task to edit:" +msgstr "Vyberte úkol, který chcete upravit:" -msgid "Invalid date format. Please use YYYY-MM-DD." -msgstr "Neplatný formát data. Použijte prosím RRRR-MM-DD." +#: TimeTrackerCLI.py:616 +msgid "Enter the number: " +msgstr "Zadejte číslo:" -msgid "\n--- Generate Report for a Date Range ---" -msgstr "\n--- Generovat zprávu za období ---" +#: TimeTrackerCLI.py:623 +#, python-brace-format +msgid "New name (press Enter to keep '{name}'): " +msgstr "Nové jméno (stisknutím klávesy Enter ponechte '{name}'):" -msgid "Enter the start date (YYYY-MM-DD): " -msgstr "Zadejte počáteční datum (RRRR-MM-DD): " +#: TimeTrackerCLI.py:624 +#, python-brace-format +msgid "New due date (YYYY-MM-DD, current: '{due}', enter '-' to clear): " +msgstr "" +"Nové datum splatnosti (RRRR-MM-DD, aktuální: '{due}', pro vymazání zadejte " +"'-'):" -msgid "Enter the end date (YYYY-MM-DD): " -msgstr "Zadejte koncové datum (RRRR-MM-DD): " +#: TimeTrackerCLI.py:627 +#, python-brace-format +msgid "Is this for today? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"Je to dnes? (aktuální:{current}, y/n, ponechejte stisknutím klávesy Enter):" -msgid "Error: The start date cannot be after the end date." -msgstr "Chyba: Počáteční datum nemůže být po koncovém datu." +#: TimeTrackerCLI.py:630 +#, python-brace-format +msgid "Current Note: {note}" +msgstr "Aktuální poznámka:{note}" -msgid "\n--- Detailed Task Report ---" -msgstr "\n--- Podrobná zpráva o úkolu ---" +#: TimeTrackerCLI.py:631 +msgid "New note (press Enter to keep current): " +msgstr "Nová poznámka (aktuální bude zachována stisknutím klávesy Enter):" + +#: TimeTrackerCLI.py:635 +#, python-brace-format +msgid "Is this task done? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"Je tento úkol dokončen? (aktuální:{current}, y/n, pro zachování stiskněte " +"Enter):" -msgid "\nSelect the task for the report:" -msgstr "\nVyberte úkol pro zprávu:" +#: TimeTrackerCLI.py:639 sl/SL_Menu.py:1834 +msgid "Task updated successfully." +msgstr "Úloha byla úspěšně aktualizována." -msgid "\n--- Detailed Project Report ---" -msgstr "\n--- Podrobná zpráva o projektu ---" +#: TimeTrackerCLI.py:641 +msgid "Error updating task." +msgstr "Chyba při aktualizaci úlohy." -msgid "Select the project for the report:" -msgstr "Vyberte projekt pro zprávu:" +#: TimeTrackerCLI.py:643 +msgid "Invalid input." +msgstr "Neplatný vstup." -msgid "Invalid choice. Please enter a number from 0 to 5." -msgstr "Neplatná volba. Zadejte prosím číslo od 0 do 5." +#: TimeTrackerCLI.py:648 +msgid "Invalid choice. Please enter a number from 0 to 11." +msgstr "Neplatná volba. Zadejte číslo od 0 do 11." -msgid "\n--- Settings ---" -msgstr "\n--- Nastavení ---" +#: TimeTrackerCLI.py:653 +msgid "" +"\n" +"--- Settings ---" +msgstr "" +"\n" +"--- Nastavení ---" +#: TimeTrackerCLI.py:654 sl/SL_Menu.py:870 msgid "1. Change Language" msgstr "1. Změnit jazyk" +#: TimeTrackerCLI.py:655 sl/SL_Menu.py:871 +msgid "2. Restore Previous Version" +msgstr "2. Obnovit předchozí verzi" + +#: TimeTrackerCLI.py:656 sl/SL_Menu.py:872 msgid "3. Change Data Storage Location" msgstr "3. Změnit umístění úložiště dat" -msgid "2. Restore Previous Version" -msgstr "2. Obnovit předchozí verzi" +#: TimeTrackerCLI.py:657 sl/SL_Menu.py:874 +msgid "4. Change Streamlit Port" +msgstr "4. Změňte Streamlit Port" + +#: TimeTrackerCLI.py:659 TimeTrackerCLI.py:698 TimeTrackerCLI.py:808 +#: sl/SL_Menu.py:881 +msgid "0. Back to Main Menu" +msgstr "0. Zpět do hlavní nabídky" + +#: TimeTrackerCLI.py:682 +msgid "Invalid choice. Please enter a number from 0 to 4." +msgstr "Neplatná volba. Zadejte číslo od 0 do 4." + +#: TimeTrackerCLI.py:687 +msgid "" +"\n" +"--- Language Settings ---" +msgstr "" +"\n" +"--- Nastavení jazyka ---" +#: TimeTrackerCLI.py:692 msgid "No additional languages found." msgstr "Nebyly nalezeny žádné další jazyky." +#: TimeTrackerCLI.py:716 +#, python-brace-format msgid "Language changed to '{lang}'. Please restart the application." msgstr "Jazyk změněn na '{lang}'. Prosím, restartujte aplikaci." +#: TimeTrackerCLI.py:719 msgid "Invalid choice." msgstr "Neplatná volba." -msgid "Invalid choice. Please enter a number from 0 to 3." -msgstr "Neplatná volba. Zadejte prosím číslo od 0 do 3." +#: TimeTrackerCLI.py:721 +msgid "Invalid input. Please enter a number." +msgstr "Neplatný vstup. Zadejte číslo." -msgid "\n--- Data Storage Settings ---" -msgstr "\n--- Nastavení úložiště dat ---" +#: TimeTrackerCLI.py:725 +msgid "" +"\n" +"--- Data Storage Settings ---" +msgstr "" +"\n" +"--- Nastavení úložiště dat ---" +#: TimeTrackerCLI.py:726 +#, python-brace-format msgid "Current data file: {path}" msgstr "Aktuální datový soubor: {path}" +#: TimeTrackerCLI.py:728 msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." msgstr "Zadejte novou cestu k datovému souboru (např. /cesta/k/my_data.json)." +#: TimeTrackerCLI.py:729 msgid "Leave empty to cancel." msgstr "Ponechte prázdné pro zrušení." +#: TimeTrackerCLI.py:730 msgid "New Path: " msgstr "Nová cesta: " +#: TimeTrackerCLI.py:738 sl/SL_Menu.py:1974 +#, python-brace-format msgid "Error: The directory '{dir}' does not exist." msgstr "Chyba: Adresář '{dir}' neexistuje." +#: TimeTrackerCLI.py:752 msgid "Storage location updated." msgstr "Umístění úložiště aktualizováno." +#: TimeTrackerCLI.py:756 msgid "Do you want to move the existing data to the new location? (y/n): " msgstr "Chcete přesunout stávající data do nového umístění? (a/n): " +#: TimeTrackerCLI.py:760 sl/SL_Menu.py:1985 msgid "Data moved successfully." msgstr "Data byla úspěšně přesunuta." +#: TimeTrackerCLI.py:762 sl/SL_Menu.py:1987 +#, python-brace-format msgid "Error moving data: {error}" msgstr "Chyba při přesunu dat: {error}" +#: TimeTrackerCLI.py:764 tt/TimeTracker.py:117 +msgid "Please restart the application for the changes to take effect." +msgstr "Prosím, restartujte aplikaci, aby se změny projevily." + +#: TimeTrackerCLI.py:767 +#, python-brace-format msgid "Error updating configuration: {error}" msgstr "Chyba při aktualizaci konfigurace: {error}" -msgid "\n--- Update Available ---" -msgstr "\n--- K dispozici je aktualizace ---" +#: TimeTrackerCLI.py:771 +msgid "" +"\n" +"--- Streamlit Port Settings ---" +msgstr "" +"\n" +"--- Nastavení streamovaného portu ---" + +#: TimeTrackerCLI.py:781 +#, python-brace-format +msgid "Current Streamlit Port: {port}" +msgstr "Aktuální streamovaný port:{port}" + +#: TimeTrackerCLI.py:783 +msgid "Enter new port (or press Enter to keep current): " +msgstr "" +"Zadejte nový port (nebo stiskněte Enter, chcete-li zachovat aktuální):" + +#: TimeTrackerCLI.py:792 +#, python-brace-format +msgid "" +"Port updated to {port}. Please restart Streamlit for changes to take effect." +msgstr "" +"Port byl aktualizován na{port}. Restartujte Streamlit, aby se změny " +"projevily." + +#: TimeTrackerCLI.py:800 +msgid "" +"\n" +"--- Reporting ---" +msgstr "" +"\n" +"--- Vykazování ---" + +#: TimeTrackerCLI.py:801 +msgid "1. Daily Report (Today)" +msgstr "1. Denní zpráva (dnes)" + +#: TimeTrackerCLI.py:802 +msgid "2. Daily Report (Specific Day)" +msgstr "2. Denní zpráva (konkrétní den)" + +#: TimeTrackerCLI.py:803 +msgid "3. Date Range Report" +msgstr "3. Zpráva za období" + +#: TimeTrackerCLI.py:804 +msgid "4. Detailed Task Report" +msgstr "4. Podrobná zpráva o úkolu" + +#: TimeTrackerCLI.py:805 +msgid "5. Detailed Main-Project Report" +msgstr "5. Podrobná zpráva o hlavním projektu" + +#: TimeTrackerCLI.py:806 +msgid "6. Detailed Daily Report" +msgstr "6. Podrobná denní zpráva" + +#: TimeTrackerCLI.py:815 +msgid "" +"\n" +"--- Generate Daily Report (Today) ---" +msgstr "" +"\n" +"--- Generovat denní zprávu (dnes) ---" + +#: TimeTrackerCLI.py:820 +msgid "" +"\n" +"--- Generate Daily Report for a specific Day ---" +msgstr "" +"\n" +"--- Generovat denní zprávu pro konkrétní den ---" + +#: TimeTrackerCLI.py:821 +msgid "Enter the date (YYYY-MM-DD): " +msgstr "Zadejte datum (RRRR-MM-DD): " + +#: TimeTrackerCLI.py:827 TimeTrackerCLI.py:842 TimeTrackerCLI.py:903 +msgid "Invalid date format. Please use YYYY-MM-DD." +msgstr "Neplatný formát data. Použijte prosím RRRR-MM-DD." + +#: TimeTrackerCLI.py:830 +msgid "" +"\n" +"--- Generate Report for a Date Range ---" +msgstr "" +"\n" +"--- Generovat zprávu za období ---" + +#: TimeTrackerCLI.py:831 +msgid "Enter the start date (YYYY-MM-DD): " +msgstr "Zadejte počáteční datum (RRRR-MM-DD): " + +#: TimeTrackerCLI.py:832 +msgid "Enter the end date (YYYY-MM-DD): " +msgstr "Zadejte koncové datum (RRRR-MM-DD): " + +#: TimeTrackerCLI.py:837 sl/SL_Menu.py:2227 +msgid "Error: The start date cannot be after the end date." +msgstr "Chyba: Počáteční datum nemůže být po koncovém datu." + +#: TimeTrackerCLI.py:844 +msgid "" +"\n" +"--- Detailed Task Report ---" +msgstr "" +"\n" +"--- Podrobná zpráva o úkolu ---" + +#: TimeTrackerCLI.py:847 TimeTrackerCLI.py:880 sl/SL_Menu.py:1249 +#: sl/SL_Menu.py:1296 sl/SL_Menu.py:1435 sl/SL_Menu.py:2245 sl/SL_Menu.py:2304 +msgid "No projects found." +msgstr "Nebyly nalezeny žádné projekty." + +#: TimeTrackerCLI.py:864 +msgid "" +"\n" +"Select the task for the report:" +msgstr "" +"\n" +"Vyberte úkol pro zprávu:" + +#: TimeTrackerCLI.py:877 +msgid "" +"\n" +"--- Detailed Main-Project Report ---" +msgstr "" +"\n" +"--- Podrobná zpráva o hlavním projektu ---" + +#: TimeTrackerCLI.py:885 +msgid "Select the main project for the report:" +msgstr "Vyberte hlavní projekt pro zprávu:" + +#: TimeTrackerCLI.py:896 +msgid "" +"\n" +"--- Detailed Daily Report ---" +msgstr "" +"\n" +"--- Podrobná denní zpráva ---" + +#: TimeTrackerCLI.py:897 +msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " +msgstr "Zadejte datum (RRRR-MM-DD) nebo stiskněte Enter pro dnešek: " + +#: TimeTrackerCLI.py:911 TimeTrackerCLI.py:1042 +msgid "Invalid choice. Please enter a number from 0 to 6." +msgstr "Neplatná volba. Zadejte prosím číslo od 0 do 6." + +#: TimeTrackerCLI.py:919 +msgid "" +"\n" +"--- Update Available ---" +msgstr "" +"\n" +"--- K dispozici je aktualizace ---" +#: TimeTrackerCLI.py:920 msgid "A downloaded update is ready to be installed." msgstr "Stažená aktualizace je připravena k instalaci." +#: TimeTrackerCLI.py:921 msgid "0. Skip update for now" msgstr "0. Přeskočit aktualizaci prozatím" +#: TimeTrackerCLI.py:922 msgid "1. Install update now" msgstr "1. Nainstalovat aktualizaci nyní" +#: TimeTrackerCLI.py:923 msgid "Enter your choice (0 or 1): " msgstr "Zadejte svou volbu (0 nebo 1): " +#: TimeTrackerCLI.py:927 msgid "Application is restarting to complete the update..." msgstr "Aplikace se restartuje, aby dokončila aktualizaci..." +#: TimeTrackerCLI.py:931 msgid "Update installation skipped. The application will start normally." msgstr "Instalace aktualizace byla přeskočena. Aplikace se spustí normálně." -msgid "=== Time Control {version} ===" -msgstr "=== Time Control {version} ===" +#: TimeTrackerCLI.py:933 +msgid "" +"Invalid choice. Update installation skipped. The application will start " +"normally." +msgstr "" +"Neplatná volba. Instalace aktualizace byla přeskočena. Aplikace se spustí " +"normálně." + +#: TimeTrackerCLI.py:940 +#, python-brace-format +msgid "" +"\n" +"=== Time Control {version} ===" +msgstr "" +"\n" +"=== Řízení času{version}===" +#: TimeTrackerCLI.py:941 msgid "--- Main Menu ---" msgstr "--- Hlavní menu ---" +#: TimeTrackerCLI.py:942 msgid "1. Start work on task" msgstr "1. Začít práci na úkolu" +#: TimeTrackerCLI.py:943 msgid "2. Show current work" msgstr "2. Zobrazit aktuální práci" +#: TimeTrackerCLI.py:944 msgid "3. Stop current work" msgstr "3. Zastavit aktuální práci" +#: TimeTrackerCLI.py:946 msgid "4. Handle projects and tasks" msgstr "4. Spravovat projekty a úkoly" +#: TimeTrackerCLI.py:947 msgid "5. Reporting" msgstr "5. Reportování" +#: TimeTrackerCLI.py:948 msgid "6. Settings" msgstr "6. Nastavení" +#: TimeTrackerCLI.py:950 msgid "0. Exit" msgstr "0. Konec" -msgid "\n--- Start Work on a Task ---" -msgstr "\n--- Začít práci na úkolu ---" +#: TimeTrackerCLI.py:957 +msgid "" +"\n" +"--- Start Work on a Task ---" +msgstr "" +"\n" +"--- Začít práci na úkolu ---" + +#: TimeTrackerCLI.py:963 +msgid "Select a main project:" +msgstr "Vyberte hlavní projekt:" + +#: TimeTrackerCLI.py:974 +#, python-brace-format +msgid "No open tasks found for '{name}' to start work on." +msgstr "" +"Nebyly nalezeny žádné otevřené úkoly pro '{name}', na kterých lze začít " +"pracovat." + +#: TimeTrackerCLI.py:977 +#, python-brace-format +msgid "Select a task from '{name}':" +msgstr "Vyberte úkol z '{name}':" -msgid "Work started on '{sub_name}' in project '{main_name}'." -msgstr "Práce na '{sub_name}' v projektu '{main_name}' byla zahájena." +#: TimeTrackerCLI.py:987 sl/SL_Menu.py:1884 +#, python-brace-format +msgid "Work started on '{task_name}' in project '{main_name}'." +msgstr "Zahájena práce na '{task_name}' v projektu '{main_name}'." +#: TimeTrackerCLI.py:989 sl/SL_Menu.py:1888 msgid "Error starting work." msgstr "Chyba při zahájení práce." -msgid "\n--- Current Active Work ---" -msgstr "\n--- Aktuální aktivní práce ---" +#: TimeTrackerCLI.py:996 +msgid "" +"\n" +"--- Current Active Work ---" +msgstr "" +"\n" +"--- Aktuální aktivní práce ---" +#: TimeTrackerCLI.py:1006 msgid "You are currently working on:" msgstr "Právě pracujete na:" -msgid " Project: {name}" -msgstr " Projekt: {name}" +#: TimeTrackerCLI.py:1007 +#, python-brace-format +msgid " Main Project: {name}" +msgstr "Hlavní projekt:{name}" -msgid " Task: {name}" -msgstr " Úkol: {name}" +#: TimeTrackerCLI.py:1008 +#, python-brace-format +msgid " Task: {name}" +msgstr "Úkol:{name}" +#: TimeTrackerCLI.py:1009 +#, python-brace-format msgid " Started at: {date}" msgstr " Zahájeno v: {date}" +#: TimeTrackerCLI.py:1010 +#, python-brace-format msgid " Duration: {duration}" msgstr " Trvání: {duration}" +#: TimeTrackerCLI.py:1012 sl/SL_Menu.py:373 sl/SL_Menu.py:1910 msgid "No active work session." msgstr "Žádná aktivní pracovní relace." -msgid "\n--- Stop Work ---" -msgstr "\n--- Zastavit práci ---" +#: TimeTrackerCLI.py:1016 +msgid "" +"\n" +"--- Stop Work ---" +msgstr "" +"\n" +"--- Zastavit práci ---" +#: TimeTrackerCLI.py:1018 sl/SL_Menu.py:341 msgid "Work session stopped successfully." msgstr "Pracovní relace byla úspěšně zastavena." +#: TimeTrackerCLI.py:1020 sl/SL_Menu.py:343 msgid "No active work session to stop." msgstr "Žádná aktivní pracovní relace k zastavení." -msgid "\nChecking for updates..." -msgstr "\nKontroluji aktualizace..." +#: TimeTrackerCLI.py:1034 +msgid "" +"\n" +"Checking for updates..." +msgstr "" +"\n" +"Kontroluji aktualizace..." +#: TimeTrackerCLI.py:1038 msgid "Exiting application. Goodbye!" msgstr "Ukončuji aplikaci. Na shledanou!" -msgid "Invalid choice. Please enter a number from 0 to 6." -msgstr "Neplatná volba. Zadejte prosím číslo od 0 do 6." - -msgid "Warning: Update check skipped. 'github_repo' not found in config.json or file is invalid." -msgstr "Varování: Kontrola aktualizací přeskočena. 'github_repo' nebylo nalezeno v config.json nebo je soubor neplatný." +#: update.py:35 +msgid "" +"Warning: Update check skipped. 'github_repo' not found in config.json or " +"file is invalid." +msgstr "" +"Varování: Kontrola aktualizací přeskočena. 'github_repo' nebylo nalezeno v " +"config.json nebo je soubor neplatný." +#: update.py:49 +#, python-brace-format msgid "A new version ({version}) is available." msgstr "Je k dispozici nová verze ({version})." +#: update.py:55 msgid "Error: Download URL for the new version not found." msgstr "Chyba: Adresa URL pro stažení nové verze nebyla nalezena." +#: update.py:59 +#, python-brace-format msgid "Error checking for updates: {error}" msgstr "Chyba při kontrole aktualizací: {error}" +#: update.py:61 +#, python-brace-format msgid "An unexpected error occurred while checking for updates: {error}" msgstr "Při kontrole aktualizací došlo k neočekávané chybě: {error}" +#: update.py:73 msgid "Downloading update..." msgstr "Stahuji aktualizaci..." +#: update.py:79 msgid "Download complete. The update will be installed on the next start." -msgstr "Stažení dokončeno. Aktualizace bude nainstalována při příštím spuštění." +msgstr "" +"Stažení dokončeno. Aktualizace bude nainstalována při příštím spuštění." +#: update.py:82 +#, python-brace-format msgid "Error downloading the update: {error}" msgstr "Chyba při stahování aktualizace: {error}" +#: update.py:108 +msgid "Creating backup of current version before update..." +msgstr "Vytváření zálohy aktuální verze před aktualizací..." + +#: update.py:118 +#, python-brace-format +msgid "Backup created successfully as {filename}." +msgstr "Záloha byla úspěšně vytvořena jako{filename}." + +#: update.py:120 +#, python-brace-format +msgid "Warning: Could not create backup. Error: {error}" +msgstr "Varování: Nelze vytvořit zálohu. Chyba:{error}" + +#: update.py:122 msgid "Installing update..." msgstr "Instaluji aktualizaci..." +#: update.py:142 +#, python-brace-format msgid "Skipping protected file: {filename}. It will not be overwritten." msgstr "Přeskakuji chráněný soubor: {filename}. Nebude přepsán." +#: update.py:151 msgid "Update installed successfully." msgstr "Aktualizace byla úspěšně nainstalována." +#: update.py:153 +#, python-brace-format msgid "Error during update installation: {error}" msgstr "Chyba během instalace aktualizace: {error}" -msgid "# Detailed Daily Report: {date}" -msgstr "# Podrobná denní zpráva: {date}" +#: update.py:168 +#, python-brace-format +msgid "Error: No previous version backup '{filename}' found." +msgstr "Chyba: Nebyla nalezena žádná záloha předchozí verze '{filename}'." -msgid "now" -msgstr "nyní" +#: update.py:171 +#, python-brace-format +msgid "Restoring previous version from '{filename}'..." +msgstr "Obnovování předchozí verze z '{filename}'..." -msgid "\nNo time tracked for {date}." -msgstr "\nPro den {date} nebyl zaznamenán žádný čas." +#: update.py:192 +#, python-brace-format +msgid "" +"Skipping user data file: {filename}. It will not be overwritten during " +"restore." +msgstr "" +"Přeskočení souboru uživatelských dat:{filename}. Během obnovy nebude " +"přepsán." -msgid "# Detailed Report for Task: {name}" -msgstr "# Podrobná zpráva o úkolu: {name}" +#: update.py:199 +msgid "Previous version restored successfully." +msgstr "Předchozí verze byla úspěšně obnovena." -msgid "Part of Project: {name}" -msgstr "Součást projektu: {name}" +#: update.py:201 +msgid "Restarting application to apply changes..." +msgstr "Restartování aplikace za účelem použití změn..." -msgid "Active (currently running)" -msgstr "Aktivní (právě běží)" +#: update.py:204 +#, python-brace-format +msgid "Error during restoration: {error}" +msgstr "Chyba při obnovování:{error}" -msgid "Inactive" -msgstr "Neaktivní" +#: update.py:205 +#, python-brace-format +msgid "The backup file '{filename}' was not deleted." +msgstr "Záložní soubor '{filename}' nebyl odstraněn." -msgid "Status" -msgstr "Stav" +#: update.py:212 +msgid "Error: Could not import TimeTracker to get the current version." +msgstr "Chyba: Nelze importovat TimeTracker pro získání aktuální verze." -msgid "First entry" -msgstr "První záznam" +#: update.py:215 +msgid "Checking for updates..." +msgstr "Kontrola aktualizací..." -msgid "Last activity" -msgstr "Poslední aktivita" +#: update.py:222 +msgid "No updates available." +msgstr "Nejsou k dispozici žádné aktualizace." -msgid "Total recorded time" -msgstr "Celkový zaznamenaný čas" +#: tt/TimeTracker.py:90 +#, python-brace-format +msgid "Warning: Could not read {file}. Error: {error}" +msgstr "Varování: Nelze přečíst soubor {file}. Chyba: {error}" -msgid "Total work sessions" -msgstr "Celkový počet pracovních relací" +#: tt/TimeTracker.py:105 +msgid "Some required packages are missing. Attempting to install them..." +msgstr "Některé požadované balíčky chybí. Pokouším se je nainstalovat..." -msgid "Average session duration" -msgstr "Průměrná délka relace" +#: tt/TimeTracker.py:108 +#, python-brace-format +msgid "Installing {package}..." +msgstr "Instaluji {package}..." -msgid "Weekday Distribution" -msgstr "Rozložení v týdnu" +#: tt/TimeTracker.py:112 +#, python-brace-format +msgid "Failed to install {package}. Continuing without it." +msgstr "Nepodařilo se nainstalovat{package}. Pokračování bez toho." -msgid "Monday" -msgstr "Pondělí" +#: tt/TimeTracker.py:116 +msgid "" +"\n" +"Dependencies installed successfully." +msgstr "" +"\n" +"Závislosti byly úspěšně nainstalovány." -msgid "Tuesday" -msgstr "Úterý" +#: tt/TimeTracker.py:120 +#, python-brace-format +msgid "" +"\n" +"Warning: Some dependencies could not be installed: {packages}" +msgstr "" +"\n" +"Upozornění: Některé závislosti nelze nainstalovat:{packages}" -msgid "Wednesday" -msgstr "Středa" +#: tt/TimeTracker.py:122 +#, python-brace-format +msgid "An unexpected error occurred during dependency check: {error}" +msgstr "Během kontroly závislostí došlo k neočekávané chybě: {error}" -msgid "Thursday" -msgstr "Čtvrtek" +#: tt/TimeTracker.py:229 +msgid "Info: Report content has been copied to the clipboard." +msgstr "Info: Obsah zprávy byl zkopírován do schránky." -msgid "Friday" -msgstr "Pátek" +#: tt/TimeTracker.py:231 +#, python-brace-format +msgid "Warning: Could not copy to clipboard. Error: {error}" +msgstr "Varování: Nelze kopírovat do schránky. Chyba: {error}" -msgid "Saturday" -msgstr "Sobota" +#: tt/TimeTracker.py:233 +msgid "" +"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " +"install pyperclip`)." +msgstr "" +"Varování: Nelze kopírovat do schránky. Prosím, nainstalujte 'pyperclip' " +"(`pip install pyperclip`)." -msgid "Sunday" -msgstr "Neděle" +#: tt/TimeTracker.py:253 +#, python-brace-format +msgid "{hours} hours ({dlp} DLP)" +msgstr "{hours}hodin ({dlp}DLP)" + +#: tt/TimeTracker.py:846 tt/TimeTracker.py:886 +#, python-brace-format +msgid "Source main project '{name}' not found." +msgstr "Zdrojový hlavní projekt '{name}' nebyl nalezen." + +#: tt/TimeTracker.py:848 +#, python-brace-format +msgid "Destination main project '{name}' not found." +msgstr "Cílový hlavní projekt '{name}' nebyl nalezen." + +#: tt/TimeTracker.py:860 +#, python-brace-format +msgid "Task '{task_name}' moved successfully." +msgstr "Úloha '{task_name}' byla úspěšně přesunuta." + +#: tt/TimeTracker.py:861 tt/TimeTracker.py:896 tt/TimeTracker.py:1373 +#, python-brace-format +msgid "Task '{task_name}' not found in '{main_name}'." +msgstr "Úloha '{task_name}' nebyla nalezena v '{main_name}'." + +#: tt/TimeTracker.py:880 +#, python-brace-format +msgid "A main project named '{name}' already exists." +msgstr "Hlavní projekt s názvem '{name}' již existuje." + +#: tt/TimeTracker.py:905 +msgid "General" +msgstr "Obecné" -msgid "Daily Breakdown" -msgstr "Denní rozpis" +#: tt/TimeTracker.py:909 +#, python-brace-format +msgid "Task '{task_name}' was promoted to a new main project." +msgstr "Úloha '{task_name}' byla povýšena na nový hlavní projekt." -msgid "Duration" -msgstr "Trvání" +#: tt/TimeTracker.py:936 +#, python-brace-format +msgid "Main project to demote '{name}' not found." +msgstr "Hlavní projekt ke snížení úrovně '{name}' nebyl nalezen." -msgid "# Detailed Report for Project: {name}" -msgstr "# Podrobná zpráva o projektu: {name}" +#: tt/TimeTracker.py:938 +#, python-brace-format +msgid "New parent main project '{name}' not found." +msgstr "Nový nadřazený hlavní projekt '{name}' nebyl nalezen." -msgid "Number of tasks" -msgstr "Počet úkolů" +#: tt/TimeTracker.py:963 +#, python-brace-format +msgid "" +"Main project '{demoted_name}' was demoted to a sub-project under " +"'{parent_name}'." +msgstr "" +"Hlavní projekt '{demoted_name}' byl degradován na dílčí projekt pod " +"'{parent_name}'." -msgid "Active (working on '{sub_name}')" -msgstr "Aktivní (práce na '{sub_name}')" +#: tt/TimeTracker.py:1042 +msgid "Email import is not enabled." +msgstr "Import e-mailů není povolen." +#: tt/TimeTracker.py:1051 +msgid "Email settings are incomplete." +msgstr "Nastavení e-mailu jsou neúplná." + +#: tt/TimeTracker.py:1064 +msgid "Error searching emails." +msgstr "Chyba při vyhledávání e-mailů." + +#: tt/TimeTracker.py:1079 +msgid "No Subject" +msgstr "Bez předmětu" + +#: tt/TimeTracker.py:1139 +msgid "Unknown Task" +msgstr "Neznámý úkol" + +#: tt/TimeTracker.py:1330 +#, python-brace-format +msgid "- {name}: {hours} hours" +msgstr "-{name}:{hours}hodin" + +#: tt/TimeTracker.py:1338 +#, python-brace-format +msgid "## {name} ({hours} hours)\n" +msgstr "##{name}({hours}hodin)\n" + +#: tt/TimeTracker.py:1347 +#, python-brace-format +msgid "# Daily Time Report: {date}\n" +msgstr "# Denní zpráva o čase: {date}\n" + +#: tt/TimeTracker.py:1348 +#, python-brace-format +msgid "" +"\n" +"**Total Daily Time: {hours} hours**" +msgstr "" +"\n" +"**Celkový denní čas: {hours} hodin**" + +#: tt/TimeTracker.py:1352 tt/TimeTracker.py:1665 +#, python-brace-format +msgid "No time tracked for {date}." +msgstr "Pro den {date} nebyl zaznamenán žádný čas." + +#: tt/TimeTracker.py:1369 tt/TimeTracker.py:1464 +#, python-brace-format +msgid "Main project '{name}' not found." +msgstr "Hlavní projekt '{name}' nebyl nalezen." + +#: tt/TimeTracker.py:1377 +#, python-brace-format +msgid "No time entries found for task '{task_name}'." +msgstr "Pro úkol '{task_name}' nebyly nalezeny žádné časové záznamy." + +#: tt/TimeTracker.py:1410 tt/TimeTracker.py:1640 +msgid "now" +msgstr "nyní" + +#: tt/TimeTracker.py:1411 sl/SL_Menu.py:1908 +msgid "Duration" +msgstr "Trvání" + +#: tt/TimeTracker.py:1415 +#, python-brace-format +msgid "# Detailed Report for Task: {name}" +msgstr "# Podrobná zpráva o úkolu: {name}" + +#: tt/TimeTracker.py:1416 +#, python-brace-format +msgid "Part of Main Project: {name}" +msgstr "Část hlavního projektu:{name}" + +#: tt/TimeTracker.py:1419 +msgid "Active (currently running)" +msgstr "Aktivní (právě běží)" + +#: tt/TimeTracker.py:1419 tt/TimeTracker.py:1516 +msgid "Inactive" +msgstr "Neaktivní" + +#: tt/TimeTracker.py:1420 tt/TimeTracker.py:1517 +msgid "Status" +msgstr "Stav" + +#: tt/TimeTracker.py:1422 tt/TimeTracker.py:1519 +msgid "First entry" +msgstr "První záznam" + +#: tt/TimeTracker.py:1424 tt/TimeTracker.py:1521 +msgid "Last activity" +msgstr "Poslední aktivita" + +#: tt/TimeTracker.py:1426 tt/TimeTracker.py:1523 +msgid "Total recorded time" +msgstr "Celkový zaznamenaný čas" + +#: tt/TimeTracker.py:1427 tt/TimeTracker.py:1525 +msgid "Total work sessions" +msgstr "Celkový počet pracovních relací" + +#: tt/TimeTracker.py:1431 tt/TimeTracker.py:1529 +msgid "Average session duration" +msgstr "Průměrná délka relace" + +#: tt/TimeTracker.py:1434 tt/TimeTracker.py:1532 +msgid "Weekday Distribution" +msgstr "Rozložení v týdnu" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Monday" +msgstr "Pondělí" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Tuesday" +msgstr "Úterý" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Wednesday" +msgstr "Středa" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Thursday" +msgstr "Čtvrtek" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Friday" +msgstr "Pátek" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Saturday" +msgstr "Sobota" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Sunday" +msgstr "Neděle" + +#: tt/TimeTracker.py:1444 +msgid "Daily Breakdown" +msgstr "Denní rozpis" + +#: tt/TimeTracker.py:1513 +#, python-brace-format +msgid "# Detailed Report for Main Project: {name}" +msgstr "# Podrobná zpráva pro hlavní projekt:{name}" + +#: tt/TimeTracker.py:1516 +#, python-brace-format +msgid "Active (working on '{task_name}')" +msgstr "Aktivní (pracuje se na '{task_name}')" + +#: tt/TimeTracker.py:1524 +msgid "Number of tasks" +msgstr "Počet úkolů" + +#: tt/TimeTracker.py:1543 msgid "Task Breakdown" msgstr "Rozpis úkolů" +#: tt/TimeTracker.py:1552 +#, python-brace-format msgid "{num_sessions} sessions" msgstr "{num_sessions} relací" -msgid "\n--- Detailed Daily Report ---" -msgstr "\n--- Podrobná denní zpráva ---" +#: tt/TimeTracker.py:1605 +#, python-brace-format +msgid "# Time Report: {start_date} to {end_date}\n" +msgstr "# Zpráva o čase: od {start_date} do {end_date}\n" -msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " -msgstr "Zadejte datum (RRRR-MM-DD) nebo stiskněte Enter pro dnešek: " +#: tt/TimeTracker.py:1606 +#, python-brace-format +msgid "" +"\n" +"**Total Time in Period: {total_time}**" +msgstr "" +"\n" +"**Celkový čas v období: {total_time}**" -msgid "Project Management" -msgstr "Správa projektů" +#: tt/TimeTracker.py:1610 +#, python-brace-format +msgid "No time tracked between {start_date} and {end_date}." +msgstr "Mezi {start_date} a {end_date} nebyl zaznamenán žádný čas." -msgid "Reporting" -msgstr "Reportování" +#: tt/TimeTracker.py:1626 +#, python-brace-format +msgid "# Detailed Daily Report: {date}" +msgstr "# Podrobná denní zpráva: {date}" -msgid "Settings" -msgstr "Nastavení" +#: sl/SL_Menu.py:277 +msgid "New" +msgstr "Nové" -msgid "Task Management" -msgstr "Správa úkolů" +#: sl/SL_Menu.py:278 +msgid "New Project" +msgstr "Nový projekt" + +#: sl/SL_Menu.py:281 +msgid "New Task" +msgstr "Nový úkol" +#: sl/SL_Menu.py:286 +msgid "Project & Task Management" +msgstr "Správa projektů a úkolů" + +#: sl/SL_Menu.py:287 sl/SL_Menu.py:780 +msgid "Main Project Management" +msgstr "Hlavní správa projektů" + +#: sl/SL_Menu.py:288 sl/SL_Menu.py:796 sl/SL_Menu.py:894 +msgid "Add Project" +msgstr "Přidat projekt" + +#: sl/SL_Menu.py:291 sl/SL_Menu.py:799 sl/SL_Menu.py:1242 msgid "List Projects" msgstr "Vypsat projekty" +#: sl/SL_Menu.py:292 sl/SL_Menu.py:800 sl/SL_Menu.py:1257 msgid "Rename Project" msgstr "Přejmenovat projekt" +#: sl/SL_Menu.py:293 sl/SL_Menu.py:801 sl/SL_Menu.py:1371 sl/SL_Menu.py:1384 +msgid "Close Project" +msgstr "Zavřít projekt" + +#: sl/SL_Menu.py:294 sl/SL_Menu.py:802 sl/SL_Menu.py:1401 sl/SL_Menu.py:1414 msgid "Re-open Project" msgstr "Znovu otevřít projekt" +#: sl/SL_Menu.py:295 sl/SL_Menu.py:803 sl/SL_Menu.py:1431 sl/SL_Menu.py:1445 msgid "Delete Project" msgstr "Smazat projekt" +#: sl/SL_Menu.py:296 sl/SL_Menu.py:804 sl/SL_Menu.py:1462 +msgid "List Inactive Projects" +msgstr "Seznam neaktivních projektů" + +#: sl/SL_Menu.py:297 sl/SL_Menu.py:805 msgid "Demote Project to Task" msgstr "Degradovat projekt na úkol" +#: sl/SL_Menu.py:298 sl/SL_Menu.py:806 sl/SL_Menu.py:1524 msgid "List Completed Projects" msgstr "Vypsat dokončené projekty" +#: sl/SL_Menu.py:300 sl/SL_Menu.py:782 sl/SL_Menu.py:817 +msgid "Task Management" +msgstr "Správa úkolů" + +#: sl/SL_Menu.py:301 sl/SL_Menu.py:819 sl/SL_Menu.py:1542 sl/SL_Menu.py:1573 +#: sl/SL_Menu.py:1646 msgid "Add Task" msgstr "Přidat úkol" +#: sl/SL_Menu.py:304 sl/SL_Menu.py:822 sl/SL_Menu.py:1292 msgid "List Tasks" msgstr "Vypsat úkoly" +#: sl/SL_Menu.py:305 sl/SL_Menu.py:823 sl/SL_Menu.py:1324 msgid "Rename Task" msgstr "Přejmenovat úkol" +#: sl/SL_Menu.py:306 sl/SL_Menu.py:824 sl/SL_Menu.py:909 sl/SL_Menu.py:935 +#: sl/SL_Menu.py:1114 msgid "Close Task" msgstr "Uzavřít úkol" +#: sl/SL_Menu.py:307 sl/SL_Menu.py:825 sl/SL_Menu.py:954 sl/SL_Menu.py:980 msgid "Re-open Task" msgstr "Znovu otevřít úkol" +#: sl/SL_Menu.py:308 sl/SL_Menu.py:826 sl/SL_Menu.py:999 sl/SL_Menu.py:1026 msgid "Delete Task" msgstr "Smazat úkol" +#: sl/SL_Menu.py:309 sl/SL_Menu.py:827 sl/SL_Menu.py:1045 sl/SL_Menu.py:1081 msgid "Move Task" msgstr "Přesunout úkol" +#: sl/SL_Menu.py:310 sl/SL_Menu.py:828 sl/SL_Menu.py:1100 msgid "List Inactive Tasks" msgstr "Vypsat neaktivní úkoly" +#: sl/SL_Menu.py:311 sl/SL_Menu.py:829 sl/SL_Menu.py:1127 msgid "List All Closed Tasks" msgstr "Vypsat všechny uzavřené úkoly" +#: sl/SL_Menu.py:312 sl/SL_Menu.py:477 sl/SL_Menu.py:539 sl/SL_Menu.py:626 +#: sl/SL_Menu.py:830 sl/SL_Menu.py:1673 sl/SL_Menu.py:1693 sl/SL_Menu.py:1728 +msgid "Edit Task" +msgstr "Upravit úkol" + +#: sl/SL_Menu.py:315 sl/SL_Menu.py:833 sl/SL_Menu.py:1152 msgid "Delete All Closed Tasks" msgstr "Smazat všechny uzavřené úkoly" +#: sl/SL_Menu.py:316 sl/SL_Menu.py:834 sl/SL_Menu.py:1194 msgid "Promote Task to Project" msgstr "Povýšit úkol na projekt" +#: sl/SL_Menu.py:319 +msgid "Today View" +msgstr "Dnes Zobrazit" + +#: sl/SL_Menu.py:323 sl/SL_Menu.py:405 +msgid "Task Planning" +msgstr "Plánování úkolů" + +#: sl/SL_Menu.py:327 sl/SL_Menu.py:655 +msgid "E-Mail Task Assignment" +msgstr "Zadání úkolu E-" + +#: sl/SL_Menu.py:331 sl/SL_Menu.py:473 sl/SL_Menu.py:535 sl/SL_Menu.py:622 +msgid "Start work on task" +msgstr "Začít práci na úkolu" + +#: sl/SL_Menu.py:335 +msgid "Show current work" +msgstr "Zobrazit aktuální práci" + +#: sl/SL_Menu.py:339 +msgid "Stop current work" +msgstr "Zastavit aktuální práci" + +#: sl/SL_Menu.py:347 sl/SL_Menu.py:845 +msgid "Reporting" +msgstr "Reportování" + +#: sl/SL_Menu.py:348 sl/SL_Menu.py:848 msgid "Daily Report (Today)" msgstr "Denní zpráva (dnes)" +#: sl/SL_Menu.py:352 sl/SL_Menu.py:853 sl/SL_Menu.py:2195 msgid "Daily Report (Specific Day)" msgstr "Denní zpráva (konkrétní den)" +#: sl/SL_Menu.py:354 sl/SL_Menu.py:854 sl/SL_Menu.py:2214 msgid "Date Range Report" msgstr "Zpráva za období" +#: sl/SL_Menu.py:356 sl/SL_Menu.py:855 sl/SL_Menu.py:2241 sl/SL_Menu.py:2272 msgid "Detailed Task Report" msgstr "Podrobná zpráva o úkolu" +#: sl/SL_Menu.py:358 sl/SL_Menu.py:856 sl/SL_Menu.py:2300 msgid "Detailed Project Report" msgstr "Podrobná zpráva o projektu" +#: sl/SL_Menu.py:360 sl/SL_Menu.py:857 sl/SL_Menu.py:2327 msgid "Detailed Daily Report" msgstr "Podrobná denní zpráva" -msgid "Main Project Management" -msgstr "Hlavní správa projektů" +#: sl/SL_Menu.py:364 sl/SL_Menu.py:868 +msgid "Settings" +msgstr "Nastavení" -msgid "Start work on task" -msgstr "Začít práci na úkolu" +#: sl/SL_Menu.py:371 sl/SL_Menu.py:1897 +msgid "Current Active Work" +msgstr "Aktuální aktivní práce" -msgid "Show current work" -msgstr "Zobrazit aktuální práci" +#: sl/SL_Menu.py:376 sl/SL_Menu.py:497 sl/SL_Menu.py:559 sl/SL_Menu.py:633 +#: sl/SL_Menu.py:1773 +msgid "Done" +msgstr "Hotovo" -msgid "Stop current work" -msgstr "Zastavit aktuální práci" +#: sl/SL_Menu.py:390 +msgid "Edit current task" +msgstr "Upravit aktuální úkol" -msgid "Select Project" -msgstr "Vybrat projekt" +#: sl/SL_Menu.py:398 +msgid "Exit" +msgstr "Konec" + +#: sl/SL_Menu.py:410 sl/SL_Menu.py:420 +msgid "Tomorrow" +msgstr "Zítra" + +#: sl/SL_Menu.py:411 sl/SL_Menu.py:421 +msgid "Weekly overview" +msgstr "Týdenní přehled" + +#: sl/SL_Menu.py:412 sl/SL_Menu.py:422 +msgid "Overdue tasks" +msgstr "Zpožděné úkoly" + +#: sl/SL_Menu.py:413 sl/SL_Menu.py:423 +msgid "Unplanned tasks" +msgstr "Neplánované úkoly" + +#: sl/SL_Menu.py:414 +msgid "All" +msgstr "Vše" + +#: sl/SL_Menu.py:416 +msgid "Filter" +msgstr "Filtr" + +#: sl/SL_Menu.py:430 +msgid "Tasks" +msgstr "Úkoly" + +#: sl/SL_Menu.py:572 +msgid "No tasks found." +msgstr "Nebyly nalezeny žádné úkoly." + +#: sl/SL_Menu.py:574 sl/SL_Menu.py:648 sl/SL_Menu.py:770 sl/SL_Menu.py:810 +#: sl/SL_Menu.py:838 sl/SL_Menu.py:914 sl/SL_Menu.py:925 sl/SL_Menu.py:959 +#: sl/SL_Menu.py:970 sl/SL_Menu.py:1004 sl/SL_Menu.py:1015 sl/SL_Menu.py:1050 +#: sl/SL_Menu.py:1061 sl/SL_Menu.py:1069 sl/SL_Menu.py:1120 sl/SL_Menu.py:1145 +#: sl/SL_Menu.py:1167 sl/SL_Menu.py:1199 sl/SL_Menu.py:1210 sl/SL_Menu.py:1250 +#: sl/SL_Menu.py:1262 sl/SL_Menu.py:1297 sl/SL_Menu.py:1317 sl/SL_Menu.py:1329 +#: sl/SL_Menu.py:1340 sl/SL_Menu.py:1376 sl/SL_Menu.py:1406 sl/SL_Menu.py:1436 +#: sl/SL_Menu.py:1476 sl/SL_Menu.py:1488 sl/SL_Menu.py:1535 sl/SL_Menu.py:1547 +#: sl/SL_Menu.py:1678 sl/SL_Menu.py:1697 sl/SL_Menu.py:1710 sl/SL_Menu.py:1725 +#: sl/SL_Menu.py:1858 sl/SL_Menu.py:1868 sl/SL_Menu.py:1912 sl/SL_Menu.py:2097 +#: sl/SL_Menu.py:2102 sl/SL_Menu.py:2207 sl/SL_Menu.py:2234 sl/SL_Menu.py:2246 +#: sl/SL_Menu.py:2258 sl/SL_Menu.py:2277 sl/SL_Menu.py:2293 sl/SL_Menu.py:2305 +#: sl/SL_Menu.py:2320 sl/SL_Menu.py:2339 sl/SL_Menu.py:2380 sl/SL_Menu.py:2395 +msgid "Back" +msgstr "Zpět" -msgid "Select Task" -msgstr "Vybrat úkol" +#: sl/SL_Menu.py:581 +msgid "Today's Tasks" +msgstr "Dnešní úkoly" + +#: sl/SL_Menu.py:646 +msgid "No tasks for today." +msgstr "Žádné úkoly na dnešek." + +#: sl/SL_Menu.py:661 +msgid "Fetching emails..." +msgstr "Načítání e-mailů..." +#: sl/SL_Menu.py:664 +#, python-brace-format +msgid "Error fetching emails: {error}" +msgstr "Chyba při načítání e-mailů:{error}" + +#: sl/SL_Menu.py:667 +#, python-brace-format +msgid "{count} new tasks created from emails." +msgstr "{count}nových úkolů vytvořených z e-mailů." + +#: sl/SL_Menu.py:669 +msgid "No new emails found." +msgstr "Nebyly nalezeny žádné nové e-maily." + +#: sl/SL_Menu.py:675 +msgid "No unassigned email tasks available." +msgstr "Nejsou k dispozici žádné nepřiřazené e-mailové úkoly." + +#: sl/SL_Menu.py:687 +msgid "Assign Project" +msgstr "Přiřadit projekt" + +#: sl/SL_Menu.py:698 +msgid "Are you sure you want to delete this task?" +msgstr "Opravdu chcete smazat tento úkol?" + +#: sl/SL_Menu.py:701 +msgid "Yes, delete" +msgstr "Ano, smazat" + +#: sl/SL_Menu.py:706 +msgid "No, cancel" +msgstr "Ne, zrušit" + +#: sl/SL_Menu.py:713 +msgid "Delete" +msgstr "Smazat" + +#: sl/SL_Menu.py:717 +msgid "Edit Details" +msgstr "Upravit podrobnosti" + +#: sl/SL_Menu.py:725 sl/SL_Menu.py:1757 +msgid "Task Name" +msgstr "Název úkolu" + +#: sl/SL_Menu.py:734 sl/SL_Menu.py:1761 +msgid "Due Date" +msgstr "Termín" + +#: sl/SL_Menu.py:742 sl/SL_Menu.py:1765 +msgid "Clear" +msgstr "Vymazat" + +#: sl/SL_Menu.py:749 sl/SL_Menu.py:1634 sl/SL_Menu.py:1804 +msgid "Notes (Markdown)" +msgstr "Poznámky (označení)" + +#: sl/SL_Menu.py:751 sl/SL_Menu.py:1816 +msgid "Save Changes" +msgstr "Uložit změny" + +#: sl/SL_Menu.py:762 +msgid "Task details updated successfully." +msgstr "Podrobnosti úkolu byly úspěšně aktualizovány." + +#: sl/SL_Menu.py:768 +msgid "Error updating task details." +msgstr "Při aktualizaci podrobností úkolu došlo k chybě." + +#: sl/SL_Menu.py:778 sl/SL_Menu.py:794 +msgid "Project Management" +msgstr "Správa projektů" + +#: sl/SL_Menu.py:787 sl/SL_Menu.py:861 msgid "Back to Main Menu" msgstr "Zpět do hlavního menu" -msgid "Time Control" -msgstr "Kontrola času" +#: sl/SL_Menu.py:873 sl/SL_Menu.py:2000 +msgid "Report Format" +msgstr "Formát zprávy" +#: sl/SL_Menu.py:875 sl/SL_Menu.py:2159 +msgid "Email Settings" +msgstr "Nastavení e-mailu" + +#: sl/SL_Menu.py:876 sl/SL_Menu.py:2020 msgid "Change CSS Style" msgstr "Změnit styl CSS" +#: sl/SL_Menu.py:877 sl/SL_Menu.py:2058 msgid "Change View Mode" msgstr "Změnit režim zobrazení" -msgid "Back" -msgstr "Zpět" +#: sl/SL_Menu.py:890 +msgid "Add New Project" +msgstr "Přidat nový projekt" + +#: sl/SL_Menu.py:893 +msgid "Name of the project" +msgstr "Název projektu" + +#: sl/SL_Menu.py:897 +#, python-brace-format +msgid "Project '{name}' added." +msgstr "Projekt '{name}' byl přidán." +#: sl/SL_Menu.py:901 sl/SL_Menu.py:947 sl/SL_Menu.py:992 sl/SL_Menu.py:1038 +#: sl/SL_Menu.py:1093 sl/SL_Menu.py:1187 sl/SL_Menu.py:1235 sl/SL_Menu.py:1285 +#: sl/SL_Menu.py:1364 sl/SL_Menu.py:1394 sl/SL_Menu.py:1424 sl/SL_Menu.py:1455 +#: sl/SL_Menu.py:1517 sl/SL_Menu.py:1557 sl/SL_Menu.py:1666 sl/SL_Menu.py:1685 +#: sl/SL_Menu.py:1843 sl/SL_Menu.py:1890 sl/SL_Menu.py:1934 sl/SL_Menu.py:1995 +#: sl/SL_Menu.py:2014 sl/SL_Menu.py:2051 sl/SL_Menu.py:2084 sl/SL_Menu.py:2152 +#: sl/SL_Menu.py:2188 msgid "Cancel" msgstr "Zrušit" -msgid "Next" -msgstr "Další" +#: sl/SL_Menu.py:919 sl/SL_Menu.py:964 sl/SL_Menu.py:1009 sl/SL_Menu.py:1204 +#: sl/SL_Menu.py:1267 sl/SL_Menu.py:1302 sl/SL_Menu.py:1334 sl/SL_Menu.py:1383 +#: sl/SL_Menu.py:1413 sl/SL_Menu.py:1443 sl/SL_Menu.py:1863 sl/SL_Menu.py:2251 +#: sl/SL_Menu.py:2312 +msgid "Select Project" +msgstr "Vybrat projekt" -msgid "Save" -msgstr "Uložit" +#: sl/SL_Menu.py:924 +#, python-brace-format +msgid "No open tasks to close in '{name}'." +msgstr "Žádné otevřené úkoly k uzavření v '{name}'." -msgid "Add Project" -msgstr "Přidat projekt" +#: sl/SL_Menu.py:931 sl/SL_Menu.py:976 sl/SL_Menu.py:1021 sl/SL_Menu.py:1075 +#: sl/SL_Menu.py:1216 sl/SL_Menu.py:1344 sl/SL_Menu.py:1700 sl/SL_Menu.py:1874 +#: sl/SL_Menu.py:2282 +msgid "Select Task" +msgstr "Vybrat úkol" -msgid "Close Project" -msgstr "Zavřít projekt" +#: sl/SL_Menu.py:941 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been closed." +msgstr "Úloha '{sub_name}' v '{main_name}' byla uzavřena." + +#: sl/SL_Menu.py:969 +#, python-brace-format +msgid "No closed tasks to reopen in '{name}'." +msgstr "Žádné uzavřené úlohy k opětovnému otevření v '{name}'." + +#: sl/SL_Menu.py:986 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been reopened." +msgstr "Úloha '{sub_name}' v '{main_name}' byla znovu otevřena." + +#: sl/SL_Menu.py:1014 +#, python-brace-format +msgid "No open tasks to delete in '{name}'." +msgstr "Žádné otevřené úkoly k odstranění v '{name}'." + +#: sl/SL_Menu.py:1025 +msgid "This action cannot be undone." +msgstr "Tuto akci nelze vrátit zpět." + +#: sl/SL_Menu.py:1032 +#, python-brace-format +msgid "Task '{sub_name}' deleted from '{main_name}'." +msgstr "Úkol '{sub_name}' byl smazán z '{main_name}'." + +#: sl/SL_Menu.py:1055 +msgid "Select Source Project" +msgstr "Vybrat zdrojový projekt" + +#: sl/SL_Menu.py:1060 +#, python-brace-format +msgid "No tasks found in '{name}'." +msgstr "V '{name}' nebyly nalezeny žádné úkoly." + +#: sl/SL_Menu.py:1068 +msgid "No other projects available to move to." +msgstr "Žádné další projekty k přesunu." + +#: sl/SL_Menu.py:1079 sl/SL_Menu.py:1503 +msgid "Select Target Project" +msgstr "Vybrat cílový projekt" + +#: sl/SL_Menu.py:1087 +#, python-brace-format +msgid "Task '{sub}' moved from '{src}' to '{dst}'." +msgstr "Úloha '{sub}' přesunuta z '{src}' do '{dst}'." + +#: sl/SL_Menu.py:1091 +msgid "Error: Could not move task." +msgstr "Chyba: Úkol nelze přesunout." + +#: sl/SL_Menu.py:1102 sl/SL_Menu.py:1464 +msgid "Weeks of inactivity" +msgstr "Týdny neaktivity" + +#: sl/SL_Menu.py:1107 +#, python-brace-format +msgid "Inactive Tasks (> {weeks} weeks):" +msgstr "Neaktivní úkoly (>{weeks}týdnů):" + +#: sl/SL_Menu.py:1112 sl/SL_Menu.py:1472 +msgid "Last Activity" +msgstr "Poslední aktivita" + +#: sl/SL_Menu.py:1171 +#, python-brace-format +msgid "" +"Are you sure you want to delete {count} closed tasks? This action cannot be " +"undone." +msgstr "" +"Opravdu chcete smazat{count}uzavřené úkoly? Tuto akci nelze vrátit zpět." + +#: sl/SL_Menu.py:1173 +msgid "Show projects to delete" +msgstr "Zobrazit projekty k odstranění" + +#: sl/SL_Menu.py:1177 +msgid "Delete All" +msgstr "Smazat vše" + +#: sl/SL_Menu.py:1183 +#, python-brace-format +msgid "Successfully deleted {count} tasks." +msgstr "Úspěšně odstraněno{count}úkolů." + +#: sl/SL_Menu.py:1209 +#, python-brace-format +msgid "No open tasks to promote in '{name}'." +msgstr "Žádné otevřené úkoly k povýšení v '{name}'." + +#: sl/SL_Menu.py:1220 +msgid "" +"This will create a new Project with the task's name and move all time " +"entries to a 'General' task within it." +msgstr "" +"Tím vytvoříte nový projekt s názvem úkolu a přesunete všechny časové záznamy" +" do úkolu „Obecné“ v něm." + +#: sl/SL_Menu.py:1222 +msgid "Promote to Project" +msgstr "Povýšit na projekt" + +#: sl/SL_Menu.py:1261 +msgid "No open projects to rename." +msgstr "Žádné otevřené projekty k přejmenování." + +#: sl/SL_Menu.py:1270 sl/SL_Menu.py:1349 +msgid "New Name" +msgstr "Nové jméno" + +#: sl/SL_Menu.py:1271 sl/SL_Menu.py:1350 +msgid "Rename" +msgstr "Přejmenovat" + +#: sl/SL_Menu.py:1275 sl/SL_Menu.py:1354 +msgid "Please enter a new name." +msgstr "Zadejte prosím nový název." + +#: sl/SL_Menu.py:1277 sl/SL_Menu.py:1356 +msgid "New name is the same as the old name." +msgstr "Nový název je stejný jako starý název." + +#: sl/SL_Menu.py:1279 +#, python-brace-format +msgid "Project '{old_name}' successfully renamed to '{new_name}'." +msgstr "Projekt '{old_name}' byl úspěšně přejmenován na '{new_name}'." + +#: sl/SL_Menu.py:1339 +#, python-brace-format +msgid "No open tasks to rename in '{name}'." +msgstr "Žádné otevřené úkoly k přejmenování v '{name}'." + +#: sl/SL_Menu.py:1362 +msgid "Error: Could not rename. The new name might already exist." +msgstr "Chyba: Nelze přejmenovat. Nový název již možná existuje." + +#: sl/SL_Menu.py:1375 +msgid "No open projects to close." +msgstr "Žádné otevřené projekty k uzavření." +#: sl/SL_Menu.py:1388 +#, python-brace-format +msgid "Project '{name}' has been closed." +msgstr "Projekt '{name}' byl uzavřen." + +#: sl/SL_Menu.py:1392 sl/SL_Menu.py:1422 sl/SL_Menu.py:1453 +msgid "Error: Project not found." +msgstr "Chyba: Projekt nenalezen." + +#: sl/SL_Menu.py:1405 +msgid "No closed projects to reopen." +msgstr "Žádné uzavřené projekty k opětovnému otevření." + +#: sl/SL_Menu.py:1418 +#, python-brace-format +msgid "Project '{name}' has been reopened." +msgstr "Projekt '{name}' byl znovu otevřen." + +#: sl/SL_Menu.py:1444 +msgid "" +"This action cannot be undone. All associated tasks and time entries will be " +"deleted." +msgstr "" +"Tuto akci nelze vrátit zpět. Všechny související úkoly a časové záznamy " +"budou smazány." + +#: sl/SL_Menu.py:1449 +#, python-brace-format +msgid "Project '{name}' has been deleted." +msgstr "Projekt '{name}' byl smazán." + +#: sl/SL_Menu.py:1469 +#, python-brace-format +msgid "Inactive Projects (> {weeks} weeks):" +msgstr "Neaktivní projekty (>{weeks}týdnů):" + +#: sl/SL_Menu.py:1474 +#, python-brace-format +msgid "No projects found inactive for more than {weeks} weeks." +msgstr "" +"Žádné projekty nebyly nalezeny jako neaktivní po dobu delší než{weeks}týdnů." + +#: sl/SL_Menu.py:1483 sl/SL_Menu.py:1506 msgid "Demote Project" msgstr "Degradovat projekt" +#: sl/SL_Menu.py:1495 +msgid "Select Project to Demote" +msgstr "Vyberte projekt ke snížení úrovně" + +#: sl/SL_Menu.py:1501 +msgid "No other projects available to demote into." +msgstr "" +"Nejsou k dispozici žádné další projekty, na které by bylo možné snížit " +"úroveň." + +#: sl/SL_Menu.py:1504 +#, python-brace-format +msgid "This will convert '{src}' into a task of '{dst}'." +msgstr "Toto převede '{src}' na úlohu '{dst}'." + +#: sl/SL_Menu.py:1529 +msgid "Projects with only closed or no tasks:" +msgstr "Projekty pouze s uzavřenými nebo žádnými úkoly:" + +#: sl/SL_Menu.py:1533 +msgid "No completed projects found." +msgstr "Nebyly nalezeny žádné dokončené projekty." + +#: sl/SL_Menu.py:1542 sl/SL_Menu.py:1673 sl/SL_Menu.py:2241 +msgid "Step 1: Select Project" +msgstr "Krok 1: Vyberte projekt" + +#: sl/SL_Menu.py:1546 sl/SL_Menu.py:1857 +msgid "No open projects found. Please add one first." +msgstr "Nebyly nalezeny žádné otevřené projekty. Nejprve přidejte jednu." + +#: sl/SL_Menu.py:1551 sl/SL_Menu.py:1680 sl/SL_Menu.py:1905 +msgid "Project" +msgstr "Project" + +#: sl/SL_Menu.py:1553 sl/SL_Menu.py:1681 sl/SL_Menu.py:1705 sl/SL_Menu.py:2253 +msgid "Next" +msgstr "Další" + +#: sl/SL_Menu.py:1568 sl/SL_Menu.py:2267 +msgid "No project selected. Please start again." +msgstr "Nebyl vybrán žádný projekt. Začněte prosím znovu." + +#: sl/SL_Menu.py:1573 +msgid "To Project:" +msgstr "To Project:" + +#: sl/SL_Menu.py:1594 +msgid "Name of the new task" +msgstr "Name of the new task" + +#: sl/SL_Menu.py:1600 +msgid "Due date" +msgstr "Datum splatnosti" + +#: sl/SL_Menu.py:1606 sl/SL_Menu.py:1775 +msgid "Recurring" +msgstr "Opakující se" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "daily" +msgstr "denně" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "on all business days" +msgstr "ve všech pracovních dnech" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "weekly" +msgstr "týdně" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "monthly" +msgstr "měsíčně" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "userdefined" +msgstr "uživatelsky definované" + +#: sl/SL_Menu.py:1624 sl/SL_Menu.py:1797 +msgid "Frequency" +msgstr "Frekvence" + +#: sl/SL_Menu.py:1628 sl/SL_Menu.py:1800 +msgid "Days" +msgstr "Dny" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Edit" +msgstr "Upravit" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Preview" +msgstr "Náhled" + +#: sl/SL_Menu.py:1637 sl/SL_Menu.py:1807 +msgid "No notes provided." +msgstr "Nebyly zadány žádné poznámky." + +#: sl/SL_Menu.py:1642 sl/SL_Menu.py:1812 +msgid "A due date is required for recurring tasks." +msgstr "Pro opakující se úkoly je vyžadováno datum dokončení." + +#: sl/SL_Menu.py:1650 +msgid "Please enter a name." +msgstr "Zadejte prosím jméno." + +#: sl/SL_Menu.py:1661 +#, python-brace-format +msgid "Task '{sub_name}' added to '{main_name}'." +msgstr "Úkol '{sub_name}' byl přidán do '{main_name}'." + +#: sl/SL_Menu.py:1693 sl/SL_Menu.py:2272 +msgid "Step 2: Select Task from" +msgstr "Krok 2: Vyberte úkol z" + +#: sl/SL_Menu.py:1696 +msgid "No open tasks found." +msgstr "Nebyly nalezeny žádné otevřené úkoly." + +#: sl/SL_Menu.py:1724 +msgid "Task not found." +msgstr "Úkol nenalezen." + +#: sl/SL_Menu.py:1840 +msgid "Error: Could not update task." +msgstr "Chyba: Úlohu nelze aktualizovat." + +#: sl/SL_Menu.py:1853 +msgid "Start Work on Task" +msgstr "Zahájit práci na úloze" + +#: sl/SL_Menu.py:1867 +#, python-brace-format +msgid "No open tasks to start work on in '{name}'." +msgstr "" +"Žádné otevřené úkoly, na kterých by bylo možné začít pracovat v '{name}'." + +#: sl/SL_Menu.py:1878 msgid "Start Work" msgstr "Začít práci" -msgid "Generate Report" -msgstr "Vytvořit zprávu" +#: sl/SL_Menu.py:1906 +msgid "Task" +msgstr "Úloha" -msgid "Delete All" -msgstr "Smazat vše" +#: sl/SL_Menu.py:1907 +msgid "Started at" +msgstr "Zahájeno v" -msgid "Restore and Restart" -msgstr "Obnovit a restartovat" +#: sl/SL_Menu.py:1918 +msgid "Streamlit Port Settings" +msgstr "Nastavení streamovaného portu" + +#: sl/SL_Menu.py:1922 +msgid "Current Streamlit Port" +msgstr "Aktuální port streamovaného proudu" + +#: sl/SL_Menu.py:1925 +msgid "New Port" +msgstr "Nový port" + +#: sl/SL_Menu.py:1926 sl/SL_Menu.py:1958 sl/SL_Menu.py:2007 sl/SL_Menu.py:2042 +#: sl/SL_Menu.py:2074 sl/SL_Menu.py:2141 sl/SL_Menu.py:2173 +msgid "Save" +msgstr "Uložit" + +#: sl/SL_Menu.py:1930 +#, python-brace-format +msgid "Port updated to {port}. Please restart Streamlit." +msgstr "Port aktualizován na{port}. Restartujte prosím Streamlit." + +#: sl/SL_Menu.py:1940 +msgid "Change Data Storage Location" +msgstr "Změnit umístění úložiště dat" + +#: sl/SL_Menu.py:1943 +msgid "Current data file" +msgstr "Aktuální datový soubor" +#: sl/SL_Menu.py:1946 +msgid "New Path for data file" +msgstr "Nová cesta pro datový soubor" + +#: sl/SL_Menu.py:1952 +msgid "Move existing data to the new location" +msgstr "Přesunout existující data do nového umístění" + +#: sl/SL_Menu.py:1955 +msgid "" +"If unchecked, the old data file will remain, and a new empty one might be " +"created at the new location on restart." +msgstr "" +"Pokud není zaškrtnuto, starý datový soubor zůstane a při restartu může být " +"vytvořen nový prázdný v novém umístění." + +#: sl/SL_Menu.py:1962 +msgid "Please enter a new path." +msgstr "Zadejte prosím novou cestu." + +#: sl/SL_Menu.py:1970 +msgid "" +"Error: For security, the data file must be located within the application " +"directory." +msgstr "" +"Chyba: Z důvodu zabezpečení musí být datový soubor umístěn v adresáři " +"aplikace." + +#: sl/SL_Menu.py:1980 +msgid "" +"Storage location updated. Please restart the application for the changes to " +"take effect." +msgstr "" +"Umístění úložiště aktualizováno. Restartujte aplikaci, aby se změny " +"projevily." + +#: sl/SL_Menu.py:2006 +msgid "Select Format" +msgstr "Vyberte formát" + +#: sl/SL_Menu.py:2011 +msgid "Report format updated." +msgstr "Formát zprávy byl aktualizován." + +#: sl/SL_Menu.py:2024 msgid "Current CSS file" msgstr "Aktuální soubor CSS" +#: sl/SL_Menu.py:2041 msgid "Select CSS File" msgstr "Vybrat soubor CSS" -msgid "CSS style updated. Please restart the application for the changes to take effect." +#: sl/SL_Menu.py:2047 +msgid "" +"CSS style updated. Please restart the application for the changes to take " +"effect." msgstr "Styl CSS byl aktualizován. Pro projevení změn restartujte aplikaci." +#: sl/SL_Menu.py:2063 msgid "App Window (Webview)" msgstr "Okno aplikace (Webview)" +#: sl/SL_Menu.py:2063 msgid "System Browser" msgstr "Systémový prohlížeč" +#: sl/SL_Menu.py:2073 msgid "Select View Mode" msgstr "Vyberte režim zobrazení" -msgid "View mode updated. Please restart the application for the changes to take effect." -msgstr "Režim zobrazení byl aktualizován. Pro projevení změn restartujte aplikaci." +#: sl/SL_Menu.py:2080 +msgid "" +"View mode updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"Režim zobrazení byl aktualizován. Pro projevení změn restartujte aplikaci." + +#: sl/SL_Menu.py:2091 +msgid "Restore Previous Version" +msgstr "Obnovit předchozí verzi" + +#: sl/SL_Menu.py:2096 +msgid "The 'update' module is not available. This feature is disabled." +msgstr "Modul 'aktualizace' není k dispozici. Tato funkce je zakázána." + +#: sl/SL_Menu.py:2101 +#, python-brace-format +msgid "No previous version backup '{filename}' found." +msgstr "Nebyla nalezena žádná záloha předchozí verze{filename}." + +#: sl/SL_Menu.py:2105 +msgid "" +"This will restore the application to the previously backed-up version. The " +"application will then restart. You may need to manually refresh your browser" +" if it does not reconnect automatically." +msgstr "" +"Toto obnoví aplikaci na dříve zálohovanou verzi. Aplikace se poté " +"restartuje. Pokud se prohlížeč automaticky znovu nepřipojí, možná budete " +"muset aktualizovat ručně." + +#: sl/SL_Menu.py:2107 +msgid "Restore and Restart" +msgstr "Obnovit a restartovat" + +#: sl/SL_Menu.py:2108 +msgid "Restoring and restarting..." +msgstr "Obnovování a restartování..." + +#: sl/SL_Menu.py:2111 +msgid "Restore complete. Please restart the application." +msgstr "Obnovení dokončeno. Restartujte aplikaci." + +#: sl/SL_Menu.py:2117 +msgid "Change Language" +msgstr "Změnit jazyk" + +#: sl/SL_Menu.py:2140 +msgid "Select Language" +msgstr "Vybrat jazyk" + +#: sl/SL_Menu.py:2148 +msgid "" +"Language changed. Please restart the application for the changes to take " +"effect." +msgstr "Jazyk byl změněn. Restartujte aplikaci, aby se změny projevily." + +#: sl/SL_Menu.py:2166 +msgid "Enable email import" +msgstr "Povolit import e-mailů" + +#: sl/SL_Menu.py:2167 +msgid "IMAP Server" +msgstr "Server IMAP" + +#: sl/SL_Menu.py:2168 +msgid "Port" +msgstr "Port" + +#: sl/SL_Menu.py:2169 +msgid "Username" +msgstr "Uživatelské jméno" + +#: sl/SL_Menu.py:2170 +msgid "Password" +msgstr "Heslo" + +#: sl/SL_Menu.py:2171 +msgid "Use SSL" +msgstr "Použít SSL" + +#: sl/SL_Menu.py:2184 +msgid "Email settings saved." +msgstr "Nastavení e-mailu bylo uloženo." + +#: sl/SL_Menu.py:2198 sl/SL_Menu.py:2330 +msgid "Select Date" +msgstr "Vyberte datum" + +#: sl/SL_Menu.py:2199 sl/SL_Menu.py:2223 sl/SL_Menu.py:2287 sl/SL_Menu.py:2313 +#: sl/SL_Menu.py:2331 +msgid "Generate Report" +msgstr "Vytvořit zprávu" + +#: sl/SL_Menu.py:2219 +msgid "Start Date" +msgstr "Datum zahájení" + +#: sl/SL_Menu.py:2221 +msgid "End Date" +msgstr "Datum ukončení" + +#: sl/SL_Menu.py:2346 +msgid "Report Result" +msgstr "Výsledek zprávy" + +#: sl/SL_Menu.py:2375 +msgid "Export Report" +msgstr "Export zprávy" + +#~ msgid "" +#~ "\n" +#~ "Error: Failed to install dependencies. Please install them manually using: pip install -r {requirements_path}" +#~ msgstr "" +#~ "\n" +#~ "Chyba: Instalace závislostí se nezdařila. Prosím, nainstalujte je ručně pomocí: pip install -r {requirements_path}" + +#~ msgid "A task named '{sub_name}' already exists in '{main_name}'." +#~ msgstr "Úkol s názvem '{sub_name}' již v projektu '{main_name}' existuje." + +#~ msgid "Project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Projekt '{old_name}' přejmenován na '{new_name}'." + +#~ msgid "Task '{old_name}' has been renamed to '{new_name}'." +#~ msgstr "Úkol '{old_name}' byl přejmenován na '{new_name}'." + +#~ msgid "Invalid choice. Please enter a number from 0 to 3." +#~ msgstr "Neplatná volba. Zadejte prosím číslo od 0 do 3." + +#~ msgid " Project: {name}" +#~ msgstr " Projekt: {name}" + +#~ msgid "" +#~ "\n" +#~ "No time tracked for {date}." +#~ msgstr "" +#~ "\n" +#~ "Pro den {date} nebyl zaznamenán žádný čas." + +#~ msgid "Time Control" +#~ msgstr "Kontrola času" diff --git a/locale/de/LC_MESSAGES/timetracker.mo b/locale/de/LC_MESSAGES/timetracker.mo index c2912b3a14d28f20fb3eb05cfa9f5fe82ef5de57..ca431ba1cc82b0b9e76c19716fd6a193fefcb721 100644 GIT binary patch literal 49053 zcmb`Q34C2uwf_$mD3p0BGn`T&DKzN-6bNHFQJ^htlTtvW+$1N-rOCbF4h?NBA|MJX zs1HHJiANtOAfq5E>L2?QQ4vKHpE%;IDC$#DpUD6F+rt^|khHvaKcAD|+4J6Ouf6u# zYwxr3!#%fsZ@_Qg*9E~r;Iq32!PC6IV~Tu(;LFp4;BfFsum$`*crZA*EeQ4jj|C3| z&jR-X`$6Ti9y|oR84STkod0v+-njn^9u4l;ZsQ#X9)Y_XRQ~J1J;C>ZM}l{Qv%qJ- zY2daqg5UtK9aK4If=WLKs=n8Qs>eg1>h}#$^?MNv!Cz%Foqa0omUyvF(80jj*ugKE#uL6Lm7 z+17s+*ou3Vb6)|fU3Y*X_*L*!@I_GhAAL*^><%sfRqnZ<=u-qIgV#B{&Ecb<+VwQ3 zdc6o91@3%o5F7>`56XQ3sC?c6?hAed+yi_R+yVRwC^~%$+#CEgI1&68sB*VI&iWq= z?u>gjxF>iTsQgxd`+%2#D(4F4z7T~!z6b6F?n)!n4~K!O|1qHYaSr$MFr4ygA07F7Ig8C+`DWKi`#5LEexfvRU4C^{?vMdxnkz8F;bMG#RLTm$X{ zJ_IV=lc37`2{;%0E2wf#Jk7dK1r`6zp!(@%Q1rOf;U-Y|e%!gg2dccEg39L~p!o1r za7S?G(`|bugQ{;Uco29zcnH`Hs=P8NdR_~vybpr2z&pS>;CI1;!QDD7pS3wW2b_oh zr68gxco-Bv{|Zz+ccYQw+mk`@@gS&jZvvI?!wz2rHD0HZ*;H^2sCr)D+@ql6<*ncp z@NrOb^QWNl+hx8T2h%~(`3z8WUJWW;1yp|TcmAIQAyM!(P<*iS0@8r3;3{wgg!O|j zgKGDLg|>ZDz;4{#pvKe3K$ZVZ@JR3v;Bnx-WF~%F0*Vd;p!oJiQ2hF3a9i-dK;{2K zP<;MRQ1K=$vh+9=+#dIGP<(bCsDABp{snL%?kXt0-Uuq*JHboATfiN_ozArL$KIgm zcOoeIzaA8w-UEtmcY@02^PuYSG^l=^aF)e64)YE_04`TNQ2jjRY|Cd$z$0*92#Ow8 zf=7dof^=E%Gl#8; z1r_fjpz8N1sQ#a{)b>{ksQy|Awt~Z82;KyWFFpw#1-=Zb{fC`n`(Y)xBkl`9rSAt1 z0N)9UjvoalgP#ReuV=vt;IBaS!;3EbFQDqVGmV!2zTi$^=-ksmhEQ-EI1L;HMbFzn z)%OWd^!x)TK01g-D!(b0=O->1Mf@SC9M_bRA- z4`6U9{v1&G89#p%o1C{PkQ2G20RQ-26 z&+##+{+bUe{2Xw1a1E$(-U#juz60C^ybV;n?gPayUvuH#2KU4L8;29lxAi&*JQe?w zLGi~1kRcUZ0nP%S0wp(I1x25U7g+ZUaDUv#gZqNZ!6{%K6#u*(6#ef7JHTf^(QlX6 zTmA__r8@(Z|7uX}DSdVTMfG(m*Pp5;*cQGjWumV&)-T>|Zt^rkE#o^n) ziMT%iimx|;YR3a$C-^vc2sj~c;~fU>fcq$LId}{xI=uyCNClq;XM&S2v2;8GL_`E@ z!5zVGfRan!169sTpz8A~C_3%6#`5VLP~)Qj9t^GrPX^xyo&bIu+#cK&VyM0QfNIBq z-~@0gsB&7soxqbp#a{%foO8e z__u=^-%o(;;LpGr;9i&7dd>q?{xBGV?*WzHL!id>)1cD71d0!LE?NDu1ys6jQ1RA* zA$SX@^q&S5|2v?@>mR{s;0|R=x7pwkxX%I=e*{$gcYw<8PEhHd0F~~C4tJ>7bhAN? zv-3cW%Nsz^*amo(HO&rJ&;Fo&Qy!+Iu}HI@}8?{a3&} z!JmNpf`10p4?ACG(@z7{o_V17E(fap*MY}?4}vQ17ogg?%{tpZ`+}nT382cm2vqob zQ1Rd8+;@W^?#DsV>jfA7SBHD7x9O&X`x8DFoC015YP?(y?grlG!XE%dzpsLOgMR>3 z-|aTo{M$garxV;ATn&nUM?lfzMo{#=8lL;=lR>qo4O|SK5AF!w0V>`7;KAVIpy>D`P;`3*Wy{$EJOuwEK*^=~-~nJ6RC(9C z@Owbf{i~qz-}`EGeDGjU=?6g3^%`&w@OpQTkLoYLDB1Iho^$# zhvlH!xduE8yaJRQxgDGWJ_U+yFM+Dh4%gUq{2t)RxX%Yw|C_)N`~)aI|2C-lyaLVu z&w8uv|Mj5y=?-u<_(O0exX0UU`njO^vDe`(pz8TFsQUdHRCzmJYv+ZdK+$t0sCr)w zD!+R{)&EDJ=8tWzv;8w26n`!Uj|DFUmHrO!NbuX>dEh@m)qCaJku~63K!$MeOK=s~ z^A4+Td>Yg^coBR(*z!*6e-(H*?uWrS;P=2zaF6S4`CXvuSq4u6H-YNUAA=LYKY^{_ zKS1&6)Eg{ajt39KJq&ISUJLFDz6;z5{4l8WcY`~E4}r?}vo8E;@ZWJi4=Uc}@3L~| z8i#j*r{Mo}Q2ev=yKVosfU3vo;C!$foCn?lo(lc|JP|zTJ=T3LD0;jXRDb>vRQi^G zv-0UAa4zmVDEiz3UIhLW><8!GX!Yoifp5V58*mSB(R(dk0IGgN;1S?kLG|~?LDA=F zhrb2)#69sQiwA&{akqhaa6UK{ycbk|Jp;}JUj~l@TW_{}brHA}_uD|V_c>7gIr)9I zAI<~!!o3<)x-z&g_%U!Y_&B&9_+3!#_#-$0oN$XBpA$i~XHRfvu+8~*fV<#c;QYJ5 z3vgcyo&|meJPO?Y{Z`+c1)hfcDp35f8B~5>0mVrbHSzu$+f zT<8Tu+&6#=!23as$G1BRJ!kis`twdcm0@k9|4NbPX;G} zXMt+>N{54>;{hkuLfs*|hyU52`foY7JGdGYy+^>kz)?{B`F2qCxEoac zKjFfk0MEevJg9h6KV$Qo2daI`!DZk@pz3uWSOot9ia(>rEZuJhhjBj#s+W`EB!g%NM(XN8>&f6rWuJD*n~rHsH(rISHKfI&?PPf5&qr?iC8;ce4e<^Z zI-VuY?*)gC6Zb9d{Q&TtxKHHyAD**$F2V1O;OBYt8v*}|=l8t76+DpVBMNZ8D{$Y= z^PfEWZM0zYq5YkoyxMp_)P;$szKQ$2;I-f_;NN+~!wIZ}ZUA!FP$X9NYy= z|F*~d2A+L+p60onN55Z!Ii4T$UXcgC#V%|<@2AUy-y{o0_PW<#KNoL;kY{^nt=};3 z`|$n_@K%NKyUF1k@GU(5iQhrs4d6R?=JNh6o=v>}f#)RNzsB<$-Vf%vibubn;r9xU z|LsUQufu&7&jOw=^GJ^RAL7yc?&7b;-QRdL?mo=3H*voP`rqNaJk4`I&t*KP@mxb3 z{l4MweDE0DC7#Kyy?5~b0UrJS;o=>~`)_&rc;3TvK2M&ocY+^tajFjS3VxQs=l2!xAf8VA-VSa<-M_&5 z>%h0+zK-_-&&#|QLI3+b@0~cl~nTlKS0D_=7wTyLeAHTuGeW+`Er{ z8txvRBYAXI>n>38TE8=SALP;RPY%BgehBwZ!ONVV!gt{Phdi3Y{I8oA#9Xj9`5p=0 z?cz&b`=4Z)e(xjfzrg2>%i3D>`Xl^5$+I`_dy&rvdEdx0o9BA`eg&p~Kfs;GK9_gthaao@)C4DOHf9L4+Rc&>HflG&fYeJ+oFdxF0JU*fr49{k>p-%nil25>3Q z={!H?c|GAD1~oSgfg|91!Ck4lkP4KB_e_?_b3_XJcoQHc?@XI`(;{A9Y{g#2M)@Q&+jgS5F7u=ucbuaKgcs{~&1@8aHb2#tE@hs%= zzkPUF#Pi=gUvQpNT=?I?$M9R|{5@RA%O45*1<&!kU+e=M?o7od5_Yn4PXXV^^Dmz5 z2s?o={VwPEDbM?HzaN~y^H<(?=lLV=+kvydex3t)*5dv-sNW3U*MfiLIhyxVcs|8@ zndcE6{a)m`6aQU#(!W!24DgJm{J)O-OFZ59b%6SXF8n_03?2seb??tPybXMorl}1}}AK1yAt&$h!&Oo%hf1Y)iabc>M2M zyjWH;Q0j4X6N@&-p}MY4EJNsZ(H2w@_f&^bG+C79wF>%JP+aNaPf{#McRS3{}cbC z@VnTB``};W{)+Q^2+tdM-yi%UxX$_C2R?w`tvvt6Go9yM_)R3=^)Ai<;GypQSA_4w z`!Kl1`OOC-+`EzH8RvHo?kdkt_`TWrjpEktFFYa7DxMGW1e1y<_qDnsFW}E5wW7Qt1EbKRJ^vfwy?9WFI*aphD&ma zSSnr;^;SXxvZ39%@|whV-cYd|HA!K^YT{Q*rKnH|J9{hnwNbdLSW0C!KUc|xU6o=f zHxPwgQKgbE43v|y=0`(OB?>!-hC-8dU#Pt6BQ&nROP#IG{AjpHmP*m)TU;rIUDcl0 z853ZBRDse_pCkB+Xrx$5(I*bhWY#p6sYh+-g1&skG%9KI8BrlB<*1|WW|yM1yV#do zH*LIV{l!w43(F%>Z@xd@OBU-Iq;OfMyOzHHhdCU{

MO;{5@9hF)YXxy;4GH&vcBFvd(70(`x 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 diff --git a/locale/de/LC_MESSAGES/timetracker.po b/locale/de/LC_MESSAGES/timetracker.po index 37bddcc..3ff03a0 100644 --- a/locale/de/LC_MESSAGES/timetracker.po +++ b/locale/de/LC_MESSAGES/timetracker.po @@ -3,10 +3,10 @@ # This file is distributed under the same license as the TimeTracker package. # msgid "" -msgstr "Project-Id-Version: TimeControl\n" +msgstr "" "Project-Id-Version: TimeControl\n" -"Report-Msgid-Bugs-To: https://github.com/FrankFaulstich/TimeControl/issues\n" -"POT-Creation-Date: 2025-10-30 10:00+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-06-18 12:24+0200\n" "PO-Revision-Date: 2025-10-30 12:00+0200\n" "Last-Translator: Frank Faulstich\n" "Language-Team: German\n" @@ -16,923 +16,1280 @@ msgstr "Project-Id-Version: TimeControl\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -msgid "Edit current task" -msgstr "Aktuellen Task bearbeiten" - -#: tt/TimeTracker.py:63 -msgid "Warning: Could not read {file}. Error: {error}" -msgstr "Warnung: Konnte {file} nicht lesen. Fehler: {error}" - -#: TimeTracker.py:75 -msgid "Some required packages are missing. Attempting to install them..." -msgstr "Einige benötigte Pakete fehlen. Es wird versucht, sie zu installieren..." - -#: TimeTracker.py:78 -msgid "Installing {package}..." -msgstr "Installiere {package}..." - -#: TimeTracker.py:81 +#: TimeTrackerCLI.py:25 msgid "" "\n" -"Dependencies installed successfully." +"--- Project Management ---" msgstr "" "\n" -"Abhängigkeiten erfolgreich installiert." +"--- Projektverwaltung ---" -#: TimeTracker.py:82 -msgid "Please restart the application for the changes to take effect." -msgstr "Bitte starte die Anwendung neu, damit die Änderungen wirksam werden." +#: TimeTrackerCLI.py:26 +msgid "1. Main Project Management" +msgstr "1. Hauptprojektmanagement" -#: TimeTracker.py:85 -msgid "" -"\n" -"Error: Failed to install dependencies. Please install them manually using: " -"pip install -r {requirements_path}" -msgstr "" -"\n" -"Fehler: Installation der Abhängigkeiten fehlgeschlagen. Bitte manuell " -"installieren mit: pip install -r {requirements_path}" +#: TimeTrackerCLI.py:27 +msgid "2. Task Management" +msgstr "2. Aufgabenmanagement" -#: TimeTracker.py:88 -msgid "An unexpected error occurred during dependency check: {error}" -msgstr "Ein unerwarteter Fehler bei der Abhängigkeitsprüfung ist aufgetreten: {error}" +#: TimeTrackerCLI.py:29 +msgid "0. Back to Main Menu" +msgstr "0. Zurück zum Hauptmenü" -#: TimeTracker.py:112 -msgid "Info: Report content has been copied to the clipboard." -msgstr "Info: Der Berichtsinhalt wurde in die Zwischenablage kopiert." +#: TimeTrackerCLI.py:32 TimeTrackerCLI.py:60 TimeTrackerCLI.py:257 +#: TimeTrackerCLI.py:662 TimeTrackerCLI.py:701 TimeTrackerCLI.py:811 +#: TimeTrackerCLI.py:953 +msgid "Choice: " +msgstr "Auswahl: " -#: TimeTracker.py:114 -msgid "Warning: Could not copy to clipboard. Error: {error}" -msgstr "Warnung: Konnte nicht in die Zwischenablage kopieren. Fehler: {error}" +#: TimeTrackerCLI.py:41 +msgid "Invalid choice. Please enter a number from 0 to 2." +msgstr "Ungültige Auswahl. Bitte geben Sie eine Zahl zwischen 0 und 2 ein." -#: TimeTracker.py:116 +#: TimeTrackerCLI.py:46 msgid "" -"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " -"install pyperclip`)." +"\n" +"--- Main Project Management ---" msgstr "" -"Warnung: Konnte nicht in die Zwischenablage kopieren. Bitte 'pyperclip' " -"installieren (`pip install pyperclip`)." - -#: TimeTracker.py:130 -msgid "{hours} hour ({dlp} DLP)" -msgid_plural "{hours} hours ({dlp} DLP)" -msgstr[0] "{hours} Stunde ({dlp} DLP)" -msgstr[1] "{hours} Stunden ({dlp} DLP)" +"\n" +"--- Hauptprojektverwaltung ---" -msgid "closed" -msgstr "geschlossen" +#: TimeTrackerCLI.py:47 +msgid "1. Add Main Project" +msgstr "1. Hauptprojekt hinzufügen" -#: tt/TimeTracker.py:350 -msgid "Source project '{name}' not found." -msgstr "Quell-Projekt '{name}' nicht gefunden." +#: TimeTrackerCLI.py:48 +msgid "2. List Main Projects" +msgstr "2. Hauptprojekte auflisten" -#: TimeTracker.py:352 -msgid "Destination project '{name}' not found." -msgstr "Ziel-Projekt '{name}' nicht gefunden." +#: TimeTrackerCLI.py:49 +msgid "3. Rename Main Project" +msgstr "3. Hauptprojekt umbenennen" -#: TimeTracker.py:356 -msgid "A task named '{sub_name}' already exists in '{main_name}'." -msgstr "Eine Aufgabe mit dem Namen '{sub_name}' existiert bereits in '{main_name}'." +#: TimeTrackerCLI.py:50 +msgid "4. Close Main Project" +msgstr "4. Hauptprojekt schließen" -msgid "Task '{name}' moved successfully." -msgstr "Aufgabe '{name}' erfolgreich verschoben." +#: TimeTrackerCLI.py:51 +msgid "5. Re-open Main Project" +msgstr "5. Hauptprojekt" -#: tt/TimeTracker.py:378 -msgid "A project named '{name}' already exists." -msgstr "Ein Projekt mit dem Namen '{name}' existiert bereits." +#: TimeTrackerCLI.py:52 +msgid "6. Delete Main Project" +msgstr "erneut öffnen 6. Hauptprojekt löschen" -msgid "Project '{old_name}' renamed to '{new_name}'." -msgstr "Projekt '{old_name}' wurde in '{new_name}' umbenannt." +#: TimeTrackerCLI.py:53 +msgid "7. List Inactive Main Projects" +msgstr "7. Inaktive Hauptprojekte auflisten" -#: tt/TimeTracker.py:398 -msgid "Task '{sub_name}' not found in '{main_name}'." -msgstr "Aufgabe '{sub_name}' in '{main_name}' nicht gefunden." +#: TimeTrackerCLI.py:54 +msgid "8. Demote Main-Project to Sub-Project" +msgstr "8. Herabstufen Hauptprojekt zu Unterprojekt" -#: tt/TimeTracker.py:406 -msgid "General" -msgstr "Allgemein" +#: TimeTrackerCLI.py:55 +msgid "9. List Completed Main Projects" +msgstr "9. Liste abgeschlossener Hauptprojekte" -#: tt/TimeTracker.py:410 -msgid "Task '{name}' was promoted to a new project." -msgstr "Aufgabe '{name}' wurde zu einem neuen Projekt befördert." +#: TimeTrackerCLI.py:57 TimeTrackerCLI.py:254 +msgid "0. Back" +msgstr "0. Zurück" -#: tt/TimeTracker.py:439 -msgid "Project to demote '{name}' not found." -msgstr "Projekt '{name}' zum Herabstufen nicht gefunden." +#: TimeTrackerCLI.py:64 +msgid "" +"\n" +"--- Add New Main Project ---" +msgstr "" +"\n" +"--- Neues Hauptprojekt hinzufügen ---" -#: tt/TimeTracker.py:441 -msgid "New parent project '{name}' not found." -msgstr "Neues übergeordnetes Projekt '{name}' nicht gefunden." +#: TimeTrackerCLI.py:65 +msgid "Name of the main project: " +msgstr "Name des Hauptprojekts:" -#: tt/TimeTracker.py:455 -msgid "Task '{old_name}' has been renamed to '{new_name}'." -msgstr "Aufgabe '{old_name}' wurde in '{new_name}' umbenannt." +#: TimeTrackerCLI.py:67 +#, python-brace-format +msgid "Main project '{name}' added." +msgstr "Hauptprojekt '{name}' hinzugefügt." -#: TimeTracker.py:463 +#: TimeTrackerCLI.py:70 msgid "" -"Project '{demoted_name}' was demoted to a task under " -"'{parent_name}'." +"\n" +"--- List Main Projects ---" msgstr "" -"Projekt '{demoted_name}' wurde zu einer Aufgabe unter " -"'{parent_name}' herabgestuft." - -msgid "Task Planning" -msgstr "Aufgabenplanung" +"\n" +"--- Hauptprojekte auflisten ---" -msgid "Today View" -msgstr "Heute-Ansicht" +#: TimeTrackerCLI.py:76 TimeTrackerCLI.py:313 sl/SL_Menu.py:1246 +#: sl/SL_Menu.py:1310 +msgid "closed" +msgstr "geschlossen" -msgid "E-Mail Task Assignment" -msgstr "Zuordnung von E-Mail-Tasks" +#: TimeTrackerCLI.py:79 +msgid "No main projects found." +msgstr "Keine Hauptprojekte gefunden." -msgid "Fetching emails..." -msgstr "E-Mails werden abgerufen..." +#: TimeTrackerCLI.py:82 +msgid "" +"\n" +"--- Rename Main Project ---" +msgstr "" +"\n" +"--- Hauptprojekt umbenennen ---" + +#: TimeTrackerCLI.py:85 +msgid "No main projects to rename." +msgstr "Keine Hauptprojekte zum Umbenennen." + +#: TimeTrackerCLI.py:88 +msgid "Select an open main project to rename:" +msgstr "Wählen Sie ein geöffnetes Hauptprojekt zum Umbenennen aus:" + +#: TimeTrackerCLI.py:93 TimeTrackerCLI.py:117 TimeTrackerCLI.py:139 +#: TimeTrackerCLI.py:162 TimeTrackerCLI.py:272 TimeTrackerCLI.py:301 +#: TimeTrackerCLI.py:333 TimeTrackerCLI.py:370 TimeTrackerCLI.py:405 +#: TimeTrackerCLI.py:441 TimeTrackerCLI.py:568 TimeTrackerCLI.py:604 +#: TimeTrackerCLI.py:855 TimeTrackerCLI.py:888 TimeTrackerCLI.py:969 +msgid "Enter the number of the main project: " +msgstr "Geben Sie die Nummer des Hauptprojekts ein:" + +#: TimeTrackerCLI.py:96 TimeTrackerCLI.py:349 +#, python-brace-format +msgid "Enter the new name for '{name}': " +msgstr "Gib den neuen Namen für '{name}' ein: " -msgid "Error fetching emails: {error}" -msgstr "Fehler beim E-Mail-Abruf: {error}" +#: TimeTrackerCLI.py:99 +#, python-brace-format +msgid "Main project '{old_name}' successfully renamed to '{new_name}'." +msgstr "" +"Hauptprojekt „{old_name}“ wurde erfolgreich in „{new_name}“ umbenannt." -msgid "{count} new tasks created from emails." -msgstr "{count} neue Aufgaben aus E-Mails erstellt." +#: TimeTrackerCLI.py:101 sl/SL_Menu.py:1283 +#, python-brace-format +msgid "" +"Error: Could not rename. The new name '{new_name}' might already exist." +msgstr "" +"Fehler: Umbenennung fehlgeschlagen. Der neue Name '{new_name}' existiert " +"möglicherweise bereits." + +#: TimeTrackerCLI.py:103 TimeTrackerCLI.py:125 TimeTrackerCLI.py:147 +#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:221 TimeTrackerCLI.py:287 +#: TimeTrackerCLI.py:319 TimeTrackerCLI.py:356 TimeTrackerCLI.py:391 +#: TimeTrackerCLI.py:426 TimeTrackerCLI.py:463 TimeTrackerCLI.py:510 +#: TimeTrackerCLI.py:589 TimeTrackerCLI.py:794 TimeTrackerCLI.py:875 +#: TimeTrackerCLI.py:894 TimeTrackerCLI.py:992 +msgid "Invalid input. Please enter a valid number." +msgstr "Ungültige Eingabe. Bitte eine gültige Zahl eingeben." -msgid "No new emails found." -msgstr "Keine neuen E-Mails gefunden." +#: TimeTrackerCLI.py:106 +msgid "" +"\n" +"--- Close Main Project ---" +msgstr "" +"\n" +"--- Hauptprojekt schließen ---" -msgid "No unassigned email tasks available." -msgstr "Keine nicht zugeordneten E-Mail-Tasks vorhanden." +#: TimeTrackerCLI.py:109 +msgid "No open main projects to close." +msgstr "Keine offenen Hauptprojekte zum Schließen." -msgid "Assign Project" -msgstr "Projekt zuordnen" +#: TimeTrackerCLI.py:112 +msgid "Select a main project to close:" +msgstr "Wählen Sie ein Hauptprojekt zum Schließen aus:" -msgid "Edit Details" -msgstr "Details bearbeiten" +#: TimeTrackerCLI.py:121 +#, python-brace-format +msgid "Main project '{name}' has been closed." +msgstr "Das Hauptprojekt „{name}“ wurde geschlossen." -msgid "Due Date" -msgstr "Fälligkeitsdatum" +#: TimeTrackerCLI.py:123 TimeTrackerCLI.py:145 +msgid "Error: Main project not found." +msgstr "Fehler: Hauptprojekt nicht gefunden." -msgid "Clear" -msgstr "Löschen" +#: TimeTrackerCLI.py:128 +msgid "" +"\n" +"--- Re-open Main Project ---" +msgstr "" +"\n" +"--- Hauptprojekt erneut öffnen ---" -msgid "Task Name" -msgstr "Aufgabenname" +#: TimeTrackerCLI.py:131 +msgid "No closed main projects to reopen." +msgstr "Keine geschlossenen Hauptprojekte zur Wiedereröffnung." -msgid "Task details updated successfully." -msgstr "Aufgabendetails erfolgreich aktualisiert." +#: TimeTrackerCLI.py:134 +msgid "Select a main project to reopen:" +msgstr "Wählen Sie ein Hauptprojekt zum erneuten Öffnen aus:" -msgid "Error updating task details." -msgstr "Fehler beim Aktualisieren der Aufgabendetails." +#: TimeTrackerCLI.py:143 +#, python-brace-format +msgid "Main project '{name}' has been reopened." +msgstr "Das Hauptprojekt „{name}“ wurde erneut geöffnet." -msgid "Email Settings" -msgstr "E-Mail-Einstellungen" +#: TimeTrackerCLI.py:150 +msgid "" +"\n" +"--- Delete Main Project ---" +msgstr "" +"\n" +"--- Hauptprojekt löschen ---" -msgid "Enable email import" -msgstr "E-Mail-Import aktivieren" +#: TimeTrackerCLI.py:153 +msgid "No main projects to delete." +msgstr "Keine Hauptprojekte zum Löschen." -msgid "Username" -msgstr "Benutzername" +#: TimeTrackerCLI.py:156 +msgid "Select a main project to delete:" +msgstr "Wählen Sie ein Hauptprojekt zum Löschen aus:" -msgid "Password" -msgstr "Passwort" +#: TimeTrackerCLI.py:165 +#, python-brace-format +msgid "Main project '{name}' deleted." +msgstr "Hauptprojekt „{name}“ gelöscht." -msgid "Use SSL" -msgstr "SSL verwenden" +#: TimeTrackerCLI.py:167 TimeTrackerCLI.py:285 +#, python-brace-format +msgid "Error: Main project '{name}' not found." +msgstr "Fehler: Hauptprojekt „{name}“ nicht gefunden." -msgid "Email settings saved." -msgstr "E-Mail-Einstellungen gespeichert." +#: TimeTrackerCLI.py:172 +msgid "" +"\n" +"--- List Inactive Main-Projects ---" +msgstr "" +"\n" +"--- Inaktive Hauptprojekte auflisten ---" -msgid "4. Change Streamlit Port" -msgstr "4. Streamlit-Port ändern" +#: TimeTrackerCLI.py:174 +msgid "Enter the number of weeks without activity (e.g., 8): " +msgstr "Anzahl der Wochen ohne Aktivität eingeben (z.B. 8): " -msgid "Current Streamlit Port: {port}" -msgstr "Aktueller Streamlit-Port: {port}" +#: TimeTrackerCLI.py:176 TimeTrackerCLI.py:518 +msgid "Please enter a positive number." +msgstr "Bitte eine positive Zahl eingeben." -msgid "Enter new port (or press Enter to keep current): " -msgstr "Neuen Port eingeben (oder Enter drücken, um aktuellen beizubehalten): " +#: TimeTrackerCLI.py:182 +#, python-brace-format +msgid "" +"\n" +"Inactive Main-Projects (>{weeks} weeks):" +msgstr "" +"\n" +"Inaktive Hauptprojekte (>{weeks}Wochen):" -msgid "Port updated to {port}. Please restart Streamlit for changes to take effect." -msgstr "Port auf {port} aktualisiert. Bitte Streamlit neu starten, damit die Änderungen wirksam werden." +#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:526 +#, python-brace-format +msgid " - Main Project: {name}" +msgstr "- Hauptprojekt:{name}" -msgid "Work started on '{task_name}' in project '{main_name}'." -msgstr "Arbeit an '{task_name}' im Projekt '{main_name}' begonnen." +#: TimeTrackerCLI.py:185 TimeTrackerCLI.py:528 +#, python-brace-format +msgid " Last Activity: {date}" +msgstr " Letzte Aktivität: {date}" -#: TimeTracker.py:651 -msgid "- {name}: {hours} hour" -msgid_plural "- {name}: {hours} hours" -msgstr[0] "- {name}: {hours} Stunde" -msgstr[1] "- {name}: {hours} Stunden" +#: TimeTrackerCLI.py:188 +#, python-brace-format +msgid "No main-projects found inactive for more than {weeks} weeks." +msgstr "" +"Es wurden keine Hauptprojekte gefunden, die länger als{weeks}Wochen inaktiv " +"waren." -#: TimeTracker.py:657 -msgid "## {name} ({hours} hour)\n" -msgid_plural "## {name} ({hours} hours)\n" -msgstr[0] "## {name} ({hours} Stunde)\n" -msgstr[1] "## {name} ({hours} Stunden)\n" +#: TimeTrackerCLI.py:191 TimeTrackerCLI.py:534 +msgid "Invalid input. Please enter a valid number for weeks." +msgstr "Ungültige Eingabe. Bitte eine gültige Zahl für Wochen eingeben." -#: TimeTracker.py:665 -msgid "# Daily Time Report: {date}\n" -msgstr "# Tagesbericht: {date}\n" +#: TimeTrackerCLI.py:194 +msgid "" +"\n" +"--- Demote Main-Project to Sub-Project ---" +msgstr "" +"\n" +"--- Hauptprojekt zum Unterprojekt herabstufen ---" -#: TimeTracker.py:666 -msgid "\n**Total Daily Time: {hours} hour**" -msgid_plural "\n**Total Daily Time: {hours} hours**" -msgstr[0] "\n**Tägliche Gesamtzeit: {hours} Stunde**" -msgstr[1] "\n**Tägliche Gesamtzeit: {hours} Stunden**" +#: TimeTrackerCLI.py:197 +msgid "You need at least two open main projects for this operation." +msgstr "" +"Für diesen Vorgang benötigen Sie mindestens zwei offene Hauptprojekte." -#: TimeTracker.py:670 -msgid "No time tracked for {date}." -msgstr "Keine Zeit für {date} erfasst." +#: TimeTrackerCLI.py:202 +msgid "Select the main project to demote:" +msgstr "Wählen Sie das Hauptprojekt aus, das herabgestuft werden soll:" -#: TimeTracker.py:708 -msgid "# Time Report: {start_date} to {end_date}\n" -msgstr "# Zeitbericht: {start_date} bis {end_date}\n" +#: TimeTrackerCLI.py:205 +msgid "Enter the number of the project to demote: " +msgstr "Gib die Nummer des herabzustufenden Projekts ein: " -#: TimeTracker.py:709 +#: TimeTrackerCLI.py:209 msgid "" "\n" -"**Total Time in Period: {total_time}**" +"Select the new parent main project:" msgstr "" "\n" -"**Gesamtzeit im Zeitraum: {total_time}**" +"Wählen Sie das neue übergeordnete Hauptprojekt aus:" -#: TimeTracker.py:721 -msgid "No time tracked between {start_date} and {end_date}." -msgstr "Keine Zeit zwischen {start_date} und {end_date} erfasst." +#: TimeTrackerCLI.py:213 +msgid "Enter the number of the new parent project: " +msgstr "Gib die Nummer des neuen übergeordneten Projekts ein: " -#: TimeTrackerCLI.py:21 -msgid "\n--- Project Management ---" -msgstr "\n--- Projektverwaltung ---" +#: TimeTrackerCLI.py:224 +msgid "" +"\n" +"--- List Completed Main Projects ---" +msgstr "" +"\n" +"--- Abgeschlossene Hauptprojekte auflisten ---" -#: TimeTrackerCLI.py:22 -msgid "1. Add Project" -msgstr "1. Projekt hinzufügen" +#: TimeTrackerCLI.py:227 +msgid "Main projects with only closed or no sub-projects:" +msgstr "Hauptprojekte mit nur abgeschlossenen oder keinen Unterprojekten:" -#: TimeTrackerCLI.py:24 -msgid "2. List Projects" -msgstr "2. Projekte auflisten" +#: TimeTrackerCLI.py:231 +msgid "No completed main projects found." +msgstr "Keine abgeschlossenen Hauptprojekte gefunden." -#: TimeTrackerCLI.py:24 -msgid "3. Rename Project" -msgstr "3. Projekt umbenennen" +#: TimeTrackerCLI.py:235 +msgid "Invalid choice. Please enter a number from 0 to 9." +msgstr "Ungültige Auswahl. Bitte geben Sie eine Zahl von 0 bis 9 ein." -#: TimeTrackerCLI.py:25 -msgid "4. Delete Project" -msgstr "4. Projekt löschen" +#: TimeTrackerCLI.py:240 +msgid "" +"\n" +"--- Task Management ---" +msgstr "" +"\n" +"--- Aufgabenverwaltung ---" -#: TimeTrackerCLI.py:26 -msgid "5. List Inactive Projects" -msgstr "5. Inaktive Projekte auflisten" +#: TimeTrackerCLI.py:241 +msgid "1. Add Task" +msgstr "1. Aufgabe hinzufügen" -#: TimeTrackerCLI.py:27 -msgid "6. Demote Project to Task" -msgstr "6. Projekt zu Aufgabe herabstufen" +#: TimeTrackerCLI.py:242 +msgid "2. List Tasks" +msgstr "2. Aufgaben auflisten" -#: TimeTrackerCLI.py:29 -msgid "7. Add Task" -msgstr "7. Aufgabe hinzufügen" +#: TimeTrackerCLI.py:243 +msgid "3. Rename Task" +msgstr "3. Aufgabe umbenennen" -#: TimeTrackerCLI.py:30 -msgid "8. List Tasks" -msgstr "8. Aufgaben auflisten" +#: TimeTrackerCLI.py:244 +msgid "4. Close Task" +msgstr "4. Aufgabe schließen" -#: TimeTrackerCLI.py:31 -msgid "9. Rename Task" -msgstr "9. Aufgabe umbenennen" +#: TimeTrackerCLI.py:245 +msgid "5. Re-open Task" +msgstr "5. Aufgabe erneut öffnen" -msgid "10. Close Task" -msgstr "10. Aufgabe schließen" +#: TimeTrackerCLI.py:246 +msgid "6. Delete Task" +msgstr "6. Aufgabe löschen" -msgid "11. Re-open Task" -msgstr "11. Aufgabe wieder öffnen" +#: TimeTrackerCLI.py:247 +msgid "7. Move Task" +msgstr "7. Aufgabe verschieben" -msgid "12. Delete Task" -msgstr "12. Aufgabe löschen" +#: TimeTrackerCLI.py:248 +msgid "8. List Inactive Tasks" +msgstr "8. Inaktive Aufgaben auflisten" -msgid "13. Move Task" -msgstr "13. Aufgabe verschieben" +#: TimeTrackerCLI.py:249 +msgid "9. List All Closed Tasks" +msgstr "9. Alle geschlossenen Aufgaben auflisten" -msgid "14. List Inactive Tasks" -msgstr "14. Inaktive Aufgaben auflisten" +#: TimeTrackerCLI.py:250 +msgid "10. Delete All Closed Tasks" +msgstr "10. Alle geschlossenen Aufgaben löschen" -msgid "15. List All Closed Tasks" -msgstr "15. Alle geschlossenen Aufgaben auflisten" +#: TimeTrackerCLI.py:251 +msgid "11. Promote Task to Main-Project" +msgstr "11. Aufgabe zum Hauptprojekt hochstufen" -msgid "16. Delete All Closed Tasks" -msgstr "16. Alle geschlossenen Aufgaben löschen" +#: TimeTrackerCLI.py:252 +msgid "12. Edit Task (Name & Due Date)" +msgstr "12. Aufgabe bearbeiten (Name und Fälligkeitsdatum)" -msgid "17. Promote Task to Project" -msgstr "17. Aufgabe zu Projekt befördern" +#: TimeTrackerCLI.py:261 +msgid "" +"\n" +"--- Add New Task ---" +msgstr "" +"\n" +"--- Neue Aufgabe hinzufügen ---" -#: TimeTrackerCLI.py:37 TimeTrackerCLI.py:403 TimeTrackerCLI.py:461 TimeTrackerCLI.py:539 -msgid "0. Back to Main Menu" -msgstr "0. Zurück zum Hauptmenü" +#: TimeTrackerCLI.py:264 TimeTrackerCLI.py:960 +msgid "No open main projects found. Please add one first." +msgstr "" +"Keine offenen Hauptprojekte gefunden. Bitte fügen Sie zuerst eines hinzu." -#: TimeTrackerCLI.py:40 TimeTrackerCLI.py:406 TimeTrackerCLI.py:464 TimeTrackerCLI.py:595 -msgid "Choice: " -msgstr "Auswahl: " +#: TimeTrackerCLI.py:267 +msgid "Select a main project to add a task to:" +msgstr "" +"Wählen Sie ein Hauptprojekt aus, dem Sie eine Aufgabe hinzufügen möchten:" -#: TimeTrackerCLI.py:44 -msgid "\n--- Add New Project ---" -msgstr "\n--- Neues Projekt hinzufügen ---" +#: TimeTrackerCLI.py:275 +msgid "Name of the new task: " +msgstr "Name der neuen Aufgabe: " -#: TimeTrackerCLI.py:45 -msgid "Name of the project: " -msgstr "Name des Projekts: " +#: TimeTrackerCLI.py:276 +msgid "Due date (YYYY-MM-DD, press Enter to skip): " +msgstr "" +"Fälligkeitsdatum (JJJJ-MM-TT, zum Überspringen die Eingabetaste drücken):" -#: TimeTrackerCLI.py:47 -msgid "Project '{name}' added." -msgstr "Projekt '{name}' hinzugefügt." +#: TimeTrackerCLI.py:278 +msgid "Add to 'Today' list? (y/n, default n): " +msgstr "Zur „Heute“-Liste hinzufügen? (j/n, Standard n):" -#: TimeTrackerCLI.py:50 -msgid "\n--- List Projects ---" -msgstr "\n--- Projekte auflisten ---" +#: TimeTrackerCLI.py:280 +msgid "Note (Markdown supported): " +msgstr "Hinweis (Markdown unterstützt):" -#: TimeTrackerCLI.py:55 TimeTrackerCLI.py:166 TimeTrackerCLI.py:288 TimeTrackerCLI.py:411 TimeTrackerCLI.py:434 TimeTrackerCLI.py:479 -msgid "No projects found." -msgstr "Keine Projekte gefunden." +#: TimeTrackerCLI.py:283 +#, python-brace-format +msgid "Task '{task_name}' added." +msgstr "Aufgabe „{task_name}“ hinzugefügt." -#: TimeTrackerCLI.py:58 -msgid "\n--- Rename Project ---" -msgstr "\n--- Projekt umbenennen ---" +#: TimeTrackerCLI.py:290 +msgid "" +"\n" +"--- List Tasks ---" +msgstr "" +"\n" +"--- Aufgaben auflisten ---" -#: TimeTrackerCLI.py:61 -msgid "No projects to rename." -msgstr "Keine Projekte zum Umbenennen vorhanden." +#: TimeTrackerCLI.py:293 +msgid "No main projects found. Cannot list tasks." +msgstr "" +"Keine Hauptprojekte gefunden. Aufgaben können nicht aufgelistet werden." -#: TimeTrackerCLI.py:64 -msgid "Select a project to rename:" -msgstr "Wähle ein Projekt zum Umbenennen aus:" +#: TimeTrackerCLI.py:296 +msgid "Select the main project whose tasks you want to list:" +msgstr "" +"Wählen Sie das Hauptprojekt aus, dessen Aufgaben Sie auflisten möchten:" -#: TimeTrackerCLI.py:68 -msgid "Enter the number of the project: " -msgstr "Gib die Nummer des Projekts ein: " +#: TimeTrackerCLI.py:305 sl/SL_Menu.py:1307 +#, python-brace-format +msgid "Tasks for '{name}':" +msgstr "Aufgaben für '{name}':" -#: TimeTrackerCLI.py:71 -msgid "Enter the new name for '{name}': " -msgstr "Gib den neuen Namen für '{name}' ein: " +#: TimeTrackerCLI.py:308 sl/SL_Menu.py:524 sl/SL_Menu.py:612 +msgid "Due" +msgstr "Fällig" -#: TimeTrackerCLI.py:74 -msgid "Project '{old_name}' successfully renamed to '{new_name}'." -msgstr "Projekt '{old_name}' erfolgreich in '{new_name}' umbenannt." +#: TimeTrackerCLI.py:309 sl/SL_Menu.py:409 sl/SL_Menu.py:419 sl/SL_Menu.py:484 +#: sl/SL_Menu.py:546 sl/SL_Menu.py:747 sl/SL_Menu.py:1603 sl/SL_Menu.py:1771 +msgid "Today" +msgstr "Heute" -#: TimeTrackerCLI.py:76 -msgid "Error: Could not rename. The new name '{new_name}' might already exist." -msgstr "Fehler: Umbenennung fehlgeschlagen. Der neue Name '{new_name}' existiert möglicherweise bereits." +#: TimeTrackerCLI.py:317 TimeTrackerCLI.py:861 sl/SL_Menu.py:1315 +#: sl/SL_Menu.py:2276 +#, python-brace-format +msgid "No tasks found for '{name}'." +msgstr "Keine Aufgaben für '{name}' gefunden." -#: TimeTrackerCLI.py:78 TimeTrackerCLI.py:98 TimeTrackerCLI.py:120 TimeTrackerCLI.py:139 TimeTrackerCLI.py:160 TimeTrackerCLI.py:194 TimeTrackerCLI.py:222 TimeTrackerCLI.py:247 TimeTrackerCLI.py:284 TimeTrackerCLI.py:311 TimeTrackerCLI.py:342 TimeTrackerCLI.py:387 TimeTrackerCLI.py:431 TimeTrackerCLI.py:456 TimeTrackerCLI.py:532 -msgid "Invalid input. Please enter a valid number." -msgstr "Ungültige Eingabe. Bitte eine gültige Zahl eingeben." +#: TimeTrackerCLI.py:322 +msgid "" +"\n" +"--- Rename Task ---" +msgstr "" +"\n" +"--- Aufgabe umbenennen ---" -#: TimeTrackerCLI.py:81 -msgid "\n--- Delete Project ---" -msgstr "\n--- Projekt löschen ---" +#: TimeTrackerCLI.py:325 TimeTrackerCLI.py:362 TimeTrackerCLI.py:397 +#: TimeTrackerCLI.py:432 TimeTrackerCLI.py:560 +msgid "No open main projects found." +msgstr "Keine offenen Hauptprojekte gefunden." -#: TimeTrackerCLI.py:84 -msgid "No projects to delete." -msgstr "Keine Projekte zum Löschen vorhanden." +#: TimeTrackerCLI.py:328 TimeTrackerCLI.py:365 TimeTrackerCLI.py:400 +#: TimeTrackerCLI.py:435 TimeTrackerCLI.py:599 TimeTrackerCLI.py:852 +msgid "Select the main project:" +msgstr "Wählen Sie das Hauptprojekt aus:" -#: TimeTrackerCLI.py:87 -msgid "Select a project to delete:" -msgstr "Wähle ein Projekt zum Löschen aus:" +#: TimeTrackerCLI.py:338 +#, python-brace-format +msgid "No tasks to rename for '{name}'." +msgstr "Keine Aufgaben zum Umbenennen für '{name}' vorhanden." -#: TimeTrackerCLI.py:93 -msgid "Project '{name}' deleted." -msgstr "Projekt '{name}' gelöscht." +#: TimeTrackerCLI.py:341 +#, python-brace-format +msgid "Select a task from '{name}' to rename:" +msgstr "Wähle eine Aufgabe von '{name}' zum Umbenennen aus:" -#: TimeTrackerCLI.py:95 -msgid "Error: Project '{name}' not found." -msgstr "Fehler: Projekt '{name}' nicht gefunden." +#: TimeTrackerCLI.py:345 TimeTrackerCLI.py:382 TimeTrackerCLI.py:417 +#: TimeTrackerCLI.py:453 TimeTrackerCLI.py:489 TimeTrackerCLI.py:580 +#: TimeTrackerCLI.py:867 TimeTrackerCLI.py:982 +msgid "Enter the number of the task: " +msgstr "Gib die Nummer der Aufgabe ein: " -#: TimeTrackerCLI.py:101 -msgid "\n--- List Inactive Projects ---" -msgstr "\n--- Inaktive Projekte auflisten ---" +#: TimeTrackerCLI.py:352 sl/SL_Menu.py:1358 +#, python-brace-format +msgid "Task '{old_name}' renamed to '{new_name}'." +msgstr "Aufgabe '{old_name}' in '{new_name}' umbenannt." -#: TimeTrackerCLI.py:103 -msgid "Enter the number of weeks without activity (e.g., 8): " -msgstr "Anzahl der Wochen ohne Aktivität eingeben (z.B. 8): " +#: TimeTrackerCLI.py:354 +msgid "" +"Error: Could not rename. The new name might already exist or the project was" +" not found." +msgstr "" +"Fehler: Umbenennung fehlgeschlagen. Der neue Name existiert möglicherweise " +"bereits oder das Projekt wurde nicht gefunden." -#: TimeTrackerCLI.py:105 -msgid "Please enter a positive number." -msgstr "Bitte eine positive Zahl eingeben." +#: TimeTrackerCLI.py:359 +msgid "" +"\n" +"--- Close Task ---" +msgstr "" +"\n" +"--- Aufgabe schließen ---" -#: TimeTrackerCLI.py:110 -msgid "\nInactive Projects (>{weeks} weeks):" -msgstr "\nInaktive Projekte (>{weeks} Wochen):" +#: TimeTrackerCLI.py:375 +#, python-brace-format +msgid "No open tasks to close for '{name}'." +msgstr "Keine offenen Aufgaben zum Schließen für „{name}“." -#: TimeTrackerCLI.py:112 -msgid " - Project: {name}" -msgstr " - Projekt: {name}" +#: TimeTrackerCLI.py:378 +#, python-brace-format +msgid "Select a task from '{name}' to close:" +msgstr "Wählen Sie eine Aufgabe aus „{name}“ zum Schließen aus:" -#: TimeTrackerCLI.py:113 -msgid " Last Activity: {date}" -msgstr " Letzte Aktivität: {date}" +#: TimeTrackerCLI.py:387 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been closed." +msgstr "Die Aufgabe „{task_name}“ in „{main_name}“ wurde geschlossen." -#: TimeTrackerCLI.py:116 -msgid "No projects found inactive for more than {weeks} week." -msgid_plural "No projects found inactive for more than {weeks} weeks." -msgstr[0] "Kein Projekt seit mehr als {weeks} Woche inaktiv." -msgstr[1] "Keine Projekte seit mehr als {weeks} Wochen inaktiv." +#: TimeTrackerCLI.py:389 TimeTrackerCLI.py:424 TimeTrackerCLI.py:460 +#: sl/SL_Menu.py:945 sl/SL_Menu.py:990 sl/SL_Menu.py:1036 +msgid "Error: Main project or task not found." +msgstr "Fehler: Hauptprojekt oder Hauptaufgabe nicht gefunden." -#: TimeTrackerCLI.py:119 -msgid "Invalid input. Please enter a valid number for weeks." -msgstr "Ungültige Eingabe. Bitte eine gültige Zahl für Wochen eingeben." +#: TimeTrackerCLI.py:394 +msgid "" +"\n" +"--- Re-open Task ---" +msgstr "" +"\n" +"--- Aufgabe erneut öffnen ---" -#: TimeTrackerCLI.py:122 -msgid "\n--- Add New Task ---" -msgstr "\n--- Neue Aufgabe hinzufügen ---" +#: TimeTrackerCLI.py:410 +#, python-brace-format +msgid "No closed tasks to reopen for '{name}'." +msgstr "Keine geschlossenen Aufgaben zum erneuten Öffnen für „{name}“." -#: TimeTrackerCLI.py:125 -msgid "No projects found. Please add one first." -msgstr "Keine Projekte gefunden. Bitte zuerst eines anlegen." +#: TimeTrackerCLI.py:413 +#, python-brace-format +msgid "Select a task from '{name}' to reopen:" +msgstr "Wählen Sie eine Aufgabe aus „{name}“ zum erneuten Öffnen aus:" -#: TimeTrackerCLI.py:128 -msgid "Select a project to add a task to:" -msgstr "Wähle ein Projekt, um eine Aufgabe hinzuzufügen:" +#: TimeTrackerCLI.py:422 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been reopened." +msgstr "Die Aufgabe „{task_name}“ in „{main_name}“ wurde erneut geöffnet." -#: TimeTrackerCLI.py:135 -msgid "Name of the new task: " -msgstr "Name der neuen Aufgabe: " +#: TimeTrackerCLI.py:429 +msgid "" +"\n" +"--- Delete Task ---" +msgstr "" +"\n" +"--- Aufgabe löschen ---" -#: TimeTrackerCLI.py:137 -msgid "Task '{sub_name}' added to '{main_name}'." -msgstr "Aufgabe '{sub_name}' zu '{main_name}' hinzugefügt." +#: TimeTrackerCLI.py:446 +#, python-brace-format +msgid "No tasks to delete for '{name}'." +msgstr "Keine Aufgaben zum Löschen für '{name}' vorhanden." -#: TimeTrackerCLI.py:142 -msgid "\n--- List Tasks ---" -msgstr "\n--- Aufgaben auflisten ---" +#: TimeTrackerCLI.py:449 +#, python-brace-format +msgid "Select a task from '{name}' to delete:" +msgstr "Wähle eine Aufgabe von '{name}' zum Löschen aus:" -#: TimeTrackerCLI.py:145 -msgid "No projects found. Cannot list tasks." -msgstr "Keine Projekte gefunden. Aufgaben können nicht aufgelistet werden." +#: TimeTrackerCLI.py:458 +#, python-brace-format +msgid "Task '{task_name}' deleted from '{main_name}'." +msgstr "Aufgabe '{task_name}' gelöscht aus '{main_name}'." -#: TimeTrackerCLI.py:148 -msgid "Select the project whose tasks you want to list:" -msgstr "Wähle das Projekt, dessen Aufgaben du auflisten möchtest:" +#: TimeTrackerCLI.py:466 +msgid "" +"\n" +"--- Move Task ---" +msgstr "" +"\n" +"--- Aufgabe verschieben ---" -#: TimeTrackerCLI.py:156 -msgid "Tasks for '{name}':" -msgstr "Aufgaben für '{name}':" +#: TimeTrackerCLI.py:469 +msgid "You need at least two open main projects to move a task." +msgstr "" +"Zum Verschieben einer Aufgabe benötigen Sie mindestens zwei offene " +"Hauptprojekte." -#: TimeTrackerCLI.py:159 TimeTrackerCLI.py:262 TimeTrackerCLI.py:489 -msgid "No tasks found for '{name}'." -msgstr "Keine Aufgaben für '{name}' gefunden." +#: TimeTrackerCLI.py:474 +msgid "Select the source main project:" +msgstr "Wählen Sie das Quellhauptprojekt aus:" -#: TimeTrackerCLI.py:163 -msgid "\n--- Rename Task ---" -msgstr "\n--- Aufgabe umbenennen ---" +#: TimeTrackerCLI.py:477 +msgid "Enter the number of the source main project: " +msgstr "Geben Sie die Nummer des Quellhauptprojekts ein:" -#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:201 TimeTrackerCLI.py:414 TimeTrackerCLI.py:437 TimeTrackerCLI.py:482 -msgid "Select the project:" -msgstr "Wähle das Projekt:" +#: TimeTrackerCLI.py:483 +#, python-brace-format +msgid "No tasks to move from '{name}'." +msgstr "Keine Aufgaben zum Verschieben von „{name}“." -#: TimeTrackerCLI.py:177 -msgid "No tasks to rename for '{name}'." -msgstr "Keine Aufgaben zum Umbenennen für '{name}' vorhanden." +#: TimeTrackerCLI.py:486 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to move:" +msgstr "" +"\n" +"Wähle eine Aufgabe von '{name}' zum Verschieben aus:" -#: TimeTrackerCLI.py:180 -msgid "Select a task from '{name}' to rename:" -msgstr "Wähle eine Aufgabe von '{name}' zum Umbenennen aus:" +#: TimeTrackerCLI.py:494 +msgid "" +"\n" +"Select the destination main project:" +msgstr "" +"\n" +"Wählen Sie das Ziel-Hauptprojekt aus:" -#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:214 TimeTrackerCLI.py:267 TimeTrackerCLI.py:307 TimeTrackerCLI.py:499 -msgid "Enter the number of the task: " -msgstr "Gib die Nummer der Aufgabe ein: " +#: TimeTrackerCLI.py:499 +msgid "Enter the number of the destination main project: " +msgstr "Geben Sie die Nummer des Zielhauptprojekts ein:" -#: TimeTrackerCLI.py:190 -msgid "Task '{old_name}' renamed to '{new_name}'." -msgstr "Aufgabe '{old_name}' in '{new_name}' umbenannt." +#: TimeTrackerCLI.py:505 +#, python-brace-format +msgid "" +"Successfully moved '{task_name}' from '{source_main_project}' to " +"'{dest_main_project}'." +msgstr "" +"„{task_name}“ wurde erfolgreich von „{source_main_project}“ nach " +"„{dest_main_project}“ verschoben." + +#: TimeTrackerCLI.py:507 +#, python-brace-format +msgid "Error: {message}" +msgstr "Fehler: {message}" -#: TimeTrackerCLI.py:192 +#: TimeTrackerCLI.py:514 msgid "" -"Error: Could not rename. The new name might already exist or the project " -"was not found." -msgstr "Fehler: Umbenennung fehlgeschlagen. Der neue Name existiert möglicherweise bereits oder das Projekt wurde nicht gefunden." +"\n" +"--- List Inactive Tasks ---" +msgstr "" +"\n" +"--- Inaktive Aufgaben auflisten ---" -#: TimeTrackerCLI.py:195 -msgid "\n--- Delete Task ---" -msgstr "\n--- Aufgabe löschen ---" +#: TimeTrackerCLI.py:516 +msgid "Enter the number of weeks without activity (e.g., 4): " +msgstr "Anzahl der Wochen ohne Aktivität eingeben (z.B. 4): " -#: TimeTrackerCLI.py:207 -msgid "No tasks to delete for '{name}'." -msgstr "Keine Aufgaben zum Löschen für '{name}' vorhanden." +#: TimeTrackerCLI.py:524 +#, python-brace-format +msgid "" +"\n" +"Inactive Tasks (>{weeks} weeks):" +msgstr "" +"\n" +"Inaktive Aufgaben (>{weeks} Wochen):" -#: TimeTrackerCLI.py:210 -msgid "Select a task from '{name}' to delete:" -msgstr "Wähle eine Aufgabe von '{name}' zum Löschen aus:" +#: TimeTrackerCLI.py:527 +#, python-brace-format +msgid " Task: {name}" +msgstr " Aufgabe: {name}" -#: TimeTrackerCLI.py:217 -msgid "Task '{sub_name}' deleted from '{main_name}'." -msgstr "Aufgabe '{sub_name}' von '{main_name}' gelöscht." +#: TimeTrackerCLI.py:531 sl/SL_Menu.py:1118 +#, python-brace-format +msgid "No tasks found inactive for more than {weeks} weeks." +msgstr "" +"Es wurden keine Aufgaben gefunden, die länger als{weeks}Wochen inaktiv " +"waren." -msgid "\n--- List All Closed Tasks ---" -msgstr "\n--- Alle geschlossenen Aufgaben auflisten ---" +#: TimeTrackerCLI.py:537 +msgid "" +"\n" +"--- List All Closed Tasks ---" +msgstr "" +"\n" +"--- Alle geschlossenen Aufgaben auflisten ---" +#: TimeTrackerCLI.py:543 sl/SL_Menu.py:1143 sl/SL_Menu.py:1166 msgid "No closed tasks found." msgstr "Keine geschlossenen Aufgaben gefunden." -msgid "\n--- Delete All Closed Tasks ---" -msgstr "\n--- Alle geschlossenen Aufgaben löschen ---" +#: TimeTrackerCLI.py:547 +msgid "" +"\n" +"--- Delete All Closed Tasks ---" +msgstr "" +"\n" +"--- Alle geschlossenen Aufgaben löschen ---" +#: TimeTrackerCLI.py:548 msgid "Are you sure you want to delete ALL closed tasks? (y/n): " -msgstr "Bist du sicher, dass du ALLE geschlossenen Aufgaben löschen möchtest? (j/n): " +msgstr "" +"Bist du sicher, dass du ALLE geschlossenen Aufgaben löschen möchtest? (j/n):" +" " +#: TimeTrackerCLI.py:551 +#, python-brace-format msgid "{count} closed tasks were deleted." msgstr "{count} geschlossene Aufgaben wurden gelöscht." +#: TimeTrackerCLI.py:553 msgid "Operation cancelled." msgstr "Vorgang abgebrochen." -#: TimeTrackerCLI.py:219 -msgid "Error: Project or task not found." -msgstr "Fehler: Projekt oder Aufgabe nicht gefunden." - -#: TimeTrackerCLI.py:226 -msgid "\n--- List Inactive Tasks ---" -msgstr "\n--- Inaktive Aufgaben auflisten ---" - -#: TimeTrackerCLI.py:228 -msgid "Enter the number of weeks without activity (e.g., 4): " -msgstr "Anzahl der Wochen ohne Aktivität eingeben (z.B. 4): " - -#: TimeTrackerCLI.py:235 -msgid "\nInactive Tasks (>{weeks} weeks):" -msgstr "\nInaktive Aufgaben (>{weeks} Wochen):" - -#: TimeTrackerCLI.py:238 -msgid " Task: {name}" -msgstr " Aufgabe: {name}" - -#: TimeTrackerCLI.py:241 -msgid "No tasks found inactive for more than {weeks} week." -msgid_plural "No tasks found inactive for more than {weeks} weeks." -msgstr[0] "Keine Aufgabe seit mehr als {weeks} Woche inaktiv." -msgstr[1] "Keine Aufgaben seit mehr als {weeks} Wochen inaktiv." - -#: TimeTrackerCLI.py:248 -msgid "\n--- Move Task ---" -msgstr "\n--- Aufgabe verschieben ---" - -#: TimeTrackerCLI.py:250 -msgid "You need at least two projects to move a task." -msgstr "Du benötigst mindestens zwei Projekte, um eine Aufgabe zu verschieben." - -#: TimeTrackerCLI.py:254 -msgid "Select the source project:" -msgstr "Wähle das Quell-Projekt aus:" - -#: TimeTrackerCLI.py:257 -msgid "Enter the number of the source project: " -msgstr "Gib die Nummer des Quell-Projekts ein: " - -#: TimeTrackerCLI.py:265 -msgid "\nSelect a task from '{name}' to move:" -msgstr "\nWähle eine Aufgabe von '{name}' zum Verschieben aus:" - -#: TimeTrackerCLI.py:269 -msgid "\nSelect the destination project:" -msgstr "\nWähle das Ziel-Projekt aus:" - -#: TimeTrackerCLI.py:274 -msgid "Enter the number of the destination project: " -msgstr "Gib die Nummer des Ziel-Projekts ein: " - -#: TimeTrackerCLI.py:279 +#: TimeTrackerCLI.py:557 msgid "" -"Successfully moved '{sub_name}' from '{source_name}' to '{dest_name}'." +"\n" +"--- Promote Task to Main-Project ---" msgstr "" -"'{sub_name}' erfolgreich von '{source_name}' nach '{dest_name}' " -"verschoben." - -#: TimeTrackerCLI.py:281 -msgid "Error: {message}" -msgstr "Fehler: {message}" - -#: TimeTrackerCLI.py:286 -msgid "\n--- Promote Task to Project ---" -msgstr "\n--- Aufgabe zu Projekt befördern ---" +"\n" +"--- Aufgabe zum Hauptprojekt hochstufen ---" -#: TimeTrackerCLI.py:293 -msgid "Select the project containing the task to promote:" -msgstr "Wähle das Projekt der zu befördernden Aufgabe:" +#: TimeTrackerCLI.py:565 +msgid "Select the main project containing the task to promote:" +msgstr "" +"Wählen Sie das Hauptprojekt aus, das die hochzustufende Aufgabe enthält:" -#: TimeTrackerCLI.py:301 +#: TimeTrackerCLI.py:574 +#, python-brace-format msgid "No tasks to promote in '{name}'." msgstr "Keine zu befördernden Aufgaben in '{name}'." -#: TimeTrackerCLI.py:304 -msgid "\nSelect a task from '{name}' to promote:" -msgstr "\nWähle eine Aufgabe von '{name}' zum Befördern aus:" - -#: TimeTrackerCLI.py:315 -msgid "\n--- Demote Project to Task ---" -msgstr "\n--- Projekt zu Aufgabe herabstufen ---" - -#: TimeTrackerCLI.py:318 -msgid "You need at least two projects for this operation." -msgstr "Du benötigst mindestens zwei Projekte für diesen Vorgang." - -#: TimeTrackerCLI.py:322 -msgid "Select the project to demote:" -msgstr "Wähle das herabzustufende Projekt aus:" - -#: TimeTrackerCLI.py:325 -msgid "Enter the number of the project to demote: " -msgstr "Gib die Nummer des herabzustufenden Projekts ein: " - -#: TimeTrackerCLI.py:328 -msgid "\nSelect the new parent project:" -msgstr "\nWähle das neue übergeordnete Projekt aus:" - -#: TimeTrackerCLI.py:333 -msgid "Enter the number of the new parent project: " -msgstr "Gib die Nummer des neuen übergeordneten Projekts ein: " - -msgid "Invalid choice. Please enter a number from 0 to 17." -msgstr "Ungültige Auswahl. Bitte eine Zahl von 0 bis 17 eingeben." - -#: TimeTrackerCLI.py:348 -msgid "\n--- Reporting ---" -msgstr "\n--- Berichterstattung ---" - -#: TimeTrackerCLI.py:349 -msgid "1. Daily Report (Today)" -msgstr "1. Tagesbericht (Heute)" - -#: TimeTrackerCLI.py:350 -msgid "2. Daily Report (Specific Day)" -msgstr "2. Tagesbericht (Bestimmter Tag)" - -#: TimeTrackerCLI.py:351 -msgid "3. Date Range Report" -msgstr "3. Zeitraum-Bericht" - -#: TimeTrackerCLI.py:352 -msgid "4. Detailed Task Report" -msgstr "4. Detaillierter Aufgaben-Bericht" - -#: TimeTrackerCLI.py:353 -msgid "5. Detailed Project Report" -msgstr "5. Detaillierter Projekt-Bericht" - -#: TimeTrackerCLI.py:359 -msgid "\n--- Generate Daily Report (Today) ---" -msgstr "\n--- Tagesbericht (Heute) erstellen ---" - -#: TimeTrackerCLI.py:363 -msgid "\n--- Generate Daily Report for a specific Day ---" -msgstr "\n--- Tagesbericht für einen bestimmten Tag erstellen ---" - -#: TimeTrackerCLI.py:364 -msgid "Enter the date (YYYY-MM-DD): " -msgstr "Datum eingeben (JJJJ-MM-TT): " - -#: TimeTrackerCLI.py:369 -msgid "Invalid date format. Please use YYYY-MM-DD." -msgstr "Ungültiges Datumsformat. Bitte JJJJ-MM-TT verwenden." +#: TimeTrackerCLI.py:577 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to promote:" +msgstr "" +"\n" +"Wähle eine Aufgabe von '{name}' zum Befördern aus:" -#: TimeTrackerCLI.py:371 -msgid "\n--- Generate Report for a Date Range ---" -msgstr "\n--- Zeitraum-Bericht erstellen ---" +#: TimeTrackerCLI.py:593 +msgid "" +"\n" +"--- Edit Task ---" +msgstr "" +"\n" +"--- Aufgabe bearbeiten ---" + +#: TimeTrackerCLI.py:596 sl/SL_Menu.py:913 sl/SL_Menu.py:958 +#: sl/SL_Menu.py:1003 sl/SL_Menu.py:1049 sl/SL_Menu.py:1198 sl/SL_Menu.py:1328 +#: sl/SL_Menu.py:1487 sl/SL_Menu.py:1677 +msgid "No open projects found." +msgstr "Keine offenen Projekte gefunden." + +#: TimeTrackerCLI.py:609 +#, python-brace-format +msgid "No open tasks in '{name}'." +msgstr "Keine offenen Aufgaben in „{name}“." + +#: TimeTrackerCLI.py:612 +msgid "Select a task to edit:" +msgstr "Wählen Sie eine Aufgabe zum Bearbeiten aus:" + +#: TimeTrackerCLI.py:616 +msgid "Enter the number: " +msgstr "Geben Sie die Nummer ein:" + +#: TimeTrackerCLI.py:623 +#, python-brace-format +msgid "New name (press Enter to keep '{name}'): " +msgstr "Neuer Name (drücken Sie die Eingabetaste, um „{name}“ beizubehalten):" + +#: TimeTrackerCLI.py:624 +#, python-brace-format +msgid "New due date (YYYY-MM-DD, current: '{due}', enter '-' to clear): " +msgstr "" +"Neues Fälligkeitsdatum (JJJJ-MM-TT, aktuell: „{due}“, zum Löschen „-“ " +"eingeben):" -#: TimeTrackerCLI.py:372 -msgid "Enter the start date (YYYY-MM-DD): " -msgstr "Startdatum eingeben (JJJJ-MM-TT): " +#: TimeTrackerCLI.py:627 +#, python-brace-format +msgid "Is this for today? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"Ist das für heute? (aktuell:{current}, j/n, drücken Sie die Eingabetaste, um" +" beizubehalten):" -#: TimeTrackerCLI.py:373 -msgid "Enter the end date (YYYY-MM-DD): " -msgstr "Enddatum eingeben (JJJJ-MM-TT): " +#: TimeTrackerCLI.py:630 +#, python-brace-format +msgid "Current Note: {note}" +msgstr "Aktuelle Notiz:{note}" -#: TimeTrackerCLI.py:377 -msgid "Error: The start date cannot be after the end date." -msgstr "Fehler: Das Startdatum darf nicht nach dem Enddatum liegen." +#: TimeTrackerCLI.py:631 +msgid "New note (press Enter to keep current): " +msgstr "" +"Neue Notiz (drücken Sie die Eingabetaste, um auf dem neuesten Stand zu " +"bleiben):" -#: TimeTrackerCLI.py:382 -msgid "\n--- Detailed Task Report ---" -msgstr "\n--- Detaillierter Aufgaben-Bericht ---" +#: TimeTrackerCLI.py:635 +#, python-brace-format +msgid "Is this task done? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"Ist diese Aufgabe erledigt? (aktuell:{current}, j/n, drücken Sie die " +"Eingabetaste, um beizubehalten):" -#: TimeTrackerCLI.py:397 -msgid "\nSelect the task for the report:" -msgstr "\nWähle die Aufgabe für den Bericht aus:" +#: TimeTrackerCLI.py:639 sl/SL_Menu.py:1834 +msgid "Task updated successfully." +msgstr "Aufgabe erfolgreich aktualisiert." -#: TimeTrackerCLI.py:405 -msgid "\n--- Detailed Project Report ---" -msgstr "\n--- Detaillierter Projekt-Bericht ---" +#: TimeTrackerCLI.py:641 +msgid "Error updating task." +msgstr "Fehler beim Aktualisieren der Aufgabe." -#: TimeTrackerCLI.py:417 -msgid "Select the project for the report:" -msgstr "Wähle das Projekt für den Bericht aus:" +#: TimeTrackerCLI.py:643 +msgid "Invalid input." +msgstr "Ungültige Eingabe." -#: TimeTrackerCLI.py:424 -msgid "Invalid choice. Please enter a number from 0 to 5." -msgstr "Ungültige Auswahl. Bitte eine Zahl von 0 bis 5 eingeben." +#: TimeTrackerCLI.py:648 +msgid "Invalid choice. Please enter a number from 0 to 11." +msgstr "Ungültige Auswahl. Bitte geben Sie eine Zahl zwischen 0 und 11 ein." -#: TimeTrackerCLI.py:428 TimeTrackerCLI.py:469 -msgid "\n--- Settings ---" -msgstr "\n--- Einstellungen ---" +#: TimeTrackerCLI.py:653 +msgid "" +"\n" +"--- Settings ---" +msgstr "" +"\n" +"--- Einstellungen ---" -#: TimeTrackerCLI.py:429 TimeTrackerCLI.py:562 +#: TimeTrackerCLI.py:654 sl/SL_Menu.py:870 msgid "1. Change Language" msgstr "1. Sprache ändern" +#: TimeTrackerCLI.py:655 sl/SL_Menu.py:871 +msgid "2. Restore Previous Version" +msgstr "2. Vorherige Version wiederherstellen" + +#: TimeTrackerCLI.py:656 sl/SL_Menu.py:872 msgid "3. Change Data Storage Location" msgstr "3. Speicherort der Daten ändern" -#: TimeTrackerCLI.py:430 -msgid "2. Restore Previous Version" -msgstr "2. Vorherige Version wiederherstellen" +#: TimeTrackerCLI.py:657 sl/SL_Menu.py:874 +msgid "4. Change Streamlit Port" +msgstr "4. Streamlit-Port ändern" -msgid "Invalid choice. Please enter a number from 0 to 3." -msgstr "Ungültige Auswahl. Bitte eine Zahl von 0 bis 3 eingeben." +#: TimeTrackerCLI.py:659 TimeTrackerCLI.py:698 TimeTrackerCLI.py:808 +#: sl/SL_Menu.py:881 +msgid "0. Back to Main Menu" +msgstr "0. Zurück zum Hauptmenü" -#: TimeTrackerCLI.py:446 TimeTrackerCLI.py:545 -msgid "\n--- Language Settings ---" -msgstr "\n--- Spracheinstellungen ---" +#: TimeTrackerCLI.py:682 +msgid "Invalid choice. Please enter a number from 0 to 4." +msgstr "Ungültige Auswahl. Bitte geben Sie eine Zahl von 0 bis 4 ein." + +#: TimeTrackerCLI.py:687 +msgid "" +"\n" +"--- Language Settings ---" +msgstr "" +"\n" +"--- Spracheinstellungen ---" -#: TimeTrackerCLI.py:449 TimeTrackerCLI.py:548 +#: TimeTrackerCLI.py:692 msgid "No additional languages found." msgstr "Keine zusätzlichen Sprachen gefunden." -#: TimeTrackerCLI.py:458 TimeTrackerCLI.py:587 +#: TimeTrackerCLI.py:716 +#, python-brace-format msgid "Language changed to '{lang}'. Please restart the application." msgstr "Sprache auf '{lang}' geändert. Bitte die Anwendung neu starten." -#: TimeTrackerCLI.py:460 TimeTrackerCLI.py:590 +#: TimeTrackerCLI.py:719 msgid "Invalid choice." msgstr "Ungültige Auswahl." -#: TimeTrackerCLI.py:462 TimeTrackerCLI.py:592 +#: TimeTrackerCLI.py:721 msgid "Invalid input. Please enter a number." msgstr "Ungültige Eingabe. Bitte eine Zahl eingeben." -msgid "\n--- Data Storage Settings ---" -msgstr "\n--- Datenspeicher-Einstellungen ---" +#: TimeTrackerCLI.py:725 +msgid "" +"\n" +"--- Data Storage Settings ---" +msgstr "" +"\n" +"--- Datenspeicher-Einstellungen ---" +#: TimeTrackerCLI.py:726 +#, python-brace-format msgid "Current data file: {path}" msgstr "Aktuelle Datendatei: {path}" +#: TimeTrackerCLI.py:728 msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." -msgstr "Gib den neuen Pfad für die Datendatei ein (z.B. /pfad/zu/meine_daten.json)." +msgstr "" +"Gib den neuen Pfad für die Datendatei ein (z.B. /pfad/zu/meine_daten.json)." +#: TimeTrackerCLI.py:729 msgid "Leave empty to cancel." msgstr "Leer lassen zum Abbrechen." +#: TimeTrackerCLI.py:730 msgid "New Path: " msgstr "Neuer Pfad: " +#: TimeTrackerCLI.py:738 sl/SL_Menu.py:1974 +#, python-brace-format msgid "Error: The directory '{dir}' does not exist." msgstr "Fehler: Das Verzeichnis '{dir}' existiert nicht." +#: TimeTrackerCLI.py:752 msgid "Storage location updated." msgstr "Speicherort aktualisiert." +#: TimeTrackerCLI.py:756 msgid "Do you want to move the existing data to the new location? (y/n): " -msgstr "Möchtest du die vorhandenen Daten an den neuen Ort verschieben? (j/n): " +msgstr "" +"Möchtest du die vorhandenen Daten an den neuen Ort verschieben? (j/n): " +#: TimeTrackerCLI.py:760 sl/SL_Menu.py:1985 msgid "Data moved successfully." msgstr "Daten erfolgreich verschoben." +#: TimeTrackerCLI.py:762 sl/SL_Menu.py:1987 +#, python-brace-format msgid "Error moving data: {error}" msgstr "Fehler beim Verschieben der Daten: {error}" +#: TimeTrackerCLI.py:764 tt/TimeTracker.py:117 +msgid "Please restart the application for the changes to take effect." +msgstr "Bitte starte die Anwendung neu, damit die Änderungen wirksam werden." + +#: TimeTrackerCLI.py:767 +#, python-brace-format msgid "Error updating configuration: {error}" msgstr "Fehler beim Aktualisieren der Konfiguration: {error}" -#: TimeTrackerCLI.py:508 -msgid "\n--- Update Available ---" -msgstr "\n--- Update verfügbar ---" - -#: TimeTrackerCLI.py:509 -msgid "A downloaded update is ready to be installed." -msgstr "Ein heruntergeladenes Update ist zur Installation bereit." - -#: TimeTrackerCLI.py:510 -msgid "0. Skip update for now" -msgstr "0. Update vorerst überspringen" - -#: TimeTrackerCLI.py:511 -msgid "1. Install update now" -msgstr "1. Update jetzt installieren" +#: TimeTrackerCLI.py:771 +msgid "" +"\n" +"--- Streamlit Port Settings ---" +msgstr "" +"\n" +"--- Streamlit-Port-Einstellungen ---" -#: TimeTrackerCLI.py:512 -msgid "Enter your choice (0 or 1): " -msgstr "Auswahl eingeben (0 oder 1): " +#: TimeTrackerCLI.py:781 +#, python-brace-format +msgid "Current Streamlit Port: {port}" +msgstr "Aktueller Streamlit-Port: {port}" -#: TimeTrackerCLI.py:515 -msgid "Application is restarting to complete the update..." -msgstr "Anwendung wird neu gestartet, um das Update abzuschließen..." +#: TimeTrackerCLI.py:783 +msgid "Enter new port (or press Enter to keep current): " +msgstr "" +"Neuen Port eingeben (oder Enter drücken, um aktuellen beizubehalten): " -#: TimeTrackerCLI.py:518 -msgid "Update installation skipped. The application will start normally." -msgstr "Update-Installation übersprungen. Die Anwendung wird normal gestartet." +#: TimeTrackerCLI.py:792 +#, python-brace-format +msgid "" +"Port updated to {port}. Please restart Streamlit for changes to take effect." +msgstr "" +"Port auf {port} aktualisiert. Bitte Streamlit neu starten, damit die " +"Änderungen wirksam werden." -#: TimeTrackerCLI.py:520 +#: TimeTrackerCLI.py:800 msgid "" -"Invalid choice. Update installation skipped. The application will start " -"normally." +"\n" +"--- Reporting ---" msgstr "" -"Ungültige Auswahl. Update-Installation übersprungen. Die Anwendung wird " -"normal gestartet." +"\n" +"--- Berichterstattung ---" -#: TimeTrackerCLI.py:525 -msgid "\n=== Time Control {version} ===" -msgstr "\n=== Time Control {version} ===" +#: TimeTrackerCLI.py:801 +msgid "1. Daily Report (Today)" +msgstr "1. Tagesbericht (Heute)" -#: TimeTrackerCLI.py:526 -msgid "--- Main Menu ---" -msgstr "--- Hauptmenü ---" +#: TimeTrackerCLI.py:802 +msgid "2. Daily Report (Specific Day)" +msgstr "2. Tagesbericht (Bestimmter Tag)" -#: TimeTrackerCLI.py:527 -msgid "1. Start work on task" -msgstr "1. Arbeit an Aufgabe beginnen" +#: TimeTrackerCLI.py:803 +msgid "3. Date Range Report" +msgstr "3. Zeitraum-Bericht" -#: TimeTrackerCLI.py:528 -msgid "2. Show current work" -msgstr "2. Aktuelle Arbeit anzeigen" +#: TimeTrackerCLI.py:804 +msgid "4. Detailed Task Report" +msgstr "4. Detaillierter Aufgaben-Bericht" -#: TimeTrackerCLI.py:529 -msgid "3. Stop current work" -msgstr "3. Aktuelle Arbeit beenden" +#: TimeTrackerCLI.py:805 +msgid "5. Detailed Main-Project Report" +msgstr "5. Detaillierter Hauptprojektbericht" -#: TimeTrackerCLI.py:531 -msgid "4. Handle projects and tasks" -msgstr "4. Projekte und Aufgaben verwalten" +#: TimeTrackerCLI.py:806 +msgid "6. Detailed Daily Report" +msgstr "6. Detaillierter Tagesbericht" -#: TimeTrackerCLI.py:532 -msgid "5. Reporting" -msgstr "5. Berichterstattung" +#: TimeTrackerCLI.py:815 +msgid "" +"\n" +"--- Generate Daily Report (Today) ---" +msgstr "" +"\n" +"--- Tagesbericht (Heute) erstellen ---" -#: TimeTrackerCLI.py:533 -msgid "6. Settings" -msgstr "6. Einstellungen" +#: TimeTrackerCLI.py:820 +msgid "" +"\n" +"--- Generate Daily Report for a specific Day ---" +msgstr "" +"\n" +"--- Tagesbericht für einen bestimmten Tag erstellen ---" -#: TimeTrackerCLI.py:535 -msgid "0. Exit" -msgstr "0. Beenden" +#: TimeTrackerCLI.py:821 +msgid "Enter the date (YYYY-MM-DD): " +msgstr "Datum eingeben (JJJJ-MM-TT): " -#: TimeTrackerCLI.py:541 -msgid "\n--- Start Work on a Task ---" -msgstr "\n--- Arbeit an einer Aufgabe beginnen ---" +#: TimeTrackerCLI.py:827 TimeTrackerCLI.py:842 TimeTrackerCLI.py:903 +msgid "Invalid date format. Please use YYYY-MM-DD." +msgstr "Ungültiges Datumsformat. Bitte JJJJ-MM-TT verwenden." -#: TimeTrackerCLI.py:498 -msgid "Select a task from '{name}':" -msgstr "Wähle eine Aufgabe von '{name}' aus:" +#: TimeTrackerCLI.py:830 +msgid "" +"\n" +"--- Generate Report for a Date Range ---" +msgstr "" +"\n" +"--- Zeitraum-Bericht erstellen ---" -#: TimeTrackerCLI.py:507 -msgid "Work started on '{sub_name}' in project '{main_name}'." -msgstr "Arbeit an '{sub_name}' im Projekt '{main_name}' begonnen." +#: TimeTrackerCLI.py:831 +msgid "Enter the start date (YYYY-MM-DD): " +msgstr "Startdatum eingeben (JJJJ-MM-TT): " +#: TimeTrackerCLI.py:832 +msgid "Enter the end date (YYYY-MM-DD): " +msgstr "Enddatum eingeben (JJJJ-MM-TT): " + +#: TimeTrackerCLI.py:837 sl/SL_Menu.py:2227 +msgid "Error: The start date cannot be after the end date." +msgstr "Fehler: Das Startdatum darf nicht nach dem Enddatum liegen." + +#: TimeTrackerCLI.py:844 +msgid "" +"\n" +"--- Detailed Task Report ---" +msgstr "" +"\n" +"--- Detaillierter Aufgaben-Bericht ---" + +#: TimeTrackerCLI.py:847 TimeTrackerCLI.py:880 sl/SL_Menu.py:1249 +#: sl/SL_Menu.py:1296 sl/SL_Menu.py:1435 sl/SL_Menu.py:2245 sl/SL_Menu.py:2304 +msgid "No projects found." +msgstr "Keine Projekte gefunden." + +#: TimeTrackerCLI.py:864 +msgid "" +"\n" +"Select the task for the report:" +msgstr "" +"\n" +"Wähle die Aufgabe für den Bericht aus:" + +#: TimeTrackerCLI.py:877 +msgid "" +"\n" +"--- Detailed Main-Project Report ---" +msgstr "" +"\n" +"--- Detaillierter Hauptprojektbericht ---" + +#: TimeTrackerCLI.py:885 +msgid "Select the main project for the report:" +msgstr "Wählen Sie das Hauptprojekt für den Bericht aus:" + +#: TimeTrackerCLI.py:896 +msgid "" +"\n" +"--- Detailed Daily Report ---" +msgstr "" +"\n" +"--- Detaillierter Tagesbericht ---" + +#: TimeTrackerCLI.py:897 +msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " +msgstr "Datum eingeben (JJJJ-MM-TT) oder Enter für heute drücken: " + +#: TimeTrackerCLI.py:911 TimeTrackerCLI.py:1042 +msgid "Invalid choice. Please enter a number from 0 to 6." +msgstr "Ungültige Auswahl. Bitte eine Zahl von 0 bis 6 eingeben." + +#: TimeTrackerCLI.py:919 +msgid "" +"\n" +"--- Update Available ---" +msgstr "" +"\n" +"--- Update verfügbar ---" + +#: TimeTrackerCLI.py:920 +msgid "A downloaded update is ready to be installed." +msgstr "Ein heruntergeladenes Update ist zur Installation bereit." + +#: TimeTrackerCLI.py:921 +msgid "0. Skip update for now" +msgstr "0. Update vorerst überspringen" + +#: TimeTrackerCLI.py:922 +msgid "1. Install update now" +msgstr "1. Update jetzt installieren" + +#: TimeTrackerCLI.py:923 +msgid "Enter your choice (0 or 1): " +msgstr "Auswahl eingeben (0 oder 1): " + +#: TimeTrackerCLI.py:927 +msgid "Application is restarting to complete the update..." +msgstr "Anwendung wird neu gestartet, um das Update abzuschließen..." + +#: TimeTrackerCLI.py:931 +msgid "Update installation skipped. The application will start normally." +msgstr "" +"Update-Installation übersprungen. Die Anwendung wird normal gestartet." + +#: TimeTrackerCLI.py:933 +msgid "" +"Invalid choice. Update installation skipped. The application will start " +"normally." +msgstr "" +"Ungültige Auswahl. Update-Installation übersprungen. Die Anwendung wird " +"normal gestartet." + +#: TimeTrackerCLI.py:940 +#, python-brace-format +msgid "" +"\n" +"=== Time Control {version} ===" +msgstr "" +"\n" +"=== Time Control {version} ===" + +#: TimeTrackerCLI.py:941 +msgid "--- Main Menu ---" +msgstr "--- Hauptmenü ---" + +#: TimeTrackerCLI.py:942 +msgid "1. Start work on task" +msgstr "1. Arbeit an Aufgabe beginnen" + +#: TimeTrackerCLI.py:943 +msgid "2. Show current work" +msgstr "2. Aktuelle Arbeit anzeigen" + +#: TimeTrackerCLI.py:944 +msgid "3. Stop current work" +msgstr "3. Aktuelle Arbeit beenden" + +#: TimeTrackerCLI.py:946 +msgid "4. Handle projects and tasks" +msgstr "4. Projekte und Aufgaben verwalten" + +#: TimeTrackerCLI.py:947 +msgid "5. Reporting" +msgstr "5. Berichterstattung" + +#: TimeTrackerCLI.py:948 +msgid "6. Settings" +msgstr "6. Einstellungen" + +#: TimeTrackerCLI.py:950 +msgid "0. Exit" +msgstr "0. Beenden" + +#: TimeTrackerCLI.py:957 +msgid "" +"\n" +"--- Start Work on a Task ---" +msgstr "" +"\n" +"--- Arbeit an einer Aufgabe beginnen ---" + +#: TimeTrackerCLI.py:963 +msgid "Select a main project:" +msgstr "Wählen Sie ein Hauptprojekt aus:" + +#: TimeTrackerCLI.py:974 +#, python-brace-format +msgid "No open tasks found for '{name}' to start work on." +msgstr "" +"Für „{name}“ wurden keine offenen Aufgaben gefunden, an denen mit der Arbeit" +" begonnen werden kann." + +#: TimeTrackerCLI.py:977 +#, python-brace-format +msgid "Select a task from '{name}':" +msgstr "Wähle eine Aufgabe von '{name}' aus:" + +#: TimeTrackerCLI.py:987 sl/SL_Menu.py:1884 +#, python-brace-format +msgid "Work started on '{task_name}' in project '{main_name}'." +msgstr "Arbeit an '{task_name}' im Projekt '{main_name}' begonnen." + +#: TimeTrackerCLI.py:989 sl/SL_Menu.py:1888 msgid "Error starting work." msgstr "Fehler beim Starten der Arbeit." -#: TimeTrackerCLI.py:514 -msgid "\n--- Current Active Work ---" -msgstr "\n--- Aktuell laufende Arbeit ---" +#: TimeTrackerCLI.py:996 +msgid "" +"\n" +"--- Current Active Work ---" +msgstr "" +"\n" +"--- Aktuell laufende Arbeit ---" -#: TimeTrackerCLI.py:523 +#: TimeTrackerCLI.py:1006 msgid "You are currently working on:" msgstr "Du arbeitest gerade an:" -#: TimeTrackerCLI.py:524 -msgid " Project: {name}" -msgstr " Projekt: {name}" +#: TimeTrackerCLI.py:1007 +#, python-brace-format +msgid " Main Project: {name}" +msgstr "Hauptprojekt:{name}" -#: TimeTrackerCLI.py:525 -msgid " Task: {name}" -msgstr " Aufgabe: {name}" +#: TimeTrackerCLI.py:1008 +#, python-brace-format +msgid " Task: {name}" +msgstr "Aufgabe:{name}" -#: TimeTrackerCLI.py:526 +#: TimeTrackerCLI.py:1009 +#, python-brace-format msgid " Started at: {date}" msgstr " Begonnen um: {date}" -#: TimeTrackerCLI.py:527 +#: TimeTrackerCLI.py:1010 +#, python-brace-format msgid " Duration: {duration}" msgstr " Dauer: {duration}" -#: TimeTrackerCLI.py:529 +#: TimeTrackerCLI.py:1012 sl/SL_Menu.py:373 sl/SL_Menu.py:1910 msgid "No active work session." msgstr "Keine aktive Arbeitssitzung." -#: TimeTrackerCLI.py:532 -msgid "\n--- Stop Work ---" -msgstr "\n--- Arbeit beenden ---" +#: TimeTrackerCLI.py:1016 +msgid "" +"\n" +"--- Stop Work ---" +msgstr "" +"\n" +"--- Arbeit beenden ---" -#: TimeTrackerCLI.py:534 +#: TimeTrackerCLI.py:1018 sl/SL_Menu.py:341 msgid "Work session stopped successfully." msgstr "Arbeitssitzung erfolgreich beendet." -#: TimeTrackerCLI.py:536 +#: TimeTrackerCLI.py:1020 sl/SL_Menu.py:343 msgid "No active work session to stop." msgstr "Keine aktive Arbeitssitzung zum Beenden." -#: TimeTrackerCLI.py:598 -msgid "\nChecking for updates..." -msgstr "\nPrüfe auf Updates..." +#: TimeTrackerCLI.py:1034 +msgid "" +"\n" +"Checking for updates..." +msgstr "" +"\n" +"Prüfe auf Updates..." -#: TimeTrackerCLI.py:602 +#: TimeTrackerCLI.py:1038 msgid "Exiting application. Goodbye!" msgstr "Anwendung wird beendet. Auf Wiedersehen!" -#: TimeTrackerCLI.py:605 -msgid "Invalid choice. Please enter a number from 0 to 6." -msgstr "Ungültige Auswahl. Bitte eine Zahl von 0 bis 6 eingeben." - -#: update.py:24 +#: update.py:35 msgid "" "Warning: Update check skipped. 'github_repo' not found in config.json or " "file is invalid." @@ -940,71 +1297,86 @@ msgstr "" "Warnung: Update-Prüfung übersprungen. 'github_repo' nicht in config.json " "gefunden oder Datei ist ungültig." -#: update.py:38 +#: update.py:49 +#, python-brace-format msgid "A new version ({version}) is available." msgstr "Eine neue Version ({version}) ist verfügbar." -#: update.py:43 +#: update.py:55 msgid "Error: Download URL for the new version not found." msgstr "Fehler: Download-URL für die neue Version nicht gefunden." -#: update.py:47 +#: update.py:59 +#, python-brace-format msgid "Error checking for updates: {error}" msgstr "Fehler bei der Suche nach Updates: {error}" -#: update.py:49 +#: update.py:61 +#, python-brace-format msgid "An unexpected error occurred while checking for updates: {error}" -msgstr "Ein unerwarteter Fehler ist bei der Update-Prüfung aufgetreten: {error}" +msgstr "" +"Ein unerwarteter Fehler ist bei der Update-Prüfung aufgetreten: {error}" -#: update.py:61 +#: update.py:73 msgid "Downloading update..." msgstr "Update wird heruntergeladen..." -#: update.py:67 +#: update.py:79 msgid "Download complete. The update will be installed on the next start." -msgstr "Download abgeschlossen. Das Update wird beim nächsten Start installiert." +msgstr "" +"Download abgeschlossen. Das Update wird beim nächsten Start installiert." -#: update.py:70 +#: update.py:82 +#, python-brace-format msgid "Error downloading the update: {error}" msgstr "Fehler beim Herunterladen des Updates: {error}" -#: update.py:112 +#: update.py:108 msgid "Creating backup of current version before update..." msgstr "Erstelle Backup der aktuellen Version vor dem Update..." -#: update.py:121 +#: update.py:118 +#, python-brace-format msgid "Backup created successfully as {filename}." msgstr "Backup erfolgreich als {filename} erstellt." -#: update.py:123 +#: update.py:120 +#, python-brace-format msgid "Warning: Could not create backup. Error: {error}" msgstr "Warnung: Backup konnte nicht erstellt werden. Fehler: {error}" -#: update.py:125 +#: update.py:122 msgid "Installing update..." msgstr "Update wird installiert..." -#: update.py:143 +#: update.py:142 +#, python-brace-format msgid "Skipping protected file: {filename}. It will not be overwritten." -msgstr "Geschützte Datei wird übersprungen: {filename}. Sie wird nicht überschrieben." +msgstr "" +"Geschützte Datei wird übersprungen: {filename}. Sie wird nicht " +"überschrieben." -#: update.py:152 +#: update.py:151 msgid "Update installed successfully." msgstr "Update erfolgreich installiert." -#: update.py:154 +#: update.py:153 +#, python-brace-format msgid "Error during update installation: {error}" msgstr "Fehler bei der Installation des Updates: {error}" -#: update.py:164 +#: update.py:168 +#, python-brace-format msgid "Error: No previous version backup '{filename}' found." msgstr "Fehler: Kein Backup der vorherigen Version '{filename}' gefunden." -#: update.py:167 +#: update.py:171 +#, python-brace-format msgid "Restoring previous version from '{filename}'..." msgstr "Stelle vorherige Version aus '{filename}' wieder her..." -#: update.py:182 +#: update.py:192 +#, python-brace-format msgid "" "Skipping user data file: {filename}. It will not be overwritten during " "restore." @@ -1012,252 +1384,1326 @@ msgstr "" "Überspringe Benutzerdatendatei: {filename}. Sie wird bei der " "Wiederherstellung nicht überschrieben." -#: update.py:188 +#: update.py:199 msgid "Previous version restored successfully." msgstr "Vorherige Version erfolgreich wiederhergestellt." -#: update.py:190 +#: update.py:201 msgid "Restarting application to apply changes..." msgstr "Anwendung wird neu gestartet, um die Änderungen zu übernehmen..." -#: update.py:192 +#: update.py:204 +#, python-brace-format msgid "Error during restoration: {error}" msgstr "Fehler bei der Wiederherstellung: {error}" -#: update.py:193 +#: update.py:205 +#, python-brace-format msgid "The backup file '{filename}' was not deleted." msgstr "Die Backup-Datei '{filename}' wurde nicht gelöscht." -msgid "# Detailed Daily Report: {date}" -msgstr "# Detaillierter Tagesbericht: {date}" +#: update.py:212 +msgid "Error: Could not import TimeTracker to get the current version." +msgstr "" +"Fehler: TimeTracker konnte nicht importiert werden, um die aktuelle Version " +"zu erhalten." + +#: update.py:215 +msgid "Checking for updates..." +msgstr "Suche nach Updates..." + +#: update.py:222 +msgid "No updates available." +msgstr "Keine Updates verfügbar." + +#: tt/TimeTracker.py:90 +#, python-brace-format +msgid "Warning: Could not read {file}. Error: {error}" +msgstr "Warnung: Konnte {file} nicht lesen. Fehler: {error}" + +#: tt/TimeTracker.py:105 +msgid "Some required packages are missing. Attempting to install them..." +msgstr "" +"Einige benötigte Pakete fehlen. Es wird versucht, sie zu installieren..." + +#: tt/TimeTracker.py:108 +#, python-brace-format +msgid "Installing {package}..." +msgstr "Installiere {package}..." + +#: tt/TimeTracker.py:112 +#, python-brace-format +msgid "Failed to install {package}. Continuing without it." +msgstr "Installation von{package}fehlgeschlagen. Weiter ohne." + +#: tt/TimeTracker.py:116 +msgid "" +"\n" +"Dependencies installed successfully." +msgstr "" +"\n" +"Abhängigkeiten erfolgreich installiert." + +#: tt/TimeTracker.py:120 +#, python-brace-format +msgid "" +"\n" +"Warning: Some dependencies could not be installed: {packages}" +msgstr "" +"\n" +"Warnung: Einige Abhängigkeiten konnten nicht installiert werden:{packages}" + +#: tt/TimeTracker.py:122 +#, python-brace-format +msgid "An unexpected error occurred during dependency check: {error}" +msgstr "" +"Ein unerwarteter Fehler bei der Abhängigkeitsprüfung ist aufgetreten: " +"{error}" + +#: tt/TimeTracker.py:229 +msgid "Info: Report content has been copied to the clipboard." +msgstr "Info: Der Berichtsinhalt wurde in die Zwischenablage kopiert." + +#: tt/TimeTracker.py:231 +#, python-brace-format +msgid "Warning: Could not copy to clipboard. Error: {error}" +msgstr "Warnung: Konnte nicht in die Zwischenablage kopieren. Fehler: {error}" + +#: tt/TimeTracker.py:233 +msgid "" +"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " +"install pyperclip`)." +msgstr "" +"Warnung: Konnte nicht in die Zwischenablage kopieren. Bitte 'pyperclip' " +"installieren (`pip install pyperclip`)." + +#: tt/TimeTracker.py:253 +#, python-brace-format +msgid "{hours} hours ({dlp} DLP)" +msgstr "{hours}Stunden ({dlp}DLP)" + +#: tt/TimeTracker.py:846 tt/TimeTracker.py:886 +#, python-brace-format +msgid "Source main project '{name}' not found." +msgstr "Quellhauptprojekt „{name}“ nicht gefunden." + +#: tt/TimeTracker.py:848 +#, python-brace-format +msgid "Destination main project '{name}' not found." +msgstr "Ziel-Hauptprojekt „{name}“ nicht gefunden." + +#: tt/TimeTracker.py:860 +#, python-brace-format +msgid "Task '{task_name}' moved successfully." +msgstr "Aufgabe „{task_name}“ wurde erfolgreich verschoben." + +#: tt/TimeTracker.py:861 tt/TimeTracker.py:896 tt/TimeTracker.py:1373 +#, python-brace-format +msgid "Task '{task_name}' not found in '{main_name}'." +msgstr "Aufgabe „{task_name}“ nicht in „{main_name}“ gefunden." + +#: tt/TimeTracker.py:880 +#, python-brace-format +msgid "A main project named '{name}' already exists." +msgstr "Ein Hauptprojekt mit dem Namen „{name}“ existiert bereits." + +#: tt/TimeTracker.py:905 +msgid "General" +msgstr "Allgemein" + +#: tt/TimeTracker.py:909 +#, python-brace-format +msgid "Task '{task_name}' was promoted to a new main project." +msgstr "Aufgabe „{task_name}“ wurde in ein neues Hauptprojekt hochgestuft." + +#: tt/TimeTracker.py:936 +#, python-brace-format +msgid "Main project to demote '{name}' not found." +msgstr "Hauptprojekt zur Herabstufung von „{name}“ nicht gefunden." + +#: tt/TimeTracker.py:938 +#, python-brace-format +msgid "New parent main project '{name}' not found." +msgstr "Neues übergeordnetes Hauptprojekt „{name}“ nicht gefunden." + +#: tt/TimeTracker.py:963 +#, python-brace-format +msgid "" +"Main project '{demoted_name}' was demoted to a sub-project under " +"'{parent_name}'." +msgstr "" +"Das Hauptprojekt „{demoted_name}“ wurde zu einem Unterprojekt unter " +"„{parent_name}“ herabgestuft." + +#: tt/TimeTracker.py:1042 +msgid "Email import is not enabled." +msgstr "E-Mail-Import ist nicht aktiviert." + +#: tt/TimeTracker.py:1051 +msgid "Email settings are incomplete." +msgstr "E-Mail-Einstellungen sind unvollständig." + +#: tt/TimeTracker.py:1064 +msgid "Error searching emails." +msgstr "Fehler beim Durchsuchen der E-Mails." +#: tt/TimeTracker.py:1079 +msgid "No Subject" +msgstr "Kein Betreff" + +#: tt/TimeTracker.py:1139 +msgid "Unknown Task" +msgstr "Unbekannte Aufgabe" + +#: tt/TimeTracker.py:1330 +#, python-brace-format +msgid "- {name}: {hours} hours" +msgstr "-{name}:{hours}Stunden" + +#: tt/TimeTracker.py:1338 +#, python-brace-format +msgid "## {name} ({hours} hours)\n" +msgstr "##{name}({hours}Stunden)\n" + +#: tt/TimeTracker.py:1347 +#, python-brace-format +msgid "# Daily Time Report: {date}\n" +msgstr "# Tagesbericht: {date}\n" + +#: tt/TimeTracker.py:1348 +#, python-brace-format +msgid "" +"\n" +"**Total Daily Time: {hours} hours**" +msgstr "" +"\n" +"**Tägliche Gesamtzeit:{hours}Stunden**" + +#: tt/TimeTracker.py:1352 tt/TimeTracker.py:1665 +#, python-brace-format +msgid "No time tracked for {date}." +msgstr "Keine Zeit für {date} erfasst." + +#: tt/TimeTracker.py:1369 tt/TimeTracker.py:1464 +#, python-brace-format +msgid "Main project '{name}' not found." +msgstr "Hauptprojekt „{name}“ nicht gefunden." + +#: tt/TimeTracker.py:1377 +#, python-brace-format +msgid "No time entries found for task '{task_name}'." +msgstr "Für Aufgabe „{task_name}“ wurden keine Zeiteinträge gefunden." + +#: tt/TimeTracker.py:1410 tt/TimeTracker.py:1640 msgid "now" msgstr "jetzt" -msgid "\nNo time tracked for {date}." -msgstr "\nKeine Zeit für {date} erfasst." +#: tt/TimeTracker.py:1411 sl/SL_Menu.py:1908 +msgid "Duration" +msgstr "Dauer" -msgid "# Detailed Report for Sub-Project: {name}" -msgstr "# Detaillierter Unterprojekt-Bericht: {name}" +#: tt/TimeTracker.py:1415 +#, python-brace-format +msgid "# Detailed Report for Task: {name}" +msgstr "# Detaillierter Bericht für Aufgabe:{name}" +#: tt/TimeTracker.py:1416 +#, python-brace-format msgid "Part of Main Project: {name}" msgstr "Teil des Hauptprojekts: {name}" +#: tt/TimeTracker.py:1419 msgid "Active (currently running)" msgstr "Aktiv (läuft gerade)" +#: tt/TimeTracker.py:1419 tt/TimeTracker.py:1516 msgid "Inactive" msgstr "Inaktiv" +#: tt/TimeTracker.py:1420 tt/TimeTracker.py:1517 msgid "Status" msgstr "Status" +#: tt/TimeTracker.py:1422 tt/TimeTracker.py:1519 msgid "First entry" msgstr "Erster Eintrag" +#: tt/TimeTracker.py:1424 tt/TimeTracker.py:1521 msgid "Last activity" msgstr "Letzte Aktivität" +#: tt/TimeTracker.py:1426 tt/TimeTracker.py:1523 msgid "Total recorded time" msgstr "Erfasste Gesamtzeit" +#: tt/TimeTracker.py:1427 tt/TimeTracker.py:1525 msgid "Total work sessions" msgstr "Gesamtzahl der Arbeitssitzungen" +#: tt/TimeTracker.py:1431 tt/TimeTracker.py:1529 msgid "Average session duration" msgstr "Durchschnittliche Sitzungsdauer" +#: tt/TimeTracker.py:1434 tt/TimeTracker.py:1532 msgid "Weekday Distribution" msgstr "Verteilung auf Wochentage" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Monday" msgstr "Montag" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Tuesday" msgstr "Dienstag" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Wednesday" msgstr "Mittwoch" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Thursday" msgstr "Donnerstag" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Friday" msgstr "Freitag" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Saturday" msgstr "Samstag" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Sunday" msgstr "Sonntag" +#: tt/TimeTracker.py:1444 msgid "Daily Breakdown" msgstr "Tagesaufschlüsselung" -msgid "Duration" -msgstr "Dauer" +#: tt/TimeTracker.py:1513 +#, python-brace-format +msgid "# Detailed Report for Main Project: {name}" +msgstr "# Detaillierter Bericht für Hauptprojekt:{name}" -msgid "# Detailed Report for Project: {name}" -msgstr "# Detaillierter Projekt-Bericht: {name}" +#: tt/TimeTracker.py:1516 +#, python-brace-format +msgid "Active (working on '{task_name}')" +msgstr "Aktiv (arbeitet an '{task_name}')" +#: tt/TimeTracker.py:1524 msgid "Number of tasks" msgstr "Anzahl der Aufgaben" -msgid "Active (working on '{sub_name}')" -msgstr "Aktiv (arbeitet an '{sub_name}')" - +#: tt/TimeTracker.py:1543 msgid "Task Breakdown" msgstr "Aufschlüsselung nach Aufgaben" +#: tt/TimeTracker.py:1552 +#, python-brace-format msgid "{num_sessions} sessions" msgstr "{num_sessions} Sitzungen" -msgid "\n--- Detailed Daily Report ---" -msgstr "\n--- Detaillierter Tagesbericht ---" +#: tt/TimeTracker.py:1605 +#, python-brace-format +msgid "# Time Report: {start_date} to {end_date}\n" +msgstr "# Zeitbericht: {start_date} bis {end_date}\n" -msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " -msgstr "Datum eingeben (JJJJ-MM-TT) oder Enter für heute drücken: " +#: tt/TimeTracker.py:1606 +#, python-brace-format +msgid "" +"\n" +"**Total Time in Period: {total_time}**" +msgstr "" +"\n" +"**Gesamtzeit im Zeitraum: {total_time}**" -msgid "Start work on task" -msgstr "Arbeit an Aufgabe beginnen" +#: tt/TimeTracker.py:1610 +#, python-brace-format +msgid "No time tracked between {start_date} and {end_date}." +msgstr "Keine Zeit zwischen {start_date} und {end_date} erfasst." -msgid "Show current work" -msgstr "Aktuelle Arbeit anzeigen" +#: tt/TimeTracker.py:1626 +#, python-brace-format +msgid "# Detailed Daily Report: {date}" +msgstr "# Detaillierter Tagesbericht: {date}" -msgid "Stop current work" -msgstr "Aktuelle Arbeit beenden" +#: sl/SL_Menu.py:277 +msgid "New" +msgstr "Neu" -msgid "Handle projects and tasks" -msgstr "Projekte und Aufgaben verwalten" +#: sl/SL_Menu.py:278 +msgid "New Project" +msgstr "Neues Projekt" -msgid "Project Management" -msgstr "Projektverwaltung" +#: sl/SL_Menu.py:281 +msgid "New Task" +msgstr "Neue Aufgabe" -msgid "Reporting" -msgstr "Berichterstattung" +#: sl/SL_Menu.py:286 +msgid "Project & Task Management" +msgstr "Projekt- und Aufgabenverwaltung" -msgid "Settings" -msgstr "Einstellungen" +#: sl/SL_Menu.py:287 sl/SL_Menu.py:780 +msgid "Main Project Management" +msgstr "Hauptprojektverwaltung" -msgid "Task Management" -msgstr "Aufgabenverwaltung" +#: sl/SL_Menu.py:288 sl/SL_Menu.py:796 sl/SL_Menu.py:894 +msgid "Add Project" +msgstr "Projekt hinzufügen" -msgid "Daily Report (Today)" -msgstr "Tagesbericht (Heute)" +#: sl/SL_Menu.py:291 sl/SL_Menu.py:799 sl/SL_Menu.py:1242 +msgid "List Projects" +msgstr "Projekte auflisten" -msgid "Daily Report (Specific Day)" -msgstr "Tagesbericht (Bestimmter Tag)" +#: sl/SL_Menu.py:292 sl/SL_Menu.py:800 sl/SL_Menu.py:1257 +msgid "Rename Project" +msgstr "Projekt umbenennen" -msgid "Date Range Report" -msgstr "Zeitraum-Bericht" +#: sl/SL_Menu.py:293 sl/SL_Menu.py:801 sl/SL_Menu.py:1371 sl/SL_Menu.py:1384 +msgid "Close Project" +msgstr "Projekt schließen" -msgid "Detailed Task Report" -msgstr "Detaillierter Aufgaben-Bericht" +#: sl/SL_Menu.py:294 sl/SL_Menu.py:802 sl/SL_Menu.py:1401 sl/SL_Menu.py:1414 +msgid "Re-open Project" +msgstr "Projekt wieder öffnen" +#: sl/SL_Menu.py:295 sl/SL_Menu.py:803 sl/SL_Menu.py:1431 sl/SL_Menu.py:1445 +msgid "Delete Project" +msgstr "Projekt löschen" + +#: sl/SL_Menu.py:296 sl/SL_Menu.py:804 sl/SL_Menu.py:1462 +msgid "List Inactive Projects" +msgstr "Inaktive Projekte auflisten" + +#: sl/SL_Menu.py:297 sl/SL_Menu.py:805 +msgid "Demote Project to Task" +msgstr "Projekt zu Aufgabe herabstufen" + +#: sl/SL_Menu.py:298 sl/SL_Menu.py:806 sl/SL_Menu.py:1524 +msgid "List Completed Projects" +msgstr "Abgeschlossene Projekte auflisten" + +#: sl/SL_Menu.py:300 sl/SL_Menu.py:782 sl/SL_Menu.py:817 +msgid "Task Management" +msgstr "Aufgabenverwaltung" + +#: sl/SL_Menu.py:301 sl/SL_Menu.py:819 sl/SL_Menu.py:1542 sl/SL_Menu.py:1573 +#: sl/SL_Menu.py:1646 +msgid "Add Task" +msgstr "Aufgabe hinzufügen" + +#: sl/SL_Menu.py:304 sl/SL_Menu.py:822 sl/SL_Menu.py:1292 +msgid "List Tasks" +msgstr "Aufgaben auflisten" + +#: sl/SL_Menu.py:305 sl/SL_Menu.py:823 sl/SL_Menu.py:1324 +msgid "Rename Task" +msgstr "Aufgabe umbenennen" + +#: sl/SL_Menu.py:306 sl/SL_Menu.py:824 sl/SL_Menu.py:909 sl/SL_Menu.py:935 +#: sl/SL_Menu.py:1114 +msgid "Close Task" +msgstr "Aufgabe schließen" + +#: sl/SL_Menu.py:307 sl/SL_Menu.py:825 sl/SL_Menu.py:954 sl/SL_Menu.py:980 +msgid "Re-open Task" +msgstr "Aufgabe erneut öffnen" + +#: sl/SL_Menu.py:308 sl/SL_Menu.py:826 sl/SL_Menu.py:999 sl/SL_Menu.py:1026 +msgid "Delete Task" +msgstr "Aufgabe löschen" + +#: sl/SL_Menu.py:309 sl/SL_Menu.py:827 sl/SL_Menu.py:1045 sl/SL_Menu.py:1081 +msgid "Move Task" +msgstr "Aufgabe verschieben" + +#: sl/SL_Menu.py:310 sl/SL_Menu.py:828 sl/SL_Menu.py:1100 +msgid "List Inactive Tasks" +msgstr "Inaktive Aufgaben auflisten" + +#: sl/SL_Menu.py:311 sl/SL_Menu.py:829 sl/SL_Menu.py:1127 +msgid "List All Closed Tasks" +msgstr "Alle geschlossenen Aufgaben auflisten" + +#: sl/SL_Menu.py:312 sl/SL_Menu.py:477 sl/SL_Menu.py:539 sl/SL_Menu.py:626 +#: sl/SL_Menu.py:830 sl/SL_Menu.py:1673 sl/SL_Menu.py:1693 sl/SL_Menu.py:1728 +msgid "Edit Task" +msgstr "Aufgabe bearbeiten" + +#: sl/SL_Menu.py:315 sl/SL_Menu.py:833 sl/SL_Menu.py:1152 +msgid "Delete All Closed Tasks" +msgstr "Alle geschlossenen Aufgaben löschen" + +#: sl/SL_Menu.py:316 sl/SL_Menu.py:834 sl/SL_Menu.py:1194 +msgid "Promote Task to Project" +msgstr "Aufgabe zum Projekt hochstufen" + +#: sl/SL_Menu.py:319 +msgid "Today View" +msgstr "Heute-Ansicht" + +#: sl/SL_Menu.py:323 sl/SL_Menu.py:405 +msgid "Task Planning" +msgstr "Aufgabenplanung" + +#: sl/SL_Menu.py:327 sl/SL_Menu.py:655 +msgid "E-Mail Task Assignment" +msgstr "Zuordnung von E-Mail-Tasks" + +#: sl/SL_Menu.py:331 sl/SL_Menu.py:473 sl/SL_Menu.py:535 sl/SL_Menu.py:622 +msgid "Start work on task" +msgstr "Arbeit an Aufgabe beginnen" + +#: sl/SL_Menu.py:335 +msgid "Show current work" +msgstr "Aktuelle Arbeit anzeigen" + +#: sl/SL_Menu.py:339 +msgid "Stop current work" +msgstr "Aktuelle Arbeit beenden" + +#: sl/SL_Menu.py:347 sl/SL_Menu.py:845 +msgid "Reporting" +msgstr "Berichterstattung" + +#: sl/SL_Menu.py:348 sl/SL_Menu.py:848 +msgid "Daily Report (Today)" +msgstr "Tagesbericht (Heute)" + +#: sl/SL_Menu.py:352 sl/SL_Menu.py:853 sl/SL_Menu.py:2195 +msgid "Daily Report (Specific Day)" +msgstr "Tagesbericht (Bestimmter Tag)" + +#: sl/SL_Menu.py:354 sl/SL_Menu.py:854 sl/SL_Menu.py:2214 +msgid "Date Range Report" +msgstr "Zeitraum-Bericht" + +#: sl/SL_Menu.py:356 sl/SL_Menu.py:855 sl/SL_Menu.py:2241 sl/SL_Menu.py:2272 +msgid "Detailed Task Report" +msgstr "Detaillierter Aufgaben-Bericht" + +#: sl/SL_Menu.py:358 sl/SL_Menu.py:856 sl/SL_Menu.py:2300 msgid "Detailed Project Report" msgstr "Detaillierter Projekt-Bericht" +#: sl/SL_Menu.py:360 sl/SL_Menu.py:857 sl/SL_Menu.py:2327 msgid "Detailed Daily Report" msgstr "Detaillierter Tagesbericht" -msgid "Exit" -msgstr "Beenden" +#: sl/SL_Menu.py:364 sl/SL_Menu.py:868 +msgid "Settings" +msgstr "Einstellungen" +#: sl/SL_Menu.py:371 sl/SL_Menu.py:1897 msgid "Current Active Work" msgstr "Aktuell laufende Arbeit" -msgid "Demote Project to Task" -msgstr "Projekt zu Aufgabe herabstufen" +#: sl/SL_Menu.py:376 sl/SL_Menu.py:497 sl/SL_Menu.py:559 sl/SL_Menu.py:633 +#: sl/SL_Menu.py:1773 +msgid "Done" +msgstr "Erledigt" -msgid "Change Language" -msgstr "Sprache ändern" +#: sl/SL_Menu.py:390 +msgid "Edit current task" +msgstr "Aktuellen Task bearbeiten" -msgid "Restore Previous Version" -msgstr "Vorherige Version wiederherstellen" +#: sl/SL_Menu.py:398 +msgid "Exit" +msgstr "Beenden" -msgid "Change Data Storage Location" -msgstr "Speicherort der Daten ändern" +#: sl/SL_Menu.py:410 sl/SL_Menu.py:420 +msgid "Tomorrow" +msgstr "Morgen" + +#: sl/SL_Menu.py:411 sl/SL_Menu.py:421 +msgid "Weekly overview" +msgstr "Wochenübersicht" + +#: sl/SL_Menu.py:412 sl/SL_Menu.py:422 +msgid "Overdue tasks" +msgstr "Überfällige Aufgaben" + +#: sl/SL_Menu.py:413 sl/SL_Menu.py:423 +msgid "Unplanned tasks" +msgstr "Ungeplante Aufgaben" + +#: sl/SL_Menu.py:414 +msgid "All" +msgstr "Alle" + +#: sl/SL_Menu.py:416 +msgid "Filter" +msgstr "Filter" + +#: sl/SL_Menu.py:430 +msgid "Tasks" +msgstr "Aufgaben" + +#: sl/SL_Menu.py:572 +msgid "No tasks found." +msgstr "Keine Aufgaben gefunden." + +#: sl/SL_Menu.py:574 sl/SL_Menu.py:648 sl/SL_Menu.py:770 sl/SL_Menu.py:810 +#: sl/SL_Menu.py:838 sl/SL_Menu.py:914 sl/SL_Menu.py:925 sl/SL_Menu.py:959 +#: sl/SL_Menu.py:970 sl/SL_Menu.py:1004 sl/SL_Menu.py:1015 sl/SL_Menu.py:1050 +#: sl/SL_Menu.py:1061 sl/SL_Menu.py:1069 sl/SL_Menu.py:1120 sl/SL_Menu.py:1145 +#: sl/SL_Menu.py:1167 sl/SL_Menu.py:1199 sl/SL_Menu.py:1210 sl/SL_Menu.py:1250 +#: sl/SL_Menu.py:1262 sl/SL_Menu.py:1297 sl/SL_Menu.py:1317 sl/SL_Menu.py:1329 +#: sl/SL_Menu.py:1340 sl/SL_Menu.py:1376 sl/SL_Menu.py:1406 sl/SL_Menu.py:1436 +#: sl/SL_Menu.py:1476 sl/SL_Menu.py:1488 sl/SL_Menu.py:1535 sl/SL_Menu.py:1547 +#: sl/SL_Menu.py:1678 sl/SL_Menu.py:1697 sl/SL_Menu.py:1710 sl/SL_Menu.py:1725 +#: sl/SL_Menu.py:1858 sl/SL_Menu.py:1868 sl/SL_Menu.py:1912 sl/SL_Menu.py:2097 +#: sl/SL_Menu.py:2102 sl/SL_Menu.py:2207 sl/SL_Menu.py:2234 sl/SL_Menu.py:2246 +#: sl/SL_Menu.py:2258 sl/SL_Menu.py:2277 sl/SL_Menu.py:2293 sl/SL_Menu.py:2305 +#: sl/SL_Menu.py:2320 sl/SL_Menu.py:2339 sl/SL_Menu.py:2380 sl/SL_Menu.py:2395 +msgid "Back" +msgstr "Zurück" -msgid "Select Action" -msgstr "Aktion auswählen" +#: sl/SL_Menu.py:581 +msgid "Today's Tasks" +msgstr "Heutige Aufgaben" -msgid "Select Project" -msgstr "Projekt auswählen" +#: sl/SL_Menu.py:646 +msgid "No tasks for today." +msgstr "Keine Aufgaben für heute." -msgid "Select Task" -msgstr "Aufgabe auswählen" +#: sl/SL_Menu.py:661 +msgid "Fetching emails..." +msgstr "E-Mails werden abgerufen..." + +#: sl/SL_Menu.py:664 +#, python-brace-format +msgid "Error fetching emails: {error}" +msgstr "Fehler beim E-Mail-Abruf: {error}" +#: sl/SL_Menu.py:667 +#, python-brace-format +msgid "{count} new tasks created from emails." +msgstr "{count} neue Aufgaben aus E-Mails erstellt." + +#: sl/SL_Menu.py:669 +msgid "No new emails found." +msgstr "Keine neuen E-Mails gefunden." + +#: sl/SL_Menu.py:675 +msgid "No unassigned email tasks available." +msgstr "Keine nicht zugeordneten E-Mail-Tasks vorhanden." + +#: sl/SL_Menu.py:687 +msgid "Assign Project" +msgstr "Projekt zuordnen" + +#: sl/SL_Menu.py:698 +msgid "Are you sure you want to delete this task?" +msgstr "Sind Sie sicher, dass Sie diese Aufgabe löschen möchten?" + +#: sl/SL_Menu.py:701 +msgid "Yes, delete" +msgstr "Ja, löschen" + +#: sl/SL_Menu.py:706 +msgid "No, cancel" +msgstr "Nein, abbrechen" + +#: sl/SL_Menu.py:713 +msgid "Delete" +msgstr "Löschen" + +#: sl/SL_Menu.py:717 +msgid "Edit Details" +msgstr "Details bearbeiten" + +#: sl/SL_Menu.py:725 sl/SL_Menu.py:1757 +msgid "Task Name" +msgstr "Aufgabenname" + +#: sl/SL_Menu.py:734 sl/SL_Menu.py:1761 +msgid "Due Date" +msgstr "Fälligkeitsdatum" + +#: sl/SL_Menu.py:742 sl/SL_Menu.py:1765 +msgid "Clear" +msgstr "Löschen" + +#: sl/SL_Menu.py:749 sl/SL_Menu.py:1634 sl/SL_Menu.py:1804 +msgid "Notes (Markdown)" +msgstr "Notizen (Markdown)" + +#: sl/SL_Menu.py:751 sl/SL_Menu.py:1816 +msgid "Save Changes" +msgstr "Änderungen speichern" + +#: sl/SL_Menu.py:762 +msgid "Task details updated successfully." +msgstr "Aufgabendetails erfolgreich aktualisiert." + +#: sl/SL_Menu.py:768 +msgid "Error updating task details." +msgstr "Fehler beim Aktualisieren der Aufgabendetails." + +#: sl/SL_Menu.py:778 sl/SL_Menu.py:794 +msgid "Project Management" +msgstr "Projektverwaltung" + +#: sl/SL_Menu.py:787 sl/SL_Menu.py:861 msgid "Back to Main Menu" msgstr "Zurück zum Hauptmenü" -msgid "Time Control" -msgstr "Zeitkontrolle" +#: sl/SL_Menu.py:873 sl/SL_Menu.py:2000 +msgid "Report Format" +msgstr "Berichtsformat" + +#: sl/SL_Menu.py:875 sl/SL_Menu.py:2159 +msgid "Email Settings" +msgstr "E-Mail-Einstellungen" +#: sl/SL_Menu.py:876 sl/SL_Menu.py:2020 msgid "Change CSS Style" msgstr "CSS-Stil ändern" +#: sl/SL_Menu.py:877 sl/SL_Menu.py:2058 msgid "Change View Mode" msgstr "Anzeigemodus ändern" -msgid "Back" -msgstr "Zurück" +#: sl/SL_Menu.py:890 +msgid "Add New Project" +msgstr "Neues Projekt hinzufügen" + +#: sl/SL_Menu.py:893 +msgid "Name of the project" +msgstr "Name des Projekts" +#: sl/SL_Menu.py:897 +#, python-brace-format +msgid "Project '{name}' added." +msgstr "Projekt '{name}' hinzugefügt." + +#: sl/SL_Menu.py:901 sl/SL_Menu.py:947 sl/SL_Menu.py:992 sl/SL_Menu.py:1038 +#: sl/SL_Menu.py:1093 sl/SL_Menu.py:1187 sl/SL_Menu.py:1235 sl/SL_Menu.py:1285 +#: sl/SL_Menu.py:1364 sl/SL_Menu.py:1394 sl/SL_Menu.py:1424 sl/SL_Menu.py:1455 +#: sl/SL_Menu.py:1517 sl/SL_Menu.py:1557 sl/SL_Menu.py:1666 sl/SL_Menu.py:1685 +#: sl/SL_Menu.py:1843 sl/SL_Menu.py:1890 sl/SL_Menu.py:1934 sl/SL_Menu.py:1995 +#: sl/SL_Menu.py:2014 sl/SL_Menu.py:2051 sl/SL_Menu.py:2084 sl/SL_Menu.py:2152 +#: sl/SL_Menu.py:2188 msgid "Cancel" msgstr "Abbrechen" -msgid "Next" -msgstr "Weiter" +#: sl/SL_Menu.py:919 sl/SL_Menu.py:964 sl/SL_Menu.py:1009 sl/SL_Menu.py:1204 +#: sl/SL_Menu.py:1267 sl/SL_Menu.py:1302 sl/SL_Menu.py:1334 sl/SL_Menu.py:1383 +#: sl/SL_Menu.py:1413 sl/SL_Menu.py:1443 sl/SL_Menu.py:1863 sl/SL_Menu.py:2251 +#: sl/SL_Menu.py:2312 +msgid "Select Project" +msgstr "Projekt auswählen" -msgid "Save" -msgstr "Speichern" +#: sl/SL_Menu.py:924 +#, python-brace-format +msgid "No open tasks to close in '{name}'." +msgstr "Keine offenen Aufgaben zum Schließen in „{name}“." -msgid "Add Project" -msgstr "Projekt hinzufügen" +#: sl/SL_Menu.py:931 sl/SL_Menu.py:976 sl/SL_Menu.py:1021 sl/SL_Menu.py:1075 +#: sl/SL_Menu.py:1216 sl/SL_Menu.py:1344 sl/SL_Menu.py:1700 sl/SL_Menu.py:1874 +#: sl/SL_Menu.py:2282 +msgid "Select Task" +msgstr "Aufgabe auswählen" -msgid "Close Project" -msgstr "Projekt schließen" +#: sl/SL_Menu.py:941 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been closed." +msgstr "Aufgabe „{sub_name}“ in „{main_name}“ wurde geschlossen." -msgid "Re-open Project" -msgstr "Projekt wieder öffnen" +#: sl/SL_Menu.py:969 +#, python-brace-format +msgid "No closed tasks to reopen in '{name}'." +msgstr "Keine geschlossenen Aufgaben zum erneuten Öffnen in „{name}“." -msgid "Delete Project" -msgstr "Projekt löschen" +#: sl/SL_Menu.py:986 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been reopened." +msgstr "Aufgabe „{sub_name}“ in „{main_name}“ wurde erneut geöffnet." + +#: sl/SL_Menu.py:1014 +#, python-brace-format +msgid "No open tasks to delete in '{name}'." +msgstr "Keine offenen Aufgaben zum Löschen in „{name}“." + +#: sl/SL_Menu.py:1025 +msgid "This action cannot be undone." +msgstr "Diese Aktion kann nicht rückgängig gemacht werden." + +#: sl/SL_Menu.py:1032 +#, python-brace-format +msgid "Task '{sub_name}' deleted from '{main_name}'." +msgstr "Aufgabe '{sub_name}' von '{main_name}' gelöscht." + +#: sl/SL_Menu.py:1055 +msgid "Select Source Project" +msgstr "Quellprojekt auswählen" + +#: sl/SL_Menu.py:1060 +#, python-brace-format +msgid "No tasks found in '{name}'." +msgstr "Keine Aufgaben in „{name}“ gefunden." +#: sl/SL_Menu.py:1068 +msgid "No other projects available to move to." +msgstr "Keine anderen Projekte zum Verschieben verfügbar." + +#: sl/SL_Menu.py:1079 sl/SL_Menu.py:1503 +msgid "Select Target Project" +msgstr "Zielprojekt auswählen" + +#: sl/SL_Menu.py:1087 +#, python-brace-format +msgid "Task '{sub}' moved from '{src}' to '{dst}'." +msgstr "Aufgabe „{sub}“ wurde von „{src}“ nach „{dst}“ verschoben." + +#: sl/SL_Menu.py:1091 +msgid "Error: Could not move task." +msgstr "Fehler: Aufgabe konnte nicht verschoben werden." + +#: sl/SL_Menu.py:1102 sl/SL_Menu.py:1464 +msgid "Weeks of inactivity" +msgstr "Wochen der Inaktivität" + +#: sl/SL_Menu.py:1107 +#, python-brace-format +msgid "Inactive Tasks (> {weeks} weeks):" +msgstr "Inaktive Aufgaben (>{weeks}Wochen):" + +#: sl/SL_Menu.py:1112 sl/SL_Menu.py:1472 +msgid "Last Activity" +msgstr "Letzte Aktivität" + +#: sl/SL_Menu.py:1171 +#, python-brace-format +msgid "" +"Are you sure you want to delete {count} closed tasks? This action cannot be " +"undone." +msgstr "" +"Sind Sie sicher, dass Sie{count}geschlossene Aufgaben löschen möchten? Diese" +" Aktion kann nicht rückgängig gemacht werden." + +#: sl/SL_Menu.py:1173 +msgid "Show projects to delete" +msgstr "Zu löschende Projekte anzeigen" + +#: sl/SL_Menu.py:1177 +msgid "Delete All" +msgstr "Alle löschen" + +#: sl/SL_Menu.py:1183 +#, python-brace-format +msgid "Successfully deleted {count} tasks." +msgstr "{count}Aufgaben erfolgreich gelöscht." + +#: sl/SL_Menu.py:1209 +#, python-brace-format +msgid "No open tasks to promote in '{name}'." +msgstr "Keine offenen Aufgaben zum Heraufstufen in „{name}“." + +#: sl/SL_Menu.py:1220 +msgid "" +"This will create a new Project with the task's name and move all time " +"entries to a 'General' task within it." +msgstr "" +"Dadurch wird ein neues Projekt mit dem Namen der Aufgabe erstellt und alle " +"Zeiteinträge in eine darin enthaltene „Allgemeine“ Aufgabe verschoben." + +#: sl/SL_Menu.py:1222 +msgid "Promote to Project" +msgstr "Hochstufen zum Projekt" + +#: sl/SL_Menu.py:1261 +msgid "No open projects to rename." +msgstr "Keine offenen Projekte zum Umbenennen." + +#: sl/SL_Menu.py:1270 sl/SL_Menu.py:1349 +msgid "New Name" +msgstr "Neuer Name" + +#: sl/SL_Menu.py:1271 sl/SL_Menu.py:1350 +msgid "Rename" +msgstr "Umbenennen" + +#: sl/SL_Menu.py:1275 sl/SL_Menu.py:1354 +msgid "Please enter a new name." +msgstr "Bitte geben Sie einen neuen Namen ein." + +#: sl/SL_Menu.py:1277 sl/SL_Menu.py:1356 +msgid "New name is the same as the old name." +msgstr "Neuer Name ist derselbe wie der alte Name." + +#: sl/SL_Menu.py:1279 +#, python-brace-format +msgid "Project '{old_name}' successfully renamed to '{new_name}'." +msgstr "Projekt '{old_name}' erfolgreich in '{new_name}' umbenannt." + +#: sl/SL_Menu.py:1339 +#, python-brace-format +msgid "No open tasks to rename in '{name}'." +msgstr "Keine offenen Aufgaben zum Umbenennen in „{name}“." + +#: sl/SL_Menu.py:1362 +msgid "Error: Could not rename. The new name might already exist." +msgstr "" +"Fehler: Umbenennen nicht möglich. Der neue Name ist möglicherweise bereits " +"vorhanden." + +#: sl/SL_Menu.py:1375 +msgid "No open projects to close." +msgstr "Keine offenen Projekte zum Schließen." + +#: sl/SL_Menu.py:1388 +#, python-brace-format +msgid "Project '{name}' has been closed." +msgstr "Das Projekt „{name}“ wurde geschlossen." + +#: sl/SL_Menu.py:1392 sl/SL_Menu.py:1422 sl/SL_Menu.py:1453 +msgid "Error: Project not found." +msgstr "Fehler: Projekt nicht gefunden." + +#: sl/SL_Menu.py:1405 +msgid "No closed projects to reopen." +msgstr "Keine geschlossenen Projekte zum erneuten Öffnen." + +#: sl/SL_Menu.py:1418 +#, python-brace-format +msgid "Project '{name}' has been reopened." +msgstr "Das Projekt „{name}“ wurde erneut geöffnet." + +#: sl/SL_Menu.py:1444 +msgid "" +"This action cannot be undone. All associated tasks and time entries will be " +"deleted." +msgstr "" +"Diese Aktion kann nicht rückgängig gemacht werden. Alle zugehörigen Aufgaben" +" und Zeiteinträge werden gelöscht." + +#: sl/SL_Menu.py:1449 +#, python-brace-format +msgid "Project '{name}' has been deleted." +msgstr "Projekt „{name}“ wurde gelöscht." + +#: sl/SL_Menu.py:1469 +#, python-brace-format +msgid "Inactive Projects (> {weeks} weeks):" +msgstr "Inaktive Projekte (>{weeks}Wochen):" + +#: sl/SL_Menu.py:1474 +#, python-brace-format +msgid "No projects found inactive for more than {weeks} weeks." +msgstr "Keine Projekte gefunden, die länger als{weeks}Wochen inaktiv waren." + +#: sl/SL_Menu.py:1483 sl/SL_Menu.py:1506 msgid "Demote Project" msgstr "Projekt herabstufen" -msgid "Promote to Main Project" -msgstr "Zum Hauptprojekt befördern" +#: sl/SL_Menu.py:1495 +msgid "Select Project to Demote" +msgstr "Wählen Sie das Projekt zum Herabstufen aus." + +#: sl/SL_Menu.py:1501 +msgid "No other projects available to demote into." +msgstr "Es sind keine anderen Projekte zum Herabstufen verfügbar." + +#: sl/SL_Menu.py:1504 +#, python-brace-format +msgid "This will convert '{src}' into a task of '{dst}'." +msgstr "Dadurch wird „{src}“ in eine Aufgabe von „{dst}“ umgewandelt." + +#: sl/SL_Menu.py:1529 +msgid "Projects with only closed or no tasks:" +msgstr "Projekte mit nur abgeschlossenen oder keinen Aufgaben:" + +#: sl/SL_Menu.py:1533 +msgid "No completed projects found." +msgstr "Keine abgeschlossenen Projekte gefunden." + +#: sl/SL_Menu.py:1542 sl/SL_Menu.py:1673 sl/SL_Menu.py:2241 +msgid "Step 1: Select Project" +msgstr "Schritt 1: Projekt auswählen" + +#: sl/SL_Menu.py:1546 sl/SL_Menu.py:1857 +msgid "No open projects found. Please add one first." +msgstr "Keine offenen Projekte gefunden. Bitte fügen Sie zuerst eines hinzu." + +#: sl/SL_Menu.py:1551 sl/SL_Menu.py:1680 sl/SL_Menu.py:1905 +msgid "Project" +msgstr "Projekt" + +#: sl/SL_Menu.py:1553 sl/SL_Menu.py:1681 sl/SL_Menu.py:1705 sl/SL_Menu.py:2253 +msgid "Next" +msgstr "Weiter" + +#: sl/SL_Menu.py:1568 sl/SL_Menu.py:2267 +msgid "No project selected. Please start again." +msgstr "Kein Projekt ausgewählt. Bitte beginnen Sie erneut." + +#: sl/SL_Menu.py:1573 +msgid "To Project:" +msgstr "Zum Projekt:" + +#: sl/SL_Menu.py:1594 +msgid "Name of the new task" +msgstr "Name der neuen Aufgabe" + +#: sl/SL_Menu.py:1600 +msgid "Due date" +msgstr "Fälligkeitsdatum" + +#: sl/SL_Menu.py:1606 sl/SL_Menu.py:1775 +msgid "Recurring" +msgstr "Wiederkehrend" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "daily" +msgstr "täglich" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "on all business days" +msgstr "an allen Geschäftstagen" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "weekly" +msgstr "wöchentlich" +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "monthly" +msgstr "monatlich" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "userdefined" +msgstr "benutzerdefiniert" + +#: sl/SL_Menu.py:1624 sl/SL_Menu.py:1797 +msgid "Frequency" +msgstr "Häufigkeit" + +#: sl/SL_Menu.py:1628 sl/SL_Menu.py:1800 +msgid "Days" +msgstr "Tage" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Edit" +msgstr "Bearbeiten" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Preview" +msgstr "Vorschau" + +#: sl/SL_Menu.py:1637 sl/SL_Menu.py:1807 +msgid "No notes provided." +msgstr "Keine Notizen bereitgestellt." + +#: sl/SL_Menu.py:1642 sl/SL_Menu.py:1812 +msgid "A due date is required for recurring tasks." +msgstr "Für wiederkehrende Aufgaben ist ein Fälligkeitsdatum erforderlich." + +#: sl/SL_Menu.py:1650 +msgid "Please enter a name." +msgstr "Bitte geben Sie einen Namen ein." + +#: sl/SL_Menu.py:1661 +#, python-brace-format +msgid "Task '{sub_name}' added to '{main_name}'." +msgstr "Aufgabe '{sub_name}' zu '{main_name}' hinzugefügt." + +#: sl/SL_Menu.py:1693 sl/SL_Menu.py:2272 +msgid "Step 2: Select Task from" +msgstr "Schritt 2: Aufgabe auswählen aus" + +#: sl/SL_Menu.py:1696 +msgid "No open tasks found." +msgstr "Keine offenen Aufgaben gefunden." + +#: sl/SL_Menu.py:1724 +msgid "Task not found." +msgstr "Aufgabe nicht gefunden." + +#: sl/SL_Menu.py:1840 +msgid "Error: Could not update task." +msgstr "Fehler: Aufgabe konnte nicht aktualisiert werden." + +#: sl/SL_Menu.py:1853 +msgid "Start Work on Task" +msgstr "Arbeit an Aufgabe beginnen" + +#: sl/SL_Menu.py:1867 +#, python-brace-format +msgid "No open tasks to start work on in '{name}'." +msgstr "" +"Keine offenen Aufgaben, an denen in „{name}“ mit der Arbeit begonnen werden " +"kann." + +#: sl/SL_Menu.py:1878 msgid "Start Work" msgstr "Arbeit beginnen" -msgid "Generate Report" -msgstr "Bericht erstellen" +#: sl/SL_Menu.py:1906 +msgid "Task" +msgstr "Aufgabe" -msgid "Delete All" -msgstr "Alle löschen" +#: sl/SL_Menu.py:1907 +msgid "Started at" +msgstr "Gestartet um" -msgid "Restore and Restart" -msgstr "Wiederherstellen und neu starten" +#: sl/SL_Menu.py:1918 +msgid "Streamlit Port Settings" +msgstr "Streamlit-Port-Einstellungen" + +#: sl/SL_Menu.py:1922 +msgid "Current Streamlit Port" +msgstr "Aktueller Streamlit-Port" + +#: sl/SL_Menu.py:1925 +msgid "New Port" +msgstr "Neuer Port" + +#: sl/SL_Menu.py:1926 sl/SL_Menu.py:1958 sl/SL_Menu.py:2007 sl/SL_Menu.py:2042 +#: sl/SL_Menu.py:2074 sl/SL_Menu.py:2141 sl/SL_Menu.py:2173 +msgid "Save" +msgstr "Speichern" + +#: sl/SL_Menu.py:1930 +#, python-brace-format +msgid "Port updated to {port}. Please restart Streamlit." +msgstr "Port aktualisiert auf{port}. Bitte starten Sie Streamlit neu." + +#: sl/SL_Menu.py:1940 +msgid "Change Data Storage Location" +msgstr "Speicherort der Daten ändern" + +#: sl/SL_Menu.py:1943 +msgid "Current data file" +msgstr "Aktuelle Datendatei" + +#: sl/SL_Menu.py:1946 +msgid "New Path for data file" +msgstr "Neuer Pfad für Datendatei" + +#: sl/SL_Menu.py:1952 +msgid "Move existing data to the new location" +msgstr "Vorhandene Daten an den neuen Speicherort verschieben" + +#: sl/SL_Menu.py:1955 +msgid "" +"If unchecked, the old data file will remain, and a new empty one might be " +"created at the new location on restart." +msgstr "" +"Wenn diese Option deaktiviert ist, bleibt die alte Datendatei erhalten und " +"beim Neustart wird möglicherweise eine neue leere Datei am neuen Speicherort" +" erstellt." +#: sl/SL_Menu.py:1962 +msgid "Please enter a new path." +msgstr "Bitte geben Sie einen neuen Pfad ein." + +#: sl/SL_Menu.py:1970 +msgid "" +"Error: For security, the data file must be located within the application " +"directory." +msgstr "" +"Fehler: Aus Sicherheitsgründen muss sich die Datendatei im " +"Anwendungsverzeichnis befinden." + +#: sl/SL_Menu.py:1980 +msgid "" +"Storage location updated. Please restart the application for the changes to " +"take effect." +msgstr "" +"Speicherort aktualisiert. Bitte starten Sie die Anwendung neu, damit die " +"Änderungen wirksam werden." + +#: sl/SL_Menu.py:2006 +msgid "Select Format" +msgstr "Format auswählen" + +#: sl/SL_Menu.py:2011 +msgid "Report format updated." +msgstr "Berichtsformat aktualisiert." + +#: sl/SL_Menu.py:2024 msgid "Current CSS file" msgstr "Aktuelle CSS-Datei" +#: sl/SL_Menu.py:2041 msgid "Select CSS File" msgstr "CSS-Datei auswählen" -msgid "CSS style updated. Please restart the application for the changes to take effect." -msgstr "CSS-Stil aktualisiert. Bitte die Anwendung für die Änderungen neu starten." +#: sl/SL_Menu.py:2047 +msgid "" +"CSS style updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"CSS-Stil aktualisiert. Bitte die Anwendung für die Änderungen neu starten." +#: sl/SL_Menu.py:2063 msgid "App Window (Webview)" msgstr "App-Fenster (Webview)" +#: sl/SL_Menu.py:2063 msgid "System Browser" msgstr "System-Browser" +#: sl/SL_Menu.py:2073 msgid "Select View Mode" msgstr "Anzeigemodus auswählen" -msgid "View mode updated. Please restart the application for the changes to take effect." -msgstr "Anzeigemodus aktualisiert. Bitte die Anwendung für die Änderungen neu starten." +#: sl/SL_Menu.py:2080 +msgid "" +"View mode updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"Anzeigemodus aktualisiert. Bitte die Anwendung für die Änderungen neu " +"starten." + +#: sl/SL_Menu.py:2091 +msgid "Restore Previous Version" +msgstr "Vorherige Version wiederherstellen" + +#: sl/SL_Menu.py:2096 +msgid "The 'update' module is not available. This feature is disabled." +msgstr "" +"Das Modul „Update“ ist nicht verfügbar. Diese Funktion ist deaktiviert." + +#: sl/SL_Menu.py:2101 +#, python-brace-format +msgid "No previous version backup '{filename}' found." +msgstr "Keine Sicherung der vorherigen Version „{filename}“ gefunden." + +#: sl/SL_Menu.py:2105 +msgid "" +"This will restore the application to the previously backed-up version. The " +"application will then restart. You may need to manually refresh your browser" +" if it does not reconnect automatically." +msgstr "" +"Dadurch wird die Anwendung auf die zuvor gesicherte Version " +"wiederhergestellt. Die Anwendung wird dann neu gestartet. Möglicherweise " +"müssen Sie Ihren Browser manuell aktualisieren, wenn die Verbindung nicht " +"automatisch wiederhergestellt wird." + +#: sl/SL_Menu.py:2107 +msgid "Restore and Restart" +msgstr "Wiederherstellen und neu starten" + +#: sl/SL_Menu.py:2108 +msgid "Restoring and restarting..." +msgstr "Wiederherstellung und Neustart..." + +#: sl/SL_Menu.py:2111 +msgid "Restore complete. Please restart the application." +msgstr "Wiederherstellung abgeschlossen. Bitte starten Sie die Anwendung neu." + +#: sl/SL_Menu.py:2117 +msgid "Change Language" +msgstr "Sprache ändern" + +#: sl/SL_Menu.py:2140 +msgid "Select Language" +msgstr "Sprache auswählen" + +#: sl/SL_Menu.py:2148 +msgid "" +"Language changed. Please restart the application for the changes to take " +"effect." +msgstr "" +"Sprache geändert. Bitte starten Sie die Anwendung neu, damit die Änderungen " +"wirksam werden." + +#: sl/SL_Menu.py:2166 +msgid "Enable email import" +msgstr "E-Mail-Import aktivieren" + +#: sl/SL_Menu.py:2167 +msgid "IMAP Server" +msgstr "IMAP-Server" + +#: sl/SL_Menu.py:2168 +msgid "Port" +msgstr "Port" + +#: sl/SL_Menu.py:2169 +msgid "Username" +msgstr "Benutzername" + +#: sl/SL_Menu.py:2170 +msgid "Password" +msgstr "Passwort" + +#: sl/SL_Menu.py:2171 +msgid "Use SSL" +msgstr "SSL verwenden" + +#: sl/SL_Menu.py:2184 +msgid "Email settings saved." +msgstr "E-Mail-Einstellungen gespeichert." + +#: sl/SL_Menu.py:2198 sl/SL_Menu.py:2330 +msgid "Select Date" +msgstr "Datum auswählen" + +#: sl/SL_Menu.py:2199 sl/SL_Menu.py:2223 sl/SL_Menu.py:2287 sl/SL_Menu.py:2313 +#: sl/SL_Menu.py:2331 +msgid "Generate Report" +msgstr "Bericht erstellen" + +#: sl/SL_Menu.py:2219 +msgid "Start Date" +msgstr "Startdatum" + +#: sl/SL_Menu.py:2221 +msgid "End Date" +msgstr "Enddatum" + +#: sl/SL_Menu.py:2346 +msgid "Report Result" +msgstr "Berichtsergebnis" + +#: sl/SL_Menu.py:2375 +msgid "Export Report" +msgstr "Bericht exportieren" + +#~ msgid "" +#~ "\n" +#~ "Error: Failed to install dependencies. Please install them manually using: pip install -r {requirements_path}" +#~ msgstr "" +#~ "\n" +#~ "Fehler: Installation der Abhängigkeiten fehlgeschlagen. Bitte manuell installieren mit: pip install -r {requirements_path}" + +#~ msgid "A task named '{sub_name}' already exists in '{main_name}'." +#~ msgstr "" +#~ "Eine Aufgabe mit dem Namen '{sub_name}' existiert bereits in '{main_name}'." + +#~ msgid "Project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Projekt '{old_name}' wurde in '{new_name}' umbenannt." + +#~ msgid "Task '{old_name}' has been renamed to '{new_name}'." +#~ msgstr "Aufgabe '{old_name}' wurde in '{new_name}' umbenannt." + +#~ msgid "Invalid choice. Please enter a number from 0 to 3." +#~ msgstr "Ungültige Auswahl. Bitte eine Zahl von 0 bis 3 eingeben." + +#~ msgid "Work started on '{sub_name}' in project '{main_name}'." +#~ msgstr "Arbeit an '{sub_name}' im Projekt '{main_name}' begonnen." + +#~ msgid " Project: {name}" +#~ msgstr " Projekt: {name}" + +#~ msgid "" +#~ "\n" +#~ "No time tracked for {date}." +#~ msgstr "" +#~ "\n" +#~ "Keine Zeit für {date} erfasst." + +#~ msgid "# Detailed Report for Sub-Project: {name}" +#~ msgstr "# Detaillierter Unterprojekt-Bericht: {name}" + +#~ msgid "Handle projects and tasks" +#~ msgstr "Projekte und Aufgaben verwalten" + +#~ msgid "Select Action" +#~ msgstr "Aktion auswählen" + +#~ msgid "Time Control" +#~ msgstr "Zeitkontrolle" diff --git a/locale/en/LC_MESSAGES/timetracker.mo b/locale/en/LC_MESSAGES/timetracker.mo index a6cf7136f65e4890d35d50bbe6cd42aceef2ebf0..6f9d086914dcf9a1a084ed953d9a2c2356bb9d18 100644 GIT binary patch literal 44535 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 MY=Qp&`BuXJ1A&Y0#sB~S literal 28695 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 weeks):" -msgstr "\nInactive Main-Projects (>{weeks} weeks):" +#: TimeTrackerCLI.py:182 +#, python-brace-format +msgid "" +"\n" +"Inactive Main-Projects (>{weeks} weeks):" +msgstr "" +"\n" +"Inactive Main-Projects (>{weeks} weeks):" -#: TimeTrackerCLI.py:112 +#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:526 +#, python-brace-format msgid " - Main Project: {name}" msgstr " - Main Project: {name}" -#: TimeTrackerCLI.py:113 +#: TimeTrackerCLI.py:185 TimeTrackerCLI.py:528 +#, python-brace-format msgid " Last Activity: {date}" msgstr " Last Activity: {date}" -#: TimeTrackerCLI.py:116 -msgid "No main-projects found inactive for more than {weeks} week." -msgid_plural "No main-projects found inactive for more than {weeks} weeks." -msgstr[0] "No main-projects found inactive for more than {weeks} week." -msgstr[1] "No main-projects found inactive for more than {weeks} weeks." +#: TimeTrackerCLI.py:188 +#, python-brace-format +msgid "No main-projects found inactive for more than {weeks} weeks." +msgstr "No main-projects found inactive for more than {weeks} weeks." -#: TimeTrackerCLI.py:119 +#: TimeTrackerCLI.py:191 TimeTrackerCLI.py:534 msgid "Invalid input. Please enter a valid number for weeks." msgstr "Invalid input. Please enter a valid number for weeks." -#: TimeTrackerCLI.py:122 -msgid "\n--- Add New Sub-Project ---" -msgstr "\n--- Add New Sub-Project ---" +#: TimeTrackerCLI.py:194 +msgid "" +"\n" +"--- Demote Main-Project to Sub-Project ---" +msgstr "" +"\n" +"--- Demote Main-Project to Sub-Project ---" -#: TimeTrackerCLI.py:125 -msgid "No main projects found. Please add one first." -msgstr "No main projects found. Please add one first." +#: TimeTrackerCLI.py:197 +msgid "You need at least two open main projects for this operation." +msgstr "You need at least two open main projects for this operation." -#: TimeTrackerCLI.py:128 -msgid "Select a main project to add a sub-project to:" -msgstr "Select a main project to add a sub-project to:" +#: TimeTrackerCLI.py:202 +msgid "Select the main project to demote:" +msgstr "Select the main project to demote:" -#: TimeTrackerCLI.py:135 -msgid "Name of the new sub-project: " -msgstr "Name of the new sub-project: " +#: TimeTrackerCLI.py:205 +msgid "Enter the number of the project to demote: " +msgstr "Enter the number of the project to demote: " -#: TimeTrackerCLI.py:137 -msgid "Sub-project '{sub_name}' added to '{main_name}'." -msgstr "Sub-project '{sub_name}' added to '{main_name}'." +#: TimeTrackerCLI.py:209 +msgid "" +"\n" +"Select the new parent main project:" +msgstr "" +"\n" +"Select the new parent main project:" -#: TimeTrackerCLI.py:142 -msgid "\n--- List Sub-Projects ---" -msgstr "\n--- List Sub-Projects ---" +#: TimeTrackerCLI.py:213 +msgid "Enter the number of the new parent project: " +msgstr "Enter the number of the new parent project: " -#: TimeTrackerCLI.py:145 -msgid "No main projects found. Cannot list sub-projects." -msgstr "No main projects found. Cannot list sub-projects." +#: TimeTrackerCLI.py:224 +msgid "" +"\n" +"--- List Completed Main Projects ---" +msgstr "" +"\n" +"--- List Completed Main Projects ---" -#: TimeTrackerCLI.py:148 -msgid "Select the main project whose sub-projects you want to list:" -msgstr "Select the main project whose sub-projects you want to list:" +#: TimeTrackerCLI.py:227 +msgid "Main projects with only closed or no sub-projects:" +msgstr "Main projects with only closed or no sub-projects:" -#: TimeTrackerCLI.py:156 -msgid "Sub-projects for '{name}':" -msgstr "Sub-projects for '{name}':" +#: TimeTrackerCLI.py:231 +msgid "No completed main projects found." +msgstr "No completed main projects found." -#: TimeTrackerCLI.py:159 TimeTrackerCLI.py:262 TimeTrackerCLI.py:489 -msgid "No sub-projects found for '{name}'." -msgstr "No sub-projects found for '{name}'." +#: TimeTrackerCLI.py:235 +msgid "Invalid choice. Please enter a number from 0 to 9." +msgstr "Invalid choice. Please enter a number from 0 to 9." -#: TimeTrackerCLI.py:163 -msgid "\n--- Rename Sub-Project ---" -msgstr "\n--- Rename Sub-Project ---" +#: TimeTrackerCLI.py:240 +msgid "" +"\n" +"--- Task Management ---" +msgstr "" +"\n" +"--- Task Management ---" -#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:201 TimeTrackerCLI.py:414 TimeTrackerCLI.py:437 TimeTrackerCLI.py:482 -msgid "Select the main project:" -msgstr "Select the main project:" +#: TimeTrackerCLI.py:241 +msgid "1. Add Task" +msgstr "1. Add Task" + +#: TimeTrackerCLI.py:242 +msgid "2. List Tasks" +msgstr "2. List Tasks" + +#: TimeTrackerCLI.py:243 +msgid "3. Rename Task" +msgstr "3. Rename Task" + +#: TimeTrackerCLI.py:244 +msgid "4. Close Task" +msgstr "4. Close Task" + +#: TimeTrackerCLI.py:245 +msgid "5. Re-open Task" +msgstr "5. Re-open Task" -#: TimeTrackerCLI.py:177 -msgid "No sub-projects to rename for '{name}'." -msgstr "No sub-projects to rename for '{name}'." +#: TimeTrackerCLI.py:246 +msgid "6. Delete Task" +msgstr "6. Delete Task" -#: TimeTrackerCLI.py:180 -msgid "Select a sub-project from '{name}' to rename:" -msgstr "Select a sub-project from '{name}' to rename:" +#: TimeTrackerCLI.py:247 +msgid "7. Move Task" +msgstr "7. Move Task" -#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:214 TimeTrackerCLI.py:267 TimeTrackerCLI.py:307 TimeTrackerCLI.py:499 -msgid "Enter the number of the sub-project: " -msgstr "Enter the number of the sub-project: " +#: TimeTrackerCLI.py:248 +msgid "8. List Inactive Tasks" +msgstr "8. List Inactive Tasks" + +#: TimeTrackerCLI.py:249 +msgid "9. List All Closed Tasks" +msgstr "9. List All Closed Tasks" + +#: TimeTrackerCLI.py:250 +msgid "10. Delete All Closed Tasks" +msgstr "10. Delete All Closed Tasks" + +#: TimeTrackerCLI.py:251 +msgid "11. Promote Task to Main-Project" +msgstr "11. Promote Task to Main-Project" -#: TimeTrackerCLI.py:190 -msgid "Sub-project '{old_name}' renamed to '{new_name}'." -msgstr "Sub-project '{old_name}' renamed to '{new_name}'." +#: TimeTrackerCLI.py:252 +msgid "12. Edit Task (Name & Due Date)" +msgstr "12. Edit Task (Name & Due Date)" -#: TimeTrackerCLI.py:192 +#: TimeTrackerCLI.py:261 msgid "" -"Error: Could not rename. The new name might already exist or the project " -"was not found." +"\n" +"--- Add New Task ---" msgstr "" -"Error: Could not rename. The new name might already exist or the project " -"was not found." - -#: TimeTrackerCLI.py:195 -msgid "\n--- Delete Sub-Project ---" -msgstr "\n--- Delete Sub-Project ---" +"\n" +"--- Add New Task ---" -#: TimeTrackerCLI.py:207 -msgid "No sub-projects to delete for '{name}'." -msgstr "No sub-projects to delete for '{name}'." +#: TimeTrackerCLI.py:264 TimeTrackerCLI.py:960 +msgid "No open main projects found. Please add one first." +msgstr "No open main projects found. Please add one first." -#: TimeTrackerCLI.py:210 -msgid "Select a sub-project from '{name}' to delete:" -msgstr "Select a sub-project from '{name}' to delete:" +#: TimeTrackerCLI.py:267 +msgid "Select a main project to add a task to:" +msgstr "Select a main project to add a task to:" -#: TimeTrackerCLI.py:217 -msgid "Sub-project '{sub_name}' deleted from '{main_name}'." -msgstr "Sub-project '{sub_name}' deleted from '{main_name}'." +#: TimeTrackerCLI.py:275 +msgid "Name of the new task: " +msgstr "Name of the new task: " -msgid "\n--- List All Closed Sub-Projects ---" -msgstr "\n--- List All Closed Sub-Projects ---" +#: TimeTrackerCLI.py:276 +msgid "Due date (YYYY-MM-DD, press Enter to skip): " +msgstr "Due date (YYYY-MM-DD, press Enter to skip): " -msgid "No closed sub-projects found." -msgstr "No closed sub-projects found." +#: TimeTrackerCLI.py:278 +msgid "Add to 'Today' list? (y/n, default n): " +msgstr "Add to 'Today' list? (y/n, default n): " -msgid "\n--- Delete All Closed Sub-Projects ---" -msgstr "\n--- Delete All Closed Sub-Projects ---" +#: TimeTrackerCLI.py:280 +msgid "Note (Markdown supported): " +msgstr "Note (Markdown supported): " -msgid "Are you sure you want to delete ALL closed sub-projects? (y/n): " -msgstr "Are you sure you want to delete ALL closed sub-projects? (y/n): " +#: TimeTrackerCLI.py:283 +#, python-brace-format +msgid "Task '{task_name}' added." +msgstr "Task '{task_name}' added." -msgid "{count} closed sub-projects were deleted." -msgstr "{count} closed sub-projects were deleted." +#: TimeTrackerCLI.py:290 +msgid "" +"\n" +"--- List Tasks ---" +msgstr "" +"\n" +"--- List Tasks ---" -msgid "Operation cancelled." -msgstr "Operation cancelled." +#: TimeTrackerCLI.py:293 +msgid "No main projects found. Cannot list tasks." +msgstr "No main projects found. Cannot list tasks." -#: TimeTrackerCLI.py:219 TimeTrackerCLI.py:281 -msgid "Error: Main project or sub-project not found." -msgstr "Error: Main project or sub-project not found." +#: TimeTrackerCLI.py:296 +msgid "Select the main project whose tasks you want to list:" +msgstr "Select the main project whose tasks you want to list:" -#: TimeTrackerCLI.py:226 -msgid "\n--- List Inactive Sub-Projects ---" -msgstr "\n--- List Inactive Sub-Projects ---" +#: TimeTrackerCLI.py:305 sl/SL_Menu.py:1307 +#, python-brace-format +msgid "Tasks for '{name}':" +msgstr "Tasks for '{name}':" -#: TimeTrackerCLI.py:228 -msgid "Enter the number of weeks without activity (e.g., 4): " -msgstr "Enter the number of weeks without activity (e.g., 4): " +#: TimeTrackerCLI.py:308 sl/SL_Menu.py:524 sl/SL_Menu.py:612 +msgid "Due" +msgstr "Due" -#: TimeTrackerCLI.py:235 -msgid "\nInactive Sub-Projects (>{weeks} weeks):" -msgstr "\nInactive Sub-Projects (>{weeks} weeks):" +#: TimeTrackerCLI.py:309 sl/SL_Menu.py:409 sl/SL_Menu.py:419 sl/SL_Menu.py:484 +#: sl/SL_Menu.py:546 sl/SL_Menu.py:747 sl/SL_Menu.py:1603 sl/SL_Menu.py:1771 +msgid "Today" +msgstr "Today" -#: TimeTrackerCLI.py:238 -msgid " Sub-Project: {name}" -msgstr " Sub-Project: {name}" +#: TimeTrackerCLI.py:317 TimeTrackerCLI.py:861 sl/SL_Menu.py:1315 +#: sl/SL_Menu.py:2276 +#, python-brace-format +msgid "No tasks found for '{name}'." +msgstr "No tasks found for '{name}'." -#: TimeTrackerCLI.py:241 -msgid "No sub-projects found inactive for more than {weeks} week." -msgid_plural "No sub-projects found inactive for more than {weeks} weeks." -msgstr[0] "No sub-projects found inactive for more than {weeks} week." -msgstr[1] "No sub-projects found inactive for more than {weeks} weeks." +#: TimeTrackerCLI.py:322 +msgid "" +"\n" +"--- Rename Task ---" +msgstr "" +"\n" +"--- Rename Task ---" -#: TimeTrackerCLI.py:248 -msgid "\n--- Move Sub-Project ---" -msgstr "\n--- Move Sub-Project ---" +#: TimeTrackerCLI.py:325 TimeTrackerCLI.py:362 TimeTrackerCLI.py:397 +#: TimeTrackerCLI.py:432 TimeTrackerCLI.py:560 +msgid "No open main projects found." +msgstr "No open main projects found." -#: TimeTrackerCLI.py:250 -msgid "You need at least two main projects to move a sub-project." -msgstr "You need at least two main projects to move a sub-project." +#: TimeTrackerCLI.py:328 TimeTrackerCLI.py:365 TimeTrackerCLI.py:400 +#: TimeTrackerCLI.py:435 TimeTrackerCLI.py:599 TimeTrackerCLI.py:852 +msgid "Select the main project:" +msgstr "Select the main project:" -#: TimeTrackerCLI.py:254 -msgid "Select the source main project:" -msgstr "Select the source main project:" +#: TimeTrackerCLI.py:338 +#, python-brace-format +msgid "No tasks to rename for '{name}'." +msgstr "No tasks to rename for '{name}'." -#: TimeTrackerCLI.py:257 -msgid "Enter the number of the source main project: " -msgstr "Enter the number of the source main project: " +#: TimeTrackerCLI.py:341 +#, python-brace-format +msgid "Select a task from '{name}' to rename:" +msgstr "Select a task from '{name}' to rename:" -#: TimeTrackerCLI.py:265 -msgid "\nSelect a sub-project from '{name}' to move:" -msgstr "\nSelect a sub-project from '{name}' to move:" +#: TimeTrackerCLI.py:345 TimeTrackerCLI.py:382 TimeTrackerCLI.py:417 +#: TimeTrackerCLI.py:453 TimeTrackerCLI.py:489 TimeTrackerCLI.py:580 +#: TimeTrackerCLI.py:867 TimeTrackerCLI.py:982 +msgid "Enter the number of the task: " +msgstr "Enter the number of the task: " -#: TimeTrackerCLI.py:269 -msgid "\nSelect the destination main project:" -msgstr "\nSelect the destination main project:" +#: TimeTrackerCLI.py:352 sl/SL_Menu.py:1358 +#, python-brace-format +msgid "Task '{old_name}' renamed to '{new_name}'." +msgstr "Task '{old_name}' renamed to '{new_name}'." -#: TimeTrackerCLI.py:274 -msgid "Enter the number of the destination main project: " -msgstr "Enter the number of the destination main project: " +#: TimeTrackerCLI.py:354 +msgid "" +"Error: Could not rename. The new name might already exist or the project was" +" not found." +msgstr "" +"Error: Could not rename. The new name might already exist or the project was" +" not found." -#: TimeTrackerCLI.py:279 +#: TimeTrackerCLI.py:359 msgid "" -"Successfully moved '{sub_name}' from '{source_name}' to '{dest_name}'." +"\n" +"--- Close Task ---" msgstr "" -"Successfully moved '{sub_name}' from '{source_name}' to '{dest_name}'." +"\n" +"--- Close Task ---" -msgid "Error: {message}" -msgstr "Error: {message}" +#: TimeTrackerCLI.py:375 +#, python-brace-format +msgid "No open tasks to close for '{name}'." +msgstr "No open tasks to close for '{name}'." + +#: TimeTrackerCLI.py:378 +#, python-brace-format +msgid "Select a task from '{name}' to close:" +msgstr "Select a task from '{name}' to close:" + +#: TimeTrackerCLI.py:387 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been closed." +msgstr "Task '{task_name}' in '{main_name}' has been closed." + +#: TimeTrackerCLI.py:389 TimeTrackerCLI.py:424 TimeTrackerCLI.py:460 +#: sl/SL_Menu.py:945 sl/SL_Menu.py:990 sl/SL_Menu.py:1036 +msgid "Error: Main project or task not found." +msgstr "Error: Main project or task not found." + +#: TimeTrackerCLI.py:394 +msgid "" +"\n" +"--- Re-open Task ---" +msgstr "" +"\n" +"--- Re-open Task ---" -#: TimeTrackerCLI.py:286 -msgid "\n--- Promote Sub-Project to Main-Project ---" -msgstr "\n--- Promote Sub-Project to Main-Project ---" +#: TimeTrackerCLI.py:410 +#, python-brace-format +msgid "No closed tasks to reopen for '{name}'." +msgstr "No closed tasks to reopen for '{name}'." -#: TimeTrackerCLI.py:293 -msgid "Select the main project containing the sub-project to promote:" -msgstr "Select the main project containing the sub-project to promote:" +#: TimeTrackerCLI.py:413 +#, python-brace-format +msgid "Select a task from '{name}' to reopen:" +msgstr "Select a task from '{name}' to reopen:" -#: TimeTrackerCLI.py:301 -msgid "No sub-projects to promote in '{name}'." -msgstr "No sub-projects to promote in '{name}'." +#: TimeTrackerCLI.py:422 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been reopened." +msgstr "Task '{task_name}' in '{main_name}' has been reopened." -#: TimeTrackerCLI.py:304 -msgid "\nSelect a sub-project from '{name}' to promote:" -msgstr "\nSelect a sub-project from '{name}' to promote:" +#: TimeTrackerCLI.py:429 +msgid "" +"\n" +"--- Delete Task ---" +msgstr "" +"\n" +"--- Delete Task ---" -#: TimeTrackerCLI.py:315 -msgid "\n--- Demote Main-Project to Sub-Project ---" -msgstr "\n--- Demote Main-Project to Sub-Project ---" +#: TimeTrackerCLI.py:446 +#, python-brace-format +msgid "No tasks to delete for '{name}'." +msgstr "No tasks to delete for '{name}'." -#: TimeTrackerCLI.py:318 -msgid "You need at least two main projects for this operation." -msgstr "You need at least two main projects for this operation." +#: TimeTrackerCLI.py:449 +#, python-brace-format +msgid "Select a task from '{name}' to delete:" +msgstr "Select a task from '{name}' to delete:" -#: TimeTrackerCLI.py:322 -msgid "Select the main project to demote:" -msgstr "Select the main project to demote:" +#: TimeTrackerCLI.py:458 +#, python-brace-format +msgid "Task '{task_name}' deleted from '{main_name}'." +msgstr "Task '{task_name}' deleted from '{main_name}'." -#: TimeTrackerCLI.py:325 -msgid "Enter the number of the project to demote: " -msgstr "Enter the number of the project to demote: " +#: TimeTrackerCLI.py:466 +msgid "" +"\n" +"--- Move Task ---" +msgstr "" +"\n" +"--- Move Task ---" -#: TimeTrackerCLI.py:328 -msgid "\nSelect the new parent main project:" -msgstr "\nSelect the new parent main project:" +#: TimeTrackerCLI.py:469 +msgid "You need at least two open main projects to move a task." +msgstr "You need at least two open main projects to move a task." -#: TimeTrackerCLI.py:333 -msgid "Enter the number of the new parent project: " -msgstr "Enter the number of the new parent project: " +#: TimeTrackerCLI.py:474 +msgid "Select the source main project:" +msgstr "Select the source main project:" -msgid "Invalid choice. Please enter a number from 0 to 17." -msgstr "Invalid choice. Please enter a number from 0 to 17." +#: TimeTrackerCLI.py:477 +msgid "Enter the number of the source main project: " +msgstr "Enter the number of the source main project: " -#: TimeTrackerCLI.py:348 -msgid "\n--- Reporting ---" -msgstr "\n--- Reporting ---" +#: TimeTrackerCLI.py:483 +#, python-brace-format +msgid "No tasks to move from '{name}'." +msgstr "No tasks to move from '{name}'." -#: TimeTrackerCLI.py:349 -msgid "1. Daily Report (Today)" -msgstr "1. Daily Report (Today)" +#: TimeTrackerCLI.py:486 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to move:" +msgstr "" +"\n" +"Select a task from '{name}' to move:" -#: TimeTrackerCLI.py:350 -msgid "2. Daily Report (Specific Day)" -msgstr "2. Daily Report (Specific Day)" +#: TimeTrackerCLI.py:494 +msgid "" +"\n" +"Select the destination main project:" +msgstr "" +"\n" +"Select the destination main project:" -#: TimeTrackerCLI.py:351 -msgid "3. Date Range Report" -msgstr "3. Date Range Report" +#: TimeTrackerCLI.py:499 +msgid "Enter the number of the destination main project: " +msgstr "Enter the number of the destination main project: " -#: TimeTrackerCLI.py:352 -msgid "4. Detailed Sub-Project Report" -msgstr "4. Detailed Sub-Project Report" +#: TimeTrackerCLI.py:505 +#, python-brace-format +msgid "" +"Successfully moved '{task_name}' from '{source_main_project}' to " +"'{dest_main_project}'." +msgstr "" +"Successfully moved '{task_name}' from '{source_main_project}' to " +"'{dest_main_project}'." -#: TimeTrackerCLI.py:353 -msgid "5. Detailed Main-Project Report" -msgstr "5. Detailed Main-Project Report" +#: TimeTrackerCLI.py:507 +#, python-brace-format +msgid "Error: {message}" +msgstr "Error: {message}" -#: TimeTrackerCLI.py:359 -msgid "\n--- Generate Daily Report (Today) ---" -msgstr "\n--- Generate Daily Report (Today) ---" +#: TimeTrackerCLI.py:514 +msgid "" +"\n" +"--- List Inactive Tasks ---" +msgstr "" +"\n" +"--- List Inactive Tasks ---" -#: TimeTrackerCLI.py:363 -msgid "\n--- Generate Daily Report for a specific Day ---" -msgstr "\n--- Generate Daily Report for a specific Day ---" +#: TimeTrackerCLI.py:516 +msgid "Enter the number of weeks without activity (e.g., 4): " +msgstr "Enter the number of weeks without activity (e.g., 4): " -#: TimeTrackerCLI.py:364 -msgid "Enter the date (YYYY-MM-DD): " -msgstr "Enter the date (YYYY-MM-DD): " +#: TimeTrackerCLI.py:524 +#, python-brace-format +msgid "" +"\n" +"Inactive Tasks (>{weeks} weeks):" +msgstr "" +"\n" +"Inactive Tasks (>{weeks} weeks):" -#: TimeTrackerCLI.py:369 -msgid "Invalid date format. Please use YYYY-MM-DD." -msgstr "Invalid date format. Please use YYYY-MM-DD." +#: TimeTrackerCLI.py:527 +#, python-brace-format +msgid " Task: {name}" +msgstr " Task: {name}" -#: TimeTrackerCLI.py:371 -msgid "\n--- Generate Report for a Date Range ---" -msgstr "\n--- Generate Report for a Date Range ---" +#: TimeTrackerCLI.py:531 sl/SL_Menu.py:1118 +#, python-brace-format +msgid "No tasks found inactive for more than {weeks} weeks." +msgstr "No tasks found inactive for more than {weeks} weeks." -#: TimeTrackerCLI.py:373 -msgid "Enter the start date (YYYY-MM-DD): " -msgstr "Enter the start date (YYYY-MM-DD): " +#: TimeTrackerCLI.py:537 +msgid "" +"\n" +"--- List All Closed Tasks ---" +msgstr "" +"\n" +"--- List All Closed Tasks ---" +#: TimeTrackerCLI.py:543 sl/SL_Menu.py:1143 sl/SL_Menu.py:1166 +msgid "No closed tasks found." +msgstr "No closed tasks found." -#: TimeTrackerCLI.py:375 -msgid "Enter the end date (YYYY-MM-DD): " -msgstr "Enter the end date (YYYY-MM-DD): " +#: TimeTrackerCLI.py:547 +msgid "" +"\n" +"--- Delete All Closed Tasks ---" +msgstr "" +"\n" +"--- Delete All Closed Tasks ---" -#: TimeTrackerCLI.py:377 -msgid "Error: The start date cannot be after the end date." -msgstr "Error: The start date cannot be after the end date." +#: TimeTrackerCLI.py:548 +msgid "Are you sure you want to delete ALL closed tasks? (y/n): " +msgstr "Are you sure you want to delete ALL closed tasks? (y/n): " -#: TimeTrackerCLI.py:382 -msgid "\n--- Detailed Sub-Project Report ---" -msgstr "\n--- Detailed Sub-Project Report ---" +#: TimeTrackerCLI.py:551 +#, python-brace-format +msgid "{count} closed tasks were deleted." +msgstr "{count} closed tasks were deleted." -#: TimeTrackerCLI.py:384 TimeTrackerCLI.py:407 -msgid "No projects found." -msgstr "No projects found." +#: TimeTrackerCLI.py:553 +msgid "Operation cancelled." +msgstr "Operation cancelled." -#: TimeTrackerCLI.py:397 -msgid "\nSelect the sub-project for the report:" -msgstr "\nSelect the sub-project for the report:" +#: TimeTrackerCLI.py:557 +msgid "" +"\n" +"--- Promote Task to Main-Project ---" +msgstr "" +"\n" +"--- Promote Task to Main-Project ---" -#: TimeTrackerCLI.py:405 -msgid "\n--- Detailed Main-Project Report ---" -msgstr "\n--- Detailed Main-Project Report ---" +#: TimeTrackerCLI.py:565 +msgid "Select the main project containing the task to promote:" +msgstr "Select the main project containing the task to promote:" -#: TimeTrackerCLI.py:417 -msgid "Select the main project for the report:" -msgstr "Select the main project for the report:" +#: TimeTrackerCLI.py:574 +#, python-brace-format +msgid "No tasks to promote in '{name}'." +msgstr "No tasks to promote in '{name}'." -#: TimeTrackerCLI.py:424 -msgid "Invalid choice. Please enter a number from 0 to 5." -msgstr "Invalid choice. Please enter a number from 0 to 5." +#: TimeTrackerCLI.py:577 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to promote:" +msgstr "" +"\n" +"Select a task from '{name}' to promote:" -#: TimeTrackerCLI.py:428 TimeTrackerCLI.py:469 -msgid "\n--- Settings ---" -msgstr "\n--- Settings ---" +#: TimeTrackerCLI.py:593 +msgid "" +"\n" +"--- Edit Task ---" +msgstr "" +"\n" +"--- Edit Task ---" + +#: TimeTrackerCLI.py:596 sl/SL_Menu.py:913 sl/SL_Menu.py:958 +#: sl/SL_Menu.py:1003 sl/SL_Menu.py:1049 sl/SL_Menu.py:1198 sl/SL_Menu.py:1328 +#: sl/SL_Menu.py:1487 sl/SL_Menu.py:1677 +msgid "No open projects found." +msgstr "No open projects found." + +#: TimeTrackerCLI.py:609 +#, python-brace-format +msgid "No open tasks in '{name}'." +msgstr "No open tasks in '{name}'." + +#: TimeTrackerCLI.py:612 +msgid "Select a task to edit:" +msgstr "Select a task to edit:" + +#: TimeTrackerCLI.py:616 +msgid "Enter the number: " +msgstr "Enter the number: " + +#: TimeTrackerCLI.py:623 +#, python-brace-format +msgid "New name (press Enter to keep '{name}'): " +msgstr "New name (press Enter to keep '{name}'): " + +#: TimeTrackerCLI.py:624 +#, python-brace-format +msgid "New due date (YYYY-MM-DD, current: '{due}', enter '-' to clear): " +msgstr "New due date (YYYY-MM-DD, current: '{due}', enter '-' to clear): " + +#: TimeTrackerCLI.py:627 +#, python-brace-format +msgid "Is this for today? (current: {current}, y/n, press Enter to keep): " +msgstr "Is this for today? (current: {current}, y/n, press Enter to keep): " + +#: TimeTrackerCLI.py:630 +#, python-brace-format +msgid "Current Note: {note}" +msgstr "Current Note: {note}" + +#: TimeTrackerCLI.py:631 +msgid "New note (press Enter to keep current): " +msgstr "New note (press Enter to keep current): " + +#: TimeTrackerCLI.py:635 +#, python-brace-format +msgid "Is this task done? (current: {current}, y/n, press Enter to keep): " +msgstr "Is this task done? (current: {current}, y/n, press Enter to keep): " + +#: TimeTrackerCLI.py:639 sl/SL_Menu.py:1834 +msgid "Task updated successfully." +msgstr "Task updated successfully." + +#: TimeTrackerCLI.py:641 +msgid "Error updating task." +msgstr "Error updating task." + +#: TimeTrackerCLI.py:643 +msgid "Invalid input." +msgstr "Invalid input." + +#: TimeTrackerCLI.py:648 +msgid "Invalid choice. Please enter a number from 0 to 11." +msgstr "Invalid choice. Please enter a number from 0 to 11." + +#: TimeTrackerCLI.py:653 +msgid "" +"\n" +"--- Settings ---" +msgstr "" +"\n" +"--- Settings ---" -#: TimeTrackerCLI.py:429 TimeTrackerCLI.py:562 +#: TimeTrackerCLI.py:654 sl/SL_Menu.py:870 msgid "1. Change Language" msgstr "1. Change Language" +#: TimeTrackerCLI.py:655 sl/SL_Menu.py:871 +msgid "2. Restore Previous Version" +msgstr "2. Restore Previous Version" + +#: TimeTrackerCLI.py:656 sl/SL_Menu.py:872 msgid "3. Change Data Storage Location" msgstr "3. Change Data Storage Location" -#: TimeTrackerCLI.py:430 -msgid "2. Restore Previous Version" -msgstr "2. Restore Previous Version" +#: TimeTrackerCLI.py:657 sl/SL_Menu.py:874 +msgid "4. Change Streamlit Port" +msgstr "4. Change Streamlit Port" -msgid "Invalid choice. Please enter a number from 0 to 3." -msgstr "Invalid choice. Please enter a number from 0 to 3." +#: TimeTrackerCLI.py:659 TimeTrackerCLI.py:698 TimeTrackerCLI.py:808 +#: sl/SL_Menu.py:881 +msgid "0. Back to Main Menu" +msgstr "0. Back to Main Menu" -#: TimeTrackerCLI.py:446 TimeTrackerCLI.py:545 -msgid "\n--- Language Settings ---" -msgstr "\n--- Language Settings ---" +#: TimeTrackerCLI.py:682 +msgid "Invalid choice. Please enter a number from 0 to 4." +msgstr "Invalid choice. Please enter a number from 0 to 4." + +#: TimeTrackerCLI.py:687 +msgid "" +"\n" +"--- Language Settings ---" +msgstr "" +"\n" +"--- Language Settings ---" -#: TimeTrackerCLI.py:449 TimeTrackerCLI.py:548 +#: TimeTrackerCLI.py:692 msgid "No additional languages found." msgstr "No additional languages found." -#: TimeTrackerCLI.py:458 TimeTrackerCLI.py:587 +#: TimeTrackerCLI.py:716 +#, python-brace-format msgid "Language changed to '{lang}'. Please restart the application." msgstr "Language changed to '{lang}'. Please restart the application." -#: TimeTrackerCLI.py:460 TimeTrackerCLI.py:590 +#: TimeTrackerCLI.py:719 msgid "Invalid choice." msgstr "Invalid choice." -#: TimeTrackerCLI.py:462 TimeTrackerCLI.py:592 +#: TimeTrackerCLI.py:721 msgid "Invalid input. Please enter a number." msgstr "Invalid input. Please enter a number." -msgid "\n--- Data Storage Settings ---" -msgstr "\n--- Data Storage Settings ---" +#: TimeTrackerCLI.py:725 +msgid "" +"\n" +"--- Data Storage Settings ---" +msgstr "" +"\n" +"--- Data Storage Settings ---" +#: TimeTrackerCLI.py:726 +#, python-brace-format msgid "Current data file: {path}" msgstr "Current data file: {path}" +#: TimeTrackerCLI.py:728 msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." msgstr "Enter the new path for the data file (e.g., /path/to/my_data.json)." +#: TimeTrackerCLI.py:729 msgid "Leave empty to cancel." msgstr "Leave empty to cancel." +#: TimeTrackerCLI.py:730 msgid "New Path: " msgstr "New Path: " +#: TimeTrackerCLI.py:738 sl/SL_Menu.py:1974 +#, python-brace-format msgid "Error: The directory '{dir}' does not exist." msgstr "Error: The directory '{dir}' does not exist." +#: TimeTrackerCLI.py:752 msgid "Storage location updated." msgstr "Storage location updated." +#: TimeTrackerCLI.py:756 msgid "Do you want to move the existing data to the new location? (y/n): " msgstr "Do you want to move the existing data to the new location? (y/n): " +#: TimeTrackerCLI.py:760 sl/SL_Menu.py:1985 msgid "Data moved successfully." msgstr "Data moved successfully." +#: TimeTrackerCLI.py:762 sl/SL_Menu.py:1987 +#, python-brace-format msgid "Error moving data: {error}" msgstr "Error moving data: {error}" +#: TimeTrackerCLI.py:764 tt/TimeTracker.py:117 +msgid "Please restart the application for the changes to take effect." +msgstr "Please restart the application for the changes to take effect." + +#: TimeTrackerCLI.py:767 +#, python-brace-format msgid "Error updating configuration: {error}" msgstr "Error updating configuration: {error}" -#: TimeTrackerCLI.py:508 -msgid "\n--- Update Available ---" -msgstr "\n--- Update Available ---" +#: TimeTrackerCLI.py:771 +msgid "" +"\n" +"--- Streamlit Port Settings ---" +msgstr "" +"\n" +"--- Streamlit Port Settings ---" + +#: TimeTrackerCLI.py:781 +#, python-brace-format +msgid "Current Streamlit Port: {port}" +msgstr "Current Streamlit Port: {port}" + +#: TimeTrackerCLI.py:783 +msgid "Enter new port (or press Enter to keep current): " +msgstr "Enter new port (or press Enter to keep current): " + +#: TimeTrackerCLI.py:792 +#, python-brace-format +msgid "" +"Port updated to {port}. Please restart Streamlit for changes to take effect." +msgstr "" +"Port updated to {port}. Please restart Streamlit for changes to take effect." + +#: TimeTrackerCLI.py:800 +msgid "" +"\n" +"--- Reporting ---" +msgstr "" +"\n" +"--- Reporting ---" + +#: TimeTrackerCLI.py:801 +msgid "1. Daily Report (Today)" +msgstr "1. Daily Report (Today)" + +#: TimeTrackerCLI.py:802 +msgid "2. Daily Report (Specific Day)" +msgstr "2. Daily Report (Specific Day)" + +#: TimeTrackerCLI.py:803 +msgid "3. Date Range Report" +msgstr "3. Date Range Report" + +#: TimeTrackerCLI.py:804 +msgid "4. Detailed Task Report" +msgstr "4. Detailed Task Report" + +#: TimeTrackerCLI.py:805 +msgid "5. Detailed Main-Project Report" +msgstr "5. Detailed Main-Project Report" + +#: TimeTrackerCLI.py:806 +msgid "6. Detailed Daily Report" +msgstr "6. Detailed Daily Report" + +#: TimeTrackerCLI.py:815 +msgid "" +"\n" +"--- Generate Daily Report (Today) ---" +msgstr "" +"\n" +"--- Generate Daily Report (Today) ---" + +#: TimeTrackerCLI.py:820 +msgid "" +"\n" +"--- Generate Daily Report for a specific Day ---" +msgstr "" +"\n" +"--- Generate Daily Report for a specific Day ---" + +#: TimeTrackerCLI.py:821 +msgid "Enter the date (YYYY-MM-DD): " +msgstr "Enter the date (YYYY-MM-DD): " + +#: TimeTrackerCLI.py:827 TimeTrackerCLI.py:842 TimeTrackerCLI.py:903 +msgid "Invalid date format. Please use YYYY-MM-DD." +msgstr "Invalid date format. Please use YYYY-MM-DD." + +#: TimeTrackerCLI.py:830 +msgid "" +"\n" +"--- Generate Report for a Date Range ---" +msgstr "" +"\n" +"--- Generate Report for a Date Range ---" + +#: TimeTrackerCLI.py:831 +msgid "Enter the start date (YYYY-MM-DD): " +msgstr "Enter the start date (YYYY-MM-DD): " + +#: TimeTrackerCLI.py:832 +msgid "Enter the end date (YYYY-MM-DD): " +msgstr "Enter the end date (YYYY-MM-DD): " + +#: TimeTrackerCLI.py:837 sl/SL_Menu.py:2227 +msgid "Error: The start date cannot be after the end date." +msgstr "Error: The start date cannot be after the end date." + +#: TimeTrackerCLI.py:844 +msgid "" +"\n" +"--- Detailed Task Report ---" +msgstr "" +"\n" +"--- Detailed Task Report ---" + +#: TimeTrackerCLI.py:847 TimeTrackerCLI.py:880 sl/SL_Menu.py:1249 +#: sl/SL_Menu.py:1296 sl/SL_Menu.py:1435 sl/SL_Menu.py:2245 sl/SL_Menu.py:2304 +msgid "No projects found." +msgstr "No projects found." + +#: TimeTrackerCLI.py:864 +msgid "" +"\n" +"Select the task for the report:" +msgstr "" +"\n" +"Select the task for the report:" + +#: TimeTrackerCLI.py:877 +msgid "" +"\n" +"--- Detailed Main-Project Report ---" +msgstr "" +"\n" +"--- Detailed Main-Project Report ---" + +#: TimeTrackerCLI.py:885 +msgid "Select the main project for the report:" +msgstr "Select the main project for the report:" + +#: TimeTrackerCLI.py:896 +msgid "" +"\n" +"--- Detailed Daily Report ---" +msgstr "" +"\n" +"--- Detailed Daily Report ---" + +#: TimeTrackerCLI.py:897 +msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " +msgstr "Enter the date (YYYY-MM-DD) or press Enter for today: " + +#: TimeTrackerCLI.py:911 TimeTrackerCLI.py:1042 +msgid "Invalid choice. Please enter a number from 0 to 6." +msgstr "Invalid choice. Please enter a number from 0 to 6." + +#: TimeTrackerCLI.py:919 +msgid "" +"\n" +"--- Update Available ---" +msgstr "" +"\n" +"--- Update Available ---" -#: TimeTrackerCLI.py:509 +#: TimeTrackerCLI.py:920 msgid "A downloaded update is ready to be installed." msgstr "A downloaded update is ready to be installed." -#: TimeTrackerCLI.py:510 +#: TimeTrackerCLI.py:921 msgid "0. Skip update for now" msgstr "0. Skip update for now" -#: TimeTrackerCLI.py:511 +#: TimeTrackerCLI.py:922 msgid "1. Install update now" msgstr "1. Install update now" -#: TimeTrackerCLI.py:512 +#: TimeTrackerCLI.py:923 msgid "Enter your choice (0 or 1): " msgstr "Enter your choice (0 or 1): " -#: TimeTrackerCLI.py:515 +#: TimeTrackerCLI.py:927 msgid "Application is restarting to complete the update..." msgstr "Application is restarting to complete the update..." -#: TimeTrackerCLI.py:518 +#: TimeTrackerCLI.py:931 msgid "Update installation skipped. The application will start normally." msgstr "Update installation skipped. The application will start normally." -#: TimeTrackerCLI.py:520 +#: TimeTrackerCLI.py:933 msgid "" "Invalid choice. Update installation skipped. The application will start " "normally." @@ -796,410 +1121,1626 @@ msgstr "" "Invalid choice. Update installation skipped. The application will start " "normally." -#: TimeTrackerCLI.py:525 -msgid "\n=== Time Control {version} ===" -msgstr "\n=== Time Control {version} ===" +#: TimeTrackerCLI.py:940 +#, python-brace-format +msgid "" +"\n" +"=== Time Control {version} ===" +msgstr "" +"\n" +"=== Time Control {version} ===" -#: TimeTrackerCLI.py:526 +#: TimeTrackerCLI.py:941 msgid "--- Main Menu ---" msgstr "--- Main Menu ---" -msgid "1. Start work on sub-project" -msgstr "1. Start work on sub-project" +#: TimeTrackerCLI.py:942 +msgid "1. Start work on task" +msgstr "1. Start work on task" -#: TimeTrackerCLI.py:528 +#: TimeTrackerCLI.py:943 msgid "2. Show current work" msgstr "2. Show current work" -#: TimeTrackerCLI.py:529 +#: TimeTrackerCLI.py:944 msgid "3. Stop current work" msgstr "3. Stop current work" -#: TimeTrackerCLI.py:531 -msgid "4. Handle projects and sub-projects" -msgstr "4. Handle projects and sub-projects" +#: TimeTrackerCLI.py:946 +msgid "4. Handle projects and tasks" +msgstr "4. Handle projects and tasks" -#: TimeTrackerCLI.py:532 +#: TimeTrackerCLI.py:947 msgid "5. Reporting" msgstr "5. Reporting" -#: TimeTrackerCLI.py:533 +#: TimeTrackerCLI.py:948 msgid "6. Settings" msgstr "6. Settings" -#: TimeTrackerCLI.py:535 +#: TimeTrackerCLI.py:950 msgid "0. Exit" msgstr "0. Exit" -#: TimeTrackerCLI.py:541 -msgid "\n--- Start Work on a Sub-Project ---" -msgstr "\n--- Start Work on a Sub-Project ---" +#: TimeTrackerCLI.py:957 +msgid "" +"\n" +"--- Start Work on a Task ---" +msgstr "" +"\n" +"--- Start Work on a Task ---" + +#: TimeTrackerCLI.py:963 +msgid "Select a main project:" +msgstr "Select a main project:" -#: TimeTrackerCLI.py:498 -msgid "Select a sub-project from '{name}':" -msgstr "Select a sub-project from '{name}':" +#: TimeTrackerCLI.py:974 +#, python-brace-format +msgid "No open tasks found for '{name}' to start work on." +msgstr "No open tasks found for '{name}' to start work on." -#: TimeTrackerCLI.py:507 -msgid "Work started on '{sub_name}' in project '{main_name}'." -msgstr "Work started on '{sub_name}' in project '{main_name}'." +#: TimeTrackerCLI.py:977 +#, python-brace-format +msgid "Select a task from '{name}':" +msgstr "Select a task from '{name}':" + +#: TimeTrackerCLI.py:987 sl/SL_Menu.py:1884 +#, python-brace-format +msgid "Work started on '{task_name}' in project '{main_name}'." +msgstr "Work started on '{task_name}' in project '{main_name}'." +#: TimeTrackerCLI.py:989 sl/SL_Menu.py:1888 msgid "Error starting work." msgstr "Error starting work." -#: TimeTrackerCLI.py:514 -msgid "\n--- Current Active Work ---" -msgstr "\n--- Current Active Work ---" +#: TimeTrackerCLI.py:996 +msgid "" +"\n" +"--- Current Active Work ---" +msgstr "" +"\n" +"--- Current Active Work ---" -#: TimeTrackerCLI.py:523 +#: TimeTrackerCLI.py:1006 msgid "You are currently working on:" msgstr "You are currently working on:" -#: TimeTrackerCLI.py:524 +#: TimeTrackerCLI.py:1007 +#, python-brace-format msgid " Main Project: {name}" msgstr " Main Project: {name}" -#: TimeTrackerCLI.py:525 -msgid " Sub-Project: {name}" -msgstr " Sub-Project: {name}" +#: TimeTrackerCLI.py:1008 +#, python-brace-format +msgid " Task: {name}" +msgstr " Task: {name}" -#: TimeTrackerCLI.py:526 +#: TimeTrackerCLI.py:1009 +#, python-brace-format msgid " Started at: {date}" msgstr " Started at: {date}" -#: TimeTrackerCLI.py:527 +#: TimeTrackerCLI.py:1010 +#, python-brace-format msgid " Duration: {duration}" msgstr " Duration: {duration}" -#: TimeTrackerCLI.py:529 +#: TimeTrackerCLI.py:1012 sl/SL_Menu.py:373 sl/SL_Menu.py:1910 msgid "No active work session." msgstr "No active work session." -#: TimeTrackerCLI.py:532 -msgid "\n--- Stop Work ---" -msgstr "\n--- Stop Work ---" +#: TimeTrackerCLI.py:1016 +msgid "" +"\n" +"--- Stop Work ---" +msgstr "" +"\n" +"--- Stop Work ---" -#: TimeTrackerCLI.py:534 +#: TimeTrackerCLI.py:1018 sl/SL_Menu.py:341 msgid "Work session stopped successfully." msgstr "Work session stopped successfully." -#: TimeTrackerCLI.py:536 +#: TimeTrackerCLI.py:1020 sl/SL_Menu.py:343 msgid "No active work session to stop." msgstr "No active work session to stop." -#: TimeTrackerCLI.py:598 -msgid "\nChecking for updates..." -msgstr "\nChecking for updates..." +#: TimeTrackerCLI.py:1034 +msgid "" +"\n" +"Checking for updates..." +msgstr "" +"\n" +"Checking for updates..." -#: TimeTrackerCLI.py:602 +#: TimeTrackerCLI.py:1038 msgid "Exiting application. Goodbye!" msgstr "Exiting application. Goodbye!" -#: TimeTrackerCLI.py:605 -msgid "Invalid choice. Please enter a number from 0 to 6." -msgstr "Invalid choice. Please enter a number from 0 to 6." +#: update.py:35 +msgid "" +"Warning: Update check skipped. 'github_repo' not found in config.json or " +"file is invalid." +msgstr "" +"Warning: Update check skipped. 'github_repo' not found in config.json or " +"file is invalid." + +#: update.py:49 +#, python-brace-format +msgid "A new version ({version}) is available." +msgstr "A new version ({version}) is available." + +#: update.py:55 +msgid "Error: Download URL for the new version not found." +msgstr "Error: Download URL for the new version not found." + +#: update.py:59 +#, python-brace-format +msgid "Error checking for updates: {error}" +msgstr "Error checking for updates: {error}" + +#: update.py:61 +#, python-brace-format +msgid "An unexpected error occurred while checking for updates: {error}" +msgstr "An unexpected error occurred while checking for updates: {error}" + +#: update.py:73 +msgid "Downloading update..." +msgstr "Downloading update..." + +#: update.py:79 +msgid "Download complete. The update will be installed on the next start." +msgstr "Download complete. The update will be installed on the next start." + +#: update.py:82 +#, python-brace-format +msgid "Error downloading the update: {error}" +msgstr "Error downloading the update: {error}" + +#: update.py:108 +msgid "Creating backup of current version before update..." +msgstr "Creating backup of current version before update..." + +#: update.py:118 +#, python-brace-format +msgid "Backup created successfully as {filename}." +msgstr "Backup created successfully as {filename}." + +#: update.py:120 +#, python-brace-format +msgid "Warning: Could not create backup. Error: {error}" +msgstr "Warning: Could not create backup. Error: {error}" + +#: update.py:122 +msgid "Installing update..." +msgstr "Installing update..." + +#: update.py:142 +#, python-brace-format +msgid "Skipping protected file: {filename}. It will not be overwritten." +msgstr "Skipping protected file: {filename}. It will not be overwritten." + +#: update.py:151 +msgid "Update installed successfully." +msgstr "Update installed successfully." + +#: update.py:153 +#, python-brace-format +msgid "Error during update installation: {error}" +msgstr "Error during update installation: {error}" + +#: update.py:168 +#, python-brace-format +msgid "Error: No previous version backup '{filename}' found." +msgstr "Error: No previous version backup '{filename}' found." + +#: update.py:171 +#, python-brace-format +msgid "Restoring previous version from '{filename}'..." +msgstr "Restoring previous version from '{filename}'..." + +#: update.py:192 +#, python-brace-format +msgid "" +"Skipping user data file: {filename}. It will not be overwritten during " +"restore." +msgstr "" +"Skipping user data file: {filename}. It will not be overwritten during " +"restore." + +#: update.py:199 +msgid "Previous version restored successfully." +msgstr "Previous version restored successfully." + +#: update.py:201 +msgid "Restarting application to apply changes..." +msgstr "Restarting application to apply changes..." + +#: update.py:204 +#, python-brace-format +msgid "Error during restoration: {error}" +msgstr "Error during restoration: {error}" + +#: update.py:205 +#, python-brace-format +msgid "The backup file '{filename}' was not deleted." +msgstr "The backup file '{filename}' was not deleted." + +#: update.py:212 +msgid "Error: Could not import TimeTracker to get the current version." +msgstr "Error: Could not import TimeTracker to get the current version." + +#: update.py:215 +msgid "Checking for updates..." +msgstr "Checking for updates..." + +#: update.py:222 +msgid "No updates available." +msgstr "No updates available." + +#: tt/TimeTracker.py:90 +#, python-brace-format +msgid "Warning: Could not read {file}. Error: {error}" +msgstr "Warning: Could not read {file}. Error: {error}" + +#: tt/TimeTracker.py:105 +msgid "Some required packages are missing. Attempting to install them..." +msgstr "Some required packages are missing. Attempting to install them..." + +#: tt/TimeTracker.py:108 +#, python-brace-format +msgid "Installing {package}..." +msgstr "Installing {package}..." + +#: tt/TimeTracker.py:112 +#, python-brace-format +msgid "Failed to install {package}. Continuing without it." +msgstr "Failed to install {package}. Continuing without it." + +#: tt/TimeTracker.py:116 +msgid "" +"\n" +"Dependencies installed successfully." +msgstr "" +"\n" +"Dependencies installed successfully." + +#: tt/TimeTracker.py:120 +#, python-brace-format +msgid "" +"\n" +"Warning: Some dependencies could not be installed: {packages}" +msgstr "" +"\n" +"Warning: Some dependencies could not be installed: {packages}" + +#: tt/TimeTracker.py:122 +#, python-brace-format +msgid "An unexpected error occurred during dependency check: {error}" +msgstr "An unexpected error occurred during dependency check: {error}" + +#: tt/TimeTracker.py:229 +msgid "Info: Report content has been copied to the clipboard." +msgstr "Info: Report content has been copied to the clipboard." + +#: tt/TimeTracker.py:231 +#, python-brace-format +msgid "Warning: Could not copy to clipboard. Error: {error}" +msgstr "Warning: Could not copy to clipboard. Error: {error}" -#: update.py:24 +#: tt/TimeTracker.py:233 msgid "" -"Warning: Update check skipped. 'github_repo' not found in config.json or " -"file is invalid." +"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " +"install pyperclip`)." msgstr "" -"Warning: Update check skipped. 'github_repo' not found in config.json or " -"file is invalid." +"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " +"install pyperclip`)." -#: update.py:38 -msgid "A new version ({version}) is available." -msgstr "A new version ({version}) is available." +#: tt/TimeTracker.py:253 +#, python-brace-format +msgid "{hours} hours ({dlp} DLP)" +msgstr "{hours} hours ({dlp} DLP)" -#: update.py:43 -msgid "Error: Download URL for the new version not found." -msgstr "Error: Download URL for the new version not found." +#: tt/TimeTracker.py:846 tt/TimeTracker.py:886 +#, python-brace-format +msgid "Source main project '{name}' not found." +msgstr "Source main project '{name}' not found." -#: update.py:47 -msgid "Error checking for updates: {error}" -msgstr "Error checking for updates: {error}" +#: tt/TimeTracker.py:848 +#, python-brace-format +msgid "Destination main project '{name}' not found." +msgstr "Destination main project '{name}' not found." -#: update.py:49 -msgid "An unexpected error occurred while checking for updates: {error}" -msgstr "An unexpected error occurred while checking for updates: {error}" +#: tt/TimeTracker.py:860 +#, python-brace-format +msgid "Task '{task_name}' moved successfully." +msgstr "Task '{task_name}' moved successfully." -#: update.py:61 -msgid "Downloading update..." -msgstr "Downloading update..." +#: tt/TimeTracker.py:861 tt/TimeTracker.py:896 tt/TimeTracker.py:1373 +#, python-brace-format +msgid "Task '{task_name}' not found in '{main_name}'." +msgstr "Task '{task_name}' not found in '{main_name}'." -#: update.py:67 -msgid "Download complete. The update will be installed on the next start." -msgstr "Download complete. The update will be installed on the next start." +#: tt/TimeTracker.py:880 +#, python-brace-format +msgid "A main project named '{name}' already exists." +msgstr "A main project named '{name}' already exists." -#: update.py:70 -msgid "Error downloading the update: {error}" -msgstr "Error downloading the update: {error}" +#: tt/TimeTracker.py:905 +msgid "General" +msgstr "General" -#: update.py:112 -msgid "Creating backup of current version before update..." -msgstr "Creating backup of current version before update..." +#: tt/TimeTracker.py:909 +#, python-brace-format +msgid "Task '{task_name}' was promoted to a new main project." +msgstr "Task '{task_name}' was promoted to a new main project." -#: update.py:121 -msgid "Backup created successfully as {filename}." -msgstr "Backup created successfully as {filename}." +#: tt/TimeTracker.py:936 +#, python-brace-format +msgid "Main project to demote '{name}' not found." +msgstr "Main project to demote '{name}' not found." -#: update.py:123 -msgid "Warning: Could not create backup. Error: {error}" -msgstr "Warning: Could not create backup. Error: {error}" +#: tt/TimeTracker.py:938 +#, python-brace-format +msgid "New parent main project '{name}' not found." +msgstr "New parent main project '{name}' not found." -#: update.py:125 -msgid "Installing update..." -msgstr "Installing update..." +#: tt/TimeTracker.py:963 +#, python-brace-format +msgid "" +"Main project '{demoted_name}' was demoted to a sub-project under " +"'{parent_name}'." +msgstr "" +"Main project '{demoted_name}' was demoted to a sub-project under " +"'{parent_name}'." -#: update.py:143 -msgid "Skipping protected file: {filename}. It will not be overwritten." -msgstr "Skipping protected file: {filename}. It will not be overwritten." +#: tt/TimeTracker.py:1042 +msgid "Email import is not enabled." +msgstr "Email import is not enabled." -#: update.py:152 -msgid "Update installed successfully." -msgstr "Update installed successfully." +#: tt/TimeTracker.py:1051 +msgid "Email settings are incomplete." +msgstr "Email settings are incomplete." -#: update.py:154 -msgid "Error during update installation: {error}" -msgstr "Error during update installation: {error}" +#: tt/TimeTracker.py:1064 +msgid "Error searching emails." +msgstr "Error searching emails." -#: update.py:164 -msgid "Error: No previous version backup '{filename}' found." -msgstr "Error: No previous version backup '{filename}' found." +#: tt/TimeTracker.py:1079 +msgid "No Subject" +msgstr "No Subject" -#: update.py:167 -msgid "Restoring previous version from '{filename}'..." -msgstr "Restoring previous version from '{filename}'..." +#: tt/TimeTracker.py:1139 +msgid "Unknown Task" +msgstr "Unknown Task" -#: update.py:182 -msgid "" -"Skipping user data file: {filename}. It will not be overwritten during " -"restore." -msgstr "" -"Skipping user data file: {filename}. It will not be overwritten during " -"restore." +#: tt/TimeTracker.py:1330 +#, python-brace-format +msgid "- {name}: {hours} hours" +msgstr "- {name}: {hours} hours" -#: update.py:188 -msgid "Previous version restored successfully." -msgstr "Previous version restored successfully." +#: tt/TimeTracker.py:1338 +#, python-brace-format +msgid "## {name} ({hours} hours)\n" +msgstr "## {name} ({hours} hours)\n" -#: update.py:190 -msgid "Restarting application to apply changes..." -msgstr "Restarting application to apply changes..." +#: tt/TimeTracker.py:1347 +#, python-brace-format +msgid "# Daily Time Report: {date}\n" +msgstr "# Daily Time Report: {date}\n" -#: update.py:192 -msgid "Error during restoration: {error}" -msgstr "Error during restoration: {error}" +#: tt/TimeTracker.py:1348 +#, python-brace-format +msgid "" +"\n" +"**Total Daily Time: {hours} hours**" +msgstr "" +"\n" +"**Total Daily Time: {hours} hours**" -#: update.py:193 -msgid "The backup file '{filename}' was not deleted." -msgstr "The backup file '{filename}' was not deleted." +#: tt/TimeTracker.py:1352 tt/TimeTracker.py:1665 +#, python-brace-format +msgid "No time tracked for {date}." +msgstr "No time tracked for {date}." -msgid "# Detailed Daily Report: {date}" -msgstr "# Detailed Daily Report: {date}" +#: tt/TimeTracker.py:1369 tt/TimeTracker.py:1464 +#, python-brace-format +msgid "Main project '{name}' not found." +msgstr "Main project '{name}' not found." +#: tt/TimeTracker.py:1377 +#, python-brace-format +msgid "No time entries found for task '{task_name}'." +msgstr "No time entries found for task '{task_name}'." + +#: tt/TimeTracker.py:1410 tt/TimeTracker.py:1640 msgid "now" msgstr "now" -msgid "\nNo time tracked for {date}." -msgstr "\nNo time tracked for {date}." +#: tt/TimeTracker.py:1411 sl/SL_Menu.py:1908 +msgid "Duration" +msgstr "Duration" -msgid "# Detailed Report for Sub-Project: {name}" -msgstr "# Detailed Report for Sub-Project: {name}" +#: tt/TimeTracker.py:1415 +#, python-brace-format +msgid "# Detailed Report for Task: {name}" +msgstr "# Detailed Report for Task: {name}" +#: tt/TimeTracker.py:1416 +#, python-brace-format msgid "Part of Main Project: {name}" msgstr "Part of Main Project: {name}" +#: tt/TimeTracker.py:1419 msgid "Active (currently running)" msgstr "Active (currently running)" +#: tt/TimeTracker.py:1419 tt/TimeTracker.py:1516 msgid "Inactive" msgstr "Inactive" +#: tt/TimeTracker.py:1420 tt/TimeTracker.py:1517 msgid "Status" msgstr "Status" +#: tt/TimeTracker.py:1422 tt/TimeTracker.py:1519 msgid "First entry" msgstr "First entry" +#: tt/TimeTracker.py:1424 tt/TimeTracker.py:1521 msgid "Last activity" msgstr "Last activity" +#: tt/TimeTracker.py:1426 tt/TimeTracker.py:1523 msgid "Total recorded time" msgstr "Total recorded time" +#: tt/TimeTracker.py:1427 tt/TimeTracker.py:1525 msgid "Total work sessions" msgstr "Total work sessions" +#: tt/TimeTracker.py:1431 tt/TimeTracker.py:1529 msgid "Average session duration" msgstr "Average session duration" +#: tt/TimeTracker.py:1434 tt/TimeTracker.py:1532 msgid "Weekday Distribution" msgstr "Weekday Distribution" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Monday" msgstr "Monday" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Tuesday" msgstr "Tuesday" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Wednesday" msgstr "Wednesday" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Thursday" msgstr "Thursday" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Friday" msgstr "Friday" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Saturday" msgstr "Saturday" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 msgid "Sunday" msgstr "Sunday" +#: tt/TimeTracker.py:1444 msgid "Daily Breakdown" msgstr "Daily Breakdown" -msgid "Duration" -msgstr "Duration" - +#: tt/TimeTracker.py:1513 +#, python-brace-format msgid "# Detailed Report for Main Project: {name}" msgstr "# Detailed Report for Main Project: {name}" -msgid "Number of sub-projects" -msgstr "Number of sub-projects" +#: tt/TimeTracker.py:1516 +#, python-brace-format +msgid "Active (working on '{task_name}')" +msgstr "Active (working on '{task_name}')" -msgid "Active (working on '{sub_name}')" -msgstr "Active (working on '{sub_name}')" +#: tt/TimeTracker.py:1524 +msgid "Number of tasks" +msgstr "Number of tasks" -msgid "Sub-Project Breakdown" -msgstr "Sub-Project Breakdown" +#: tt/TimeTracker.py:1543 +msgid "Task Breakdown" +msgstr "Task Breakdown" +#: tt/TimeTracker.py:1552 +#, python-brace-format msgid "{num_sessions} sessions" msgstr "{num_sessions} sessions" -msgid "6. Detailed Daily Report" -msgstr "6. Detailed Daily Report" +#: tt/TimeTracker.py:1605 +#, python-brace-format +msgid "# Time Report: {start_date} to {end_date}\n" +msgstr "# Time Report: {start_date} to {end_date}\n" -msgid "\n--- Detailed Daily Report ---" -msgstr "\n--- Detailed Daily Report ---" +#: tt/TimeTracker.py:1606 +#, python-brace-format +msgid "" +"\n" +"**Total Time in Period: {total_time}**" +msgstr "" +"\n" +"**Total Time in Period: {total_time}**" -msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " -msgstr "Enter the date (YYYY-MM-DD) or press Enter for today: " +#: tt/TimeTracker.py:1610 +#, python-brace-format +msgid "No time tracked between {start_date} and {end_date}." +msgstr "No time tracked between {start_date} and {end_date}." -msgid "Stop current work" -msgstr "Stop current work" +#: tt/TimeTracker.py:1626 +#, python-brace-format +msgid "# Detailed Daily Report: {date}" +msgstr "# Detailed Daily Report: {date}" -msgid "Project Management" -msgstr "Project Management" +#: sl/SL_Menu.py:277 +msgid "New" +msgstr "New" -msgid "Reporting" -msgstr "Reporting" +#: sl/SL_Menu.py:278 +msgid "New Project" +msgstr "New Project" -msgid "Settings" -msgstr "Settings" +#: sl/SL_Menu.py:281 +msgid "New Task" +msgstr "New Task" +#: sl/SL_Menu.py:286 +msgid "Project & Task Management" +msgstr "Project & Task Management" + +#: sl/SL_Menu.py:287 sl/SL_Menu.py:780 msgid "Main Project Management" msgstr "Main Project Management" -msgid "Sub-Project Management" -msgstr "Sub-Project Management" +#: sl/SL_Menu.py:288 sl/SL_Menu.py:796 sl/SL_Menu.py:894 +msgid "Add Project" +msgstr "Add Project" + +#: sl/SL_Menu.py:291 sl/SL_Menu.py:799 sl/SL_Menu.py:1242 +msgid "List Projects" +msgstr "List Projects" + +#: sl/SL_Menu.py:292 sl/SL_Menu.py:800 sl/SL_Menu.py:1257 +msgid "Rename Project" +msgstr "Rename Project" + +#: sl/SL_Menu.py:293 sl/SL_Menu.py:801 sl/SL_Menu.py:1371 sl/SL_Menu.py:1384 +msgid "Close Project" +msgstr "Close Project" + +#: sl/SL_Menu.py:294 sl/SL_Menu.py:802 sl/SL_Menu.py:1401 sl/SL_Menu.py:1414 +msgid "Re-open Project" +msgstr "Re-open Project" + +#: sl/SL_Menu.py:295 sl/SL_Menu.py:803 sl/SL_Menu.py:1431 sl/SL_Menu.py:1445 +msgid "Delete Project" +msgstr "Delete Project" + +#: sl/SL_Menu.py:296 sl/SL_Menu.py:804 sl/SL_Menu.py:1462 +msgid "List Inactive Projects" +msgstr "List Inactive Projects" + +#: sl/SL_Menu.py:297 sl/SL_Menu.py:805 +msgid "Demote Project to Task" +msgstr "Demote Project to Task" -msgid "Add Main Project" -msgstr "Add Main Project" +#: sl/SL_Menu.py:298 sl/SL_Menu.py:806 sl/SL_Menu.py:1524 +msgid "List Completed Projects" +msgstr "List Completed Projects" -msgid "List Main Projects" -msgstr "List Main Projects" +#: sl/SL_Menu.py:300 sl/SL_Menu.py:782 sl/SL_Menu.py:817 +msgid "Task Management" +msgstr "Task Management" -msgid "Rename Main Project" -msgstr "Rename Main Project" +#: sl/SL_Menu.py:301 sl/SL_Menu.py:819 sl/SL_Menu.py:1542 sl/SL_Menu.py:1573 +#: sl/SL_Menu.py:1646 +msgid "Add Task" +msgstr "Add Task" -msgid "Close Main Project" -msgstr "Close Main Project" +#: sl/SL_Menu.py:304 sl/SL_Menu.py:822 sl/SL_Menu.py:1292 +msgid "List Tasks" +msgstr "List Tasks" -msgid "Re-open Main Project" -msgstr "Re-open Main Project" +#: sl/SL_Menu.py:305 sl/SL_Menu.py:823 sl/SL_Menu.py:1324 +msgid "Rename Task" +msgstr "Rename Task" -msgid "Delete Main Project" -msgstr "Delete Main Project" +#: sl/SL_Menu.py:306 sl/SL_Menu.py:824 sl/SL_Menu.py:909 sl/SL_Menu.py:935 +#: sl/SL_Menu.py:1114 +msgid "Close Task" +msgstr "Close Task" -msgid "List Inactive Main Projects" -msgstr "List Inactive Main Projects" +#: sl/SL_Menu.py:307 sl/SL_Menu.py:825 sl/SL_Menu.py:954 sl/SL_Menu.py:980 +msgid "Re-open Task" +msgstr "Re-open Task" -msgid "Demote Main-Project to Sub-Project" -msgstr "Demote Main-Project to Sub-Project" +#: sl/SL_Menu.py:308 sl/SL_Menu.py:826 sl/SL_Menu.py:999 sl/SL_Menu.py:1026 +msgid "Delete Task" +msgstr "Delete Task" -msgid "List Completed Main Projects" -msgstr "List Completed Main Projects" +#: sl/SL_Menu.py:309 sl/SL_Menu.py:827 sl/SL_Menu.py:1045 sl/SL_Menu.py:1081 +msgid "Move Task" +msgstr "Move Task" -msgid "Add Sub-Project" -msgstr "Add Sub-Project" +#: sl/SL_Menu.py:310 sl/SL_Menu.py:828 sl/SL_Menu.py:1100 +msgid "List Inactive Tasks" +msgstr "List Inactive Tasks" -msgid "List Sub-Projects" -msgstr "List Sub-Projects" +#: sl/SL_Menu.py:311 sl/SL_Menu.py:829 sl/SL_Menu.py:1127 +msgid "List All Closed Tasks" +msgstr "List All Closed Tasks" -msgid "Rename Sub-Project" -msgstr "Rename Sub-Project" +#: sl/SL_Menu.py:312 sl/SL_Menu.py:477 sl/SL_Menu.py:539 sl/SL_Menu.py:626 +#: sl/SL_Menu.py:830 sl/SL_Menu.py:1673 sl/SL_Menu.py:1693 sl/SL_Menu.py:1728 +msgid "Edit Task" +msgstr "Edit Task" -msgid "Close Sub-Project" -msgstr "Close Sub-Project" +#: sl/SL_Menu.py:315 sl/SL_Menu.py:833 sl/SL_Menu.py:1152 +msgid "Delete All Closed Tasks" +msgstr "Delete All Closed Tasks" -msgid "Re-open Sub-Project" -msgstr "Re-open Sub-Project" +#: sl/SL_Menu.py:316 sl/SL_Menu.py:834 sl/SL_Menu.py:1194 +msgid "Promote Task to Project" +msgstr "Promote Task to Project" -msgid "Delete Sub-Project" -msgstr "Delete Sub-Project" +#: sl/SL_Menu.py:319 +msgid "Today View" +msgstr "Today View" + +#: sl/SL_Menu.py:323 sl/SL_Menu.py:405 +msgid "Task Planning" +msgstr "Task Planning" -msgid "Move Sub-Project" -msgstr "Move Sub-Project" +#: sl/SL_Menu.py:327 sl/SL_Menu.py:655 +msgid "E-Mail Task Assignment" +msgstr "E-Mail Task Assignment" -msgid "List Inactive Sub-Projects" -msgstr "List Inactive Sub-Projects" +#: sl/SL_Menu.py:331 sl/SL_Menu.py:473 sl/SL_Menu.py:535 sl/SL_Menu.py:622 +msgid "Start work on task" +msgstr "Start work on task" -msgid "List All Closed Sub-Projects" -msgstr "List All Closed Sub-Projects" +#: sl/SL_Menu.py:335 +msgid "Show current work" +msgstr "Show current work" -msgid "Delete All Closed Sub-Projects" -msgstr "Delete All Closed Sub-Projects" +#: sl/SL_Menu.py:339 +msgid "Stop current work" +msgstr "Stop current work" -msgid "Promote Sub-Project to Main-Project" -msgstr "Promote Sub-Project to Main-Project" +#: sl/SL_Menu.py:347 sl/SL_Menu.py:845 +msgid "Reporting" +msgstr "Reporting" +#: sl/SL_Menu.py:348 sl/SL_Menu.py:848 msgid "Daily Report (Today)" msgstr "Daily Report (Today)" +#: sl/SL_Menu.py:352 sl/SL_Menu.py:853 sl/SL_Menu.py:2195 msgid "Daily Report (Specific Day)" msgstr "Daily Report (Specific Day)" +#: sl/SL_Menu.py:354 sl/SL_Menu.py:854 sl/SL_Menu.py:2214 msgid "Date Range Report" msgstr "Date Range Report" -msgid "Detailed Sub-Project Report" -msgstr "Detailed Sub-Project Report" +#: sl/SL_Menu.py:356 sl/SL_Menu.py:855 sl/SL_Menu.py:2241 sl/SL_Menu.py:2272 +msgid "Detailed Task Report" +msgstr "Detailed Task Report" -msgid "Detailed Main-Project Report" -msgstr "Detailed Main-Project Report" +#: sl/SL_Menu.py:358 sl/SL_Menu.py:856 sl/SL_Menu.py:2300 +msgid "Detailed Project Report" +msgstr "Detailed Project Report" +#: sl/SL_Menu.py:360 sl/SL_Menu.py:857 sl/SL_Menu.py:2327 msgid "Detailed Daily Report" msgstr "Detailed Daily Report" -msgid "Change Language" -msgstr "Change Language" +#: sl/SL_Menu.py:364 sl/SL_Menu.py:868 +msgid "Settings" +msgstr "Settings" -msgid "Restore Previous Version" -msgstr "Restore Previous Version" +#: sl/SL_Menu.py:371 sl/SL_Menu.py:1897 +msgid "Current Active Work" +msgstr "Current Active Work" + +#: sl/SL_Menu.py:376 sl/SL_Menu.py:497 sl/SL_Menu.py:559 sl/SL_Menu.py:633 +#: sl/SL_Menu.py:1773 +msgid "Done" +msgstr "Done" + +#: sl/SL_Menu.py:390 +msgid "Edit current task" +msgstr "Edit current task" + +#: sl/SL_Menu.py:398 +msgid "Exit" +msgstr "Exit" + +#: sl/SL_Menu.py:410 sl/SL_Menu.py:420 +msgid "Tomorrow" +msgstr "Tomorrow" + +#: sl/SL_Menu.py:411 sl/SL_Menu.py:421 +msgid "Weekly overview" +msgstr "Weekly overview" + +#: sl/SL_Menu.py:412 sl/SL_Menu.py:422 +msgid "Overdue tasks" +msgstr "Overdue tasks" + +#: sl/SL_Menu.py:413 sl/SL_Menu.py:423 +msgid "Unplanned tasks" +msgstr "Unplanned tasks" + +#: sl/SL_Menu.py:414 +msgid "All" +msgstr "All" + +#: sl/SL_Menu.py:416 +msgid "Filter" +msgstr "Filter" + +#: sl/SL_Menu.py:430 +msgid "Tasks" +msgstr "Tasks" + +#: sl/SL_Menu.py:572 +msgid "No tasks found." +msgstr "No tasks found." + +#: sl/SL_Menu.py:574 sl/SL_Menu.py:648 sl/SL_Menu.py:770 sl/SL_Menu.py:810 +#: sl/SL_Menu.py:838 sl/SL_Menu.py:914 sl/SL_Menu.py:925 sl/SL_Menu.py:959 +#: sl/SL_Menu.py:970 sl/SL_Menu.py:1004 sl/SL_Menu.py:1015 sl/SL_Menu.py:1050 +#: sl/SL_Menu.py:1061 sl/SL_Menu.py:1069 sl/SL_Menu.py:1120 sl/SL_Menu.py:1145 +#: sl/SL_Menu.py:1167 sl/SL_Menu.py:1199 sl/SL_Menu.py:1210 sl/SL_Menu.py:1250 +#: sl/SL_Menu.py:1262 sl/SL_Menu.py:1297 sl/SL_Menu.py:1317 sl/SL_Menu.py:1329 +#: sl/SL_Menu.py:1340 sl/SL_Menu.py:1376 sl/SL_Menu.py:1406 sl/SL_Menu.py:1436 +#: sl/SL_Menu.py:1476 sl/SL_Menu.py:1488 sl/SL_Menu.py:1535 sl/SL_Menu.py:1547 +#: sl/SL_Menu.py:1678 sl/SL_Menu.py:1697 sl/SL_Menu.py:1710 sl/SL_Menu.py:1725 +#: sl/SL_Menu.py:1858 sl/SL_Menu.py:1868 sl/SL_Menu.py:1912 sl/SL_Menu.py:2097 +#: sl/SL_Menu.py:2102 sl/SL_Menu.py:2207 sl/SL_Menu.py:2234 sl/SL_Menu.py:2246 +#: sl/SL_Menu.py:2258 sl/SL_Menu.py:2277 sl/SL_Menu.py:2293 sl/SL_Menu.py:2305 +#: sl/SL_Menu.py:2320 sl/SL_Menu.py:2339 sl/SL_Menu.py:2380 sl/SL_Menu.py:2395 +msgid "Back" +msgstr "Back" + +#: sl/SL_Menu.py:581 +msgid "Today's Tasks" +msgstr "Today's Tasks" + +#: sl/SL_Menu.py:646 +msgid "No tasks for today." +msgstr "No tasks for today." + +#: sl/SL_Menu.py:661 +msgid "Fetching emails..." +msgstr "Fetching emails..." + +#: sl/SL_Menu.py:664 +#, python-brace-format +msgid "Error fetching emails: {error}" +msgstr "Error fetching emails: {error}" + +#: sl/SL_Menu.py:667 +#, python-brace-format +msgid "{count} new tasks created from emails." +msgstr "{count} new tasks created from emails." + +#: sl/SL_Menu.py:669 +msgid "No new emails found." +msgstr "No new emails found." + +#: sl/SL_Menu.py:675 +msgid "No unassigned email tasks available." +msgstr "No unassigned email tasks available." + +#: sl/SL_Menu.py:687 +msgid "Assign Project" +msgstr "Assign Project" + +#: sl/SL_Menu.py:698 +msgid "Are you sure you want to delete this task?" +msgstr "Are you sure you want to delete this task?" + +#: sl/SL_Menu.py:701 +msgid "Yes, delete" +msgstr "Yes, delete" + +#: sl/SL_Menu.py:706 +msgid "No, cancel" +msgstr "No, cancel" + +#: sl/SL_Menu.py:713 +msgid "Delete" +msgstr "Delete" + +#: sl/SL_Menu.py:717 +msgid "Edit Details" +msgstr "Edit Details" + +#: sl/SL_Menu.py:725 sl/SL_Menu.py:1757 +msgid "Task Name" +msgstr "Task Name" + +#: sl/SL_Menu.py:734 sl/SL_Menu.py:1761 +msgid "Due Date" +msgstr "Due Date" + +#: sl/SL_Menu.py:742 sl/SL_Menu.py:1765 +msgid "Clear" +msgstr "Clear" + +#: sl/SL_Menu.py:749 sl/SL_Menu.py:1634 sl/SL_Menu.py:1804 +msgid "Notes (Markdown)" +msgstr "Notes (Markdown)" + +#: sl/SL_Menu.py:751 sl/SL_Menu.py:1816 +msgid "Save Changes" +msgstr "Save Changes" + +#: sl/SL_Menu.py:762 +msgid "Task details updated successfully." +msgstr "Task details updated successfully." + +#: sl/SL_Menu.py:768 +msgid "Error updating task details." +msgstr "Error updating task details." + +#: sl/SL_Menu.py:778 sl/SL_Menu.py:794 +msgid "Project Management" +msgstr "Project Management" + +#: sl/SL_Menu.py:787 sl/SL_Menu.py:861 +msgid "Back to Main Menu" +msgstr "Back to Main Menu" +#: sl/SL_Menu.py:873 sl/SL_Menu.py:2000 +msgid "Report Format" +msgstr "Report Format" + +#: sl/SL_Menu.py:875 sl/SL_Menu.py:2159 +msgid "Email Settings" +msgstr "Email Settings" + +#: sl/SL_Menu.py:876 sl/SL_Menu.py:2020 +msgid "Change CSS Style" +msgstr "Change CSS Style" + +#: sl/SL_Menu.py:877 sl/SL_Menu.py:2058 +msgid "Change View Mode" +msgstr "Change View Mode" + +#: sl/SL_Menu.py:890 +msgid "Add New Project" +msgstr "Add New Project" + +#: sl/SL_Menu.py:893 +msgid "Name of the project" +msgstr "Name of the project" + +#: sl/SL_Menu.py:897 +#, python-brace-format +msgid "Project '{name}' added." +msgstr "Project '{name}' added." + +#: sl/SL_Menu.py:901 sl/SL_Menu.py:947 sl/SL_Menu.py:992 sl/SL_Menu.py:1038 +#: sl/SL_Menu.py:1093 sl/SL_Menu.py:1187 sl/SL_Menu.py:1235 sl/SL_Menu.py:1285 +#: sl/SL_Menu.py:1364 sl/SL_Menu.py:1394 sl/SL_Menu.py:1424 sl/SL_Menu.py:1455 +#: sl/SL_Menu.py:1517 sl/SL_Menu.py:1557 sl/SL_Menu.py:1666 sl/SL_Menu.py:1685 +#: sl/SL_Menu.py:1843 sl/SL_Menu.py:1890 sl/SL_Menu.py:1934 sl/SL_Menu.py:1995 +#: sl/SL_Menu.py:2014 sl/SL_Menu.py:2051 sl/SL_Menu.py:2084 sl/SL_Menu.py:2152 +#: sl/SL_Menu.py:2188 +msgid "Cancel" +msgstr "Cancel" + +#: sl/SL_Menu.py:919 sl/SL_Menu.py:964 sl/SL_Menu.py:1009 sl/SL_Menu.py:1204 +#: sl/SL_Menu.py:1267 sl/SL_Menu.py:1302 sl/SL_Menu.py:1334 sl/SL_Menu.py:1383 +#: sl/SL_Menu.py:1413 sl/SL_Menu.py:1443 sl/SL_Menu.py:1863 sl/SL_Menu.py:2251 +#: sl/SL_Menu.py:2312 +msgid "Select Project" +msgstr "Select Project" + +#: sl/SL_Menu.py:924 +#, python-brace-format +msgid "No open tasks to close in '{name}'." +msgstr "No open tasks to close in '{name}'." + +#: sl/SL_Menu.py:931 sl/SL_Menu.py:976 sl/SL_Menu.py:1021 sl/SL_Menu.py:1075 +#: sl/SL_Menu.py:1216 sl/SL_Menu.py:1344 sl/SL_Menu.py:1700 sl/SL_Menu.py:1874 +#: sl/SL_Menu.py:2282 +msgid "Select Task" +msgstr "Select Task" + +#: sl/SL_Menu.py:941 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been closed." +msgstr "Task '{sub_name}' in '{main_name}' has been closed." + +#: sl/SL_Menu.py:969 +#, python-brace-format +msgid "No closed tasks to reopen in '{name}'." +msgstr "No closed tasks to reopen in '{name}'." + +#: sl/SL_Menu.py:986 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been reopened." +msgstr "Task '{sub_name}' in '{main_name}' has been reopened." + +#: sl/SL_Menu.py:1014 +#, python-brace-format +msgid "No open tasks to delete in '{name}'." +msgstr "No open tasks to delete in '{name}'." + +#: sl/SL_Menu.py:1025 +msgid "This action cannot be undone." +msgstr "This action cannot be undone." + +#: sl/SL_Menu.py:1032 +#, python-brace-format +msgid "Task '{sub_name}' deleted from '{main_name}'." +msgstr "Task '{sub_name}' deleted from '{main_name}'." + +#: sl/SL_Menu.py:1055 +msgid "Select Source Project" +msgstr "Select Source Project" + +#: sl/SL_Menu.py:1060 +#, python-brace-format +msgid "No tasks found in '{name}'." +msgstr "No tasks found in '{name}'." + +#: sl/SL_Menu.py:1068 +msgid "No other projects available to move to." +msgstr "No other projects available to move to." + +#: sl/SL_Menu.py:1079 sl/SL_Menu.py:1503 +msgid "Select Target Project" +msgstr "Select Target Project" + +#: sl/SL_Menu.py:1087 +#, python-brace-format +msgid "Task '{sub}' moved from '{src}' to '{dst}'." +msgstr "Task '{sub}' moved from '{src}' to '{dst}'." + +#: sl/SL_Menu.py:1091 +msgid "Error: Could not move task." +msgstr "Error: Could not move task." + +#: sl/SL_Menu.py:1102 sl/SL_Menu.py:1464 +msgid "Weeks of inactivity" +msgstr "Weeks of inactivity" + +#: sl/SL_Menu.py:1107 +#, python-brace-format +msgid "Inactive Tasks (> {weeks} weeks):" +msgstr "Inactive Tasks (> {weeks} weeks):" + +#: sl/SL_Menu.py:1112 sl/SL_Menu.py:1472 +msgid "Last Activity" +msgstr "Last Activity" + +#: sl/SL_Menu.py:1171 +#, python-brace-format +msgid "" +"Are you sure you want to delete {count} closed tasks? This action cannot be " +"undone." +msgstr "" +"Are you sure you want to delete {count} closed tasks? This action cannot be " +"undone." + +#: sl/SL_Menu.py:1173 +msgid "Show projects to delete" +msgstr "Show projects to delete" + +#: sl/SL_Menu.py:1177 +msgid "Delete All" +msgstr "Delete All" + +#: sl/SL_Menu.py:1183 +#, python-brace-format +msgid "Successfully deleted {count} tasks." +msgstr "Successfully deleted {count} tasks." + +#: sl/SL_Menu.py:1209 +#, python-brace-format +msgid "No open tasks to promote in '{name}'." +msgstr "No open tasks to promote in '{name}'." + +#: sl/SL_Menu.py:1220 +msgid "" +"This will create a new Project with the task's name and move all time " +"entries to a 'General' task within it." +msgstr "" +"This will create a new Project with the task's name and move all time " +"entries to a 'General' task within it." + +#: sl/SL_Menu.py:1222 +msgid "Promote to Project" +msgstr "Promote to Project" + +#: sl/SL_Menu.py:1261 +msgid "No open projects to rename." +msgstr "No open projects to rename." + +#: sl/SL_Menu.py:1270 sl/SL_Menu.py:1349 +msgid "New Name" +msgstr "New Name" + +#: sl/SL_Menu.py:1271 sl/SL_Menu.py:1350 +msgid "Rename" +msgstr "Rename" + +#: sl/SL_Menu.py:1275 sl/SL_Menu.py:1354 +msgid "Please enter a new name." +msgstr "Please enter a new name." + +#: sl/SL_Menu.py:1277 sl/SL_Menu.py:1356 +msgid "New name is the same as the old name." +msgstr "New name is the same as the old name." + +#: sl/SL_Menu.py:1279 +#, python-brace-format +msgid "Project '{old_name}' successfully renamed to '{new_name}'." +msgstr "Project '{old_name}' successfully renamed to '{new_name}'." + +#: sl/SL_Menu.py:1339 +#, python-brace-format +msgid "No open tasks to rename in '{name}'." +msgstr "No open tasks to rename in '{name}'." + +#: sl/SL_Menu.py:1362 +msgid "Error: Could not rename. The new name might already exist." +msgstr "Error: Could not rename. The new name might already exist." + +#: sl/SL_Menu.py:1375 +msgid "No open projects to close." +msgstr "No open projects to close." + +#: sl/SL_Menu.py:1388 +#, python-brace-format +msgid "Project '{name}' has been closed." +msgstr "Project '{name}' has been closed." + +#: sl/SL_Menu.py:1392 sl/SL_Menu.py:1422 sl/SL_Menu.py:1453 +msgid "Error: Project not found." +msgstr "Error: Project not found." + +#: sl/SL_Menu.py:1405 +msgid "No closed projects to reopen." +msgstr "No closed projects to reopen." + +#: sl/SL_Menu.py:1418 +#, python-brace-format +msgid "Project '{name}' has been reopened." +msgstr "Project '{name}' has been reopened." + +#: sl/SL_Menu.py:1444 +msgid "" +"This action cannot be undone. All associated tasks and time entries will be " +"deleted." +msgstr "" +"This action cannot be undone. All associated tasks and time entries will be " +"deleted." + +#: sl/SL_Menu.py:1449 +#, python-brace-format +msgid "Project '{name}' has been deleted." +msgstr "Project '{name}' has been deleted." + +#: sl/SL_Menu.py:1469 +#, python-brace-format +msgid "Inactive Projects (> {weeks} weeks):" +msgstr "Inactive Projects (> {weeks} weeks):" + +#: sl/SL_Menu.py:1474 +#, python-brace-format +msgid "No projects found inactive for more than {weeks} weeks." +msgstr "No projects found inactive for more than {weeks} weeks." + +#: sl/SL_Menu.py:1483 sl/SL_Menu.py:1506 +msgid "Demote Project" +msgstr "Demote Project" + +#: sl/SL_Menu.py:1495 +msgid "Select Project to Demote" +msgstr "Select Project to Demote" + +#: sl/SL_Menu.py:1501 +msgid "No other projects available to demote into." +msgstr "No other projects available to demote into." + +#: sl/SL_Menu.py:1504 +#, python-brace-format +msgid "This will convert '{src}' into a task of '{dst}'." +msgstr "This will convert '{src}' into a task of '{dst}'." + +#: sl/SL_Menu.py:1529 +msgid "Projects with only closed or no tasks:" +msgstr "Projects with only closed or no tasks:" + +#: sl/SL_Menu.py:1533 +msgid "No completed projects found." +msgstr "No completed projects found." + +#: sl/SL_Menu.py:1542 sl/SL_Menu.py:1673 sl/SL_Menu.py:2241 +msgid "Step 1: Select Project" +msgstr "Step 1: Select Project" + +#: sl/SL_Menu.py:1546 sl/SL_Menu.py:1857 +msgid "No open projects found. Please add one first." +msgstr "No open projects found. Please add one first." + +#: sl/SL_Menu.py:1551 sl/SL_Menu.py:1680 sl/SL_Menu.py:1905 +msgid "Project" +msgstr "Project" + +#: sl/SL_Menu.py:1553 sl/SL_Menu.py:1681 sl/SL_Menu.py:1705 sl/SL_Menu.py:2253 +msgid "Next" +msgstr "Next" + +#: sl/SL_Menu.py:1568 sl/SL_Menu.py:2267 +msgid "No project selected. Please start again." +msgstr "No project selected. Please start again." + +#: sl/SL_Menu.py:1573 +msgid "To Project:" +msgstr "To Project:" + +#: sl/SL_Menu.py:1594 +msgid "Name of the new task" +msgstr "Name of the new task" + +#: sl/SL_Menu.py:1600 +msgid "Due date" +msgstr "Due date" + +#: sl/SL_Menu.py:1606 sl/SL_Menu.py:1775 +msgid "Recurring" +msgstr "Recurring" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "daily" +msgstr "daily" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "on all business days" +msgstr "on all business days" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "weekly" +msgstr "weekly" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "monthly" +msgstr "monthly" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "userdefined" +msgstr "userdefined" + +#: sl/SL_Menu.py:1624 sl/SL_Menu.py:1797 +msgid "Frequency" +msgstr "Frequency" + +#: sl/SL_Menu.py:1628 sl/SL_Menu.py:1800 +msgid "Days" +msgstr "Days" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Edit" +msgstr "Edit" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Preview" +msgstr "Preview" + +#: sl/SL_Menu.py:1637 sl/SL_Menu.py:1807 +msgid "No notes provided." +msgstr "No notes provided." + +#: sl/SL_Menu.py:1642 sl/SL_Menu.py:1812 +msgid "A due date is required for recurring tasks." +msgstr "A due date is required for recurring tasks." + +#: sl/SL_Menu.py:1650 +msgid "Please enter a name." +msgstr "Please enter a name." + +#: sl/SL_Menu.py:1661 +#, python-brace-format +msgid "Task '{sub_name}' added to '{main_name}'." +msgstr "Task '{sub_name}' added to '{main_name}'." + +#: sl/SL_Menu.py:1693 sl/SL_Menu.py:2272 +msgid "Step 2: Select Task from" +msgstr "Step 2: Select Task from" + +#: sl/SL_Menu.py:1696 +msgid "No open tasks found." +msgstr "No open tasks found." + +#: sl/SL_Menu.py:1724 +msgid "Task not found." +msgstr "Task not found." + +#: sl/SL_Menu.py:1840 +msgid "Error: Could not update task." +msgstr "Error: Could not update task." + +#: sl/SL_Menu.py:1853 +msgid "Start Work on Task" +msgstr "Start Work on Task" + +#: sl/SL_Menu.py:1867 +#, python-brace-format +msgid "No open tasks to start work on in '{name}'." +msgstr "No open tasks to start work on in '{name}'." + +#: sl/SL_Menu.py:1878 +msgid "Start Work" +msgstr "Start Work" + +#: sl/SL_Menu.py:1906 +msgid "Task" +msgstr "Task" + +#: sl/SL_Menu.py:1907 +msgid "Started at" +msgstr "Started at" + +#: sl/SL_Menu.py:1918 +msgid "Streamlit Port Settings" +msgstr "Streamlit Port Settings" + +#: sl/SL_Menu.py:1922 +msgid "Current Streamlit Port" +msgstr "Current Streamlit Port" + +#: sl/SL_Menu.py:1925 +msgid "New Port" +msgstr "New Port" + +#: sl/SL_Menu.py:1926 sl/SL_Menu.py:1958 sl/SL_Menu.py:2007 sl/SL_Menu.py:2042 +#: sl/SL_Menu.py:2074 sl/SL_Menu.py:2141 sl/SL_Menu.py:2173 +msgid "Save" +msgstr "Save" + +#: sl/SL_Menu.py:1930 +#, python-brace-format +msgid "Port updated to {port}. Please restart Streamlit." +msgstr "Port updated to {port}. Please restart Streamlit." + +#: sl/SL_Menu.py:1940 msgid "Change Data Storage Location" msgstr "Change Data Storage Location" -msgid "Select Action" -msgstr "Select Action" +#: sl/SL_Menu.py:1943 +msgid "Current data file" +msgstr "Current data file" -msgid "Select Main Project" -msgstr "Select Main Project" +#: sl/SL_Menu.py:1946 +msgid "New Path for data file" +msgstr "New Path for data file" -msgid "Select Sub-Project" -msgstr "Select Sub-Project" +#: sl/SL_Menu.py:1952 +msgid "Move existing data to the new location" +msgstr "Move existing data to the new location" -msgid "Back to Main Menu" -msgstr "Back to Main Menu" \ No newline at end of file +#: sl/SL_Menu.py:1955 +msgid "" +"If unchecked, the old data file will remain, and a new empty one might be " +"created at the new location on restart." +msgstr "" +"If unchecked, the old data file will remain, and a new empty one might be " +"created at the new location on restart." + +#: sl/SL_Menu.py:1962 +msgid "Please enter a new path." +msgstr "Please enter a new path." + +#: sl/SL_Menu.py:1970 +msgid "" +"Error: For security, the data file must be located within the application " +"directory." +msgstr "" +"Error: For security, the data file must be located within the application " +"directory." + +#: sl/SL_Menu.py:1980 +msgid "" +"Storage location updated. Please restart the application for the changes to " +"take effect." +msgstr "" +"Storage location updated. Please restart the application for the changes to " +"take effect." + +#: sl/SL_Menu.py:2006 +msgid "Select Format" +msgstr "Select Format" + +#: sl/SL_Menu.py:2011 +msgid "Report format updated." +msgstr "Report format updated." + +#: sl/SL_Menu.py:2024 +msgid "Current CSS file" +msgstr "Current CSS file" + +#: sl/SL_Menu.py:2041 +msgid "Select CSS File" +msgstr "Select CSS File" + +#: sl/SL_Menu.py:2047 +msgid "" +"CSS style updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"CSS style updated. Please restart the application for the changes to take " +"effect." + +#: sl/SL_Menu.py:2063 +msgid "App Window (Webview)" +msgstr "App Window (Webview)" + +#: sl/SL_Menu.py:2063 +msgid "System Browser" +msgstr "System Browser" + +#: sl/SL_Menu.py:2073 +msgid "Select View Mode" +msgstr "Select View Mode" + +#: sl/SL_Menu.py:2080 +msgid "" +"View mode updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"View mode updated. Please restart the application for the changes to take " +"effect." + +#: sl/SL_Menu.py:2091 +msgid "Restore Previous Version" +msgstr "Restore Previous Version" + +#: sl/SL_Menu.py:2096 +msgid "The 'update' module is not available. This feature is disabled." +msgstr "The 'update' module is not available. This feature is disabled." + +#: sl/SL_Menu.py:2101 +#, python-brace-format +msgid "No previous version backup '{filename}' found." +msgstr "No previous version backup '{filename}' found." + +#: sl/SL_Menu.py:2105 +msgid "" +"This will restore the application to the previously backed-up version. The " +"application will then restart. You may need to manually refresh your browser" +" if it does not reconnect automatically." +msgstr "" +"This will restore the application to the previously backed-up version. The " +"application will then restart. You may need to manually refresh your browser" +" if it does not reconnect automatically." + +#: sl/SL_Menu.py:2107 +msgid "Restore and Restart" +msgstr "Restore and Restart" + +#: sl/SL_Menu.py:2108 +msgid "Restoring and restarting..." +msgstr "Restoring and restarting..." + +#: sl/SL_Menu.py:2111 +msgid "Restore complete. Please restart the application." +msgstr "Restore complete. Please restart the application." + +#: sl/SL_Menu.py:2117 +msgid "Change Language" +msgstr "Change Language" + +#: sl/SL_Menu.py:2140 +msgid "Select Language" +msgstr "Select Language" + +#: sl/SL_Menu.py:2148 +msgid "" +"Language changed. Please restart the application for the changes to take " +"effect." +msgstr "" +"Language changed. Please restart the application for the changes to take " +"effect." + +#: sl/SL_Menu.py:2166 +msgid "Enable email import" +msgstr "Enable email import" + +#: sl/SL_Menu.py:2167 +msgid "IMAP Server" +msgstr "IMAP Server" + +#: sl/SL_Menu.py:2168 +msgid "Port" +msgstr "Port" + +#: sl/SL_Menu.py:2169 +msgid "Username" +msgstr "Username" + +#: sl/SL_Menu.py:2170 +msgid "Password" +msgstr "Password" + +#: sl/SL_Menu.py:2171 +msgid "Use SSL" +msgstr "Use SSL" + +#: sl/SL_Menu.py:2184 +msgid "Email settings saved." +msgstr "Email settings saved." + +#: sl/SL_Menu.py:2198 sl/SL_Menu.py:2330 +msgid "Select Date" +msgstr "Select Date" + +#: sl/SL_Menu.py:2199 sl/SL_Menu.py:2223 sl/SL_Menu.py:2287 sl/SL_Menu.py:2313 +#: sl/SL_Menu.py:2331 +msgid "Generate Report" +msgstr "Generate Report" + +#: sl/SL_Menu.py:2219 +msgid "Start Date" +msgstr "Start Date" + +#: sl/SL_Menu.py:2221 +msgid "End Date" +msgstr "End Date" + +#: sl/SL_Menu.py:2346 +msgid "Report Result" +msgstr "Report Result" + +#: sl/SL_Menu.py:2375 +msgid "Export Report" +msgstr "Export Report" + +#~ msgid "" +#~ "\n" +#~ "Error: Failed to install dependencies. Please install them manually using: pip install -r {requirements_path}" +#~ msgstr "" +#~ "\n" +#~ "Error: Failed to install dependencies. Please install them manually using: pip install -r {requirements_path}" + +#~ msgid "A task named '{task_name}' already exists in '{main_name}'." +#~ msgstr "A task named '{task_name}' already exists in '{main_name}'." + +#~ msgid "Main project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Main project '{old_name}' renamed to '{new_name}'." + +#~ msgid "7. Add Sub-Project" +#~ msgstr "7. Add Sub-Project" + +#~ msgid "8. List Sub-Projects" +#~ msgstr "8. List Sub-Projects" + +#~ msgid "9. Rename Sub-Project" +#~ msgstr "9. Rename Sub-Project" + +#~ msgid "10. Close Sub-Project" +#~ msgstr "10. Close Sub-Project" + +#~ msgid "11. Re-open Sub-Project" +#~ msgstr "11. Re-open Sub-Project" + +#~ msgid "12. Delete Sub-Project" +#~ msgstr "12. Delete Task" + +#~ msgid "13. Move Sub-Project" +#~ msgstr "13. Move Task" + +#~ msgid "14. List Inactive Sub-Projects" +#~ msgstr "14. List Inactive Tasks" + +#~ msgid "" +#~ "\n" +#~ "--- Add New Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Add New Sub-Project ---" + +#~ msgid "" +#~ "\n" +#~ "--- List Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- List Sub-Projects ---" + +#~ msgid "" +#~ "\n" +#~ "--- Rename Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Rename Sub-Project ---" + +#~ msgid "Sub-project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Sub-project '{old_name}' renamed to '{new_name}'." + +#~ msgid "" +#~ "\n" +#~ "--- Delete Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Delete Sub-Project ---" + +#~ msgid "" +#~ "\n" +#~ "--- List Inactive Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- List Inactive Sub-Projects ---" + +#~ msgid " Sub-Project: {name}" +#~ msgstr " Sub-Project: {name}" + +#~ msgid "" +#~ "\n" +#~ "--- Move Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Move Sub-Project ---" + +#~ msgid "4. Detailed Sub-Project Report" +#~ msgstr "4. Detailed Sub-Project Report" + +#~ msgid "" +#~ "\n" +#~ "--- Detailed Sub-Project Report ---" +#~ msgstr "" +#~ "\n" +#~ "--- Detailed Sub-Project Report ---" + +#~ msgid "Invalid choice. Please enter a number from 0 to 3." +#~ msgstr "Invalid choice. Please enter a number from 0 to 3." + +#~ msgid " Sub-Project: {name}" +#~ msgstr " Sub-Project: {name}" + +#~ msgid "" +#~ "\n" +#~ "No time tracked for {date}." +#~ msgstr "" +#~ "\n" +#~ "No time tracked for {date}." + +#~ msgid "# Detailed Report for Sub-Project: {name}" +#~ msgstr "# Detailed Report for Sub-Project: {name}" + +#~ msgid "Sub-Project Breakdown" +#~ msgstr "Sub-Project Breakdown" + +#~ msgid "Sub-Project Management" +#~ msgstr "Sub-Project Management" + +#~ msgid "List Main Projects" +#~ msgstr "List Main Projects" + +#~ msgid "Rename Main Project" +#~ msgstr "Rename Main Project" + +#~ msgid "Delete Main Project" +#~ msgstr "Delete Main Project" + +#~ msgid "Detailed Main-Project Report" +#~ msgstr "Detailed Main-Project Report" diff --git a/locale/es/LC_MESSAGES/timetracker.mo b/locale/es/LC_MESSAGES/timetracker.mo index c7937211665112acff97d8104732d8dbb2491858..e6e8dba1f444993cb928fb0ae4f882f67700347e 100644 GIT binary patch literal 48541 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 S4b9~-?n=WZHyRr082mrx0Ldc& literal 39663 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 DqiGWR diff --git a/locale/es/LC_MESSAGES/timetracker.po b/locale/es/LC_MESSAGES/timetracker.po index a2654d9..9302079 100644 --- a/locale/es/LC_MESSAGES/timetracker.po +++ b/locale/es/LC_MESSAGES/timetracker.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: TimeControl\n" -"Report-Msgid-Bugs-To: https://github.com/FrankFaulstich/TimeControl/issues\n" -"POT-Creation-Date: 2026-01-01 14:30+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-06-18 12:24+0200\n" "PO-Revision-Date: 2026-01-01 14:40+0200\n" "Last-Translator: Frank Faulstich\n" "Language-Team: Spanish\n" @@ -16,1014 +16,1268 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -msgid "Edit current task" -msgstr "Editar tarea actual" - -#: TimeTracker.py:63 -msgid "Warning: Could not read {file}. Error: {error}" -msgstr "Advertencia: No se pudo leer {file}. Error: {error}" - -#: TimeTracker.py:75 -msgid "Some required packages are missing. Attempting to install them..." -msgstr "Faltan algunos paquetes requeridos. Intentando instalarlos..." - -#: TimeTracker.py:78 -msgid "Installing {package}..." -msgstr "Instalando {package}..." - -#: TimeTracker.py:81 +#: TimeTrackerCLI.py:25 msgid "" "\n" -"Dependencies installed successfully." +"--- Project Management ---" msgstr "" "\n" -"Dependencias instaladas con éxito." +"--- Gestión de Proyectos ---" -#: TimeTracker.py:82 -msgid "Please restart the application for the changes to take effect." -msgstr "Por favor, reinicie la aplicación para que los cambios surtan efecto." +#: TimeTrackerCLI.py:26 +msgid "1. Main Project Management" +msgstr "1. Gestión de Proyecto Principal" -#: TimeTracker.py:85 -msgid "" -"\n" -"Error: Failed to install dependencies. Please install them manually using: " -"pip install -r {requirements_path}" -msgstr "" -"\n" -"Error: No se pudieron instalar las dependencias. Por favor, instálelas " -"manualmente usando: pip install -r {requirements_path}" +#: TimeTrackerCLI.py:27 +msgid "2. Task Management" +msgstr "2. Gestión de Tareas" -#: TimeTracker.py:88 -msgid "An unexpected error occurred during dependency check: {error}" -msgstr "Ocurrió un error inesperado durante la comprobación de dependencias: {error}" +#: TimeTrackerCLI.py:29 +msgid "0. Back to Main Menu" +msgstr "0. Volver al Menú Principal" -#: TimeTracker.py:112 -msgid "Info: Report content has been copied to the clipboard." -msgstr "Info: El contenido del informe ha sido copiado al portapapeles." +#: TimeTrackerCLI.py:32 TimeTrackerCLI.py:60 TimeTrackerCLI.py:257 +#: TimeTrackerCLI.py:662 TimeTrackerCLI.py:701 TimeTrackerCLI.py:811 +#: TimeTrackerCLI.py:953 +msgid "Choice: " +msgstr "Elección: " -#: TimeTracker.py:114 -msgid "Warning: Could not copy to clipboard. Error: {error}" -msgstr "Advertencia: No se pudo copiar al portapapeles. Error: {error}" +#: TimeTrackerCLI.py:41 +msgid "Invalid choice. Please enter a number from 0 to 2." +msgstr "Elección no válida. Por favor ingrese un número del 0 al 2." -#: TimeTracker.py:116 +#: TimeTrackerCLI.py:46 msgid "" -"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " -"install pyperclip`)." +"\n" +"--- Main Project Management ---" msgstr "" -"Advertencia: No se pudo copiar al portapapeles. Por favor, instale " -"'pyperclip' (`pip install pyperclip`)." +"\n" +"--- Gestión del proyecto principal ---" -#: TimeTracker.py:130 -msgid "{hours} hour ({dlp} DLP)" -msgid_plural "{hours} hours ({dlp} DLP)" -msgstr[0] "{hours} hora ({dlp} DLP)" -msgstr[1] "{hours} horas ({dlp} DLP)" +#: TimeTrackerCLI.py:47 +msgid "1. Add Main Project" +msgstr "1. Añadir Proyecto Principal" -msgid "closed" -msgstr "cerrado" +#: TimeTrackerCLI.py:48 +msgid "2. List Main Projects" +msgstr "2. Listar Proyectos Principales" -msgid "open" -msgstr "abierto" +#: TimeTrackerCLI.py:49 +msgid "3. Rename Main Project" +msgstr "3. Renombrar Proyecto Principal" -msgid "all" -msgstr "todos" +#: TimeTrackerCLI.py:50 +msgid "4. Close Main Project" +msgstr "4. Cerrar el proyecto principal" -#: TimeTracker.py:350 -msgid "Source main project '{name}' not found." -msgstr "Proyecto principal de origen '{name}' no encontrado." +#: TimeTrackerCLI.py:51 +msgid "5. Re-open Main Project" +msgstr "5. Reabrir el proyecto principal" -#: TimeTracker.py:352 -msgid "Destination main project '{name}' not found." -msgstr "Proyecto principal de destino '{name}' no encontrado." +#: TimeTrackerCLI.py:52 +msgid "6. Delete Main Project" +msgstr "6. Eliminar el proyecto principal" -#: tt/TimeTracker.py:356 -msgid "A task named '{task_name}' already exists in '{main_name}'." -msgstr "Ya existe una tarea llamada '{task_name}' en '{main_name}'." +#: TimeTrackerCLI.py:53 +msgid "7. List Inactive Main Projects" +msgstr "7. Enumerar proyectos principales inactivos" -msgid "Task '{task_name}' moved successfully." -msgstr "Tarea '{task_name}' movida con éxito." +#: TimeTrackerCLI.py:54 +msgid "8. Demote Main-Project to Sub-Project" +msgstr "8. Degradar proyecto principal a subproyecto" -#: TimeTracker.py:378 -msgid "A main project named '{name}' already exists." -msgstr "Ya existe un proyecto principal llamado '{name}'." +#: TimeTrackerCLI.py:55 +msgid "9. List Completed Main Projects" +msgstr "9. Enumerar proyectos principales completados" -msgid "Main project '{old_name}' renamed to '{new_name}'." -msgstr "Proyecto principal '{old_name}' renombrado a '{new_name}'." +#: TimeTrackerCLI.py:57 TimeTrackerCLI.py:254 +msgid "0. Back" +msgstr "0. Atrás" -#: TimeTracker.py:398 -msgid "Task '{sub_name}' not found in '{main_name}'." -msgstr "No se encontró la tarea '{sub_name}' en '{main_name}'." +#: TimeTrackerCLI.py:64 +msgid "" +"\n" +"--- Add New Main Project ---" +msgstr "" +"\n" +"--- Añadir Nuevo Proyecto Principal ---" -#: TimeTracker.py:406 -msgid "General" -msgstr "General" +#: TimeTrackerCLI.py:65 +msgid "Name of the main project: " +msgstr "Nombre del proyecto principal: " -#: TimeTracker.py:410 -msgid "Task '{name}' was promoted to a new main project." -msgstr "La tarea '{name}' fue promovida a un nuevo proyecto principal." +#: TimeTrackerCLI.py:67 +#, python-brace-format +msgid "Main project '{name}' added." +msgstr "Proyecto principal '{name}' añadido." -#: TimeTracker.py:439 -msgid "Main project to demote '{name}' not found." -msgstr "No se encontró el proyecto principal a degradar '{name}'." +#: TimeTrackerCLI.py:70 +msgid "" +"\n" +"--- List Main Projects ---" +msgstr "" +"\n" +"--- Listar Proyectos Principales ---" -#: TimeTracker.py:441 -msgid "New parent main project '{name}' not found." -msgstr "No se encontró el nuevo proyecto principal padre '{name}'." +#: TimeTrackerCLI.py:76 TimeTrackerCLI.py:313 sl/SL_Menu.py:1246 +#: sl/SL_Menu.py:1310 +msgid "closed" +msgstr "cerrado" -#: TimeTracker.py:455 -msgid "Task '{old_name}' has been renamed to '{new_name}'." -msgstr "La tarea '{old_name}' ha sido renombrada a '{new_name}'." +#: TimeTrackerCLI.py:79 +msgid "No main projects found." +msgstr "No se encontraron proyectos principales." -#: TimeTracker.py:463 +#: TimeTrackerCLI.py:82 msgid "" -"Main project '{demoted_name}' was demoted to a task under " -"'{parent_name}'." +"\n" +"--- Rename Main Project ---" msgstr "" -"El proyecto principal '{demoted_name}' fue degradado a un subproyecto bajo " -"'{parent_name}'." +"\n" +"--- Renombrar Proyecto Principal ---" -msgid "Task Planning" -msgstr "Planificación de tareas" +#: TimeTrackerCLI.py:85 +msgid "No main projects to rename." +msgstr "No hay proyectos principales para renombrar." -msgid "Today View" -msgstr "Vista de hoy" +#: TimeTrackerCLI.py:88 +msgid "Select an open main project to rename:" +msgstr "Seleccione un proyecto principal abierto para cambiarle el nombre:" -msgid "E-Mail Task Assignment" -msgstr "Asignación de tareas por correo" +#: TimeTrackerCLI.py:93 TimeTrackerCLI.py:117 TimeTrackerCLI.py:139 +#: TimeTrackerCLI.py:162 TimeTrackerCLI.py:272 TimeTrackerCLI.py:301 +#: TimeTrackerCLI.py:333 TimeTrackerCLI.py:370 TimeTrackerCLI.py:405 +#: TimeTrackerCLI.py:441 TimeTrackerCLI.py:568 TimeTrackerCLI.py:604 +#: TimeTrackerCLI.py:855 TimeTrackerCLI.py:888 TimeTrackerCLI.py:969 +msgid "Enter the number of the main project: " +msgstr "Introduzca el número del proyecto principal: " -msgid "Fetching emails..." -msgstr "Recuperando correos electrónicos..." +#: TimeTrackerCLI.py:96 TimeTrackerCLI.py:349 +#, python-brace-format +msgid "Enter the new name for '{name}': " +msgstr "Introduzca el nuevo nombre para '{name}': " -msgid "Error fetching emails: {error}" -msgstr "Error al recuperar correos: {error}" +#: TimeTrackerCLI.py:99 +#, python-brace-format +msgid "Main project '{old_name}' successfully renamed to '{new_name}'." +msgstr "Proyecto principal '{old_name}' renombrado a '{new_name}' con éxito." -msgid "{count} new tasks created from emails." -msgstr "{count} nuevas tareas creadas desde correos." +#: TimeTrackerCLI.py:101 sl/SL_Menu.py:1283 +#, python-brace-format +msgid "" +"Error: Could not rename. The new name '{new_name}' might already exist." +msgstr "" +"Error: No se pudo renombrar. El nuevo nombre '{new_name}' ya podría existir." + +#: TimeTrackerCLI.py:103 TimeTrackerCLI.py:125 TimeTrackerCLI.py:147 +#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:221 TimeTrackerCLI.py:287 +#: TimeTrackerCLI.py:319 TimeTrackerCLI.py:356 TimeTrackerCLI.py:391 +#: TimeTrackerCLI.py:426 TimeTrackerCLI.py:463 TimeTrackerCLI.py:510 +#: TimeTrackerCLI.py:589 TimeTrackerCLI.py:794 TimeTrackerCLI.py:875 +#: TimeTrackerCLI.py:894 TimeTrackerCLI.py:992 +msgid "Invalid input. Please enter a valid number." +msgstr "Entrada inválida. Por favor, introduzca un número válido." -msgid "No new emails found." -msgstr "No se encontraron correos nuevos." +#: TimeTrackerCLI.py:106 +msgid "" +"\n" +"--- Close Main Project ---" +msgstr "" +"\n" +"--- Cerrar proyecto principal ---" -msgid "No unassigned email tasks available." -msgstr "No hay tareas de correo sin asignar disponibles." +#: TimeTrackerCLI.py:109 +msgid "No open main projects to close." +msgstr "No hay proyectos principales abiertos para cerrar." -msgid "Assign Project" -msgstr "Asignar proyecto" +#: TimeTrackerCLI.py:112 +msgid "Select a main project to close:" +msgstr "Seleccione un proyecto principal para cerrar:" -msgid "Edit Details" -msgstr "Editar detalles" +#: TimeTrackerCLI.py:121 +#, python-brace-format +msgid "Main project '{name}' has been closed." +msgstr "El proyecto principal '{name}' ha sido cerrado." -msgid "Due Date" -msgstr "Fecha de vencimiento" +#: TimeTrackerCLI.py:123 TimeTrackerCLI.py:145 +msgid "Error: Main project not found." +msgstr "Error: Proyecto principal no encontrado." -msgid "Clear" -msgstr "Limpiar" +#: TimeTrackerCLI.py:128 +msgid "" +"\n" +"--- Re-open Main Project ---" +msgstr "" +"\n" +"--- Reabrir proyecto principal ---" -msgid "Task Name" -msgstr "Nombre de la tarea" +#: TimeTrackerCLI.py:131 +msgid "No closed main projects to reopen." +msgstr "No hay proyectos principales cerrados para reabrir." -msgid "Task details updated successfully." -msgstr "Detalles de la tarea actualizados con éxito." +#: TimeTrackerCLI.py:134 +msgid "Select a main project to reopen:" +msgstr "Seleccione un proyecto principal para reabrir:" -msgid "Error updating task details." -msgstr "Error al actualizar los detalles de la tarea." +#: TimeTrackerCLI.py:143 +#, python-brace-format +msgid "Main project '{name}' has been reopened." +msgstr "El proyecto principal '{name}' ha sido reabierto." -msgid "Email Settings" -msgstr "Configuración de correo" +#: TimeTrackerCLI.py:150 +msgid "" +"\n" +"--- Delete Main Project ---" +msgstr "" +"\n" +"--- Eliminar Proyecto Principal ---" -msgid "Enable email import" -msgstr "Activar importación de correo" +#: TimeTrackerCLI.py:153 +msgid "No main projects to delete." +msgstr "No hay proyectos principales para eliminar." -msgid "Username" -msgstr "Usuario" +#: TimeTrackerCLI.py:156 +msgid "Select a main project to delete:" +msgstr "Seleccione un proyecto principal para eliminar:" -msgid "Password" -msgstr "Contraseña" +#: TimeTrackerCLI.py:165 +#, python-brace-format +msgid "Main project '{name}' deleted." +msgstr "Proyecto principal '{name}' eliminado." -msgid "Use SSL" -msgstr "Usar SSL" +#: TimeTrackerCLI.py:167 TimeTrackerCLI.py:285 +#, python-brace-format +msgid "Error: Main project '{name}' not found." +msgstr "Error: Proyecto principal '{name}' no encontrado." -msgid "Email settings saved." -msgstr "Configuración de correo guardada." +#: TimeTrackerCLI.py:172 +msgid "" +"\n" +"--- List Inactive Main-Projects ---" +msgstr "" +"\n" +"--- Listar Proyectos Principales Inactivos ---" -msgid "4. Change Streamlit Port" -msgstr "4. Cambiar puerto de Streamlit" +#: TimeTrackerCLI.py:174 +msgid "Enter the number of weeks without activity (e.g., 8): " +msgstr "Introduzca el número de semanas sin actividad (ej: 8): " -msgid "Current Streamlit Port: {port}" -msgstr "Puerto actual de Streamlit: {port}" +#: TimeTrackerCLI.py:176 TimeTrackerCLI.py:518 +msgid "Please enter a positive number." +msgstr "Por favor, introduzca un número positivo." -msgid "Enter new port (or press Enter to keep current): " -msgstr "Ingrese el nuevo puerto (o presione Enter para mantener el actual): " +#: TimeTrackerCLI.py:182 +#, python-brace-format +msgid "" +"\n" +"Inactive Main-Projects (>{weeks} weeks):" +msgstr "" +"\n" +"Proyectos Principales Inactivos (>{weeks} semanas):" -msgid "Port updated to {port}. Please restart Streamlit for changes to take effect." -msgstr "Puerto actualizado a {port}. Reinicie Streamlit para que los cambios surtan efecto." +#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:526 +#, python-brace-format +msgid " - Main Project: {name}" +msgstr " - Proyecto Principal: {name}" -msgid "Work started on '{task_name}' in project '{main_name}'." -msgstr "Trabajo iniciado en '{task_name}' en el proyecto '{main_name}'." +#: TimeTrackerCLI.py:185 TimeTrackerCLI.py:528 +#, python-brace-format +msgid " Last Activity: {date}" +msgstr " Última Actividad: {date}" -#: TimeTracker.py:651 -msgid "- {name}: {hours} hour" -msgid_plural "- {name}: {hours} hours" -msgstr[0] "- {name}: {hours} hora" -msgstr[1] "- {name}: {hours} horas" +#: TimeTrackerCLI.py:188 +#, python-brace-format +msgid "No main-projects found inactive for more than {weeks} weeks." +msgstr "" +"No se encontraron proyectos principales inactivos durante más " +"de{weeks}semanas." -#: TimeTracker.py:657 -msgid "## {name} ({hours} hour)\n" -msgid_plural "## {name} ({hours} hours)\n" -msgstr[0] "## {name} ({hours} hora)\n" -msgstr[1] "## {name} ({hours} horas)\n" +#: TimeTrackerCLI.py:191 TimeTrackerCLI.py:534 +msgid "Invalid input. Please enter a valid number for weeks." +msgstr "" +"Entrada inválida. Por favor, introduzca un número válido para las semanas." -#: TimeTracker.py:665 -msgid "# Daily Time Report: {date}\n" -msgstr "# Informe de Tiempo Diario: {date}\n" +#: TimeTrackerCLI.py:194 +msgid "" +"\n" +"--- Demote Main-Project to Sub-Project ---" +msgstr "" +"\n" +"--- Degradar Proyecto Principal a Subproyecto ---" -#: TimeTracker.py:666 -msgid "\n**Total Daily Time: {hours} hour**" -msgid_plural "\n**Total Daily Time: {hours} hours**" -msgstr[0] "\n**Tiempo Total Diario: {hours} hora**" -msgstr[1] "\n**Tiempo Total Diario: {hours} horas**" +#: TimeTrackerCLI.py:197 +msgid "You need at least two open main projects for this operation." +msgstr "" +"Necesita al menos dos proyectos principales abiertos para esta operación." -#: TimeTracker.py:670 -msgid "No time tracked for {date}." -msgstr "No hay tiempo registrado para {date}." +#: TimeTrackerCLI.py:202 +msgid "Select the main project to demote:" +msgstr "Seleccione el proyecto principal a degradar:" -#: TimeTracker.py:708 -msgid "# Time Report: {start_date} to {end_date}\n" -msgstr "# Informe de Tiempo: {start_date} a {end_date}\n" +#: TimeTrackerCLI.py:205 +msgid "Enter the number of the project to demote: " +msgstr "Introduzca el número del proyecto a degradar: " -#: TimeTracker.py:709 +#: TimeTrackerCLI.py:209 msgid "" "\n" -"**Total Time in Period: {total_time}**" +"Select the new parent main project:" msgstr "" "\n" -"**Tiempo Total en el Periodo: {total_time}**" +"Seleccione el nuevo proyecto principal padre:" -#: TimeTracker.py:721 -msgid "No time tracked between {start_date} and {end_date}." -msgstr "No hay tiempo registrado entre {start_date} y {end_date}." +#: TimeTrackerCLI.py:213 +msgid "Enter the number of the new parent project: " +msgstr "Introduzca el número del nuevo proyecto padre: " -msgid "now" -msgstr "ahora" +#: TimeTrackerCLI.py:224 +msgid "" +"\n" +"--- List Completed Main Projects ---" +msgstr "" +"\n" +"--- Lista de proyectos principales completados ---" -msgid "# Detailed Daily Report: {date}" -msgstr "# Informe Diario Detallado: {date}" +#: TimeTrackerCLI.py:227 +msgid "Main projects with only closed or no sub-projects:" +msgstr "" +"Proyectos principales con solo subproyectos cerrados o sin subproyectos:" -msgid "\nNo time tracked for {date}." -msgstr "\nNo hay tiempo registrado para {date}." +#: TimeTrackerCLI.py:231 +msgid "No completed main projects found." +msgstr "No se encontraron proyectos principales completados." -msgid "Active (working on '{sub_name}')" -msgstr "Activo (trabajando en '{sub_name}')" +#: TimeTrackerCLI.py:235 +msgid "Invalid choice. Please enter a number from 0 to 9." +msgstr "Elección no válida. Por favor ingrese un número del 0 al 9." -msgid "Part of Main Project: {name}" -msgstr "Parte del Proyecto Principal: {name}" +#: TimeTrackerCLI.py:240 +msgid "" +"\n" +"--- Task Management ---" +msgstr "" +"\n" +"--- Gestión de tareas ---" -msgid "Sub-Project Breakdown" -msgstr "Desglose de Subproyectos" +#: TimeTrackerCLI.py:241 +msgid "1. Add Task" +msgstr "1. Agregar tarea" -msgid "{num_sessions} sessions" -msgstr "{num_sessions} sesiones" +#: TimeTrackerCLI.py:242 +msgid "2. List Tasks" +msgstr "2. Enumerar tareas" -msgid "6. Detailed Daily Report" -msgstr "6. Informe Diario Detallado" +#: TimeTrackerCLI.py:243 +msgid "3. Rename Task" +msgstr "3. Cambiar nombre de tarea" -msgid "\n--- Detailed Daily Report ---" -msgstr "\n--- Informe Diario Detallado ---" +#: TimeTrackerCLI.py:244 +msgid "4. Close Task" +msgstr "4. Cerrar tarea" -msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " -msgstr "Introduzca la fecha (AAAA-MM-DD) o presione Enter para hoy: " +#: TimeTrackerCLI.py:245 +msgid "5. Re-open Task" +msgstr "5. Reabrir tarea" -msgid "Active (currently running)" -msgstr "Activo (actualmente en ejecución)" +#: TimeTrackerCLI.py:246 +msgid "6. Delete Task" +msgstr "6. Eliminar tarea" -msgid "Last activity" -msgstr "Última actividad" +#: TimeTrackerCLI.py:247 +msgid "7. Move Task" +msgstr "7. Mover tarea" -msgid "Inactive" -msgstr "Inactivo" +#: TimeTrackerCLI.py:248 +msgid "8. List Inactive Tasks" +msgstr "8. Enumerar tareas inactivas" -msgid "Status" -msgstr "Estado" +#: TimeTrackerCLI.py:249 +msgid "9. List All Closed Tasks" +msgstr "9. Enumerar todas las tareas cerradas" -msgid "First entry" -msgstr "Primera entrada" +#: TimeTrackerCLI.py:250 +msgid "10. Delete All Closed Tasks" +msgstr "10. Eliminar todas las tareas cerradas" -msgid "Total recorded time" -msgstr "Tiempo total registrado" - -msgid "Total work sessions" -msgstr "Total de sesiones de trabajo" +#: TimeTrackerCLI.py:251 +msgid "11. Promote Task to Main-Project" +msgstr "11. Promocionar tarea a proyecto principal" -msgid "Average session duration" -msgstr "Duración media de la sesión" - -msgid "Weekday Distribution" -msgstr "Distribución por día de la semana" +#: TimeTrackerCLI.py:252 +msgid "12. Edit Task (Name & Due Date)" +msgstr "12. Editar tarea (nombre y fecha de vencimiento)" -msgid "Monday" -msgstr "Lunes" +#: TimeTrackerCLI.py:261 +msgid "" +"\n" +"--- Add New Task ---" +msgstr "" +"\n" +"--- Agregar nueva tarea ---" -msgid "Tuesday" -msgstr "Martes" +#: TimeTrackerCLI.py:264 TimeTrackerCLI.py:960 +msgid "No open main projects found. Please add one first." +msgstr "" +"No se encontraron proyectos principales abiertos. Por favor agregue uno " +"primero." -msgid "Wednesday" -msgstr "Miércoles" +#: TimeTrackerCLI.py:267 +msgid "Select a main project to add a task to:" +msgstr "Seleccione un proyecto principal al que agregar una tarea:" -msgid "Thursday" -msgstr "Jueves" +#: TimeTrackerCLI.py:275 +msgid "Name of the new task: " +msgstr "Nombre de la nueva tarea:" -msgid "Friday" -msgstr "Viernes" +#: TimeTrackerCLI.py:276 +msgid "Due date (YYYY-MM-DD, press Enter to skip): " +msgstr "Fecha de vencimiento (AAAA-MM-DD, presione Entrar para omitir):" -msgid "Saturday" -msgstr "Sábado" +#: TimeTrackerCLI.py:278 +msgid "Add to 'Today' list? (y/n, default n): " +msgstr "¿Agregar a la lista 'Hoy'? (sí/no, n predeterminado):" -msgid "Sunday" -msgstr "Domingo" +#: TimeTrackerCLI.py:280 +msgid "Note (Markdown supported): " +msgstr "Nota (se admite Markdown):" -msgid "Daily Breakdown" -msgstr "Desglose diario" +#: TimeTrackerCLI.py:283 +#, python-brace-format +msgid "Task '{task_name}' added." +msgstr "Se agregó la tarea '{task_name}'." -msgid "Duration" -msgstr "Duración" +#: TimeTrackerCLI.py:290 +msgid "" +"\n" +"--- List Tasks ---" +msgstr "" +"\n" +"--- Listar tareas ---" -msgid "# Detailed Report for Main Project: {name}" -msgstr "# Informe Detallado del Proyecto Principal: {name}" +#: TimeTrackerCLI.py:293 +msgid "No main projects found. Cannot list tasks." +msgstr "" +"No se encontraron proyectos principales. No se pueden enumerar tareas." -msgid "Number of sub-projects" -msgstr "Número de subproyectos" +#: TimeTrackerCLI.py:296 +msgid "Select the main project whose tasks you want to list:" +msgstr "Seleccione el proyecto principal cuyas tareas desea enumerar:" -#: TimeTrackerCLI.py:21 -msgid "\n--- Project Management ---" -msgstr "\n--- Gestión de Proyectos ---" +#: TimeTrackerCLI.py:305 sl/SL_Menu.py:1307 +#, python-brace-format +msgid "Tasks for '{name}':" +msgstr "Tareas para '{name}':" -#: TimeTrackerCLI.py:22 -msgid "1. Add Main Project" -msgstr "1. Añadir Proyecto Principal" +#: TimeTrackerCLI.py:308 sl/SL_Menu.py:524 sl/SL_Menu.py:612 +msgid "Due" +msgstr "Vencimiento" -#: TimeTrackerCLI.py:24 -msgid "2. List Main Projects" -msgstr "2. Listar Proyectos Principales" +#: TimeTrackerCLI.py:309 sl/SL_Menu.py:409 sl/SL_Menu.py:419 sl/SL_Menu.py:484 +#: sl/SL_Menu.py:546 sl/SL_Menu.py:747 sl/SL_Menu.py:1603 sl/SL_Menu.py:1771 +msgid "Today" +msgstr "hoy" -#: TimeTrackerCLI.py:24 -msgid "3. Rename Main Project" -msgstr "3. Renombrar Proyecto Principal" +#: TimeTrackerCLI.py:317 TimeTrackerCLI.py:861 sl/SL_Menu.py:1315 +#: sl/SL_Menu.py:2276 +#, python-brace-format +msgid "No tasks found for '{name}'." +msgstr "No se encontraron tareas para '{name}'." -#: TimeTrackerCLI.py:25 -msgid "4. Delete Main Project" -msgstr "4. Eliminar Proyecto Principal" +#: TimeTrackerCLI.py:322 +msgid "" +"\n" +"--- Rename Task ---" +msgstr "" +"\n" +"--- Cambiar nombre de tarea ---" -#: TimeTrackerCLI.py:26 -msgid "5. List Inactive Main Projects" -msgstr "5. Listar Proyectos Principales Inactivos" +#: TimeTrackerCLI.py:325 TimeTrackerCLI.py:362 TimeTrackerCLI.py:397 +#: TimeTrackerCLI.py:432 TimeTrackerCLI.py:560 +msgid "No open main projects found." +msgstr "No se encontraron proyectos principales abiertos." -#: TimeTrackerCLI.py:27 -msgid "6. Demote Main-Project to Sub-Project" -msgstr "6. Degradar Proyecto Principal a Subproyecto" +#: TimeTrackerCLI.py:328 TimeTrackerCLI.py:365 TimeTrackerCLI.py:400 +#: TimeTrackerCLI.py:435 TimeTrackerCLI.py:599 TimeTrackerCLI.py:852 +msgid "Select the main project:" +msgstr "Seleccione el proyecto principal:" -#: TimeTrackerCLI.py:29 -msgid "7. Add Sub-Project" -msgstr "7. Añadir Subproyecto" +#: TimeTrackerCLI.py:338 +#, python-brace-format +msgid "No tasks to rename for '{name}'." +msgstr "No hay tareas para cambiar el nombre de '{name}'." -#: TimeTrackerCLI.py:30 -msgid "8. List Sub-Projects" -msgstr "8. Listar Subproyectos" +#: TimeTrackerCLI.py:341 +#, python-brace-format +msgid "Select a task from '{name}' to rename:" +msgstr "Seleccione una tarea de '{name}' para cambiarle el nombre:" -#: TimeTrackerCLI.py:31 -#: TimeTrackerCLI.py:32 -msgid "9. Rename Sub-Project" -msgstr "9. Renombrar Subproyecto" +#: TimeTrackerCLI.py:345 TimeTrackerCLI.py:382 TimeTrackerCLI.py:417 +#: TimeTrackerCLI.py:453 TimeTrackerCLI.py:489 TimeTrackerCLI.py:580 +#: TimeTrackerCLI.py:867 TimeTrackerCLI.py:982 +msgid "Enter the number of the task: " +msgstr "Ingrese el número de la tarea:" -msgid "10. Close Sub-Project" -msgstr "10. Cerrar Subproyecto" +#: TimeTrackerCLI.py:352 sl/SL_Menu.py:1358 +#, python-brace-format +msgid "Task '{old_name}' renamed to '{new_name}'." +msgstr "Tarea '{old_name}' renombrada a '{new_name}'." -msgid "11. Re-open Sub-Project" -msgstr "11. Reabrir Subproyecto" +#: TimeTrackerCLI.py:354 +msgid "" +"Error: Could not rename. The new name might already exist or the project was" +" not found." +msgstr "" +"Error: No se pudo renombrar. El nuevo nombre ya podría existir o el proyecto" +" no fue encontrado." -msgid "12. Delete Sub-Project" -msgstr "12. Eliminar Subproyecto" +#: TimeTrackerCLI.py:359 +msgid "" +"\n" +"--- Close Task ---" +msgstr "" +"\n" +"--- Cerrar tarea ---" -msgid "13. Move Sub-Project" -msgstr "13. Mover Subproyecto" +#: TimeTrackerCLI.py:375 +#, python-brace-format +msgid "No open tasks to close for '{name}'." +msgstr "No hay tareas abiertas para cerrar para '{name}'." + +#: TimeTrackerCLI.py:378 +#, python-brace-format +msgid "Select a task from '{name}' to close:" +msgstr "Seleccione una tarea de '{name}' para cerrar:" + +#: TimeTrackerCLI.py:387 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been closed." +msgstr "La tarea '{task_name}' en '{main_name}' se ha cerrado." + +#: TimeTrackerCLI.py:389 TimeTrackerCLI.py:424 TimeTrackerCLI.py:460 +#: sl/SL_Menu.py:945 sl/SL_Menu.py:990 sl/SL_Menu.py:1036 +msgid "Error: Main project or task not found." +msgstr "Error: Proyecto principal o tarea no encontrada." + +#: TimeTrackerCLI.py:394 +msgid "" +"\n" +"--- Re-open Task ---" +msgstr "" +"\n" +"--- Reabrir tarea ---" -msgid "14. List Inactive Sub-Projects" -msgstr "14. Listar Subproyectos Inactivos" +#: TimeTrackerCLI.py:410 +#, python-brace-format +msgid "No closed tasks to reopen for '{name}'." +msgstr "No hay tareas cerradas para reabrir para '{name}'." -msgid "15. List All Closed Sub-Projects" -msgstr "15. Listar Todos los Subproyectos Cerrados" +#: TimeTrackerCLI.py:413 +#, python-brace-format +msgid "Select a task from '{name}' to reopen:" +msgstr "Seleccione una tarea de '{name}' para reabrir:" -msgid "16. Delete All Closed Sub-Projects" -msgstr "16. Eliminar Todos los Subproyectos Cerrados" +#: TimeTrackerCLI.py:422 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been reopened." +msgstr "La tarea '{task_name}' en '{main_name}' se ha reabierto." -msgid "17. Promote Sub-Project to Main-Project" -msgstr "17. Promover Subproyecto a Proyecto Principal" +#: TimeTrackerCLI.py:429 +msgid "" +"\n" +"--- Delete Task ---" +msgstr "" +"\n" +"--- Eliminar tarea ---" -#: TimeTrackerCLI.py:37 TimeTrackerCLI.py:403 TimeTrackerCLI.py:461 TimeTrackerCLI.py:539 -msgid "0. Back to Main Menu" -msgstr "0. Volver al Menú Principal" +#: TimeTrackerCLI.py:446 +#, python-brace-format +msgid "No tasks to delete for '{name}'." +msgstr "No hay tareas para eliminar para '{name}'." -#: TimeTrackerCLI.py:40 TimeTrackerCLI.py:406 TimeTrackerCLI.py:464 TimeTrackerCLI.py:595 -msgid "Choice: " -msgstr "Elección: " +#: TimeTrackerCLI.py:449 +#, python-brace-format +msgid "Select a task from '{name}' to delete:" +msgstr "Seleccione una tarea de '{name}' para eliminar:" -#: TimeTrackerCLI.py:44 -msgid "\n--- Add New Main Project ---" -msgstr "\n--- Añadir Nuevo Proyecto Principal ---" +#: TimeTrackerCLI.py:458 +#, python-brace-format +msgid "Task '{task_name}' deleted from '{main_name}'." +msgstr "Tarea '{task_name}' eliminada de '{main_name}'." -#: TimeTrackerCLI.py:45 -msgid "Name of the main project: " -msgstr "Nombre del proyecto principal: " +#: TimeTrackerCLI.py:466 +msgid "" +"\n" +"--- Move Task ---" +msgstr "" +"\n" +"--- Mover tarea ---" -#: TimeTrackerCLI.py:48 -msgid "Main project '{name}' added." -msgstr "Proyecto principal '{name}' añadido." +#: TimeTrackerCLI.py:469 +msgid "You need at least two open main projects to move a task." +msgstr "" +"Necesita al menos dos proyectos principales abiertos para mover una tarea." -#: TimeTrackerCLI.py:50 TimeTrackerCLI.py:55 -msgid "\n--- List Main Projects ---" -msgstr "\n--- Listar Proyectos Principales ---" +#: TimeTrackerCLI.py:474 +msgid "Select the source main project:" +msgstr "Seleccione el proyecto principal de origen:" -#: TimeTrackerCLI.py:55 TimeTrackerCLI.py:166 TimeTrackerCLI.py:288 TimeTrackerCLI.py:479 -msgid "No main projects found." -msgstr "No se encontraron proyectos principales." +#: TimeTrackerCLI.py:477 +msgid "Enter the number of the source main project: " +msgstr "Introduzca el número del proyecto principal de origen: " -#: TimeTrackerCLI.py:58 -msgid "\n--- Rename Main Project ---" -msgstr "\n--- Renombrar Proyecto Principal ---" +#: TimeTrackerCLI.py:483 +#, python-brace-format +msgid "No tasks to move from '{name}'." +msgstr "No hay tareas para mover desde '{name}'." -#: TimeTrackerCLI.py:61 -msgid "No main projects to rename." -msgstr "No hay proyectos principales para renombrar." +#: TimeTrackerCLI.py:486 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to move:" +msgstr "" +"\n" +"Seleccione una tarea de '{name}' para mover:" -#: TimeTrackerCLI.py:64 -msgid "Select a main project to rename:" -msgstr "Seleccione un proyecto principal para renombrar:" +#: TimeTrackerCLI.py:494 +msgid "" +"\n" +"Select the destination main project:" +msgstr "" +"\n" +"Seleccione el proyecto principal de destino:" -#: TimeTrackerCLI.py:68 -msgid "Enter the number of the main project: " -msgstr "Introduzca el número del proyecto principal: " +#: TimeTrackerCLI.py:499 +msgid "Enter the number of the destination main project: " +msgstr "Introduzca el número del proyecto principal de destino: " -#: TimeTrackerCLI.py:71 -msgid "Enter the new name for '{name}': " -msgstr "Introduzca el nuevo nombre para '{name}': " +#: TimeTrackerCLI.py:505 +#, python-brace-format +msgid "" +"Successfully moved '{task_name}' from '{source_main_project}' to " +"'{dest_main_project}'." +msgstr "" +"Se movió correctamente '{task_name}' de '{source_main_project}' a " +"'{dest_main_project}'." -#: TimeTrackerCLI.py:74 -msgid "Main project '{old_name}' successfully renamed to '{new_name}'." -msgstr "Proyecto principal '{old_name}' renombrado a '{new_name}' con éxito." +#: TimeTrackerCLI.py:507 +#, python-brace-format +msgid "Error: {message}" +msgstr "Error: {message}" -#: TimeTrackerCLI.py:76 -msgid "Error: Could not rename. The new name '{new_name}' might already exist." -msgstr "Error: No se pudo renombrar. El nuevo nombre '{new_name}' ya podría existir." +#: TimeTrackerCLI.py:514 +msgid "" +"\n" +"--- List Inactive Tasks ---" +msgstr "" +"\n" +"--- Listar tareas inactivas ---" -#: TimeTrackerCLI.py:78 TimeTrackerCLI.py:98 TimeTrackerCLI.py:120 TimeTrackerCLI.py:139 TimeTrackerCLI.py:160 TimeTrackerCLI.py:194 TimeTrackerCLI.py:222 TimeTrackerCLI.py:247 TimeTrackerCLI.py:284 TimeTrackerCLI.py:311 TimeTrackerCLI.py:342 TimeTrackerCLI.py:387 TimeTrackerCLI.py:431 TimeTrackerCLI.py:456 TimeTrackerCLI.py:532 -msgid "Invalid input. Please enter a valid number." -msgstr "Entrada inválida. Por favor, introduzca un número válido." +#: TimeTrackerCLI.py:516 +msgid "Enter the number of weeks without activity (e.g., 4): " +msgstr "Introduzca el número de semanas sin actividad (ej: 4): " -#: TimeTrackerCLI.py:81 -msgid "\n--- Delete Main Project ---" -msgstr "\n--- Eliminar Proyecto Principal ---" +#: TimeTrackerCLI.py:524 +#, python-brace-format +msgid "" +"\n" +"Inactive Tasks (>{weeks} weeks):" +msgstr "" +"\n" +"Tareas inactivas (>{weeks}semanas):" -#: TimeTrackerCLI.py:84 -msgid "No main projects to delete." -msgstr "No hay proyectos principales para eliminar." +#: TimeTrackerCLI.py:527 +#, python-brace-format +msgid " Task: {name}" +msgstr "Tarea:{name}" -#: TimeTrackerCLI.py:87 -msgid "Select a main project to delete:" -msgstr "Seleccione un proyecto principal para eliminar:" +#: TimeTrackerCLI.py:531 sl/SL_Menu.py:1118 +#, python-brace-format +msgid "No tasks found inactive for more than {weeks} weeks." +msgstr "No se encontraron tareas inactivas durante más de{weeks}semanas." -#: TimeTrackerCLI.py:93 -msgid "Main project '{name}' deleted." -msgstr "Proyecto principal '{name}' eliminado." +#: TimeTrackerCLI.py:537 +msgid "" +"\n" +"--- List All Closed Tasks ---" +msgstr "" +"\n" +"--- Listar todas las tareas cerradas ---" -#: TimeTrackerCLI.py:95 -msgid "Error: Main project '{name}' not found." -msgstr "Error: Proyecto principal '{name}' no encontrado." +#: TimeTrackerCLI.py:543 sl/SL_Menu.py:1143 sl/SL_Menu.py:1166 +msgid "No closed tasks found." +msgstr "No se encontraron tareas cerradas." -#: TimeTrackerCLI.py:101 -msgid "\n--- List Inactive Main-Projects ---" -msgstr "\n--- Listar Proyectos Principales Inactivos ---" +#: TimeTrackerCLI.py:547 +msgid "" +"\n" +"--- Delete All Closed Tasks ---" +msgstr "" +"\n" +"--- Eliminar todas las tareas cerradas ---" -#: TimeTrackerCLI.py:103 -msgid "Enter the number of weeks without activity (e.g., 8): " -msgstr "Introduzca el número de semanas sin actividad (ej: 8): " +#: TimeTrackerCLI.py:548 +msgid "Are you sure you want to delete ALL closed tasks? (y/n): " +msgstr "¿Está seguro de que desea eliminar TODAS las tareas cerradas? (t/n):" -#: TimeTrackerCLI.py:105 -msgid "Please enter a positive number." -msgstr "Por favor, introduzca un número positivo." +#: TimeTrackerCLI.py:551 +#, python-brace-format +msgid "{count} closed tasks were deleted." +msgstr "Se eliminaron{count}tareas cerradas." -#: TimeTrackerCLI.py:110 -msgid "\nInactive Main-Projects (>{weeks} weeks):" -msgstr "\nProyectos Principales Inactivos (>{weeks} semanas):" +#: TimeTrackerCLI.py:553 +msgid "Operation cancelled." +msgstr "Operación cancelada." -#: TimeTrackerCLI.py:112 -msgid " - Main Project: {name}" -msgstr " - Proyecto Principal: {name}" +#: TimeTrackerCLI.py:557 +msgid "" +"\n" +"--- Promote Task to Main-Project ---" +msgstr "" +"\n" +"--- Promocionar tarea a proyecto principal ---" -#: TimeTrackerCLI.py:113 -msgid " Last Activity: {date}" -msgstr " Última Actividad: {date}" +#: TimeTrackerCLI.py:565 +msgid "Select the main project containing the task to promote:" +msgstr "Seleccione el proyecto principal que contiene la tarea a promover:" -#: TimeTrackerCLI.py:116 -msgid "No main-projects found inactive for more than {weeks} week." -msgid_plural "No main-projects found inactive for more than {weeks} weeks." -msgstr[0] "No se encontró ningún proyecto principal inactivo por más de {weeks} semana." -msgstr[1] "No se encontraron proyectos principales inactivos por más de {weeks} semanas." +#: TimeTrackerCLI.py:574 +#, python-brace-format +msgid "No tasks to promote in '{name}'." +msgstr "No hay tareas para promover en '{name}'." -#: TimeTrackerCLI.py:119 -msgid "Invalid input. Please enter a valid number for weeks." -msgstr "Entrada inválida. Por favor, introduzca un número válido para las semanas." +#: TimeTrackerCLI.py:577 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to promote:" +msgstr "" +"\n" +"Seleccione una tarea de '{name}' para promover:" -#: TimeTrackerCLI.py:122 -msgid "\n--- Add New Sub-Project ---" -msgstr "\n--- Añadir Nuevo Subproyecto ---" +#: TimeTrackerCLI.py:593 +msgid "" +"\n" +"--- Edit Task ---" +msgstr "" +"\n" +"--- Editar tarea ---" + +#: TimeTrackerCLI.py:596 sl/SL_Menu.py:913 sl/SL_Menu.py:958 +#: sl/SL_Menu.py:1003 sl/SL_Menu.py:1049 sl/SL_Menu.py:1198 sl/SL_Menu.py:1328 +#: sl/SL_Menu.py:1487 sl/SL_Menu.py:1677 +msgid "No open projects found." +msgstr "No se encontraron proyectos abiertos." + +#: TimeTrackerCLI.py:609 +#, python-brace-format +msgid "No open tasks in '{name}'." +msgstr "No hay tareas abiertas en '{name}'." + +#: TimeTrackerCLI.py:612 +msgid "Select a task to edit:" +msgstr "Seleccione una tarea para editar:" + +#: TimeTrackerCLI.py:616 +msgid "Enter the number: " +msgstr "Ingrese el número:" + +#: TimeTrackerCLI.py:623 +#, python-brace-format +msgid "New name (press Enter to keep '{name}'): " +msgstr "Nuevo nombre (presione Enter para conservar '{name}'):" + +#: TimeTrackerCLI.py:624 +#, python-brace-format +msgid "New due date (YYYY-MM-DD, current: '{due}', enter '-' to clear): " +msgstr "" +"Nueva fecha de vencimiento (AAAA-MM-DD, actual: '{due}', ingrese '-' para " +"borrar):" -#: TimeTrackerCLI.py:125 -msgid "No main projects found. Please add one first." -msgstr "No se encontraron proyectos principales. Por favor, añada uno primero." +#: TimeTrackerCLI.py:627 +#, python-brace-format +msgid "Is this for today? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"¿Es esto para hoy? (actual:{current}, y/n, presione Enter para mantener):" -#: TimeTrackerCLI.py:128 -msgid "Select a main project to add a sub-project to:" -msgstr "Seleccione un proyecto principal para añadirle un subproyecto:" +#: TimeTrackerCLI.py:630 +#, python-brace-format +msgid "Current Note: {note}" +msgstr "Nota actual:{note}" -#: TimeTrackerCLI.py:135 -msgid "Name of the new sub-project: " -msgstr "Nombre del nuevo subproyecto: " +#: TimeTrackerCLI.py:631 +msgid "New note (press Enter to keep current): " +msgstr "Nueva nota (presione Enter para mantener actual):" -#: TimeTrackerCLI.py:137 -msgid "Sub-project '{sub_name}' added to '{main_name}'." -msgstr "Subproyecto '{sub_name}' añadido a '{main_name}'." +#: TimeTrackerCLI.py:635 +#, python-brace-format +msgid "Is this task done? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"¿Se completó esta tarea? (actual:{current}, y/n, presione Entrar para " +"mantener):" -#: TimeTrackerCLI.py:142 -msgid "\n--- List Sub-Projects ---" -msgstr "\n--- Listar Subproyectos ---" +#: TimeTrackerCLI.py:639 sl/SL_Menu.py:1834 +msgid "Task updated successfully." +msgstr "Tarea actualizada exitosamente." -#: TimeTrackerCLI.py:145 -msgid "No main projects found. Cannot list sub-projects." -msgstr "No se encontraron proyectos principales. No se pueden listar los subproyectos." +#: TimeTrackerCLI.py:641 +msgid "Error updating task." +msgstr "Error al actualizar la tarea." -#: TimeTrackerCLI.py:148 -msgid "Select the main project whose sub-projects you want to list:" -msgstr "Seleccione el proyecto principal cuyos subproyectos desea listar:" +#: TimeTrackerCLI.py:643 +msgid "Invalid input." +msgstr "Entrada no válida." -#: TimeTrackerCLI.py:156 -msgid "Sub-projects for '{name}':" -msgstr "Subproyectos para '{name}':" +#: TimeTrackerCLI.py:648 +msgid "Invalid choice. Please enter a number from 0 to 11." +msgstr "Elección no válida. Ingrese un número del 0 al 11." -#: TimeTrackerCLI.py:159 TimeTrackerCLI.py:262 TimeTrackerCLI.py:489 -msgid "No sub-projects found for '{name}'." -msgstr "No se encontraron subproyectos para '{name}'." +#: TimeTrackerCLI.py:653 +msgid "" +"\n" +"--- Settings ---" +msgstr "" +"\n" +"--- Configuración ---" -#: TimeTrackerCLI.py:163 -msgid "\n--- Rename Sub-Project ---" -msgstr "\n--- Renombrar Subproyecto ---" +#: TimeTrackerCLI.py:654 sl/SL_Menu.py:870 +msgid "1. Change Language" +msgstr "1. Cambiar Idioma" -#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:201 TimeTrackerCLI.py:414 TimeTrackerCLI.py:437 TimeTrackerCLI.py:482 -msgid "Select the main project:" -msgstr "Seleccione el proyecto principal:" +#: TimeTrackerCLI.py:655 sl/SL_Menu.py:871 +msgid "2. Restore Previous Version" +msgstr "2. Restaurar Versión Anterior" -#: TimeTrackerCLI.py:177 -msgid "No sub-projects to rename for '{name}'." -msgstr "No hay subproyectos para renombrar en '{name}'." +#: TimeTrackerCLI.py:656 sl/SL_Menu.py:872 +msgid "3. Change Data Storage Location" +msgstr "3. Cambiar Ubicación de Almacenamiento de Datos" -#: TimeTrackerCLI.py:180 -msgid "Select a sub-project from '{name}' to rename:" -msgstr "Seleccione un subproyecto de '{name}' para renombrar:" +#: TimeTrackerCLI.py:657 sl/SL_Menu.py:874 +msgid "4. Change Streamlit Port" +msgstr "4. Cambiar puerto de Streamlit" -#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:214 TimeTrackerCLI.py:267 TimeTrackerCLI.py:307 TimeTrackerCLI.py:499 -msgid "Enter the number of the sub-project: " -msgstr "Introduzca el número del subproyecto: " +#: TimeTrackerCLI.py:659 TimeTrackerCLI.py:698 TimeTrackerCLI.py:808 +#: sl/SL_Menu.py:881 +msgid "0. Back to Main Menu" +msgstr "0. Volver al menú principal" -#: TimeTrackerCLI.py:190 -msgid "Sub-project '{old_name}' renamed to '{new_name}'." -msgstr "Subproyecto '{old_name}' renombrado a '{new_name}'." +#: TimeTrackerCLI.py:682 +msgid "Invalid choice. Please enter a number from 0 to 4." +msgstr "Elección no válida. Por favor ingrese un número del 0 al 4." -#: TimeTrackerCLI.py:192 +#: TimeTrackerCLI.py:687 msgid "" -"Error: Could not rename. The new name might already exist or the project " -"was not found." -msgstr "Error: No se pudo renombrar. El nuevo nombre ya podría existir o el proyecto no fue encontrado." - -#: TimeTrackerCLI.py:195 -msgid "\n--- Delete Sub-Project ---" -msgstr "\n--- Eliminar Subproyecto ---" +"\n" +"--- Language Settings ---" +msgstr "" +"\n" +"--- Configuración de Idioma ---" -#: TimeTrackerCLI.py:207 -msgid "No sub-projects to delete for '{name}'." -msgstr "No hay subproyectos para eliminar en '{name}'." +#: TimeTrackerCLI.py:692 +msgid "No additional languages found." +msgstr "No se encontraron idiomas adicionales." -#: TimeTrackerCLI.py:210 -msgid "Select a sub-project from '{name}' to delete:" -msgstr "Seleccione un subproyecto de '{name}' para eliminar:" +#: TimeTrackerCLI.py:716 +#, python-brace-format +msgid "Language changed to '{lang}'. Please restart the application." +msgstr "Idioma cambiado a '{lang}'. Por favor, reinicie la aplicación." -#: TimeTrackerCLI.py:217 -msgid "Sub-project '{sub_name}' deleted from '{main_name}'." -msgstr "Subproyecto '{sub_name}' eliminado de '{main_name}'." +#: TimeTrackerCLI.py:719 +msgid "Invalid choice." +msgstr "Elección inválida." -msgid "\n--- List All Closed Sub-Projects ---" -msgstr "\n--- Listar Todos los Subproyectos Cerrados ---" +#: TimeTrackerCLI.py:721 +msgid "Invalid input. Please enter a number." +msgstr "Entrada inválida. Por favor, introduzca un número." -msgid "No closed sub-projects found." -msgstr "No se encontraron subproyectos cerrados." +#: TimeTrackerCLI.py:725 +msgid "" +"\n" +"--- Data Storage Settings ---" +msgstr "" +"\n" +"--- Configuración de Almacenamiento de Datos ---" -msgid "\n--- Delete All Closed Sub-Projects ---" -msgstr "\n--- Eliminar Todos los Subproyectos Cerrados ---" +#: TimeTrackerCLI.py:726 +#, python-brace-format +msgid "Current data file: {path}" +msgstr "Archivo de datos actual: {path}" -msgid "Are you sure you want to delete ALL closed sub-projects? (y/n): " -msgstr "¿Está seguro de que desea eliminar TODOS los subproyectos cerrados? (s/n): " +#: TimeTrackerCLI.py:728 +msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." +msgstr "" +"Introduzca la nueva ruta para el archivo de datos (ej: " +"/ruta/a/mis_datos.json)." -msgid "{count} closed sub-projects were deleted." -msgstr "Se eliminaron {count} subproyectos cerrados." +#: TimeTrackerCLI.py:729 +msgid "Leave empty to cancel." +msgstr "Dejar vacío para cancelar." -msgid "Operation cancelled." -msgstr "Operación cancelada." +#: TimeTrackerCLI.py:730 +msgid "New Path: " +msgstr "Nueva Ruta: " -#: TimeTrackerCLI.py:219 TimeTrackerCLI.py:281 -msgid "Error: Main project or sub-project not found." -msgstr "Error: Proyecto principal o subproyecto no encontrado." +#: TimeTrackerCLI.py:738 sl/SL_Menu.py:1974 +#, python-brace-format +msgid "Error: The directory '{dir}' does not exist." +msgstr "Error: El directorio '{dir}' no existe." -#: TimeTrackerCLI.py:226 -msgid "\n--- List Inactive Sub-Projects ---" -msgstr "\n--- Listar Subproyectos Inactivos ---" +#: TimeTrackerCLI.py:752 +msgid "Storage location updated." +msgstr "Ubicación de almacenamiento actualizada." -#: TimeTrackerCLI.py:228 -msgid "Enter the number of weeks without activity (e.g., 4): " -msgstr "Introduzca el número de semanas sin actividad (ej: 4): " +#: TimeTrackerCLI.py:756 +msgid "Do you want to move the existing data to the new location? (y/n): " +msgstr "¿Desea mover los datos existentes a la nueva ubicación? (s/n): " -#: TimeTrackerCLI.py:235 -msgid "\nInactive Sub-Projects (>{weeks} weeks):" -msgstr "\nSubproyectos Inactivos (>{weeks} semanas):" +#: TimeTrackerCLI.py:760 sl/SL_Menu.py:1985 +msgid "Data moved successfully." +msgstr "Datos movidos con éxito." -#: TimeTrackerCLI.py:238 -msgid " Sub-Project: {name}" -msgstr " Subproyecto: {name}" +#: TimeTrackerCLI.py:762 sl/SL_Menu.py:1987 +#, python-brace-format +msgid "Error moving data: {error}" +msgstr "Error al mover datos: {error}" -#: TimeTrackerCLI.py:241 -msgid "No sub-projects found inactive for more than {weeks} week." -msgid_plural "No sub-projects found inactive for more than {weeks} weeks." -msgstr[0] "No se encontró ningún subproyecto inactivo por más de {weeks} semana." -msgstr[1] "No se encontraron subproyectos inactivos por más de {weeks} semanas." +#: TimeTrackerCLI.py:764 tt/TimeTracker.py:117 +msgid "Please restart the application for the changes to take effect." +msgstr "Por favor, reinicie la aplicación para que los cambios surtan efecto." -#: TimeTrackerCLI.py:248 -msgid "\n--- Move Sub-Project ---" -msgstr "\n--- Mover Subproyecto ---" +#: TimeTrackerCLI.py:767 +#, python-brace-format +msgid "Error updating configuration: {error}" +msgstr "Error al actualizar la configuración: {error}" -#: TimeTrackerCLI.py:250 -msgid "You need at least two main projects to move a sub-project." -msgstr "Necesita al menos dos proyectos principales para mover un subproyecto." +#: TimeTrackerCLI.py:771 +msgid "" +"\n" +"--- Streamlit Port Settings ---" +msgstr "" +"\n" +"--- Configuración del puerto Streamlit ---" -#: TimeTrackerCLI.py:254 -msgid "Select the source main project:" -msgstr "Seleccione el proyecto principal de origen:" +#: TimeTrackerCLI.py:781 +#, python-brace-format +msgid "Current Streamlit Port: {port}" +msgstr "Puerto actual de Streamlit: {port}" -#: TimeTrackerCLI.py:257 -msgid "Enter the number of the source main project: " -msgstr "Introduzca el número del proyecto principal de origen: " +#: TimeTrackerCLI.py:783 +msgid "Enter new port (or press Enter to keep current): " +msgstr "Ingrese el nuevo puerto (o presione Enter para mantener el actual): " -#: TimeTrackerCLI.py:265 -msgid "\nSelect a sub-project from '{name}' to move:" -msgstr "\nSeleccione un subproyecto de '{name}' para mover:" +#: TimeTrackerCLI.py:792 +#, python-brace-format +msgid "" +"Port updated to {port}. Please restart Streamlit for changes to take effect." +msgstr "" +"Puerto actualizado a {port}. Reinicie Streamlit para que los cambios surtan " +"efecto." -#: TimeTrackerCLI.py:269 -msgid "\nSelect the destination main project:" -msgstr "\nSeleccione el proyecto principal de destino:" +#: TimeTrackerCLI.py:800 +msgid "" +"\n" +"--- Reporting ---" +msgstr "" +"\n" +"--- Informes ---" -#: TimeTrackerCLI.py:274 -msgid "Enter the number of the destination main project: " -msgstr "Introduzca el número del proyecto principal de destino: " - -#: TimeTrackerCLI.py:279 -msgid "Successfully moved '{sub_name}' from '{source_name}' to '{dest_name}'." -msgstr "Se ha movido '{sub_name}' de '{source_name}' a '{dest_name}' con éxito." - -msgid "Error: {message}" -msgstr "Error: {message}" - -#: TimeTrackerCLI.py:286 -msgid "\n--- Promote Sub-Project to Main-Project ---" -msgstr "\n--- Promover Subproyecto a Proyecto Principal ---" - -#: TimeTrackerCLI.py:293 -msgid "Select the main project containing the sub-project to promote:" -msgstr "Seleccione el proyecto principal que contiene el subproyecto a promover:" - -#: TimeTrackerCLI.py:301 -msgid "No sub-projects to promote in '{name}'." -msgstr "No hay subproyectos para promover en '{name}'." - -#: TimeTrackerCLI.py:304 -msgid "\nSelect a sub-project from '{name}' to promote:" -msgstr "\nSeleccione un subproyecto de '{name}' para promover:" - -#: TimeTrackerCLI.py:315 -msgid "\n--- Demote Main-Project to Sub-Project ---" -msgstr "\n--- Degradar Proyecto Principal a Subproyecto ---" - -#: TimeTrackerCLI.py:318 TimeTrackerCLI.py:322 -msgid "You need at least two main projects for this operation." -msgstr "Necesita al menos dos proyectos principales para esta operación." - -msgid "Select the main project to demote:" -msgstr "Seleccione el proyecto principal a degradar:" - -#: TimeTrackerCLI.py:325 -msgid "Enter the number of the project to demote: " -msgstr "Introduzca el número del proyecto a degradar: " - -#: TimeTrackerCLI.py:328 -msgid "\nSelect the new parent main project:" -msgstr "\nSeleccione el nuevo proyecto principal padre:" - -#: TimeTrackerCLI.py:333 -msgid "Enter the number of the new parent project: " -msgstr "Introduzca el número del nuevo proyecto padre: " - -msgid "Invalid choice. Please enter a number from 0 to 17." -msgstr "Elección inválida. Por favor, introduzca un número del 0 al 17." - -#: TimeTrackerCLI.py:348 -msgid "\n--- Reporting ---" -msgstr "\n--- Informes ---" - -#: TimeTrackerCLI.py:349 +#: TimeTrackerCLI.py:801 msgid "1. Daily Report (Today)" msgstr "1. Informe Diario (Hoy)" -#: TimeTrackerCLI.py:350 +#: TimeTrackerCLI.py:802 msgid "2. Daily Report (Specific Day)" msgstr "2. Informe Diario (Día Específico)" -#: TimeTrackerCLI.py:351 +#: TimeTrackerCLI.py:803 msgid "3. Date Range Report" msgstr "3. Informe por Rango de Fechas" -#: TimeTrackerCLI.py:352 -msgid "4. Detailed Sub-Project Report" -msgstr "4. Informe Detallado de Subproyecto" +#: TimeTrackerCLI.py:804 +msgid "4. Detailed Task Report" +msgstr "4. Informe detallado de tareas" -#: TimeTrackerCLI.py:353 +#: TimeTrackerCLI.py:805 msgid "5. Detailed Main-Project Report" msgstr "5. Informe Detallado de Proyecto Principal" -#: TimeTrackerCLI.py:359 -msgid "\n--- Generate Daily Report (Today) ---" -msgstr "\n--- Generar Informe Diario (Hoy) ---" +#: TimeTrackerCLI.py:806 +msgid "6. Detailed Daily Report" +msgstr "6. Informe Diario Detallado" + +#: TimeTrackerCLI.py:815 +msgid "" +"\n" +"--- Generate Daily Report (Today) ---" +msgstr "" +"\n" +"--- Generar Informe Diario (Hoy) ---" -#: TimeTrackerCLI.py:363 -msgid "\n--- Generate Daily Report for a specific Day ---" -msgstr "\n--- Generar Informe Diario para un Día Específico ---" +#: TimeTrackerCLI.py:820 +msgid "" +"\n" +"--- Generate Daily Report for a specific Day ---" +msgstr "" +"\n" +"--- Generar Informe Diario para un Día Específico ---" -#: TimeTrackerCLI.py:364 +#: TimeTrackerCLI.py:821 msgid "Enter the date (YYYY-MM-DD): " msgstr "Introduzca la fecha (AAAA-MM-DD): " -#: TimeTrackerCLI.py:369 +#: TimeTrackerCLI.py:827 TimeTrackerCLI.py:842 TimeTrackerCLI.py:903 msgid "Invalid date format. Please use YYYY-MM-DD." msgstr "Formato de fecha inválido. Por favor, use AAAA-MM-DD." -#: TimeTrackerCLI.py:371 TimeTrackerCLI.py:373 -msgid "\n--- Generate Report for a Date Range ---" -msgstr "\n--- Generar Informe por Rango de Fechas ---" +#: TimeTrackerCLI.py:830 +msgid "" +"\n" +"--- Generate Report for a Date Range ---" +msgstr "" +"\n" +"--- Generar Informe por Rango de Fechas ---" +#: TimeTrackerCLI.py:831 msgid "Enter the start date (YYYY-MM-DD): " msgstr "Introduzca la fecha de inicio (AAAA-MM-DD): " -#: TimeTrackerCLI.py:375 +#: TimeTrackerCLI.py:832 msgid "Enter the end date (YYYY-MM-DD): " msgstr "Introduzca la fecha de fin (AAAA-MM-DD): " -#: TimeTrackerCLI.py:377 +#: TimeTrackerCLI.py:837 sl/SL_Menu.py:2227 msgid "Error: The start date cannot be after the end date." msgstr "Error: La fecha de inicio no puede ser posterior a la fecha de fin." -#: TimeTrackerCLI.py:382 -msgid "\n--- Detailed Sub-Project Report ---" -msgstr "\n--- Informe Detallado de Subproyecto ---" +#: TimeTrackerCLI.py:844 +msgid "" +"\n" +"--- Detailed Task Report ---" +msgstr "" +"\n" +"--- Informe de tarea detallado ---" -#: TimeTrackerCLI.py:384 TimeTrackerCLI.py:407 +#: TimeTrackerCLI.py:847 TimeTrackerCLI.py:880 sl/SL_Menu.py:1249 +#: sl/SL_Menu.py:1296 sl/SL_Menu.py:1435 sl/SL_Menu.py:2245 sl/SL_Menu.py:2304 msgid "No projects found." msgstr "No se encontraron proyectos." -#: TimeTrackerCLI.py:397 -msgid "\nSelect the sub-project for the report:" -msgstr "\nSeleccione el subproyecto para el informe:" +#: TimeTrackerCLI.py:864 +msgid "" +"\n" +"Select the task for the report:" +msgstr "" +"\n" +"Seleccione la tarea para el informe:" -#: TimeTrackerCLI.py:405 -msgid "\n--- Detailed Main-Project Report ---" -msgstr "\n--- Informe Detallado del Proyecto Principal ---" +#: TimeTrackerCLI.py:877 +msgid "" +"\n" +"--- Detailed Main-Project Report ---" +msgstr "" +"\n" +"--- Informe Detallado del Proyecto Principal ---" -#: TimeTrackerCLI.py:417 +#: TimeTrackerCLI.py:885 msgid "Select the main project for the report:" msgstr "Seleccione el proyecto principal para el informe:" -#: TimeTrackerCLI.py:424 -msgid "Invalid choice. Please enter a number from 0 to 5." -msgstr "Elección inválida. Por favor, introduzca un número del 0 al 5." - -#: TimeTrackerCLI.py:428 TimeTrackerCLI.py:469 -msgid "\n--- Settings ---" -msgstr "\n--- Configuración ---" - -#: TimeTrackerCLI.py:429 TimeTrackerCLI.py:562 -msgid "1. Change Language" -msgstr "1. Cambiar Idioma" - -#: TimeTrackerCLI.py:430 -msgid "2. Restore Previous Version" -msgstr "2. Restaurar Versión Anterior" - -msgid "3. Change Data Storage Location" -msgstr "3. Cambiar Ubicación de Almacenamiento de Datos" - -msgid "Invalid choice. Please enter a number from 0 to 3." -msgstr "Elección inválida. Por favor, introduzca un número del 0 al 3." - -#: TimeTrackerCLI.py:446 TimeTrackerCLI.py:545 -msgid "\n--- Language Settings ---" -msgstr "\n--- Configuración de Idioma ---" - -#: TimeTrackerCLI.py:449 TimeTrackerCLI.py:548 -msgid "No additional languages found." -msgstr "No se encontraron idiomas adicionales." - -#: TimeTrackerCLI.py:458 TimeTrackerCLI.py:587 -msgid "Language changed to '{lang}'. Please restart the application." -msgstr "Idioma cambiado a '{lang}'. Por favor, reinicie la aplicación." - -#: TimeTrackerCLI.py:460 TimeTrackerCLI.py:590 -msgid "Invalid choice." -msgstr "Elección inválida." - -#: TimeTrackerCLI.py:462 TimeTrackerCLI.py:592 -msgid "Invalid input. Please enter a number." -msgstr "Entrada inválida. Por favor, introduzca un número." - -msgid "\n--- Data Storage Settings ---" -msgstr "\n--- Configuración de Almacenamiento de Datos ---" - -msgid "Current data file: {path}" -msgstr "Archivo de datos actual: {path}" - -msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." -msgstr "Introduzca la nueva ruta para el archivo de datos (ej: /ruta/a/mis_datos.json)." - -msgid "Leave empty to cancel." -msgstr "Dejar vacío para cancelar." - -msgid "New Path: " -msgstr "Nueva Ruta: " - -msgid "Error: The directory '{dir}' does not exist." -msgstr "Error: El directorio '{dir}' no existe." - -msgid "Storage location updated." -msgstr "Ubicación de almacenamiento actualizada." - -msgid "Do you want to move the existing data to the new location? (y/n): " -msgstr "¿Desea mover los datos existentes a la nueva ubicación? (s/n): " +#: TimeTrackerCLI.py:896 +msgid "" +"\n" +"--- Detailed Daily Report ---" +msgstr "" +"\n" +"--- Informe Diario Detallado ---" -msgid "Data moved successfully." -msgstr "Datos movidos con éxito." +#: TimeTrackerCLI.py:897 +msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " +msgstr "Introduzca la fecha (AAAA-MM-DD) o presione Enter para hoy: " -msgid "Error moving data: {error}" -msgstr "Error al mover datos: {error}" +#: TimeTrackerCLI.py:911 TimeTrackerCLI.py:1042 +msgid "Invalid choice. Please enter a number from 0 to 6." +msgstr "Elección inválida. Por favor, introduzca un número del 0 al 6." -#: TimeTrackerCLI.py:508 -msgid "\n--- Update Available ---" -msgstr "\n--- Actualización Disponible ---" +#: TimeTrackerCLI.py:919 +msgid "" +"\n" +"--- Update Available ---" +msgstr "" +"\n" +"--- Actualización Disponible ---" -#: TimeTrackerCLI.py:509 +#: TimeTrackerCLI.py:920 msgid "A downloaded update is ready to be installed." msgstr "Una actualización descargada está lista para ser instalada." -#: TimeTrackerCLI.py:510 +#: TimeTrackerCLI.py:921 msgid "0. Skip update for now" msgstr "0. Omitir actualización por ahora" -#: TimeTrackerCLI.py:511 +#: TimeTrackerCLI.py:922 msgid "1. Install update now" msgstr "1. Instalar actualización ahora" -#: TimeTrackerCLI.py:512 +#: TimeTrackerCLI.py:923 msgid "Enter your choice (0 or 1): " msgstr "Introduzca su elección (0 o 1): " -#: TimeTrackerCLI.py:515 +#: TimeTrackerCLI.py:927 msgid "Application is restarting to complete the update..." msgstr "La aplicación se está reiniciando para completar la actualización..." -#: TimeTrackerCLI.py:518 +#: TimeTrackerCLI.py:931 msgid "Update installation skipped. The application will start normally." -msgstr "Instalación de la actualización omitida. La aplicación se iniciará normalmente." +msgstr "" +"Instalación de la actualización omitida. La aplicación se iniciará " +"normalmente." -#: TimeTrackerCLI.py:520 +#: TimeTrackerCLI.py:933 msgid "" "Invalid choice. Update installation skipped. The application will start " "normally." msgstr "" -"Elección inválida. Instalación de la actualización omitida. La aplicación se " -"iniciará normalmente." +"Elección inválida. Instalación de la actualización omitida. La aplicación se" +" iniciará normalmente." -#: TimeTrackerCLI.py:525 -msgid "\n=== Time Control {version} ===" -msgstr "\n=== Time Control {version} ===" +#: TimeTrackerCLI.py:940 +#, python-brace-format +msgid "" +"\n" +"=== Time Control {version} ===" +msgstr "" +"\n" +"=== Time Control {version} ===" -#: TimeTrackerCLI.py:526 +#: TimeTrackerCLI.py:941 msgid "--- Main Menu ---" msgstr "--- Menú Principal ---" -msgid "1. Start work on sub-project" -msgstr "1. Iniciar trabajo en subproyecto" +#: TimeTrackerCLI.py:942 +msgid "1. Start work on task" +msgstr "1. Comenzar a trabajar en la tarea" -#: TimeTrackerCLI.py:528 +#: TimeTrackerCLI.py:943 msgid "2. Show current work" msgstr "2. Mostrar trabajo actual" -#: TimeTrackerCLI.py:530 +#: TimeTrackerCLI.py:944 msgid "3. Stop current work" msgstr "3. Detener trabajo actual" -#: TimeTrackerCLI.py:531 -msgid "4. Handle projects and sub-projects" -msgstr "4. Gestionar proyectos y subproyectos" +#: TimeTrackerCLI.py:946 +msgid "4. Handle projects and tasks" +msgstr "4. Manejar proyectos y tareas" -#: TimeTrackerCLI.py:532 +#: TimeTrackerCLI.py:947 msgid "5. Reporting" msgstr "5. Informes" -#: TimeTrackerCLI.py:533 +#: TimeTrackerCLI.py:948 msgid "6. Settings" msgstr "6. Configuración" -#: TimeTrackerCLI.py:535 +#: TimeTrackerCLI.py:950 msgid "0. Exit" msgstr "0. Salir" -#: TimeTrackerCLI.py:541 -msgid "\n--- Start Work on a Sub-Project ---" -msgstr "\n--- Iniciar Trabajo en un Subproyecto ---" +#: TimeTrackerCLI.py:957 +msgid "" +"\n" +"--- Start Work on a Task ---" +msgstr "" +"\n" +"--- Comenzar a trabajar en una tarea ---" + +#: TimeTrackerCLI.py:963 +msgid "Select a main project:" +msgstr "Seleccione un proyecto principal:" -#: TimeTrackerCLI.py:498 -msgid "Select a sub-project from '{name}':" -msgstr "Seleccione un subproyecto de '{name}':" +#: TimeTrackerCLI.py:974 +#, python-brace-format +msgid "No open tasks found for '{name}' to start work on." +msgstr "" +"No se encontraron tareas abiertas para '{name}' para comenzar a trabajar." -#: TimeTrackerCLI.py:507 -msgid "Work started on '{sub_name}' in project '{main_name}'." -msgstr "Trabajo iniciado en '{sub_name}' en el proyecto '{main_name}'." +#: TimeTrackerCLI.py:977 +#, python-brace-format +msgid "Select a task from '{name}':" +msgstr "Seleccione una tarea de '{name}':" +#: TimeTrackerCLI.py:987 sl/SL_Menu.py:1884 +#, python-brace-format +msgid "Work started on '{task_name}' in project '{main_name}'." +msgstr "Trabajo iniciado en '{task_name}' en el proyecto '{main_name}'." + +#: TimeTrackerCLI.py:989 sl/SL_Menu.py:1888 msgid "Error starting work." msgstr "Error al iniciar el trabajo." -#: TimeTrackerCLI.py:514 -msgid "\n--- Current Active Work ---" -msgstr "\n--- Trabajo Activo Actual ---" +#: TimeTrackerCLI.py:996 +msgid "" +"\n" +"--- Current Active Work ---" +msgstr "" +"\n" +"--- Trabajo Activo Actual ---" -#: TimeTrackerCLI.py:523 +#: TimeTrackerCLI.py:1006 msgid "You are currently working on:" msgstr "Actualmente está trabajando en:" -#: TimeTrackerCLI.py:524 +#: TimeTrackerCLI.py:1007 +#, python-brace-format msgid " Main Project: {name}" msgstr " Proyecto Principal: {name}" -#: TimeTrackerCLI.py:525 -msgid " Sub-Project: {name}" -msgstr " Subproyecto: {name}" +#: TimeTrackerCLI.py:1008 +#, python-brace-format +msgid " Task: {name}" +msgstr "Tarea:{name}" -#: TimeTrackerCLI.py:526 +#: TimeTrackerCLI.py:1009 +#, python-brace-format msgid " Started at: {date}" msgstr " Iniciado a las: {date}" -#: TimeTrackerCLI.py:527 +#: TimeTrackerCLI.py:1010 +#, python-brace-format msgid " Duration: {duration}" msgstr " Duración: {duration}" -#: TimeTrackerCLI.py:529 +#: TimeTrackerCLI.py:1012 sl/SL_Menu.py:373 sl/SL_Menu.py:1910 msgid "No active work session." msgstr "No hay sesión de trabajo activa." -#: TimeTrackerCLI.py:532 -msgid "\n--- Stop Work ---" -msgstr "\n--- Detener Trabajo ---" +#: TimeTrackerCLI.py:1016 +msgid "" +"\n" +"--- Stop Work ---" +msgstr "" +"\n" +"--- Detener Trabajo ---" -#: TimeTrackerCLI.py:534 +#: TimeTrackerCLI.py:1018 sl/SL_Menu.py:341 msgid "Work session stopped successfully." msgstr "Sesión de trabajo detenida con éxito." -#: TimeTrackerCLI.py:536 +#: TimeTrackerCLI.py:1020 sl/SL_Menu.py:343 msgid "No active work session to stop." msgstr "No hay ninguna sesión de trabajo activa para detener." -#: TimeTrackerCLI.py:598 -msgid "\nChecking for updates..." -msgstr "\nBuscando actualizaciones..." +#: TimeTrackerCLI.py:1034 +msgid "" +"\n" +"Checking for updates..." +msgstr "" +"\n" +"Buscando actualizaciones..." -#: TimeTrackerCLI.py:602 +#: TimeTrackerCLI.py:1038 msgid "Exiting application. Goodbye!" msgstr "Saliendo de la aplicación. ¡Adiós!" -#: TimeTrackerCLI.py:605 -msgid "Invalid choice. Please enter a number from 0 to 6." -msgstr "Elección inválida. Por favor, introduzca un número del 0 al 6." - -#: update.py:24 +#: update.py:35 msgid "" "Warning: Update check skipped. 'github_repo' not found in config.json or " "file is invalid." @@ -1031,239 +1285,1190 @@ msgstr "" "Advertencia: Comprobación de actualizaciones omitida. 'github_repo' no " "encontrado en config.json o el archivo es inválido." -#: update.py:24 -msgid "Error updating configuration: {error}" -msgstr "Error al actualizar la configuración: {error}" - -#: update.py:38 +#: update.py:49 +#, python-brace-format msgid "A new version ({version}) is available." msgstr "Una nueva versión ({version}) está disponible." -#: update.py:43 +#: update.py:55 msgid "Error: Download URL for the new version not found." msgstr "Error: No se encontró la URL de descarga para la nueva versión." -#: update.py:47 +#: update.py:59 +#, python-brace-format msgid "Error checking for updates: {error}" msgstr "Error al buscar actualizaciones: {error}" -#: update.py:49 +#: update.py:61 +#, python-brace-format msgid "An unexpected error occurred while checking for updates: {error}" msgstr "Ocurrió un error inesperado al buscar actualizaciones: {error}" -#: update.py:61 +#: update.py:73 msgid "Downloading update..." msgstr "Descargando actualización..." -#: update.py:67 +#: update.py:79 msgid "Download complete. The update will be installed on the next start." -msgstr "Descarga completa. La actualización se instalará en el próximo inicio." +msgstr "" +"Descarga completa. La actualización se instalará en el próximo inicio." -#: update.py:70 +#: update.py:82 +#, python-brace-format msgid "Error downloading the update: {error}" msgstr "Error al descargar la actualización: {error}" -#: update.py:112 +#: update.py:108 msgid "Creating backup of current version before update..." -msgstr "Creando copia de seguridad de la versión actual antes de la actualización..." +msgstr "" +"Creando copia de seguridad de la versión actual antes de la actualización..." -#: update.py:121 +#: update.py:118 +#, python-brace-format msgid "Backup created successfully as {filename}." msgstr "Copia de seguridad creada con éxito como {filename}." -#: update.py:123 +#: update.py:120 +#, python-brace-format msgid "Warning: Could not create backup. Error: {error}" msgstr "Advertencia: No se pudo crear la copia de seguridad. Error: {error}" -#: update.py:125 +#: update.py:122 msgid "Installing update..." msgstr "Instalando actualización..." -#: update.py:143 +#: update.py:142 +#, python-brace-format msgid "Skipping protected file: {filename}. It will not be overwritten." msgstr "Omitiendo archivo protegido: {filename}. No será sobrescrito." -#: update.py:152 +#: update.py:151 msgid "Update installed successfully." msgstr "Actualización instalada con éxito." -#: update.py:154 +#: update.py:153 +#, python-brace-format msgid "Error during update installation: {error}" msgstr "Error durante la instalación de la actualización: {error}" -#: update.py:164 +#: update.py:168 +#, python-brace-format msgid "Error: No previous version backup '{filename}' found." -msgstr "Error: No se encontró la copia de seguridad de la versión anterior '{filename}'." +msgstr "" +"Error: No se encontró la copia de seguridad de la versión anterior " +"'{filename}'." -#: update.py:167 +#: update.py:171 +#, python-brace-format msgid "Restoring previous version from '{filename}'..." msgstr "Restaurando la versión anterior desde '{filename}'..." -#: update.py:182 -msgid "" -"Skipping user data file: {filename}. It will not be overwritten during " -"restore." -msgstr "" -"Omitiendo archivo de datos de usuario: {filename}. No será sobrescrito " -"durante la restauración." +#: update.py:192 +#, python-brace-format +msgid "" +"Skipping user data file: {filename}. It will not be overwritten during " +"restore." +msgstr "" +"Omitiendo archivo de datos de usuario: {filename}. No será sobrescrito " +"durante la restauración." + +#: update.py:199 +msgid "Previous version restored successfully." +msgstr "Versión anterior restaurada con éxito." + +#: update.py:201 +msgid "Restarting application to apply changes..." +msgstr "Reiniciando la aplicación para aplicar los cambios..." + +#: update.py:204 +#, python-brace-format +msgid "Error during restoration: {error}" +msgstr "Error durante la restauración: {error}" + +#: update.py:205 +#, python-brace-format +msgid "The backup file '{filename}' was not deleted." +msgstr "El archivo de copia de seguridad '{filename}' no fue eliminado." + +#: update.py:212 +msgid "Error: Could not import TimeTracker to get the current version." +msgstr "" +"Error: No se pudo importar TimeTracker para obtener la versión actual." + +#: update.py:215 +msgid "Checking for updates..." +msgstr "Buscando actualizaciones..." + +#: update.py:222 +msgid "No updates available." +msgstr "No hay actualizaciones disponibles." + +#: tt/TimeTracker.py:90 +#, python-brace-format +msgid "Warning: Could not read {file}. Error: {error}" +msgstr "Advertencia: No se pudo leer {file}. Error: {error}" + +#: tt/TimeTracker.py:105 +msgid "Some required packages are missing. Attempting to install them..." +msgstr "Faltan algunos paquetes requeridos. Intentando instalarlos..." + +#: tt/TimeTracker.py:108 +#, python-brace-format +msgid "Installing {package}..." +msgstr "Instalando {package}..." + +#: tt/TimeTracker.py:112 +#, python-brace-format +msgid "Failed to install {package}. Continuing without it." +msgstr "No se pudo instalar{package}. Continuar sin él." + +#: tt/TimeTracker.py:116 +msgid "" +"\n" +"Dependencies installed successfully." +msgstr "" +"\n" +"Dependencias instaladas con éxito." + +#: tt/TimeTracker.py:120 +#, python-brace-format +msgid "" +"\n" +"Warning: Some dependencies could not be installed: {packages}" +msgstr "" +"\n" +"Advertencia: No se pudieron instalar algunas dependencias:{packages}" + +#: tt/TimeTracker.py:122 +#, python-brace-format +msgid "An unexpected error occurred during dependency check: {error}" +msgstr "" +"Ocurrió un error inesperado durante la comprobación de dependencias: {error}" + +#: tt/TimeTracker.py:229 +msgid "Info: Report content has been copied to the clipboard." +msgstr "Info: El contenido del informe ha sido copiado al portapapeles." + +#: tt/TimeTracker.py:231 +#, python-brace-format +msgid "Warning: Could not copy to clipboard. Error: {error}" +msgstr "Advertencia: No se pudo copiar al portapapeles. Error: {error}" + +#: tt/TimeTracker.py:233 +msgid "" +"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " +"install pyperclip`)." +msgstr "" +"Advertencia: No se pudo copiar al portapapeles. Por favor, instale " +"'pyperclip' (`pip install pyperclip`)." + +#: tt/TimeTracker.py:253 +#, python-brace-format +msgid "{hours} hours ({dlp} DLP)" +msgstr "{hours}horas ({dlp}DLP)" + +#: tt/TimeTracker.py:846 tt/TimeTracker.py:886 +#, python-brace-format +msgid "Source main project '{name}' not found." +msgstr "Proyecto principal de origen '{name}' no encontrado." + +#: tt/TimeTracker.py:848 +#, python-brace-format +msgid "Destination main project '{name}' not found." +msgstr "Proyecto principal de destino '{name}' no encontrado." + +#: tt/TimeTracker.py:860 +#, python-brace-format +msgid "Task '{task_name}' moved successfully." +msgstr "Tarea '{task_name}' movida con éxito." + +#: tt/TimeTracker.py:861 tt/TimeTracker.py:896 tt/TimeTracker.py:1373 +#, python-brace-format +msgid "Task '{task_name}' not found in '{main_name}'." +msgstr "Tarea '{task_name}' no encontrada en '{main_name}'." + +#: tt/TimeTracker.py:880 +#, python-brace-format +msgid "A main project named '{name}' already exists." +msgstr "Ya existe un proyecto principal llamado '{name}'." + +#: tt/TimeTracker.py:905 +msgid "General" +msgstr "General" + +#: tt/TimeTracker.py:909 +#, python-brace-format +msgid "Task '{task_name}' was promoted to a new main project." +msgstr "La tarea '{task_name}' fue promovida a un nuevo proyecto principal." + +#: tt/TimeTracker.py:936 +#, python-brace-format +msgid "Main project to demote '{name}' not found." +msgstr "No se encontró el proyecto principal a degradar '{name}'." + +#: tt/TimeTracker.py:938 +#, python-brace-format +msgid "New parent main project '{name}' not found." +msgstr "No se encontró el nuevo proyecto principal padre '{name}'." + +#: tt/TimeTracker.py:963 +#, python-brace-format +msgid "" +"Main project '{demoted_name}' was demoted to a sub-project under " +"'{parent_name}'." +msgstr "" +"El proyecto principal '{demoted_name}' fue degradado a un subproyecto bajo " +"'{parent_name}'." + +#: tt/TimeTracker.py:1042 +msgid "Email import is not enabled." +msgstr "La importación de correo electrónico no está habilitada." + +#: tt/TimeTracker.py:1051 +msgid "Email settings are incomplete." +msgstr "La configuración de correo electrónico está incompleta." + +#: tt/TimeTracker.py:1064 +msgid "Error searching emails." +msgstr "Error al buscar correos electrónicos." + +#: tt/TimeTracker.py:1079 +msgid "No Subject" +msgstr "Sin asunto" + +#: tt/TimeTracker.py:1139 +msgid "Unknown Task" +msgstr "Tarea desconocida" + +#: tt/TimeTracker.py:1330 +#, python-brace-format +msgid "- {name}: {hours} hours" +msgstr "-{name}:{hours}horas" + +#: tt/TimeTracker.py:1338 +#, python-brace-format +msgid "## {name} ({hours} hours)\n" +msgstr "##{name}({hours}horas)\n" + +#: tt/TimeTracker.py:1347 +#, python-brace-format +msgid "# Daily Time Report: {date}\n" +msgstr "# Informe de Tiempo Diario: {date}\n" + +#: tt/TimeTracker.py:1348 +#, python-brace-format +msgid "" +"\n" +"**Total Daily Time: {hours} hours**" +msgstr "" +"\n" +"**Tiempo diario total:{hours}horas**" + +#: tt/TimeTracker.py:1352 tt/TimeTracker.py:1665 +#, python-brace-format +msgid "No time tracked for {date}." +msgstr "No hay tiempo registrado para {date}." + +#: tt/TimeTracker.py:1369 tt/TimeTracker.py:1464 +#, python-brace-format +msgid "Main project '{name}' not found." +msgstr "Proyecto principal '{name}' no encontrado." + +#: tt/TimeTracker.py:1377 +#, python-brace-format +msgid "No time entries found for task '{task_name}'." +msgstr "No se encontraron entradas de tiempo para la tarea '{task_name}'." + +#: tt/TimeTracker.py:1410 tt/TimeTracker.py:1640 +msgid "now" +msgstr "ahora" + +#: tt/TimeTracker.py:1411 sl/SL_Menu.py:1908 +msgid "Duration" +msgstr "Duración" + +#: tt/TimeTracker.py:1415 +#, python-brace-format +msgid "# Detailed Report for Task: {name}" +msgstr "# Informe detallado de la tarea:{name}" + +#: tt/TimeTracker.py:1416 +#, python-brace-format +msgid "Part of Main Project: {name}" +msgstr "Parte del Proyecto Principal: {name}" + +#: tt/TimeTracker.py:1419 +msgid "Active (currently running)" +msgstr "Activo (actualmente en ejecución)" + +#: tt/TimeTracker.py:1419 tt/TimeTracker.py:1516 +msgid "Inactive" +msgstr "Inactivo" + +#: tt/TimeTracker.py:1420 tt/TimeTracker.py:1517 +msgid "Status" +msgstr "Estado" + +#: tt/TimeTracker.py:1422 tt/TimeTracker.py:1519 +msgid "First entry" +msgstr "Primera entrada" + +#: tt/TimeTracker.py:1424 tt/TimeTracker.py:1521 +msgid "Last activity" +msgstr "Última actividad" + +#: tt/TimeTracker.py:1426 tt/TimeTracker.py:1523 +msgid "Total recorded time" +msgstr "Tiempo total registrado" + +#: tt/TimeTracker.py:1427 tt/TimeTracker.py:1525 +msgid "Total work sessions" +msgstr "Total de sesiones de trabajo" + +#: tt/TimeTracker.py:1431 tt/TimeTracker.py:1529 +msgid "Average session duration" +msgstr "Duración media de la sesión" + +#: tt/TimeTracker.py:1434 tt/TimeTracker.py:1532 +msgid "Weekday Distribution" +msgstr "Distribución por día de la semana" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Monday" +msgstr "Lunes" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Tuesday" +msgstr "Martes" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Wednesday" +msgstr "Miércoles" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Thursday" +msgstr "Jueves" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Friday" +msgstr "Viernes" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Saturday" +msgstr "Sábado" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Sunday" +msgstr "Domingo" + +#: tt/TimeTracker.py:1444 +msgid "Daily Breakdown" +msgstr "Desglose diario" + +#: tt/TimeTracker.py:1513 +#, python-brace-format +msgid "# Detailed Report for Main Project: {name}" +msgstr "# Informe Detallado del Proyecto Principal: {name}" + +#: tt/TimeTracker.py:1516 +#, python-brace-format +msgid "Active (working on '{task_name}')" +msgstr "Activo (trabajando en '{task_name}')" + +#: tt/TimeTracker.py:1524 +msgid "Number of tasks" +msgstr "Número de tareas" + +#: tt/TimeTracker.py:1543 +msgid "Task Breakdown" +msgstr "Desglose de tareas" + +#: tt/TimeTracker.py:1552 +#, python-brace-format +msgid "{num_sessions} sessions" +msgstr "{num_sessions} sesiones" + +#: tt/TimeTracker.py:1605 +#, python-brace-format +msgid "# Time Report: {start_date} to {end_date}\n" +msgstr "# Informe de Tiempo: {start_date} a {end_date}\n" + +#: tt/TimeTracker.py:1606 +#, python-brace-format +msgid "" +"\n" +"**Total Time in Period: {total_time}**" +msgstr "" +"\n" +"**Tiempo Total en el Periodo: {total_time}**" + +#: tt/TimeTracker.py:1610 +#, python-brace-format +msgid "No time tracked between {start_date} and {end_date}." +msgstr "No hay tiempo registrado entre {start_date} y {end_date}." + +#: tt/TimeTracker.py:1626 +#, python-brace-format +msgid "# Detailed Daily Report: {date}" +msgstr "# Informe Diario Detallado: {date}" + +#: sl/SL_Menu.py:277 +msgid "New" +msgstr "Nuevo" + +#: sl/SL_Menu.py:278 +msgid "New Project" +msgstr "Nuevo proyecto" + +#: sl/SL_Menu.py:281 +msgid "New Task" +msgstr "Nueva tarea" + +#: sl/SL_Menu.py:286 +msgid "Project & Task Management" +msgstr "Gestión de proyectos y tareas" + +#: sl/SL_Menu.py:287 sl/SL_Menu.py:780 +msgid "Main Project Management" +msgstr "Gestión de Proyectos Principales" + +#: sl/SL_Menu.py:288 sl/SL_Menu.py:796 sl/SL_Menu.py:894 +msgid "Add Project" +msgstr "Añadir Proyecto" + +#: sl/SL_Menu.py:291 sl/SL_Menu.py:799 sl/SL_Menu.py:1242 +msgid "List Projects" +msgstr "Listar Proyectos" + +#: sl/SL_Menu.py:292 sl/SL_Menu.py:800 sl/SL_Menu.py:1257 +msgid "Rename Project" +msgstr "Renombrar Proyecto" + +#: sl/SL_Menu.py:293 sl/SL_Menu.py:801 sl/SL_Menu.py:1371 sl/SL_Menu.py:1384 +msgid "Close Project" +msgstr "Cerrar Proyecto" + +#: sl/SL_Menu.py:294 sl/SL_Menu.py:802 sl/SL_Menu.py:1401 sl/SL_Menu.py:1414 +msgid "Re-open Project" +msgstr "Reabrir Proyecto" + +#: sl/SL_Menu.py:295 sl/SL_Menu.py:803 sl/SL_Menu.py:1431 sl/SL_Menu.py:1445 +msgid "Delete Project" +msgstr "Eliminar Proyecto" + +#: sl/SL_Menu.py:296 sl/SL_Menu.py:804 sl/SL_Menu.py:1462 +msgid "List Inactive Projects" +msgstr "Listar Proyectos Inactivos" + +#: sl/SL_Menu.py:297 sl/SL_Menu.py:805 +msgid "Demote Project to Task" +msgstr "Degradar Proyecto a Tarea" + +#: sl/SL_Menu.py:298 sl/SL_Menu.py:806 sl/SL_Menu.py:1524 +msgid "List Completed Projects" +msgstr "Listar Proyectos Completados" + +#: sl/SL_Menu.py:300 sl/SL_Menu.py:782 sl/SL_Menu.py:817 +msgid "Task Management" +msgstr "Gestión de Tareas" + +#: sl/SL_Menu.py:301 sl/SL_Menu.py:819 sl/SL_Menu.py:1542 sl/SL_Menu.py:1573 +#: sl/SL_Menu.py:1646 +msgid "Add Task" +msgstr "Añadir Tarea" + +#: sl/SL_Menu.py:304 sl/SL_Menu.py:822 sl/SL_Menu.py:1292 +msgid "List Tasks" +msgstr "Listar Tareas" + +#: sl/SL_Menu.py:305 sl/SL_Menu.py:823 sl/SL_Menu.py:1324 +msgid "Rename Task" +msgstr "Renombrar Tarea" + +#: sl/SL_Menu.py:306 sl/SL_Menu.py:824 sl/SL_Menu.py:909 sl/SL_Menu.py:935 +#: sl/SL_Menu.py:1114 +msgid "Close Task" +msgstr "Cerrar Tarea" + +#: sl/SL_Menu.py:307 sl/SL_Menu.py:825 sl/SL_Menu.py:954 sl/SL_Menu.py:980 +msgid "Re-open Task" +msgstr "Reabrir Tarea" + +#: sl/SL_Menu.py:308 sl/SL_Menu.py:826 sl/SL_Menu.py:999 sl/SL_Menu.py:1026 +msgid "Delete Task" +msgstr "Eliminar Tarea" + +#: sl/SL_Menu.py:309 sl/SL_Menu.py:827 sl/SL_Menu.py:1045 sl/SL_Menu.py:1081 +msgid "Move Task" +msgstr "Mover Tarea" + +#: sl/SL_Menu.py:310 sl/SL_Menu.py:828 sl/SL_Menu.py:1100 +msgid "List Inactive Tasks" +msgstr "Listar Tareas Inactivas" + +#: sl/SL_Menu.py:311 sl/SL_Menu.py:829 sl/SL_Menu.py:1127 +msgid "List All Closed Tasks" +msgstr "Listar Todas las Tareas Cerradas" + +#: sl/SL_Menu.py:312 sl/SL_Menu.py:477 sl/SL_Menu.py:539 sl/SL_Menu.py:626 +#: sl/SL_Menu.py:830 sl/SL_Menu.py:1673 sl/SL_Menu.py:1693 sl/SL_Menu.py:1728 +msgid "Edit Task" +msgstr "Editar tarea" + +#: sl/SL_Menu.py:315 sl/SL_Menu.py:833 sl/SL_Menu.py:1152 +msgid "Delete All Closed Tasks" +msgstr "Eliminar Todas las Tareas Cerradas" + +#: sl/SL_Menu.py:316 sl/SL_Menu.py:834 sl/SL_Menu.py:1194 +msgid "Promote Task to Project" +msgstr "Promover Tarea a Proyecto" + +#: sl/SL_Menu.py:319 +msgid "Today View" +msgstr "Vista de hoy" + +#: sl/SL_Menu.py:323 sl/SL_Menu.py:405 +msgid "Task Planning" +msgstr "Planificación de tareas" + +#: sl/SL_Menu.py:327 sl/SL_Menu.py:655 +msgid "E-Mail Task Assignment" +msgstr "Asignación de tareas por correo" + +#: sl/SL_Menu.py:331 sl/SL_Menu.py:473 sl/SL_Menu.py:535 sl/SL_Menu.py:622 +msgid "Start work on task" +msgstr "Iniciar trabajo en tarea" + +#: sl/SL_Menu.py:335 +msgid "Show current work" +msgstr "Mostrar trabajo actual" + +#: sl/SL_Menu.py:339 +msgid "Stop current work" +msgstr "Detener trabajo actual" + +#: sl/SL_Menu.py:347 sl/SL_Menu.py:845 +msgid "Reporting" +msgstr "Informes" + +#: sl/SL_Menu.py:348 sl/SL_Menu.py:848 +msgid "Daily Report (Today)" +msgstr "Informe Diario (Hoy)" + +#: sl/SL_Menu.py:352 sl/SL_Menu.py:853 sl/SL_Menu.py:2195 +msgid "Daily Report (Specific Day)" +msgstr "Informe Diario (Día Específico)" + +#: sl/SL_Menu.py:354 sl/SL_Menu.py:854 sl/SL_Menu.py:2214 +msgid "Date Range Report" +msgstr "Informe por Rango de Fechas" + +#: sl/SL_Menu.py:356 sl/SL_Menu.py:855 sl/SL_Menu.py:2241 sl/SL_Menu.py:2272 +msgid "Detailed Task Report" +msgstr "Informe Detallado de Tarea" + +#: sl/SL_Menu.py:358 sl/SL_Menu.py:856 sl/SL_Menu.py:2300 +msgid "Detailed Project Report" +msgstr "Informe Detallado de Proyecto" + +#: sl/SL_Menu.py:360 sl/SL_Menu.py:857 sl/SL_Menu.py:2327 +msgid "Detailed Daily Report" +msgstr "Informe Diario Detallado" + +#: sl/SL_Menu.py:364 sl/SL_Menu.py:868 +msgid "Settings" +msgstr "Configuración" + +#: sl/SL_Menu.py:371 sl/SL_Menu.py:1897 +msgid "Current Active Work" +msgstr "Trabajo Activo Actual" + +#: sl/SL_Menu.py:376 sl/SL_Menu.py:497 sl/SL_Menu.py:559 sl/SL_Menu.py:633 +#: sl/SL_Menu.py:1773 +msgid "Done" +msgstr "Hecho" + +#: sl/SL_Menu.py:390 +msgid "Edit current task" +msgstr "Editar tarea actual" + +#: sl/SL_Menu.py:398 +msgid "Exit" +msgstr "Salir" + +#: sl/SL_Menu.py:410 sl/SL_Menu.py:420 +msgid "Tomorrow" +msgstr "Mañana" + +#: sl/SL_Menu.py:411 sl/SL_Menu.py:421 +msgid "Weekly overview" +msgstr "Resumen semanal" + +#: sl/SL_Menu.py:412 sl/SL_Menu.py:422 +msgid "Overdue tasks" +msgstr "Tareas vencidas" + +#: sl/SL_Menu.py:413 sl/SL_Menu.py:423 +msgid "Unplanned tasks" +msgstr "Tareas no planificadas" + +#: sl/SL_Menu.py:414 +msgid "All" +msgstr "Todo" + +#: sl/SL_Menu.py:416 +msgid "Filter" +msgstr "Filtro" + +#: sl/SL_Menu.py:430 +msgid "Tasks" +msgstr "Tareas" + +#: sl/SL_Menu.py:572 +msgid "No tasks found." +msgstr "No Tareas encontradas." + +#: sl/SL_Menu.py:574 sl/SL_Menu.py:648 sl/SL_Menu.py:770 sl/SL_Menu.py:810 +#: sl/SL_Menu.py:838 sl/SL_Menu.py:914 sl/SL_Menu.py:925 sl/SL_Menu.py:959 +#: sl/SL_Menu.py:970 sl/SL_Menu.py:1004 sl/SL_Menu.py:1015 sl/SL_Menu.py:1050 +#: sl/SL_Menu.py:1061 sl/SL_Menu.py:1069 sl/SL_Menu.py:1120 sl/SL_Menu.py:1145 +#: sl/SL_Menu.py:1167 sl/SL_Menu.py:1199 sl/SL_Menu.py:1210 sl/SL_Menu.py:1250 +#: sl/SL_Menu.py:1262 sl/SL_Menu.py:1297 sl/SL_Menu.py:1317 sl/SL_Menu.py:1329 +#: sl/SL_Menu.py:1340 sl/SL_Menu.py:1376 sl/SL_Menu.py:1406 sl/SL_Menu.py:1436 +#: sl/SL_Menu.py:1476 sl/SL_Menu.py:1488 sl/SL_Menu.py:1535 sl/SL_Menu.py:1547 +#: sl/SL_Menu.py:1678 sl/SL_Menu.py:1697 sl/SL_Menu.py:1710 sl/SL_Menu.py:1725 +#: sl/SL_Menu.py:1858 sl/SL_Menu.py:1868 sl/SL_Menu.py:1912 sl/SL_Menu.py:2097 +#: sl/SL_Menu.py:2102 sl/SL_Menu.py:2207 sl/SL_Menu.py:2234 sl/SL_Menu.py:2246 +#: sl/SL_Menu.py:2258 sl/SL_Menu.py:2277 sl/SL_Menu.py:2293 sl/SL_Menu.py:2305 +#: sl/SL_Menu.py:2320 sl/SL_Menu.py:2339 sl/SL_Menu.py:2380 sl/SL_Menu.py:2395 +msgid "Back" +msgstr "Atrás" + +#: sl/SL_Menu.py:581 +msgid "Today's Tasks" +msgstr "Tareas de hoy" + +#: sl/SL_Menu.py:646 +msgid "No tasks for today." +msgstr "No hay tareas para hoy." + +#: sl/SL_Menu.py:661 +msgid "Fetching emails..." +msgstr "Recuperando correos electrónicos..." + +#: sl/SL_Menu.py:664 +#, python-brace-format +msgid "Error fetching emails: {error}" +msgstr "Error al recuperar correos: {error}" + +#: sl/SL_Menu.py:667 +#, python-brace-format +msgid "{count} new tasks created from emails." +msgstr "{count} nuevas tareas creadas desde correos." + +#: sl/SL_Menu.py:669 +msgid "No new emails found." +msgstr "No se encontraron correos nuevos." + +#: sl/SL_Menu.py:675 +msgid "No unassigned email tasks available." +msgstr "No hay tareas de correo sin asignar disponibles." + +#: sl/SL_Menu.py:687 +msgid "Assign Project" +msgstr "Asignar proyecto" + +#: sl/SL_Menu.py:698 +msgid "Are you sure you want to delete this task?" +msgstr "¿Está seguro de que desea eliminar esta tarea?" + +#: sl/SL_Menu.py:701 +msgid "Yes, delete" +msgstr "Sí, eliminar" + +#: sl/SL_Menu.py:706 +msgid "No, cancel" +msgstr "No, cancelar" + +#: sl/SL_Menu.py:713 +msgid "Delete" +msgstr "Eliminar" + +#: sl/SL_Menu.py:717 +msgid "Edit Details" +msgstr "Editar detalles" + +#: sl/SL_Menu.py:725 sl/SL_Menu.py:1757 +msgid "Task Name" +msgstr "Nombre de la tarea" + +#: sl/SL_Menu.py:734 sl/SL_Menu.py:1761 +msgid "Due Date" +msgstr "Fecha de vencimiento" + +#: sl/SL_Menu.py:742 sl/SL_Menu.py:1765 +msgid "Clear" +msgstr "Limpiar" + +#: sl/SL_Menu.py:749 sl/SL_Menu.py:1634 sl/SL_Menu.py:1804 +msgid "Notes (Markdown)" +msgstr "Notas (Markdown)" -#: update.py:188 -msgid "Previous version restored successfully." -msgstr "Versión anterior restaurada con éxito." +#: sl/SL_Menu.py:751 sl/SL_Menu.py:1816 +msgid "Save Changes" +msgstr "Guardar cambios" -#: update.py:190 -msgid "Restarting application to apply changes..." -msgstr "Reiniciando la aplicación para aplicar los cambios..." +#: sl/SL_Menu.py:762 +msgid "Task details updated successfully." +msgstr "Detalles de la tarea actualizados con éxito." -#: update.py:192 -msgid "Error during restoration: {error}" -msgstr "Error durante la restauración: {error}" +#: sl/SL_Menu.py:768 +msgid "Error updating task details." +msgstr "Error al actualizar los detalles de la tarea." -#: update.py:193 -msgid "The backup file '{filename}' was not deleted." -msgstr "El archivo de copia de seguridad '{filename}' no fue eliminado." +#: sl/SL_Menu.py:778 sl/SL_Menu.py:794 +msgid "Project Management" +msgstr "Gestión de Proyectos" -msgid "Back" -msgstr "Atrás" +#: sl/SL_Menu.py:787 sl/SL_Menu.py:861 +msgid "Back to Main Menu" +msgstr "Volver al Menú Principal" -msgid "Current Active Work" -msgstr "Trabajo Activo Actual" +#: sl/SL_Menu.py:873 sl/SL_Menu.py:2000 +msgid "Report Format" +msgstr "Formato de informe" -msgid "Handle projects and sub-projects" -msgstr "Gestionar proyectos y subproyectos" +#: sl/SL_Menu.py:875 sl/SL_Menu.py:2159 +msgid "Email Settings" +msgstr "Configuración de correo" -msgid "Exit" -msgstr "Salir" +#: sl/SL_Menu.py:876 sl/SL_Menu.py:2020 +msgid "Change CSS Style" +msgstr "Cambiar estilo CSS" + +#: sl/SL_Menu.py:877 sl/SL_Menu.py:2058 +msgid "Change View Mode" +msgstr "Cambiar modo de vista" + +#: sl/SL_Menu.py:890 +msgid "Add New Project" +msgstr "Agregar nuevo proyecto" + +#: sl/SL_Menu.py:893 +msgid "Name of the project" +msgstr "Nombre del proyecto" + +#: sl/SL_Menu.py:897 +#, python-brace-format +msgid "Project '{name}' added." +msgstr "Proyecto '{name}' agregado." + +#: sl/SL_Menu.py:901 sl/SL_Menu.py:947 sl/SL_Menu.py:992 sl/SL_Menu.py:1038 +#: sl/SL_Menu.py:1093 sl/SL_Menu.py:1187 sl/SL_Menu.py:1235 sl/SL_Menu.py:1285 +#: sl/SL_Menu.py:1364 sl/SL_Menu.py:1394 sl/SL_Menu.py:1424 sl/SL_Menu.py:1455 +#: sl/SL_Menu.py:1517 sl/SL_Menu.py:1557 sl/SL_Menu.py:1666 sl/SL_Menu.py:1685 +#: sl/SL_Menu.py:1843 sl/SL_Menu.py:1890 sl/SL_Menu.py:1934 sl/SL_Menu.py:1995 +#: sl/SL_Menu.py:2014 sl/SL_Menu.py:2051 sl/SL_Menu.py:2084 sl/SL_Menu.py:2152 +#: sl/SL_Menu.py:2188 +msgid "Cancel" +msgstr "Cancelar" -msgid "No open main projects found." -msgstr "No se encontraron proyectos principales abiertos." +#: sl/SL_Menu.py:919 sl/SL_Menu.py:964 sl/SL_Menu.py:1009 sl/SL_Menu.py:1204 +#: sl/SL_Menu.py:1267 sl/SL_Menu.py:1302 sl/SL_Menu.py:1334 sl/SL_Menu.py:1383 +#: sl/SL_Menu.py:1413 sl/SL_Menu.py:1443 sl/SL_Menu.py:1863 sl/SL_Menu.py:2251 +#: sl/SL_Menu.py:2312 +msgid "Select Project" +msgstr "Seleccionar Proyecto" + +#: sl/SL_Menu.py:924 +#, python-brace-format +msgid "No open tasks to close in '{name}'." +msgstr "No hay tareas abiertas para cerrar en '{name}'." -msgid "No open sub-projects to close in '{name}'." -msgstr "No hay subproyectos abiertos para cerrar en '{name}'." +#: sl/SL_Menu.py:931 sl/SL_Menu.py:976 sl/SL_Menu.py:1021 sl/SL_Menu.py:1075 +#: sl/SL_Menu.py:1216 sl/SL_Menu.py:1344 sl/SL_Menu.py:1700 sl/SL_Menu.py:1874 +#: sl/SL_Menu.py:2282 +msgid "Select Task" +msgstr "Seleccionar Tarea" -msgid "Sub-project '{sub_name}' in '{main_name}' has been closed." -msgstr "El subproyecto '{sub_name}' en '{main_name}' ha sido cerrado." +#: sl/SL_Menu.py:941 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been closed." +msgstr "La tarea '{sub_name}' en '{main_name}' se ha cerrado." -msgid "No closed sub-projects to reopen in '{name}'." -msgstr "No hay subproyectos cerrados para reabrir en '{name}'." +#: sl/SL_Menu.py:969 +#, python-brace-format +msgid "No closed tasks to reopen in '{name}'." +msgstr "No hay tareas cerradas para reabrir en '{name}'." -msgid "Sub-project '{sub_name}' in '{main_name}' has been reopened." -msgstr "El subproyecto '{sub_name}' en '{main_name}' ha sido reabierto." +#: sl/SL_Menu.py:986 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been reopened." +msgstr "La tarea '{sub_name}' en '{main_name}' se ha reabierto." -msgid "No open sub-projects to delete in '{name}'." -msgstr "No hay subproyectos abiertos para eliminar en '{name}'." +#: sl/SL_Menu.py:1014 +#, python-brace-format +msgid "No open tasks to delete in '{name}'." +msgstr "No hay tareas abiertas para eliminar en '{name}'." +#: sl/SL_Menu.py:1025 msgid "This action cannot be undone." msgstr "Esta acción no se puede deshacer." -msgid "No sub-projects found in '{name}'." -msgstr "No se encontraron subproyectos en '{name}'." +#: sl/SL_Menu.py:1032 +#, python-brace-format +msgid "Task '{sub_name}' deleted from '{main_name}'." +msgstr "Tarea '{sub_name}' eliminada de '{main_name}'." -msgid "No other main projects available to move to." -msgstr "No hay otros proyectos principales disponibles para mover." +#: sl/SL_Menu.py:1055 +msgid "Select Source Project" +msgstr "Seleccionar proyecto fuente" -msgid "Sub-project '{sub}' moved from '{src}' to '{dst}'." -msgstr "Subproyecto '{sub}' movido de '{src}' a '{dst}'." +#: sl/SL_Menu.py:1060 +#, python-brace-format +msgid "No tasks found in '{name}'." +msgstr "No se encontraron tareas en '{name}'." -msgid "Error: Could not move sub-project." -msgstr "Error: No se pudo mover el subproyecto." +#: sl/SL_Menu.py:1068 +msgid "No other projects available to move to." +msgstr "No hay otros proyectos disponibles para mudarse." +#: sl/SL_Menu.py:1079 sl/SL_Menu.py:1503 +msgid "Select Target Project" +msgstr "Seleccionar proyecto de destino" + +#: sl/SL_Menu.py:1087 +#, python-brace-format +msgid "Task '{sub}' moved from '{src}' to '{dst}'." +msgstr "La tarea '{sub}' se movió de '{src}' a '{dst}'." + +#: sl/SL_Menu.py:1091 +msgid "Error: Could not move task." +msgstr "Error: No se pudo mover la tarea." + +#: sl/SL_Menu.py:1102 sl/SL_Menu.py:1464 msgid "Weeks of inactivity" msgstr "Semanas de inactividad" -msgid "Inactive Sub-Projects (> {weeks} weeks):" -msgstr "Subproyectos Inactivos (> {weeks} semanas):" +#: sl/SL_Menu.py:1107 +#, python-brace-format +msgid "Inactive Tasks (> {weeks} weeks):" +msgstr "Tareas inactivas (>{weeks}semanas):" + +#: sl/SL_Menu.py:1112 sl/SL_Menu.py:1472 +msgid "Last Activity" +msgstr "Última actividad" +#: sl/SL_Menu.py:1171 +#, python-brace-format msgid "" -"Are you sure you want to delete {count} closed sub-projects? This action " -"cannot be undone." +"Are you sure you want to delete {count} closed tasks? This action cannot be " +"undone." msgstr "" -"¿Está seguro de que desea eliminar {count} subproyectos cerrados? Esta " -"acción no se puede deshacer." +"¿Está seguro de que desea eliminar{count}tareas cerradas? Esta acción no se " +"puede deshacer." +#: sl/SL_Menu.py:1173 msgid "Show projects to delete" msgstr "Mostrar proyectos a eliminar" -msgid "Successfully deleted {count} sub-projects." -msgstr "Se eliminaron {count} subproyectos con éxito." +#: sl/SL_Menu.py:1177 +msgid "Delete All" +msgstr "Eliminar todo" + +#: sl/SL_Menu.py:1183 +#, python-brace-format +msgid "Successfully deleted {count} tasks." +msgstr "Tareas{count}eliminadas correctamente." -msgid "No open sub-projects to promote in '{name}'." -msgstr "No hay subproyectos abiertos para promover en '{name}'." +#: sl/SL_Menu.py:1209 +#, python-brace-format +msgid "No open tasks to promote in '{name}'." +msgstr "No hay tareas abiertas para promocionar en '{name}'." +#: sl/SL_Menu.py:1220 msgid "" -"This will create a new Main Project with the sub-project's name and move all " -"time entries to a 'General' sub-project within it." +"This will create a new Project with the task's name and move all time " +"entries to a 'General' task within it." msgstr "" -"Esto creará un nuevo Proyecto Principal con el nombre del subproyecto y " -"moverá todas las entradas de tiempo a un subproyecto 'General' dentro de él." +"Esto creará un nuevo Proyecto con el nombre de la tarea y moverá todas las " +"entradas de tiempo a una tarea 'General' dentro de él." -msgid "No open main projects to rename." -msgstr "No hay proyectos principales abiertos para renombrar." +#: sl/SL_Menu.py:1222 +msgid "Promote to Project" +msgstr "Promocionar a Proyecto" +#: sl/SL_Menu.py:1261 +msgid "No open projects to rename." +msgstr "No hay proyectos abiertos para cambiar el nombre." + +#: sl/SL_Menu.py:1270 sl/SL_Menu.py:1349 msgid "New Name" msgstr "Nuevo Nombre" +#: sl/SL_Menu.py:1271 sl/SL_Menu.py:1350 +msgid "Rename" +msgstr "Renombrar" + +#: sl/SL_Menu.py:1275 sl/SL_Menu.py:1354 msgid "Please enter a new name." msgstr "Por favor, introduzca un nuevo nombre." +#: sl/SL_Menu.py:1277 sl/SL_Menu.py:1356 msgid "New name is the same as the old name." msgstr "El nuevo nombre es el mismo que el antiguo." -msgid "No open sub-projects to rename in '{name}'." -msgstr "No hay subproyectos abiertos para renombrar en '{name}'." +#: sl/SL_Menu.py:1279 +#, python-brace-format +msgid "Project '{old_name}' successfully renamed to '{new_name}'." +msgstr "El proyecto '{old_name}' se renombra exitosamente a '{new_name}'." -msgid "No open main projects to close." -msgstr "No hay proyectos principales abiertos para cerrar." +#: sl/SL_Menu.py:1339 +#, python-brace-format +msgid "No open tasks to rename in '{name}'." +msgstr "No hay tareas abiertas para cambiar el nombre en '{name}'." -msgid "Main project '{name}' has been closed." -msgstr "El proyecto principal '{name}' ha sido cerrado." +#: sl/SL_Menu.py:1362 +msgid "Error: Could not rename. The new name might already exist." +msgstr "" +"Error: No se pudo cambiar el nombre. Es posible que el nuevo nombre ya " +"exista." -msgid "No closed main projects to reopen." -msgstr "No hay proyectos principales cerrados para reabrir." +#: sl/SL_Menu.py:1375 +msgid "No open projects to close." +msgstr "No hay proyectos abiertos para cerrar." -msgid "Main project '{name}' has been reopened." -msgstr "El proyecto principal '{name}' ha sido reabierto." +#: sl/SL_Menu.py:1388 +#, python-brace-format +msgid "Project '{name}' has been closed." +msgstr "El proyecto '{name}' ha sido cerrado." + +#: sl/SL_Menu.py:1392 sl/SL_Menu.py:1422 sl/SL_Menu.py:1453 +msgid "Error: Project not found." +msgstr "Error: Proyecto no encontrado." +#: sl/SL_Menu.py:1405 +msgid "No closed projects to reopen." +msgstr "No hay proyectos cerrados para reabrir." + +#: sl/SL_Menu.py:1418 +#, python-brace-format +msgid "Project '{name}' has been reopened." +msgstr "El proyecto '{name}' ha sido reabierto." + +#: sl/SL_Menu.py:1444 msgid "" -"This action cannot be undone. All associated sub-projects and time entries " -"will be deleted." +"This action cannot be undone. All associated tasks and time entries will be " +"deleted." msgstr "" -"Esta acción no se puede deshacer. Todos los subproyectos y entradas de " -"tiempo asociados serán eliminados." +"Esta acción no se puede deshacer. Se eliminarán todas las tareas asociadas y" +" entradas de tiempo." + +#: sl/SL_Menu.py:1449 +#, python-brace-format +msgid "Project '{name}' has been deleted." +msgstr "El proyecto '{name}' ha sido eliminado." + +#: sl/SL_Menu.py:1469 +#, python-brace-format +msgid "Inactive Projects (> {weeks} weeks):" +msgstr "Proyectos inactivos (>{weeks}semanas):" + +#: sl/SL_Menu.py:1474 +#, python-brace-format +msgid "No projects found inactive for more than {weeks} weeks." +msgstr "No se encontraron proyectos inactivos durante más de{weeks}semanas." + +#: sl/SL_Menu.py:1483 sl/SL_Menu.py:1506 +msgid "Demote Project" +msgstr "Degradar proyecto" + +#: sl/SL_Menu.py:1495 +msgid "Select Project to Demote" +msgstr "Seleccionar proyecto para degradar" + +#: sl/SL_Menu.py:1501 +msgid "No other projects available to demote into." +msgstr "No hay otros proyectos disponibles para degradar." + +#: sl/SL_Menu.py:1504 +#, python-brace-format +msgid "This will convert '{src}' into a task of '{dst}'." +msgstr "Esto convertirá '{src}' en una tarea de '{dst}'." + +#: sl/SL_Menu.py:1529 +msgid "Projects with only closed or no tasks:" +msgstr "Proyectos con solo tareas cerradas o sin tareas:" + +#: sl/SL_Menu.py:1533 +msgid "No completed projects found." +msgstr "No se encontraron proyectos completados." + +#: sl/SL_Menu.py:1542 sl/SL_Menu.py:1673 sl/SL_Menu.py:2241 +msgid "Step 1: Select Project" +msgstr "Paso 1: Seleccionar proyecto" + +#: sl/SL_Menu.py:1546 sl/SL_Menu.py:1857 +msgid "No open projects found. Please add one first." +msgstr "No se encontraron proyectos abiertos. Por favor agregue uno primero." + +#: sl/SL_Menu.py:1551 sl/SL_Menu.py:1680 sl/SL_Menu.py:1905 +msgid "Project" +msgstr "Proyecto" + +#: sl/SL_Menu.py:1553 sl/SL_Menu.py:1681 sl/SL_Menu.py:1705 sl/SL_Menu.py:2253 +msgid "Next" +msgstr "Siguiente" + +#: sl/SL_Menu.py:1568 sl/SL_Menu.py:2267 +msgid "No project selected. Please start again." +msgstr "Ningún proyecto seleccionado. Por favor, empieza de nuevo." + +#: sl/SL_Menu.py:1573 +msgid "To Project:" +msgstr "Al proyecto:" + +#: sl/SL_Menu.py:1594 +msgid "Name of the new task" +msgstr "Nombre de la nueva tarea" + +#: sl/SL_Menu.py:1600 +msgid "Due date" +msgstr "Fecha de vencimiento" -msgid "Main project '{name}' has been deleted." -msgstr "El proyecto principal '{name}' ha sido eliminado." +#: sl/SL_Menu.py:1606 sl/SL_Menu.py:1775 +msgid "Recurring" +msgstr "Recurrente" -msgid "Inactive Main Projects (> {weeks} weeks):" -msgstr "Proyectos Principales Inactivos (> {weeks} semanas):" +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "daily" +msgstr "diario" -msgid "No main projects found inactive for more than {weeks} weeks." -msgstr "No se encontraron proyectos principales inactivos por más de {weeks} semanas." +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "on all business days" +msgstr "todos los días hábiles" -msgid "No other main projects available to demote into." -msgstr "No hay otros proyectos principales disponibles para degradar." +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "weekly" +msgstr "semanal" -msgid "This will convert '{src}' into a sub-project of '{dst}'." -msgstr "Esto convertirá '{src}' en un subproyecto de '{dst}'." +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "monthly" +msgstr "mensual" -msgid "Main projects with only closed or no sub-projects:" -msgstr "Proyectos principales con solo subproyectos cerrados o sin subproyectos:" +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "userdefined" +msgstr "definido por el usuario" -msgid "No completed main projects found." -msgstr "No se encontraron proyectos principales completados." +#: sl/SL_Menu.py:1624 sl/SL_Menu.py:1797 +msgid "Frequency" +msgstr "Frecuencia" + +#: sl/SL_Menu.py:1628 sl/SL_Menu.py:1800 +msgid "Days" +msgstr "Días" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Edit" +msgstr "Editar" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Preview" +msgstr "Vista previa" + +#: sl/SL_Menu.py:1637 sl/SL_Menu.py:1807 +msgid "No notes provided." +msgstr "No se proporcionaron notas." + +#: sl/SL_Menu.py:1642 sl/SL_Menu.py:1812 +msgid "A due date is required for recurring tasks." +msgstr "Se requiere una fecha de vencimiento para las tareas recurrentes." + +#: sl/SL_Menu.py:1650 +msgid "Please enter a name." +msgstr "Por favor ingrese un nombre." + +#: sl/SL_Menu.py:1661 +#, python-brace-format +msgid "Task '{sub_name}' added to '{main_name}'." +msgstr "Tarea '{sub_name}' agregada a '{main_name}'." + +#: sl/SL_Menu.py:1693 sl/SL_Menu.py:2272 +msgid "Step 2: Select Task from" +msgstr "Paso 2: Seleccione Tarea de" + +#: sl/SL_Menu.py:1696 +msgid "No open tasks found." +msgstr "No se encontraron tareas abiertas." + +#: sl/SL_Menu.py:1724 +msgid "Task not found." +msgstr "Tarea no encontrada." + +#: sl/SL_Menu.py:1840 +msgid "Error: Could not update task." +msgstr "Error: No se pudo actualizar la tarea." + +#: sl/SL_Menu.py:1853 +msgid "Start Work on Task" +msgstr "Comenzar a trabajar en la tarea" -msgid "A sub-project with this name already exists in this main project." -msgstr "Ya existe un subproyecto con este nombre en este proyecto principal." +#: sl/SL_Menu.py:1867 +#, python-brace-format +msgid "No open tasks to start work on in '{name}'." +msgstr "No hay tareas abiertas para comenzar a trabajar en '{name}'." -msgid "No open sub-projects to start work on in '{name}'." -msgstr "No hay subproyectos abiertos para iniciar trabajo en '{name}'." +#: sl/SL_Menu.py:1878 +msgid "Start Work" +msgstr "Iniciar trabajo" +#: sl/SL_Menu.py:1906 +msgid "Task" +msgstr "Tarea" + +#: sl/SL_Menu.py:1907 +msgid "Started at" +msgstr "Comenzó en" + +#: sl/SL_Menu.py:1918 +msgid "Streamlit Port Settings" +msgstr "Configuración del puerto Streamlit" + +#: sl/SL_Menu.py:1922 msgid "Current Streamlit Port" msgstr "Puerto actual de Streamlit" +#: sl/SL_Menu.py:1925 +msgid "New Port" +msgstr "Nuevo puerto" + +#: sl/SL_Menu.py:1926 sl/SL_Menu.py:1958 sl/SL_Menu.py:2007 sl/SL_Menu.py:2042 +#: sl/SL_Menu.py:2074 sl/SL_Menu.py:2141 sl/SL_Menu.py:2173 +msgid "Save" +msgstr "Guardar" + +#: sl/SL_Menu.py:1930 +#, python-brace-format msgid "Port updated to {port}. Please restart Streamlit." msgstr "Puerto actualizado a {port}. Por favor, reinicie Streamlit." +#: sl/SL_Menu.py:1940 +msgid "Change Data Storage Location" +msgstr "Cambiar ubicación de almacenamiento de datos" + +#: sl/SL_Menu.py:1943 +msgid "Current data file" +msgstr "Archivo de datos actual" + +#: sl/SL_Menu.py:1946 +msgid "New Path for data file" +msgstr "Nueva ruta para el archivo de datos" + +#: sl/SL_Menu.py:1952 +msgid "Move existing data to the new location" +msgstr "Mover datos existentes a la nueva ubicación" + +#: sl/SL_Menu.py:1955 msgid "" "If unchecked, the old data file will remain, and a new empty one might be " "created at the new location on restart." @@ -1271,6 +2476,11 @@ msgstr "" "Si no se marca, el archivo de datos antiguo permanecerá y se podría crear " "uno nuevo vacío en la nueva ubicación al reiniciar." +#: sl/SL_Menu.py:1962 +msgid "Please enter a new path." +msgstr "Por favor ingrese una nueva ruta." + +#: sl/SL_Menu.py:1970 msgid "" "Error: For security, the data file must be located within the application " "directory." @@ -1278,6 +2488,7 @@ msgstr "" "Error: Por seguridad, el archivo de datos debe estar ubicado dentro del " "directorio de la aplicación." +#: sl/SL_Menu.py:1980 msgid "" "Storage location updated. Please restart the application for the changes to " "take effect." @@ -1285,9 +2496,23 @@ msgstr "" "Ubicación de almacenamiento actualizada. Por favor, reinicie la aplicación " "para que los cambios surtan efecto." +#: sl/SL_Menu.py:2006 +msgid "Select Format" +msgstr "Seleccionar formato" + +#: sl/SL_Menu.py:2011 +msgid "Report format updated." +msgstr "Formato de informe actualizado." + +#: sl/SL_Menu.py:2024 msgid "Current CSS file" msgstr "Archivo CSS actual" +#: sl/SL_Menu.py:2041 +msgid "Select CSS File" +msgstr "Seleccionar archivo CSS" + +#: sl/SL_Menu.py:2047 msgid "" "CSS style updated. Please restart the application for the changes to take " "effect." @@ -1295,21 +2520,73 @@ msgstr "" "Estilo CSS actualizado. Por favor, reinicie la aplicación para que los " "cambios surtan efecto." +#: sl/SL_Menu.py:2063 +msgid "App Window (Webview)" +msgstr "Ventana de aplicación (vista web)" + +#: sl/SL_Menu.py:2063 +msgid "System Browser" +msgstr "Navegador del sistema" + +#: sl/SL_Menu.py:2073 +msgid "Select View Mode" +msgstr "Seleccionar modo de visualización" + +#: sl/SL_Menu.py:2080 +msgid "" +"View mode updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"Modo de visualización actualizado. Reinicie la aplicación para que los " +"cambios surtan efecto." + +#: sl/SL_Menu.py:2091 +msgid "Restore Previous Version" +msgstr "Restaurar versión anterior" + +#: sl/SL_Menu.py:2096 msgid "The 'update' module is not available. This feature is disabled." -msgstr "El módulo 'update' no está disponible. Esta función está deshabilitada." +msgstr "" +"El módulo 'update' no está disponible. Esta función está deshabilitada." + +#: sl/SL_Menu.py:2101 +#, python-brace-format +msgid "No previous version backup '{filename}' found." +msgstr "" +"No se encontró ninguna copia de seguridad de la versión anterior " +"'{filename}'." +#: sl/SL_Menu.py:2105 msgid "" "This will restore the application to the previously backed-up version. The " -"application will then restart. You may need to manually refresh your browser " -"if it does not reconnect automatically." +"application will then restart. You may need to manually refresh your browser" +" if it does not reconnect automatically." msgstr "" "Esto restaurará la aplicación a la versión respaldada anteriormente. La " "aplicación se reiniciará. Es posible que deba actualizar manualmente su " "navegador si no se vuelve a conectar automáticamente." +#: sl/SL_Menu.py:2107 +msgid "Restore and Restart" +msgstr "Restaurar y reiniciar" + +#: sl/SL_Menu.py:2108 msgid "Restoring and restarting..." msgstr "Restaurando y reiniciando..." +#: sl/SL_Menu.py:2111 +msgid "Restore complete. Please restart the application." +msgstr "Restauración completa. Reinicie la aplicación." + +#: sl/SL_Menu.py:2117 +msgid "Change Language" +msgstr "Cambiar idioma" + +#: sl/SL_Menu.py:2140 +msgid "Select Language" +msgstr "Seleccionar idioma" + +#: sl/SL_Menu.py:2148 msgid "" "Language changed. Please restart the application for the changes to take " "effect." @@ -1317,185 +2594,251 @@ msgstr "" "Idioma cambiado. Por favor, reinicie la aplicación para que los cambios " "surtan efecto." -msgid "Step 2: Select Sub-Project from" -msgstr "Paso 2: Seleccionar Subproyecto de" - -msgid "No main project selected. Please start again." -msgstr "No se ha seleccionado ningún proyecto principal. Por favor, empiece de nuevo." - -msgid "Report Result" -msgstr "Resultado del Informe" - -msgid "Error: Could not find main project '{name}'." -msgstr "Error: No se pudo encontrar el proyecto principal '{name}'." - -msgid "Start work on sub-project" -msgstr "Iniciar trabajo en subproyecto" - -msgid "Show current work" -msgstr "Mostrar trabajo actual" - -msgid "Stop current work" -msgstr "Detener trabajo actual" - -msgid "Project Management" -msgstr "Gestión de Proyectos" - -msgid "Reporting" -msgstr "Informes" - -msgid "Settings" -msgstr "Configuración" - -msgid "Task Management" -msgstr "Gestión de Tareas" - -msgid "Add Project" -msgstr "Añadir Proyecto" - -msgid "List Projects" -msgstr "Listar Proyectos" - -msgid "Rename Project" -msgstr "Renombrar Proyecto" - -msgid "Close Project" -msgstr "Cerrar Proyecto" - -msgid "Re-open Project" -msgstr "Reabrir Proyecto" - -msgid "Delete Project" -msgstr "Eliminar Proyecto" - -msgid "List Inactive Projects" -msgstr "Listar Proyectos Inactivos" - -msgid "Demote Project to Task" -msgstr "Degradar Proyecto a Tarea" - -msgid "List Completed Projects" -msgstr "Listar Proyectos Completados" - -msgid "Add Task" -msgstr "Añadir Tarea" - -msgid "List Tasks" -msgstr "Listar Tareas" - -msgid "Rename Task" -msgstr "Renombrar Tarea" - -msgid "Close Task" -msgstr "Cerrar Tarea" - -msgid "Re-open Task" -msgstr "Reabrir Tarea" - -msgid "Delete Task" -msgstr "Eliminar Tarea" - -msgid "Move Task" -msgstr "Mover Tarea" - -msgid "List Inactive Tasks" -msgstr "Listar Tareas Inactivas" - -msgid "List All Closed Tasks" -msgstr "Listar Todas las Tareas Cerradas" - -msgid "Delete All Closed Tasks" -msgstr "Eliminar Todas las Tareas Cerradas" - -msgid "Promote Task to Project" -msgstr "Promover Tarea a Proyecto" - -msgid "Daily Report (Today)" -msgstr "Informe Diario (Hoy)" - -msgid "Daily Report (Specific Day)" -msgstr "Informe Diario (Día Específico)" - -msgid "Date Range Report" -msgstr "Informe por Rango de Fechas" - -msgid "Detailed Task Report" -msgstr "Informe Detallado de Tarea" - -msgid "Detailed Project Report" -msgstr "Informe Detallado de Proyecto" - -msgid "Detailed Daily Report" -msgstr "Informe Diario Detallado" - -msgid "Main Project Management" -msgstr "Gestión de Proyectos Principales" - -msgid "Start work on task" -msgstr "Iniciar trabajo en tarea" - -msgid "Handle projects and tasks" -msgstr "Gestionar proyectos y tareas" - -msgid "Select Action" -msgstr "Seleccionar Acción" - -msgid "Select Project" -msgstr "Seleccionar Proyecto" - -msgid "Select Task" -msgstr "Seleccionar Tarea" - -msgid "Back to Main Menu" -msgstr "Volver al Menú Principal" +#: sl/SL_Menu.py:2166 +msgid "Enable email import" +msgstr "Activar importación de correo" -msgid "Add" -msgstr "Añadir" +#: sl/SL_Menu.py:2167 +msgid "IMAP Server" +msgstr "Servidor IMAP" -msgid "Delete" -msgstr "Eliminar" +#: sl/SL_Menu.py:2168 +msgid "Port" +msgstr "Puerto" -msgid "Rename" -msgstr "Renombrar" +#: sl/SL_Menu.py:2169 +msgid "Username" +msgstr "Usuario" -msgid "Close" -msgstr "Cerrar" +#: sl/SL_Menu.py:2170 +msgid "Password" +msgstr "Contraseña" -msgid "Reopen" -msgstr "Reabrir" +#: sl/SL_Menu.py:2171 +msgid "Use SSL" +msgstr "Usar SSL" -msgid "Yes" -msgstr "Sí" +#: sl/SL_Menu.py:2184 +msgid "Email settings saved." +msgstr "Configuración de correo guardada." -msgid "No" -msgstr "No" +#: sl/SL_Menu.py:2198 sl/SL_Menu.py:2330 +msgid "Select Date" +msgstr "Seleccionar fecha" -msgid "Save" -msgstr "Guardar" +#: sl/SL_Menu.py:2199 sl/SL_Menu.py:2223 sl/SL_Menu.py:2287 sl/SL_Menu.py:2313 +#: sl/SL_Menu.py:2331 +msgid "Generate Report" +msgstr "Generar Informe" -msgid "Cancel" -msgstr "Cancelar" +#: sl/SL_Menu.py:2219 +msgid "Start Date" +msgstr "Fecha de inicio" -msgid "Confirm" -msgstr "Confirmar" +#: sl/SL_Menu.py:2221 +msgid "End Date" +msgstr "Fecha de finalización" -msgid "Submit" -msgstr "Enviar" +#: sl/SL_Menu.py:2346 +msgid "Report Result" +msgstr "Resultado del Informe" -msgid "Edit" -msgstr "Editar" +#: sl/SL_Menu.py:2375 +msgid "Export Report" +msgstr "Exportar informe" + +#~ msgid "" +#~ "\n" +#~ "Error: Failed to install dependencies. Please install them manually using: pip install -r {requirements_path}" +#~ msgstr "" +#~ "\n" +#~ "Error: No se pudieron instalar las dependencias. Por favor, instálelas manualmente usando: pip install -r {requirements_path}" + +#~ msgid "open" +#~ msgstr "abierto" + +#~ msgid "A task named '{task_name}' already exists in '{main_name}'." +#~ msgstr "Ya existe una tarea llamada '{task_name}' en '{main_name}'." + +#~ msgid "Main project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Proyecto principal '{old_name}' renombrado a '{new_name}'." + +#~ msgid "" +#~ "\n" +#~ "No time tracked for {date}." +#~ msgstr "" +#~ "\n" +#~ "No hay tiempo registrado para {date}." + +#~ msgid "Sub-Project Breakdown" +#~ msgstr "Desglose de Subproyectos" + +#~ msgid "7. Add Sub-Project" +#~ msgstr "7. Añadir Subproyecto" + +#~ msgid "8. List Sub-Projects" +#~ msgstr "8. Listar Subproyectos" + +#~ msgid "9. Rename Sub-Project" +#~ msgstr "9. Renombrar Subproyecto" + +#~ msgid "10. Close Sub-Project" +#~ msgstr "10. Cerrar Subproyecto" + +#~ msgid "11. Re-open Sub-Project" +#~ msgstr "11. Reabrir Subproyecto" + +#~ msgid "12. Delete Sub-Project" +#~ msgstr "12. Eliminar Subproyecto" + +#~ msgid "14. List Inactive Sub-Projects" +#~ msgstr "14. Listar Subproyectos Inactivos" + +#~ msgid "15. List All Closed Sub-Projects" +#~ msgstr "15. Listar Todos los Subproyectos Cerrados" + +#~ msgid "16. Delete All Closed Sub-Projects" +#~ msgstr "16. Eliminar Todos los Subproyectos Cerrados" + +#~ msgid "17. Promote Sub-Project to Main-Project" +#~ msgstr "17. Promover Subproyecto a Proyecto Principal" + +#~ msgid "" +#~ "\n" +#~ "--- Add New Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Añadir Nuevo Subproyecto ---" + +#~ msgid "" +#~ "\n" +#~ "--- List Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Listar Subproyectos ---" + +#~ msgid "" +#~ "\n" +#~ "--- Rename Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Renombrar Subproyecto ---" + +#~ msgid "Sub-project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Subproyecto '{old_name}' renombrado a '{new_name}'." + +#~ msgid "" +#~ "\n" +#~ "--- Delete Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Eliminar Subproyecto ---" + +#~ msgid "" +#~ "\n" +#~ "--- List All Closed Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Listar Todos los Subproyectos Cerrados ---" -msgid "Generate Report" -msgstr "Generar Informe" +#~ msgid "" +#~ "\n" +#~ "--- Delete All Closed Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Eliminar Todos los Subproyectos Cerrados ---" + +#~ msgid "" +#~ "\n" +#~ "--- List Inactive Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Listar Subproyectos Inactivos ---" + +#~ msgid "" +#~ "\n" +#~ "Inactive Sub-Projects (>{weeks} weeks):" +#~ msgstr "" +#~ "\n" +#~ "Subproyectos Inactivos (>{weeks} semanas):" + +#~ msgid " Sub-Project: {name}" +#~ msgstr " Subproyecto: {name}" + +#~ msgid "No sub-projects found inactive for more than {weeks} week." +#~ msgid_plural "No sub-projects found inactive for more than {weeks} weeks." +#~ msgstr[0] "" +#~ "No se encontró ningún subproyecto inactivo por más de {weeks} semana." +#~ msgstr[1] "" +#~ "No se encontraron subproyectos inactivos por más de {weeks} semanas." -msgid "Start" -msgstr "Iniciar" +#~ msgid "" +#~ "\n" +#~ "--- Move Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Mover Subproyecto ---" + +#~ msgid "4. Detailed Sub-Project Report" +#~ msgstr "4. Informe Detallado de Subproyecto" + +#~ msgid "" +#~ "\n" +#~ "--- Detailed Sub-Project Report ---" +#~ msgstr "" +#~ "\n" +#~ "--- Informe Detallado de Subproyecto ---" + +#~ msgid "Invalid choice. Please enter a number from 0 to 3." +#~ msgstr "Elección inválida. Por favor, introduzca un número del 0 al 3." + +#~ msgid "1. Start work on sub-project" +#~ msgstr "1. Iniciar trabajo en subproyecto" + +#~ msgid "4. Handle projects and sub-projects" +#~ msgstr "4. Gestionar proyectos y subproyectos" + +#~ msgid "Work started on '{sub_name}' in project '{main_name}'." +#~ msgstr "Trabajo iniciado en '{sub_name}' en el proyecto '{main_name}'." + +#~ msgid " Sub-Project: {name}" +#~ msgstr " Subproyecto: {name}" + +#~ msgid "Handle projects and sub-projects" +#~ msgstr "Gestionar proyectos y subproyectos" + +#~ msgid "A sub-project with this name already exists in this main project." +#~ msgstr "Ya existe un subproyecto con este nombre en este proyecto principal." + +#~ msgid "Error: Could not find main project '{name}'." +#~ msgstr "Error: No se pudo encontrar el proyecto principal '{name}'." + +#~ msgid "Start work on sub-project" +#~ msgstr "Iniciar trabajo en subproyecto" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Close" +#~ msgstr "Cerrar" + +#~ msgid "Reopen" +#~ msgstr "Reabrir" + +#~ msgid "Yes" +#~ msgstr "Sí" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "Confirm" +#~ msgstr "Confirmar" -msgid "Stop" -msgstr "Detener" +#~ msgid "Submit" +#~ msgstr "Enviar" -msgid "Step 1: Select Main Project" -msgstr "Paso 1: Seleccionar Proyecto Principal" +#~ msgid "Stop" +#~ msgstr "Detener" -msgid "Refresh" -msgstr "Actualizar" +#~ msgid "Refresh" +#~ msgstr "Actualizar" diff --git a/locale/fr/LC_MESSAGES/timetracker.mo b/locale/fr/LC_MESSAGES/timetracker.mo index 9b198b965ef74818bbf8d710ac4b79e83d0a69b9..d262ee30ecd27bbf8968c050f1819c12d8cb986d 100644 GIT binary patch literal 49763 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 literal 29502 zcmbuH3!L3mb?^Ta5Ew8#Mc({*&IFjrgI5>~Fv%n#n1L}fNu*lgk66eQBBEuzx)S}$X%q7`3Q1*BGbTg9Sqg=(>__xszA|9_vyJVMVW zdw%Et-|w~8UTf{O*U1w{9q`_W&sqCL(MjO&AyM>BzL$>D+bFvIxG1_3{9~{edr}=XhcrcBf3J!p0fLDXZf;CX(-UiY|^f8cs(HHo09{4Dz@f^e?_5M^)Q@j*B z61*DJIIef^Uk|FCTS4`A52$&671TKX2`qy>RMI%7z&`M!AX(AZK=u0*a0z%UlUBX8 z;F(|v6rFAb)zAH)#`kSd{rnWvd=8*Mc2CfFxUJZO1cnf$C_(4$Z-vJ&2-VdsuuY;n~6QIWTEU0>ioMy*&DyZi{ za1l5P9synls(uxGDfmWE_1^_*zITCIhc7yO9Mrge1v2%hhe;@ZF{tsZ0X2@_b~p(# zwdjp5|8|G>x%`Jf(eVeM`u#Uh^jZYdh_2^4Tniq?a}HE{W%vGFpz7}h4+S3pRqpGc z=J^>;JMc)8dg8vV^0$d7HoDbdz>iJGk?f)~V z{+|c6u8Y_l2ZNV@2ZF0W)w>cDy>13Y*AIaj*L|Ss{|%^dJprx)U&4cMJ*ahi2dH-M zaCi?WKKKl%`F<7Dx_l4RxSj%4@87|r!NZyCGVl!WB5)H3%SZ13HQ!G-{2I8L=bwSg z!R2fk?T-YMTzC(t@?QW&&mV$JJzB)%)$RojcYu&Ox&zdDKIopG1XcbZ8dE#{AWcNq zfTGV7sC9ThD1N#ZRQWH1YUgL*I`B{iwFMjlHO_lLjpqsQLhvviP6t+l{> zeE%S*`TspAetjN16g+qU+Jnb{2Z1Mo2ZLvTn%{Y##+3)fue(95e+@xv+!>wovp+Q0-O0W5Bn7TF(!IqVN5n#{B?z8Tcb` z19%$5Q9osH4fsA#^LiZAK6(z+JQiJqYy)2bimtmrSS`8@gv8O8LG|-1kfn+CyV#Cz zslyGR+S%^#eW1qoB~at}M^O9}ub>ZbHK=|2Mo{lR0BZby1zrI@4qgMEd`T1yfs>%h zeG1e%ehWMv{647l_yx#PMrSbzrXFnuwGVzDTnpX>s@~Heq>Y{fwcdRQFU{u~kf}wl z2N!|&fro%!0>wvP2i5=Mpyv4-Q1s|$GUA_$z@xz-hnqn0e-YI9Zv@3h_qzAr0#*M} zP~&|Pd<}RU%&U1cK#l88@LKRYpvE%*F^>UPfEv#TsBu?8NF03}JQ@54_xztAQ;jaX zJc{;LIZ$+HxaU3K0X)9}lpMJQ6kR?E!m80D;LE{-uV8%pv3}sIdA^xRi7y@jHI4&U zIlTa$%JV2FI#of<=Of@r;KSf);J<<_akL0wss7f1;=8iLKLjA&!P7wXw+dAM1yJq22~@eygE9CW@JR4^Q1m@$t(AKx zfvUG2jKK*|^Lq<;3ixqQ`|CmQ&EU^K(e1`{w*JS!(|P_TsQEqz!m3gKm6i{;Is6bP zdOi%s;BUa=z<9k~&r87LdENqQoHx4X-vy82`8Kc@{504Heh<_<_q)oDV+AO_Pe8r@ z0H|?(13VVo|CM&0CxAUXUkok=SAm*u349s&4p8*D13Ux#9H@RD14ZZk5jtmsXMrlW z0aW`rP<*u8;k&_@=et3b{|c!7o&nYF2_v@NWuWG>3Di2j9@Ka~>hfnCJ_JPV5d z&$!x_8v@mD4%9kMx%ck_4d1xu#~l6|Jd|=LB76qGUQp#WgE6=VTm*g?)V%I-_<+Oj zgO~IE8Blz`bkvSN2g35v+rcBizXL_DCqV5dDYtRpT2TD)Nsy^TKL#aNF4}1M^(s*N zd;&Ze{0Mju_;HY>j6Ma5FJAyf$K%H=->d}1hg-mN!J9z-MR)OsqR|VW)?tJ}90@kS zmw>+qs@^+6t^cP%?VATd@#Bv`t^a?3T9-37*>MbmYkB?yP~-V7coz6PsD4h|jExJf z0yUr8z<%%%P;}pai>n_4j%`_A4fw(_45i)`L6+A0lo)R{==Z; z;ICZ%`PW+hzX8;^ZUa?*2D}8+;226Y2$sNG!FAw&ffs^n5!SG3bTg>>Uja4#pS$-b zzt--{8$i)#8WdmN35vcmpw{mZ@DT6`Q0w?(a5eZ0D7s(pJC<*^fQR$k0M-93;054c zIQ+T8GhfGb_DRIvRIg6H%8wV=lNZtxiJ4p8lV4m=F}A$U6YH26yJ zhy{^buD-X&v$`~!H2+ez~{g#z*BF4w&3;P zYVaXYv2HI(&IGnV4f#I&2J~Dd4C#Q1^xt7 zKj%$axmpFqA8!SW{jJYpc!3Rh$r`%KS-LJrdc^-1l9|T1Q*vI&X^!hmRV^UrZ z?t{2AeDQnW^Q80Kd$xo5Xb;4szcNoz^jqNPNQcpm2ziu{&wUom-+y!8{~f%ZbUWz= z(rZayBk997iVmmlZQxyc!RL6MpRiwB{vN^m|K!bk-CI~ZI>q(-9N+)My+0e=NIIFk zLGWVt{wnYfNbe&32kECI$+QoU{O36L^f*|FO%v z$Du%SVu18IJ@EM#65B0$nAAto=Y6CrNT<@ye}SJNEhGIdDg69T9<-01CLKZgJJLzi z=>dO2`oAQ79wi;b`%i%{)eAmvCmqYXlg$%nIy61Eq^`{quhJeI`5N+VZ_hjYc!R6JgsOa|jU+bhjleL5DLbI$x_>R}-@5f{txXi_Uy z3N+SG``0yiJ*{&6{r&M!p%7o4?21Qgl^c?LBj#Oe##nP}e@Eu(X04W#8}U%SQQVot zTPn33S~@N8FyfE-5Fq9Ajx| zy>Gly$W1NI2GPCPM5Pwz;(9g77bl8&nwaWR!}Vy(Lh~fvm@7l^bOkr?*zCRr8;W%n zZ@v{UrPh~oc99(&f)#4b4;G}o%q&&A*BGh5Q9)KVA-@tMxiZt56a%J{CC@Bv(F8R&P)8J2Vt6e$zBj9~c;jdWMr~ zQZ6Lrd@-rB^XqJPad^F%&nNZzM6*G>X@UM)yr-7j*euq}+SISB<{I0lqn?z5!o{e^eV6Uo zl_Wb5ZUz<)1|@?P=vwgVN-QZBH)^^34kjo%>=7lWncf%z0!hXOLUdJ~T$_MD;@&-4 z_vzl4IZwi7bh)s?v?A`x%0mpORfivP4b}y^AZJ})t)k`I-?( zgHg<9Lr(iu`>@!ULXexOnw)@Ayf@S1eZOIR&)`AEa1)`#fCtqo?YPHj>bTty6gJ!p zb#o0BPdgP;^TKs@Mxd{p6!Zh^iOBR~G?atBK$sthGx15saDt|SqIN9lP>ja2+4KS5 z)*9CtT4}}iur=%x13SZwKkf@v?BZE->SXo1Iy4=qKExN##VmU9-E`5RUC&KiLg!c)DEK6)mHZv~)<7^rc%gJ+Izw#J`vNdKJ<Ji553@I5fM^-RHTv5Kxo8=sHYWWQ~QM7xhR3GbWbf zqrR~~(Jof@Ms{|kCIyk~ELNKJc(WD1${X8W*%jxV{UeI#rRg*v8FQtPP{~BRaw{~P z3+$r}mAu)I$|u7saXU1nF)8*Z5eYmgFW&#YQ}ex{An1cc2-hYnb;} z=E?;WPSpy?dd#C)*?Pnpv@K3bJF?RD+)KCVRm(PxVu)BQ3U)QdG>kCcH^Z9wth9@8 zom9tb+=vA?o5Ivs;m50|dUOeoj`${fC@xfXl}nXe0a@l)zF0@T<_c5dl&z_bO9}(g zP%Me<^exiCYu?2%b#h)$tDK`;tYt1_x+Pb#EhoD%vg#_>5KH<}dbrNW>E5`tD2kL; zCJ}xvpSsrc>T~Ol-mNvuWeB`D%@PaB6kuQW?g<*FL^*Djlie_PgYhL&`f(+1nkvLd ze$`4f{#2ZoQGsYP1*hk(y=yy`v#p_40y89Npjs^zEpv->HTD$ZSjC}vzA{-g#{g+M zyCyPVhS+pdl_r|oec6@6$fJD09U3-li1YT)5U9-h<#FHClJergI2x+gi`!D=5e>0= zvViMYKT^|P-$jzb&1#%ysYIO6K#Ftqc+Uj$GmA73t=?WK<~fQ*tFeb_(P~xEEVkMv zDif(R@JzEcfgs_uRy%Rgx;Y`0Ov>rVXQQcdv3gdHv7IdcucFHx;^D}M4p}a(Lmr5R z16#!NWoqq|D-D*YS%$lZD~7(FtZK>_8-`g8Lud>TTF>qph{6y538Bhu!TyQsIZT9e-5qZpx!{VrfkgZ#FQ;gY9V;nNNQ%*dW`$nFICvK9@`A4 zvLi`g8oQceHfyGqujs^^-6iMNF;I?MrclM1V*sq&N&Ku{x#d)nB5_v%PkGh-&!5dNj_;c&}VNikSeo`&>U7^^9Cj$ zhYV+vds<%5$`#pQ=dQM*wVK%`bF4ffvWE1PT#Eaaiqn>v28@U|a$GyBt5h~;zf>Wr zn3mLT!c2C%QdUPua^uXg#|Ez+T1t4OYR$^7B`16lZk7tMgd?Xj_K=lh>5gJICA++) zo-A(L&T5CMeWC4isj3wd**&N4LgfTP+Ktak$#~Po4e9RH@VuVstb({qx1%}<*ttsw zoT8C$*248|I<3~5X~16kHoC(NYt)^ny|n4l@VLYbZh$;|Glf~gcMjc!3Qh@)*(jTo zd@39;d_GrJ8B|Da!pk2o2h%!xCK1ah_UT9`C-Ffpvo;3eb(KnC>r`@Dw6>M&WMZr> z);LQi_*JH&wY4GwIkHZ;Qsf;Ke3_^WI%`%O)}VO2okiN3aJhFH!3G9U8TLzcW`V7Th*gxt3?|eW7P0Z!UI{#JDk*s_$hN?|Yr| z_r1!6`(EXu&MKR%o6EV9jDU#ioOP?HVq-l7%V$jp%Ms;DZBp*0tVN?|k!+K>M(Uwz z;-$(oZ&tQgt~Rq$t(2UvlwAx@b+(cb;QLZ*Ao53X)>ub#!!o^lN_?O0O$YDnVj~X% zDyTMm>h(*sA;E4zcvc(c%)&0oC#8XCq*4|KUo8{Bsb@)uVBe$0!rV+@UQM}CG`|Y) z)%mErNb0t`kr!q>iS-0{qZ(#JK~x8#?)mn80hlwr&OdL^YlC6{NN&A=7vG+Nm&=4yj?=!Lpqi>($}DuoFRrSca7*2E zGV=_Na?I5D63hu%x|$8tF;&W0Ds;Bj;w;{pG}z3nrI9htKPc}<<{&hUw^R}Zy@weZ zH_JJ5(qvQHBZMrB7XQH2sht{5I=ZH+YayLQ?H0y8KM;-T)`0ChB1Rvz`V}+COq9%e z9n+@}IsWx>tXiqFr4R~MNYRS**UutQ3{hlsSYcE*`YX2snKChfqNcjeJXUWRNo5bG z9dar=!-^!cHr8%eSR=CI-0CJP8^L&s3f|z7N#tH>q?}3RM8OV08}_0|S?NaVCdpc{ zyb-g<4PDz!6}x#v@ieDWO8d0jLf!KOk(x?n(#jB1~W(M-v zbkDOC2=W59k2`K(>_RNGbVu8U8Cn`mn-Yt+%ux0l`$|@s^1@*;C1z)in0~$;)zgKW zy@y@fxyB9~uD3W@q@rf6+>+r*t(~QT)Z7)2TRJoRF2~tO*9KKhkOmso-RIm$DKFsk zZ&=I9S=V@eYP)L12DU9s;v2w}s%0JmWYB^d@ZLnX$!V{GJ>u>H3z!zh>_t4HMkk91 z&hoZ_c!;hsXUw`}SCGtc(y*97_O*7Vjwd)ZMa^vIko+>ZH7)5aZ*Sja!y0h-q z)*7&i7e_{*XtT6AXlJe9B#q~Mabzk^f=bfznQDd^f}2`%MJdN}Fb>D_)~VqKXNINQ z$e;&f7LH41w#+;|#LP+pS4TU{x8Kd-*rix{9PQ%B?owP5-t9gkayjE*4uxBHATrf5 z_osQ3HET0QF(tLH?UOs+`{idphL_&sY$tcN6-z^vl(TzdfBsI@!}xZhZX`5Kyhgma znC#-Kf^#_3qKjqAbN}q#$uZ$w%=KuznV72o{WDK%3mv+16GCTfY(oUrr1zpNxthok zdNw$#+VetsN{!ty-g`|2G?f@6}R;RFIboA|w`>qdz0Md->@gR0<+j!jFQgHEU zLlNc}4CS%Rv{=)#7k890uCMH1*}Dxd9eY?}v^R58h&`>_$ap&CCowF+B}LI5!Wnr| zDBES+LW}~O5Dz28YsIZi*>2I6V8zYhhl6Yz!`ULb@*vAx&IH>yJI}NWl+J36U?+J@lt*t^aCk@~h`p?_6# zTfKiAAJO(kqgo$avcz)Q0M}Ye*4A?69cy#V644>~?Ms3-mZ16&4n3pS^l!xNrW>jL zVeSnEI&(;d-hgh$6Hvs|z{2pM6bW~JE_!i6Wqqh)P?&2&+zWAaX0HMs6SdwgiqLlQ)j4Rsbl<<_l}ASlP;=tkJMMJ8}6B3DoxS%eq|yWHf=-Q3CR zG$To2EFr%0Tq&1l_VOi*4{KJdHCT>)sGx%qc|ot33Q28pW^dOD{vtmZ+gREfnL#^Q ze;a4^5?!{f#>KdyhNA*wAb_mOLNTH46*;8nv=}U8fwrJTX=ZQGzAF~wL4?pfJZo#+%wDKfW1!5Y*4cmGP*bBR^lon!!}!X1s#U2YMo?V>E@$>C;_^l=BGX05 zI;NQK*i~aPB|KSLTKOe|m1$de(^3(NI0C53kwMfakxo*NsWJGO3Nx zh0nvhu)(ad<(7a};p(KtnAv2Gux8T)&}CuNs}F%++-w=E6WroiTO-;Zvt*jHw%mVWUUdZ zVgkFK&D|N>X2G9z>2hqX#j)ZhGa(yr?kt6ent8UQ4w1;oCZUnB*_Nz`chvQa&Foby zDC}5fT9ghM1d^o3N=S^9a-6M!>_bJ^*7I~n&5U0?6-q{0Xpgwi(Qb9x^io#WI=&34 zT1H4e;nX}Kyu7keq{EyOiZgd(XSr(ygf%KsqDujwaU76e8P@-(Xi~eB=}MNuT%t8# zK;G!n8ByA3DQou_{X+28pi(RE!?@B^F|ftVA_wZm4_hIozFd&aT6%5dO9lmlTu-PD z(UVR;Yrmr!PDwxNGy>HR2IjJZ9>h7)=4$47o={ZTLbJr8Dk}^|6?sDwDh)?%&u{^$ zibc)%Nis`OsT&ha4(=J7F}pk{pv+e_-ufn$VuwujA-(b$!$CJEF~-x*a%p3Tg~V;uQH-#iW$vJG0!t59+tkmGR@u-ni*(e+qf5oJCiI# zmd;r-SsgMAd^u|)s+hth(|+eHc`;7@Ooj#OF4f73aScahSJZ^kc3YjR+N`NGs5S@l znkDk#232H7er7K}Ss?C5e#(I$-vRaG^ zgSomI;;P|igPd)%?UdV1>!+h*-2#HAf?pxHo~`v#c5`}%qDysjZzR?6FmCNj6Hk!_bT$gi8g+=ZMA-1rpdJ40iqV2 z%|rG;r20k;WBH^JH(@xi8pw=0RiHg{j1()P;!@+n#Jgb6&FsBl=62h%9XuVVr0kH; z%hOVxlSR4S?j;(M@lVW|J8;@)U|x7rRAy^Sn~TkS5^EI7@<1dOIOf!QEgdQaggipG z!s*or-*~4E(QHP0S=nwZO1aQlr8d3K4dX$b#lQ_3-Ovlers2c21lk$n+-e#aV-lOO zL)gngo_RYWv45uy(Dj+WG^&J$l1?1;R2+_9vuVt1p}=U$&ez1cRtP6%I1!f=a{AE~ z#-rOV&fuA>OeL6=kc*ydd@+|1IUEYxhz7zFhiKEl!>fi;UV`q4uSHo!Oi2jxuLO z+z?F|ZXnvsQYAOp<#R2%?VgU!><*?%Khh$Wnou2gMIhvZH5|`2zEuF0edvzgRkg|p zJn6YW3dkN}(UBQAUL6Z^-sfJTy-B+!p}Z00<=l%4y^=btCPy}fHbWuLR_Qs}$ub4u z#7RFUONq#y0^83|-rBSE;H?*QDFY~qAapjl5V=}0nLP&&Pc7Ld&o+J~|8oQBOB)gG z8PE=iSZku@%<(XDoJpPa$@g5XHmAsw)xv_n-^idHRKnT_R}${Ei|+&9EW zk<(XQMdb7x&E+yTkJ&D6MBSRvZfebDl_prpmd=7wPT;fX+MZ_gDVKIFh9E-@*^+E( znJ(=+sV~vCUSdlw5yLKFVXhN5CtT=fq1K+TO%y_nFrU;Z>CMy5gJU*769nSxwI3e2 z7CsC zq3mFMK?^e(xw?>QD_W{K=8=G!*~<;jYz(rqA|pX@*Sk&FbrbKl8MRfbf%06Cj&m*= zTdj$)l-eh$o!TbN>C9{0mdZLUaWhFglM95NqhPxes9j^sQI$RrWlg!)GpoSKhS{n$ zMbpss4jkXJ%*Irawl}U-2xEP5CiquAt$@yKv~*07`@!<>6t_ErPIP7kULBya+%In3(pz~1w9&@Mq^S(LhQ77&MJ8b%Lhwk?OsCah#U;-|^Znq_|( zLyjNTTmKybok=CpW~_LO<6`7)DRMrDeIil}JDZZ}vm>zf*;RDpj)6JH9|~oMP0SI) z@DO%v(qGLH;9i3)&a2`#d%LL6nA(f9#JKCHb8`BcU}~1G?Kw^z&YBMv0yZ{#$_enL zqOGFb_r2EnFQyWa?)%=;MV*z}Dbg;(`F&zVi-+6@8A1GJ?;o@Y74~kl06$nT!S045 z#hEEJGwKnOP~xOpi!&n%F0?Gtt$aJR_o;Af7tEU_8++jOxlW{-7xtdm8GO89U-`!qo;j9zT?7JRBzLLcIJMS(#yq#HOMcP zW^2)^N_SqHg^Zqfb|F1+S>n_e(KcbSQp3Vk3fIiF*LpbdO@sv(HoMs;x9@GuL8-8@ zaPIR@gVHRVzg}~$FuTFJ%{ri7_qM~^LL&xcI<@=|!1z{!3mV@|SkoFy**&A%rOv6B z9pVuY@V0d!Nw$UVLS&3nbnfuaPXkiJ+DI$uh=~8BN45vP7piwT6JkT#Yq}ABG$&!l zuLWcmxSQN|Q4dx0tAPnTExyRCqSaDR!4TTyMnD^tBoDJZUkE$>cEJC109#zLOCDb9 znDIX#=-N}}k21tuNH3e6$E(Fibf+FsH`n5ILO{DM-|^c5FCoyv>?g&)U<0M@YU`ux z{u_fpyc>}vm({3sZ>4hI?QCU*V+g{J)Beo~!uA~=8eVk8SxKOMkxmw=oep*uCAHBz zT+I;-257NVtU{FzX4$L?m^9uh>nu)xrjVXS;Y+L_IX@H_(z1R|oQJl)%*rw1Sy9s+ z*YF)uJlA9l1Yo5Kq~#PsKsBf8mIwgX0u)I_FxTmG6!YS^Td7d6G0Bvy^R+%ly*aw` zHzC^RX;VD+WfwP{}m(fs>68c)oCE_jlc@|s^vEa^NYK&fF)ag z?%;&1__Y0p7qeAK#jo8ZI-6uai^wWLJ+VtV^TB91^iv@%o49&x8$sZ<*?E>~{?`!_ zYqX=gjkKfTBJ03mfrE&<1f|3r8o(WUGQSZN4Qhs$gPxk`EO+11F7;=r*j3bHRCKvs zoUd=m49o&lX8Re)Z>)jVD017bCB(3Gqfk%^`F?qc`Kt4 zE&+=j?h({ri_g*tnfaXo-WxCyUTGr)^gldy8b6!7M?k+1F{jzyKmeKl7O9~VvWbUi z_duHe-$1_tL&O*f+~O3{Pd1zoOY8;k5If*Sx0V`*ZZ0xT(%+EG`Qws#x|NFsb-=F@ z(wkHB`;mPadr3#=;I}7p*WE0qU~pqT+e)|pEG51Ev?R9ZYW_qcV`hB7i!b6SI zZzCcgy_MA#GqyK8s99UD3_oi`jG1U$&za7<(8)C8&JTfPks}HfXu}9X@t5+1Q6FtG z**CziAYd%6f?Wfl_{zAdTMJzO63S%9Aw$7mZW}(;Xa;pdY%Z8@;y>f4S9CAitEe@; z$sa(BskMG|NJ+y^ji}G_KS1%HB&3HdbJ_gjnsTxi{=#D!=)HkRf%}nltVB{hF7ixH zb^e1X|ErduN)~k>?QK05sZ7EJ>#JC2LlE`j;|q*1G;E+N{JL{TsAd=y*!mNgFlS-E Gj`{yjbU2d$ diff --git a/locale/fr/LC_MESSAGES/timetracker.po b/locale/fr/LC_MESSAGES/timetracker.po index 97e912d..d57467a 100644 --- a/locale/fr/LC_MESSAGES/timetracker.po +++ b/locale/fr/LC_MESSAGES/timetracker.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Project-Id-Version: TimeControl\n" -"Report-Msgid-Bugs-To: https://github.com/FrankFaulstich/TimeControl/issues\n" -"POT-Creation-Date: 2026-01-01 14:50+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-06-18 12:24+0200\n" "PO-Revision-Date: 2026-01-01 15:00+0200\n" "Last-Translator: Frank Faulstich\n" "Language-Team: French\n" @@ -16,1349 +16,2787 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -msgid "Edit current task" -msgstr "Modifier la tâche actuelle" +#: TimeTrackerCLI.py:25 +msgid "" +"\n" +"--- Project Management ---" +msgstr "" +"\n" +"--- Gestion des projets ---" -#: TimeTracker.py:63 -msgid "Warning: Could not read {file}. Error: {error}" -msgstr "Avertissement : Impossible de lire {file}. Erreur : {error}" +#: TimeTrackerCLI.py:26 +msgid "1. Main Project Management" +msgstr "1. Gestion des projets principaux" -#: TimeTracker.py:75 -msgid "Some required packages are missing. Attempting to install them..." -msgstr "Certains paquets requis sont manquants. Tentative d'installation..." +#: TimeTrackerCLI.py:27 +msgid "2. Task Management" +msgstr "2. Gestion des tâches" -#: TimeTracker.py:78 -msgid "Installing {package}..." -msgstr "Installation de {package}..." +#: TimeTrackerCLI.py:29 +msgid "0. Back to Main Menu" +msgstr "0. Retour au menu principal" + +#: TimeTrackerCLI.py:32 TimeTrackerCLI.py:60 TimeTrackerCLI.py:257 +#: TimeTrackerCLI.py:662 TimeTrackerCLI.py:701 TimeTrackerCLI.py:811 +#: TimeTrackerCLI.py:953 +msgid "Choice: " +msgstr "Choix : " + +#: TimeTrackerCLI.py:41 +msgid "Invalid choice. Please enter a number from 0 to 2." +msgstr "Choix invalide. Veuillez entrer un nombre entre 0 et 2." -#: TimeTracker.py:81 +#: TimeTrackerCLI.py:46 msgid "" "\n" -"Dependencies installed successfully." +"--- Main Project Management ---" msgstr "" "\n" -"Dépendances installées avec succès." +"--- Gestion du projet principal ---" -#: TimeTracker.py:82 -msgid "Please restart the application for the changes to take effect." -msgstr "Veuillez redémarrer l'application pour que les changements prennent effet." +#: TimeTrackerCLI.py:47 +msgid "1. Add Main Project" +msgstr "1. Ajouter un projet principal" + +#: TimeTrackerCLI.py:48 +msgid "2. List Main Projects" +msgstr "2. Liste des projets principaux" + +#: TimeTrackerCLI.py:49 +msgid "3. Rename Main Project" +msgstr "3. Renommer le projet principal" + +#: TimeTrackerCLI.py:50 +msgid "4. Close Main Project" +msgstr "4. Fermer le projet principal" + +#: TimeTrackerCLI.py:51 +msgid "5. Re-open Main Project" +msgstr "5. Rouvrir le projet principal" + +#: TimeTrackerCLI.py:52 +msgid "6. Delete Main Project" +msgstr "6. Supprimer le projet principal" + +#: TimeTrackerCLI.py:53 +msgid "7. List Inactive Main Projects" +msgstr "7. Liste des projets principaux inactifs" + +#: TimeTrackerCLI.py:54 +msgid "8. Demote Main-Project to Sub-Project" +msgstr "8. Rétrograder le projet principal en sous-projet" + +#: TimeTrackerCLI.py:55 +msgid "9. List Completed Main Projects" +msgstr "9. Liste terminée Principaux projets" -#: TimeTracker.py:85 +#: TimeTrackerCLI.py:57 TimeTrackerCLI.py:254 +msgid "0. Back" +msgstr "0. Retour" + +#: TimeTrackerCLI.py:64 msgid "" "\n" -"Error: Failed to install dependencies. Please install them manually using: " -"pip install -r {requirements_path}" +"--- Add New Main Project ---" msgstr "" "\n" -"Erreur : Échec de l'installation des dépendances. Veuillez les installer " -"manuellement avec : pip install -r {requirements_path}" - -#: TimeTracker.py:88 -msgid "An unexpected error occurred during dependency check: {error}" -msgstr "Une erreur inattendue s'est produite lors de la vérification des dépendances : {error}" +"--- Ajouter un nouveau projet principal ---" -#: TimeTracker.py:112 -msgid "Info: Report content has been copied to the clipboard." -msgstr "Info : Le contenu du rapport a été copié dans le presse-papiers." +#: TimeTrackerCLI.py:65 +msgid "Name of the main project: " +msgstr "Nom du projet principal :" -#: TimeTracker.py:114 -msgid "Warning: Could not copy to clipboard. Error: {error}" -msgstr "Avertissement : Impossible de copier dans le presse-papiers. Erreur : {error}" +#: TimeTrackerCLI.py:67 +#, python-brace-format +msgid "Main project '{name}' added." +msgstr "Projet principal '{name}' ajouté." -#: TimeTracker.py:116 +#: TimeTrackerCLI.py:70 msgid "" -"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " -"install pyperclip`)." +"\n" +"--- List Main Projects ---" msgstr "" -"Avertissement : Impossible de copier dans le presse-papiers. Veuillez " -"installer 'pyperclip' (`pip install pyperclip`)." - -#: TimeTracker.py:130 -msgid "{hours} hour ({dlp} DLP)" -msgid_plural "{hours} hours ({dlp} DLP)" -msgstr[0] "{hours} heure ({dlp} DLP)" -msgstr[1] "{hours} heures ({dlp} DLP)" +"\n" +"--- Liste des projets principaux ---" +#: TimeTrackerCLI.py:76 TimeTrackerCLI.py:313 sl/SL_Menu.py:1246 +#: sl/SL_Menu.py:1310 msgid "closed" msgstr "fermé" -msgid "open" -msgstr "ouvert" +#: TimeTrackerCLI.py:79 +msgid "No main projects found." +msgstr "Aucun projet principal trouvé." -msgid "all" -msgstr "tous" - -#: TimeTracker.py:350 -msgid "Source project '{name}' not found." -msgstr "Projet source '{name}' non trouvé." +#: TimeTrackerCLI.py:82 +msgid "" +"\n" +"--- Rename Main Project ---" +msgstr "" +"\n" +"--- Renommer le projet principal ---" + +#: TimeTrackerCLI.py:85 +msgid "No main projects to rename." +msgstr "Aucun projet principal à renommer." + +#: TimeTrackerCLI.py:88 +msgid "Select an open main project to rename:" +msgstr "Sélectionnez un projet principal ouvert à renommer :" + +#: TimeTrackerCLI.py:93 TimeTrackerCLI.py:117 TimeTrackerCLI.py:139 +#: TimeTrackerCLI.py:162 TimeTrackerCLI.py:272 TimeTrackerCLI.py:301 +#: TimeTrackerCLI.py:333 TimeTrackerCLI.py:370 TimeTrackerCLI.py:405 +#: TimeTrackerCLI.py:441 TimeTrackerCLI.py:568 TimeTrackerCLI.py:604 +#: TimeTrackerCLI.py:855 TimeTrackerCLI.py:888 TimeTrackerCLI.py:969 +msgid "Enter the number of the main project: " +msgstr "Entrez le numéro du projet principal :" + +#: TimeTrackerCLI.py:96 TimeTrackerCLI.py:349 +#, python-brace-format +msgid "Enter the new name for '{name}': " +msgstr "Entrez le nouveau nom pour '{name}' : " -#: TimeTracker.py:352 -msgid "Destination project '{name}' not found." -msgstr "Projet de destination '{name}' non trouvé." +#: TimeTrackerCLI.py:99 +#, python-brace-format +msgid "Main project '{old_name}' successfully renamed to '{new_name}'." +msgstr "" +"Le projet principal '{old_name}' a été renommé avec succès en '{new_name}'." -#: tt/TimeTracker.py:356 -msgid "A task named '{task_name}' already exists in '{main_name}'." -msgstr "Une tâche nommée '{task_name}' existe déjà dans '{main_name}'." +#: TimeTrackerCLI.py:101 sl/SL_Menu.py:1283 +#, python-brace-format +msgid "" +"Error: Could not rename. The new name '{new_name}' might already exist." +msgstr "" +"Erreur : Impossible de renommer. Le nouveau nom '{new_name}' existe peut-" +"être déjà." + +#: TimeTrackerCLI.py:103 TimeTrackerCLI.py:125 TimeTrackerCLI.py:147 +#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:221 TimeTrackerCLI.py:287 +#: TimeTrackerCLI.py:319 TimeTrackerCLI.py:356 TimeTrackerCLI.py:391 +#: TimeTrackerCLI.py:426 TimeTrackerCLI.py:463 TimeTrackerCLI.py:510 +#: TimeTrackerCLI.py:589 TimeTrackerCLI.py:794 TimeTrackerCLI.py:875 +#: TimeTrackerCLI.py:894 TimeTrackerCLI.py:992 +msgid "Invalid input. Please enter a valid number." +msgstr "Entrée invalide. Veuillez entrer un numéro valide." -msgid "Task '{task_name}' moved successfully." -msgstr "La tâche '{task_name}' a été déplacée avec succès." +#: TimeTrackerCLI.py:106 +msgid "" +"\n" +"--- Close Main Project ---" +msgstr "" +"\n" +"--- Fermer le projet principal ---" -#: TimeTracker.py:378 -msgid "A project named '{name}' already exists." -msgstr "Un projet nommé '{name}' existe déjà." +#: TimeTrackerCLI.py:109 +msgid "No open main projects to close." +msgstr "Aucun projet principal ouvert à fermer." -msgid "Project '{old_name}' renamed to '{new_name}'." -msgstr "Le projet '{old_name}' a été renommé en '{new_name}'." +#: TimeTrackerCLI.py:112 +msgid "Select a main project to close:" +msgstr "Sélectionnez un projet principal à fermer :" -#: TimeTracker.py:398 -msgid "Task '{task_name}' not found in '{main_name}'." -msgstr "La tâche '{task_name}' n'a pas été trouvée dans '{main_name}'." +#: TimeTrackerCLI.py:121 +#, python-brace-format +msgid "Main project '{name}' has been closed." +msgstr "Le projet principal '{name}' a été fermé." -#: TimeTracker.py:406 -msgid "General" -msgstr "Général" +#: TimeTrackerCLI.py:123 TimeTrackerCLI.py:145 +msgid "Error: Main project not found." +msgstr "Erreur : projet principal introuvable." -#: TimeTracker.py:410 -msgid "Task '{task_name}' was promoted to a new main project." -msgstr "La tâche '{task_name}' a été promue en nouveau projet principal." +#: TimeTrackerCLI.py:128 +msgid "" +"\n" +"--- Re-open Main Project ---" +msgstr "" +"\n" +"--- Rouvrir le projet principal ---" -#: TimeTracker.py:439 -msgid "Project to demote '{name}' not found." -msgstr "Le projet à rétrograder '{name}' n'a pas été trouvé." +#: TimeTrackerCLI.py:131 +msgid "No closed main projects to reopen." +msgstr "Aucun projet principal fermé à rouvrir." -#: TimeTracker.py:441 -msgid "New parent project '{name}' not found." -msgstr "Le nouveau projet parent '{name}' n'a pas été trouvé." +#: TimeTrackerCLI.py:134 +msgid "Select a main project to reopen:" +msgstr "Sélectionnez un projet principal à rouvrir :" -#: TimeTracker.py:455 -msgid "Task '{old_name}' has been renamed to '{new_name}'." -msgstr "La tâche '{old_name}' a été renommée en '{new_name}'." +#: TimeTrackerCLI.py:143 +#, python-brace-format +msgid "Main project '{name}' has been reopened." +msgstr "Le projet principal '{name}' a été rouvert." -#: TimeTracker.py:463 +#: TimeTrackerCLI.py:150 msgid "" -"Project '{demoted_name}' was demoted to a task under " -"'{parent_name}'." +"\n" +"--- Delete Main Project ---" msgstr "" -"Le projet '{demoted_name}' a été rétrogradé en tâche sous " -"'{parent_name}'." +"\n" +"--- Supprimer le projet principal ---" -msgid "Task Planning" -msgstr "Planification des tâches" +#: TimeTrackerCLI.py:153 +msgid "No main projects to delete." +msgstr "Aucun projet principal à supprimer." -msgid "Today View" -msgstr "Vue du jour" +#: TimeTrackerCLI.py:156 +msgid "Select a main project to delete:" +msgstr "Sélectionnez un projet principal à supprimer :" -msgid "E-Mail Task Assignment" -msgstr "Attribution des tâches par e-mail" +#: TimeTrackerCLI.py:165 +#, python-brace-format +msgid "Main project '{name}' deleted." +msgstr "Projet principal '{name}' supprimé." -msgid "Fetching emails..." -msgstr "Récupération des e-mails..." +#: TimeTrackerCLI.py:167 TimeTrackerCLI.py:285 +#, python-brace-format +msgid "Error: Main project '{name}' not found." +msgstr "Erreur : le projet principal '{name}' est introuvable." -msgid "Error fetching emails: {error}" -msgstr "Erreur lors de la récupération des e-mails : {error}" +#: TimeTrackerCLI.py:172 +msgid "" +"\n" +"--- List Inactive Main-Projects ---" +msgstr "" +"\n" +"--- Liste des projets principaux inactifs ---" -msgid "{count} new tasks created from emails." -msgstr "{count} nouvelles tâches créées à partir des e-mails." +#: TimeTrackerCLI.py:174 +msgid "Enter the number of weeks without activity (e.g., 8): " +msgstr "Entrez le nombre de semaines sans activité (ex: 8) : " -msgid "No new emails found." -msgstr "Aucun nouvel e-mail trouvé." +#: TimeTrackerCLI.py:176 TimeTrackerCLI.py:518 +msgid "Please enter a positive number." +msgstr "Veuillez entrer un nombre positif." -msgid "No unassigned email tasks available." -msgstr "Aucune tâche par e-mail non attribuée disponible." +#: TimeTrackerCLI.py:182 +#, python-brace-format +msgid "" +"\n" +"Inactive Main-Projects (>{weeks} weeks):" +msgstr "" +"\n" +"Projets principaux inactifs (>{weeks} semaines) :" -msgid "Assign Project" -msgstr "Attribuer un projet" +#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:526 +#, python-brace-format +msgid " - Main Project: {name}" +msgstr " - Projet principal : {name}" -msgid "Edit Details" -msgstr "Modifier les détails" +#: TimeTrackerCLI.py:185 TimeTrackerCLI.py:528 +#, python-brace-format +msgid " Last Activity: {date}" +msgstr " Dernière activité : {date}" -msgid "Due Date" -msgstr "Date d'échéance" +#: TimeTrackerCLI.py:188 +#, python-brace-format +msgid "No main-projects found inactive for more than {weeks} weeks." +msgstr "" +"Aucun projet principal n'a été trouvé inactif pendant plus " +"de{weeks}semaines." -msgid "Clear" -msgstr "Effacer" +#: TimeTrackerCLI.py:191 TimeTrackerCLI.py:534 +msgid "Invalid input. Please enter a valid number for weeks." +msgstr "Entrée invalide. Veuillez entrer un nombre valide pour les semaines." -msgid "Task Name" -msgstr "Nom de la tâche" +#: TimeTrackerCLI.py:194 +msgid "" +"\n" +"--- Demote Main-Project to Sub-Project ---" +msgstr "" +"\n" +"--- Rétrograder un projet principal en sous-projet ---" -msgid "Task details updated successfully." -msgstr "Détails de la tâche mis à jour avec succès." +#: TimeTrackerCLI.py:197 +msgid "You need at least two open main projects for this operation." +msgstr "" +"Vous avez besoin d'au moins deux projets principaux ouverts pour cette " +"opération." -msgid "Error updating task details." -msgstr "Erreur lors de la mise à jour des détails de la tâche." +#: TimeTrackerCLI.py:202 +msgid "Select the main project to demote:" +msgstr "Sélectionnez le projet principal à rétrograder :" -msgid "Email Settings" -msgstr "Paramètres de messagerie" +#: TimeTrackerCLI.py:205 +msgid "Enter the number of the project to demote: " +msgstr "Entrez le numéro du projet à rétrograder : " -msgid "Enable email import" -msgstr "Activer l'importation d'e-mails" +#: TimeTrackerCLI.py:209 +msgid "" +"\n" +"Select the new parent main project:" +msgstr "" +"\n" +"Sélectionnez le nouveau projet principal parent :" -msgid "Username" -msgstr "Nom d'utilisateur" +#: TimeTrackerCLI.py:213 +msgid "Enter the number of the new parent project: " +msgstr "Entrez le numéro du nouveau projet parent : " -msgid "Password" -msgstr "Mot de passe" +#: TimeTrackerCLI.py:224 +msgid "" +"\n" +"--- List Completed Main Projects ---" +msgstr "" +"\n" +"--- Liste des principaux projets terminés ---" -msgid "Use SSL" -msgstr "Utiliser SSL" +#: TimeTrackerCLI.py:227 +msgid "Main projects with only closed or no sub-projects:" +msgstr "" +"Principaux projets avec uniquement des sous-projets fermés ou aucun sous-" +"projet :" -msgid "Email settings saved." -msgstr "Paramètres de messagerie enregistrés." +#: TimeTrackerCLI.py:231 +msgid "No completed main projects found." +msgstr "Aucun projet principal terminé n'a été trouvé." -msgid "4. Change Streamlit Port" -msgstr "4. Changer le port Streamlit" +#: TimeTrackerCLI.py:235 +msgid "Invalid choice. Please enter a number from 0 to 9." +msgstr "Choix invalide. Veuillez entrer un nombre entre 0 et 9." -msgid "Current Streamlit Port: {port}" -msgstr "Port Streamlit actuel : {port}" +#: TimeTrackerCLI.py:240 +msgid "" +"\n" +"--- Task Management ---" +msgstr "" +"\n" +"--- Gestion des tâches ---" -msgid "Enter new port (or press Enter to keep current): " -msgstr "Entrez le nouveau port (ou appuyez sur Entrée pour conserver l'actuel) : " +#: TimeTrackerCLI.py:241 +msgid "1. Add Task" +msgstr "1. Ajouter une tâche" -msgid "Port updated to {port}. Please restart Streamlit for changes to take effect." -msgstr "Port mis à jour vers {port}. Veuillez redémarrer Streamlit pour que les changements prennent effet." +#: TimeTrackerCLI.py:242 +msgid "2. List Tasks" +msgstr "2. Liste des tâches" -msgid "Work started on '{task_name}' in project '{main_name}'." -msgstr "Travail commencé sur '{task_name}' dans le projet '{main_name}'." +#: TimeTrackerCLI.py:243 +msgid "3. Rename Task" +msgstr "3. Renommer la tâche" -msgid "daily" -msgstr "quotidien" +#: TimeTrackerCLI.py:244 +msgid "4. Close Task" +msgstr "4. Fermer la tâche" -msgid "1. Main Project Management" -msgstr "1. Gestion des projets principaux" +#: TimeTrackerCLI.py:245 +msgid "5. Re-open Task" +msgstr "5. Rouvrir la tâche" -msgid "2. Task Management" -msgstr "2. Gestion des tâches" +#: TimeTrackerCLI.py:246 +msgid "6. Delete Task" +msgstr "6. Supprimer la tâche" -msgid "on all business days" -msgstr "tous les jours ouvrables" +#: TimeTrackerCLI.py:247 +msgid "7. Move Task" +msgstr "7. Déplacer la tâche" -msgid "1. Add Main Project" -msgstr "1. Ajouter un projet principal" +#: TimeTrackerCLI.py:248 +msgid "8. List Inactive Tasks" +msgstr "8. Liste des tâches inactives" -msgid "6. Demote Main-Project to Task" -msgstr "6. Rétrograder un projet principal en tâche" +#: TimeTrackerCLI.py:249 +msgid "9. List All Closed Tasks" +msgstr "9. Liste de toutes les tâches fermées" -msgid "weekly" -msgstr "hebdomadaire" +#: TimeTrackerCLI.py:250 +msgid "10. Delete All Closed Tasks" +msgstr "10. Supprimer toutes les tâches fermées" -#: TimeTracker.py:651 -msgid "- {name}: {hours} hour" -msgid_plural "- {name}: {hours} hours" -msgstr[0] "- {name} : {hours} heure" -msgstr[1] "- {name} : {hours} heures" +#: TimeTrackerCLI.py:251 +msgid "11. Promote Task to Main-Project" +msgstr "11. Promouvoir la tâche au projet principal" -#: TimeTracker.py:657 -msgid "monthly" -msgstr "mensuel" +#: TimeTrackerCLI.py:252 +msgid "12. Edit Task (Name & Due Date)" +msgstr "12. Modifier la tâche (nom et date d'échéance)" -msgid "## {name} ({hours} hour)\n" -msgid_plural "## {name} ({hours} hours)\n" -msgstr[0] "## {name} ({hours} heure)\n" -msgstr[1] "## {name} ({hours} heures)\n" +#: TimeTrackerCLI.py:261 +msgid "" +"\n" +"--- Add New Task ---" +msgstr "" +"\n" +"--- Ajouter une nouvelle tâche ---" -#: TimeTracker.py:665 -msgid "# Daily Time Report: {date}\n" -msgstr "# Rapport de temps journalier : {date}\n" +#: TimeTrackerCLI.py:264 TimeTrackerCLI.py:960 +msgid "No open main projects found. Please add one first." +msgstr "Aucun projet principal ouvert trouvé. Veuillez d'abord en ajouter un." -msgid "userdefined" -msgstr "# Rapport de temps journalier : {date}\n" +#: TimeTrackerCLI.py:267 +msgid "Select a main project to add a task to:" +msgstr "Sélectionnez un projet principal auquel ajouter une tâche :" -#: TimeTracker.py:666 -msgid "\n**Total Daily Time: {hours} hour**" -msgid_plural "\n**Total Daily Time: {hours} hours**" -msgstr[0] "\n**Temps total journalier : {hours} heure**" -msgstr[1] "\n**Temps total journalier : {hours} heures**" +#: TimeTrackerCLI.py:275 +msgid "Name of the new task: " +msgstr "Nom de la nouvelle tâche :" -#: TimeTracker.py:670 -msgid "No time tracked for {date}." -msgstr "Aucun temps suivi pour le {date}." +#: TimeTrackerCLI.py:276 +msgid "Due date (YYYY-MM-DD, press Enter to skip): " +msgstr "Date d'échéance (AAAA-MM-JJ, appuyez sur Entrée pour ignorer) :" -msgid "Days" -msgstr "Aucun temps suivi pour le {date}." +#: TimeTrackerCLI.py:278 +msgid "Add to 'Today' list? (y/n, default n): " +msgstr "Ajouter à la liste « Aujourd'hui » ? (o/n, n par défaut) :" -#: TimeTracker.py:708 -msgid "# Time Report: {start_date} to {end_date}\n" -msgstr "# Rapport de temps : du {start_date} au {end_date}\n" +#: TimeTrackerCLI.py:280 +msgid "Note (Markdown supported): " +msgstr "Remarque (Markdown pris en charge) :" + +#: TimeTrackerCLI.py:283 +#, python-brace-format +msgid "Task '{task_name}' added." +msgstr "Tâche '{task_name}' ajoutée." -#: TimeTracker.py:709 +#: TimeTrackerCLI.py:290 msgid "" "\n" -"**Total Time in Period: {total_time}**" +"--- List Tasks ---" msgstr "" "\n" -"**Temps total sur la période : {total_time}**" +"--- Liste des tâches ---" -#: TimeTracker.py:721 -msgid "No time tracked between {start_date} and {end_date}." -msgstr "Aucun temps suivi entre le {start_date} et le {end_date}." +#: TimeTrackerCLI.py:293 +msgid "No main projects found. Cannot list tasks." +msgstr "Aucun projet principal trouvé. Impossible de lister les tâches." -msgid "Notes (Markdown)" -msgstr "Aucun temps suivi entre le {start_date} et le {end_date}." +#: TimeTrackerCLI.py:296 +msgid "Select the main project whose tasks you want to list:" +msgstr "" +"Sélectionnez le projet principal dont vous souhaitez lister les tâches :" -msgid "now" -msgstr "maintenant" +#: TimeTrackerCLI.py:305 sl/SL_Menu.py:1307 +#, python-brace-format +msgid "Tasks for '{name}':" +msgstr "Tâches pour '{name}' :" -msgid "# Detailed Daily Report: {date}" -msgstr "# Rapport journalier détaillé : {date}" +#: TimeTrackerCLI.py:308 sl/SL_Menu.py:524 sl/SL_Menu.py:612 +msgid "Due" +msgstr "Due" -msgid "No notes provided." -msgstr "Aucune note fournie." +#: TimeTrackerCLI.py:309 sl/SL_Menu.py:409 sl/SL_Menu.py:419 sl/SL_Menu.py:484 +#: sl/SL_Menu.py:546 sl/SL_Menu.py:747 sl/SL_Menu.py:1603 sl/SL_Menu.py:1771 +msgid "Today" +msgstr "Aujourd'hui" -msgid "\nNo time tracked for {date}." -msgstr "\nAucun temps suivi pour le {date}." +#: TimeTrackerCLI.py:317 TimeTrackerCLI.py:861 sl/SL_Menu.py:1315 +#: sl/SL_Menu.py:2276 +#, python-brace-format +msgid "No tasks found for '{name}'." +msgstr "Aucune tâche trouvée pour '{name}'." -msgid "Active (working on '{task_name}')" -msgstr "Actif (travail sur '{task_name}')" +#: TimeTrackerCLI.py:322 +msgid "" +"\n" +"--- Rename Task ---" +msgstr "" +"\n" +"--- Renommer la tâche ---" -msgid "Add New Project" -msgstr "Ajouter un nouveau projet" +#: TimeTrackerCLI.py:325 TimeTrackerCLI.py:362 TimeTrackerCLI.py:397 +#: TimeTrackerCLI.py:432 TimeTrackerCLI.py:560 +msgid "No open main projects found." +msgstr "Aucun projet principal ouvert trouvé." -msgid "# Detailed Report for Task: {name}" -msgstr "# Rapport détaillé pour la tâche : {name}" +#: TimeTrackerCLI.py:328 TimeTrackerCLI.py:365 TimeTrackerCLI.py:400 +#: TimeTrackerCLI.py:435 TimeTrackerCLI.py:599 TimeTrackerCLI.py:852 +msgid "Select the main project:" +msgstr "Sélectionnez le projet principal :" -msgid "Part of Main Project: {name}" -msgstr "Fait partie du projet principal : {name}" +#: TimeTrackerCLI.py:338 +#, python-brace-format +msgid "No tasks to rename for '{name}'." +msgstr "Aucune tâche à renommer pour '{name}'." -msgid "Name of the new task" -msgstr "Nom de la nouvelle tâche" +#: TimeTrackerCLI.py:341 +#, python-brace-format +msgid "Select a task from '{name}' to rename:" +msgstr "Sélectionnez une tâche parmi '{name}' à renommer :" -msgid "Active (currently running)" -msgstr "Actif (en cours)" +#: TimeTrackerCLI.py:345 TimeTrackerCLI.py:382 TimeTrackerCLI.py:417 +#: TimeTrackerCLI.py:453 TimeTrackerCLI.py:489 TimeTrackerCLI.py:580 +#: TimeTrackerCLI.py:867 TimeTrackerCLI.py:982 +msgid "Enter the number of the task: " +msgstr "Entrez le numéro de la tâche :" -msgid "Last activity" -msgstr "Dernière activité" +#: TimeTrackerCLI.py:352 sl/SL_Menu.py:1358 +#, python-brace-format +msgid "Task '{old_name}' renamed to '{new_name}'." +msgstr "Tâche '{old_name}' renommée en '{new_name}'." -msgid "Today" -msgstr "Aujourd'hui" +#: TimeTrackerCLI.py:354 +msgid "" +"Error: Could not rename. The new name might already exist or the project was" +" not found." +msgstr "" +"Erreur : Impossible de renommer. Le nouveau nom existe peut-être déjà ou le " +"projet n'a pas été trouvé." -msgid "Inactive" -msgstr "Inactif" +#: TimeTrackerCLI.py:359 +msgid "" +"\n" +"--- Close Task ---" +msgstr "" +"\n" +"--- Fermer la tâche ---" -msgid "Status" -msgstr "Statut" +#: TimeTrackerCLI.py:375 +#, python-brace-format +msgid "No open tasks to close for '{name}'." +msgstr "Aucune tâche ouverte à fermer pour '{name}'." + +#: TimeTrackerCLI.py:378 +#, python-brace-format +msgid "Select a task from '{name}' to close:" +msgstr "Sélectionnez une tâche dans «{name}» pour la fermer :" + +#: TimeTrackerCLI.py:387 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been closed." +msgstr "La tâche «{task_name}» dans «{main_name}» a été fermée." + +#: TimeTrackerCLI.py:389 TimeTrackerCLI.py:424 TimeTrackerCLI.py:460 +#: sl/SL_Menu.py:945 sl/SL_Menu.py:990 sl/SL_Menu.py:1036 +msgid "Error: Main project or task not found." +msgstr "Erreur : projet ou tâche principal introuvable." + +#: TimeTrackerCLI.py:394 +msgid "" +"\n" +"--- Re-open Task ---" +msgstr "" +"\n" +"--- Réouvrir la tâche ---" -msgid "Recurring" -msgstr "Récurrent" +#: TimeTrackerCLI.py:410 +#, python-brace-format +msgid "No closed tasks to reopen for '{name}'." +msgstr "Aucune tâche fermée à rouvrir pour '{name}'." -msgid "First entry" -msgstr "Première entrée" +#: TimeTrackerCLI.py:413 +#, python-brace-format +msgid "Select a task from '{name}' to reopen:" +msgstr "Sélectionnez une tâche dans «{name}» pour la rouvrir :" -msgid "Total recorded time" -msgstr "Temps total enregistré" +#: TimeTrackerCLI.py:422 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been reopened." +msgstr "La tâche «{task_name}» dans «{main_name}» a été rouverte." -msgid "Frequency" -msgstr "Fréquence" +#: TimeTrackerCLI.py:429 +msgid "" +"\n" +"--- Delete Task ---" +msgstr "" +"\n" +"--- Supprimer la tâche ---" -msgid "Total work sessions" -msgstr "Nombre total de sessions de travail" +#: TimeTrackerCLI.py:446 +#, python-brace-format +msgid "No tasks to delete for '{name}'." +msgstr "Aucune tâche à supprimer pour '{name}'." -msgid "Average session duration" -msgstr "Durée moyenne des sessions" +#: TimeTrackerCLI.py:449 +#, python-brace-format +msgid "Select a task from '{name}' to delete:" +msgstr "Sélectionnez une tâche de '{name}' à supprimer :" -msgid "Edit" -msgstr "Modifier" +#: TimeTrackerCLI.py:458 +#, python-brace-format +msgid "Task '{task_name}' deleted from '{main_name}'." +msgstr "Tâche '{task_name}' supprimée de '{main_name}'." -msgid "Weekday Distribution" -msgstr "Répartition par jour de la semaine" +#: TimeTrackerCLI.py:466 +msgid "" +"\n" +"--- Move Task ---" +msgstr "" +"\n" +"--- Déplacer une tâche ---" -msgid "Monday" -msgstr "Lundi" +#: TimeTrackerCLI.py:469 +msgid "You need at least two open main projects to move a task." +msgstr "" +"Vous avez besoin d'au moins deux projets principaux ouverts pour déplacer " +"une tâche." -msgid "Tuesday" -msgstr "Mardi" +#: TimeTrackerCLI.py:474 +msgid "Select the source main project:" +msgstr "Sélectionnez le projet principal source :" -msgid "Wednesday" -msgstr "Mercredi" +#: TimeTrackerCLI.py:477 +msgid "Enter the number of the source main project: " +msgstr "Entrez le numéro du projet principal source : " -msgid "Thursday" -msgstr "Jeudi" +#: TimeTrackerCLI.py:483 +#, python-brace-format +msgid "No tasks to move from '{name}'." +msgstr "Aucune tâche à déplacer de «{name}»." -msgid "Friday" -msgstr "Vendredi" +#: TimeTrackerCLI.py:486 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to move:" +msgstr "" +"\n" +"Sélectionnez une tâche dans «{name}» à déplacer :" -msgid "Saturday" -msgstr "Samedi" +#: TimeTrackerCLI.py:494 +msgid "" +"\n" +"Select the destination main project:" +msgstr "" +"\n" +"Sélectionnez le projet principal de destination :" -msgid "Sunday" -msgstr "Dimanche" +#: TimeTrackerCLI.py:499 +msgid "Enter the number of the destination main project: " +msgstr "Entrez le numéro du projet principal de destination : " -msgid "Preview" -msgstr "Aperçu" +#: TimeTrackerCLI.py:505 +#, python-brace-format +msgid "" +"Successfully moved '{task_name}' from '{source_main_project}' to " +"'{dest_main_project}'." +msgstr "" +"Déplacement réussi de «{task_name}» de «{source_main_project}» à " +"«{dest_main_project}»." -msgid "Daily Breakdown" -msgstr "Répartition journalière" +#: TimeTrackerCLI.py:507 +#, python-brace-format +msgid "Error: {message}" +msgstr "Erreur : {message}" -msgid "Duration" -msgstr "Durée" +#: TimeTrackerCLI.py:514 +msgid "" +"\n" +"--- List Inactive Tasks ---" +msgstr "" +"\n" +"--- Liste des tâches inactives ---" -msgid "Add Task" -msgstr "Ajouter une tâche" +#: TimeTrackerCLI.py:516 +msgid "Enter the number of weeks without activity (e.g., 4): " +msgstr "Entrez le nombre de semaines sans activité (ex: 4) : " -msgid "# Detailed Report for Main Project: {name}" -msgstr "# Rapport détaillé pour le projet principal : {name}" +#: TimeTrackerCLI.py:524 +#, python-brace-format +msgid "" +"\n" +"Inactive Tasks (>{weeks} weeks):" +msgstr "" +"\n" +"Tâches inactives (>{weeks}semaines) :" -msgid "Number of sub-projects" -msgstr "Nombre de tâches" +#: TimeTrackerCLI.py:527 +#, python-brace-format +msgid " Task: {name}" +msgstr "Tâche :{name}" -msgid "A task with this name already exists in this project." -msgstr "Une tâche avec ce nom existe déjà dans ce projet." +#: TimeTrackerCLI.py:531 sl/SL_Menu.py:1118 +#, python-brace-format +msgid "No tasks found inactive for more than {weeks} weeks." +msgstr "Aucune tâche n'a été trouvée inactive pendant plus de{weeks}semaines." -msgid "Task Breakdown" -msgstr "Répartition par tâche" +#: TimeTrackerCLI.py:537 +msgid "" +"\n" +"--- List All Closed Tasks ---" +msgstr "" +"\n" +"--- Liste de toutes les tâches fermées ---" -msgid "{num_sessions} sessions" -msgstr "{num_sessions} sessions" +#: TimeTrackerCLI.py:543 sl/SL_Menu.py:1143 sl/SL_Menu.py:1166 +msgid "No closed tasks found." +msgstr "Aucune tâche fermée trouvée." -msgid "Step 1: Select Project" -msgstr "Étape 1 : Sélectionner le projet" +#: TimeTrackerCLI.py:547 +msgid "" +"\n" +"--- Delete All Closed Tasks ---" +msgstr "" +"\n" +"--- Supprimer toutes les tâches fermées ---" -msgid "6. Detailed Daily Report" -msgstr "6. Rapport journalier détaillé" +#: TimeTrackerCLI.py:548 +msgid "Are you sure you want to delete ALL closed tasks? (y/n): " +msgstr "" +"Êtes-vous sûr de vouloir supprimer TOUTES les tâches fermées ? (o/n) :" -msgid "\n--- Detailed Daily Report ---" -msgstr "\n--- Rapport journalier détaillé ---" +#: TimeTrackerCLI.py:551 +#, python-brace-format +msgid "{count} closed tasks were deleted." +msgstr "{count}les tâches fermées ont été supprimées." -msgid "No open projects found." -msgstr "Aucun projet ouvert trouvé." +#: TimeTrackerCLI.py:553 +msgid "Operation cancelled." +msgstr "Opération annulée." -msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " -msgstr "Entrez la date (AAAA-MM-JJ) ou appuyez sur Entrée pour aujourd'hui : " +#: TimeTrackerCLI.py:557 +msgid "" +"\n" +"--- Promote Task to Main-Project ---" +msgstr "" +"\n" +"--- Promouvoir la tâche vers le projet principal ---" -#: TimeTrackerCLI.py:21 -msgid "\n--- Project Management ---" -msgstr "\n--- Gestion des projets ---" +#: TimeTrackerCLI.py:565 +msgid "Select the main project containing the task to promote:" +msgstr "Sélectionnez le projet principal contenant la tâche à promouvoir :" -msgid "Next" -msgstr "Suivant" +#: TimeTrackerCLI.py:574 +#, python-brace-format +msgid "No tasks to promote in '{name}'." +msgstr "Aucune tâche à promouvoir dans '{name}'." -#: TimeTrackerCLI.py:22 -msgid "1. Add Project" -msgstr "1. Ajouter un projet" +#: TimeTrackerCLI.py:577 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to promote:" +msgstr "" +"\n" +"Sélectionnez une tâche dans «{name}» à promouvoir :" -#: TimeTrackerCLI.py:24 -msgid "2. List Projects" -msgstr "2. Lister les projets" +#: TimeTrackerCLI.py:593 +msgid "" +"\n" +"--- Edit Task ---" +msgstr "" +"\n" +"--- Modifier la tâche ---" -msgid "Step 2: Select Task from" -msgstr "Étape 2 : Sélectionner la tâche de" +#: TimeTrackerCLI.py:596 sl/SL_Menu.py:913 sl/SL_Menu.py:958 +#: sl/SL_Menu.py:1003 sl/SL_Menu.py:1049 sl/SL_Menu.py:1198 sl/SL_Menu.py:1328 +#: sl/SL_Menu.py:1487 sl/SL_Menu.py:1677 +msgid "No open projects found." +msgstr "Aucun projet ouvert trouvé." -#: TimeTrackerCLI.py:24 -msgid "3. Rename Project" -msgstr "3. Renommer le projet" +#: TimeTrackerCLI.py:609 +#, python-brace-format +msgid "No open tasks in '{name}'." +msgstr "Aucune tâche ouverte dans '{name}'." -#: TimeTrackerCLI.py:25 -msgid "4. Delete Project" -msgstr "4. Supprimer le projet" +#: TimeTrackerCLI.py:612 +msgid "Select a task to edit:" +msgstr "Sélectionnez une tâche à modifier :" -#: TimeTrackerCLI.py:26 -msgid "5. List Inactive Projects" -msgstr "5. Lister les projets inactifs" +#: TimeTrackerCLI.py:616 +msgid "Enter the number: " +msgstr "Entrez le numéro :" -msgid "No open tasks found." -msgstr "Aucune tâche ouverte trouvée." +#: TimeTrackerCLI.py:623 +#, python-brace-format +msgid "New name (press Enter to keep '{name}'): " +msgstr "Nouveau nom (appuyez sur Entrée pour conserver '{name}') :" -#: TimeTrackerCLI.py:27 -msgid "6. Demote Project to Task" -msgstr "6. Rétrograder un projet en tâche" +#: TimeTrackerCLI.py:624 +#, python-brace-format +msgid "New due date (YYYY-MM-DD, current: '{due}', enter '-' to clear): " +msgstr "" +"Nouvelle date d'échéance (AAAA-MM-JJ, actuelle : '{due}', entrez '-' pour " +"effacer) :" -#: TimeTrackerCLI.py:29 -msgid "7. Add Task" -msgstr "7. Ajouter une tâche" +#: TimeTrackerCLI.py:627 +#, python-brace-format +msgid "Is this for today? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"Est-ce pour aujourd'hui ? (actuel :{current}, o/n, appuyez sur Entrée pour " +"conserver) :" -#: TimeTrackerCLI.py:30 -msgid "8. List Tasks" -msgstr "8. Lister les tâches" +#: TimeTrackerCLI.py:630 +#, python-brace-format +msgid "Current Note: {note}" +msgstr "Note actuelle :{note}" -msgid "Task not found." -msgstr "Tâche non trouvée." +#: TimeTrackerCLI.py:631 +msgid "New note (press Enter to keep current): " +msgstr "Nouvelle note (appuyez sur Entrée pour conserver le courant) :" -#: TimeTrackerCLI.py:31 TimeTrackerCLI.py:32 -msgid "9. Rename Task" -msgstr "9. Renommer la tâche" +#: TimeTrackerCLI.py:635 +#, python-brace-format +msgid "Is this task done? (current: {current}, y/n, press Enter to keep): " +msgstr "" +"Cette tâche est-elle terminée ? (actuel :{current}, o/n, appuyez sur Entrée " +"pour conserver) :" -msgid "10. Close Task" -msgstr "10. Fermer la tâche" +#: TimeTrackerCLI.py:639 sl/SL_Menu.py:1834 +msgid "Task updated successfully." +msgstr "Tâche mise à jour avec succès." -msgid "11. Re-open Task" -msgstr "11. Rouvrir une tâche" +#: TimeTrackerCLI.py:641 +msgid "Error updating task." +msgstr "Erreur lors de la mise à jour de la tâche." -msgid "12. Delete Task" -msgstr "12. Supprimer la tâche" +#: TimeTrackerCLI.py:643 +msgid "Invalid input." +msgstr "Entrée invalide." -msgid "13. Move Task" -msgstr "13. Déplacer la tâche" +#: TimeTrackerCLI.py:648 +msgid "Invalid choice. Please enter a number from 0 to 11." +msgstr "Choix invalide. Veuillez saisir un chiffre entre 0 et 11." -msgid "14. List Inactive Tasks" -msgstr "14. Lister les tâches inactives" +#: TimeTrackerCLI.py:653 +msgid "" +"\n" +"--- Settings ---" +msgstr "" +"\n" +"--- Paramètres ---" -msgid "Done" -msgstr "Terminé" +#: TimeTrackerCLI.py:654 sl/SL_Menu.py:870 +msgid "1. Change Language" +msgstr "1. Changer de langue" -msgid "15. List All Closed Tasks" -msgstr "15. Lister toutes les tâches fermées" +#: TimeTrackerCLI.py:655 sl/SL_Menu.py:871 +msgid "2. Restore Previous Version" +msgstr "2. Restaurer la version précédente" -msgid "16. Delete All Closed Tasks" -msgstr "16. Supprimer toutes les tâches fermées" +#: TimeTrackerCLI.py:656 sl/SL_Menu.py:872 +msgid "3. Change Data Storage Location" +msgstr "3. Changer l'emplacement de stockage des données" -msgid "17. Promote Task to Project" -msgstr "17. Promouvoir une tâche en projet" +#: TimeTrackerCLI.py:657 sl/SL_Menu.py:874 +msgid "4. Change Streamlit Port" +msgstr "4. Changer le port Streamlit" -msgid "Save Changes" -msgstr "Enregistrer les modifications" +#: TimeTrackerCLI.py:659 TimeTrackerCLI.py:698 TimeTrackerCLI.py:808 +#: sl/SL_Menu.py:881 +msgid "0. Back to Main Menu" +msgstr "0. Retour au menu principal" -#: TimeTrackerCLI.py:37 TimeTrackerCLI.py:403 TimeTrackerCLI.py:461 TimeTrackerCLI.py:539 -msgid "0. Back to Main Menu" -msgstr "0. Retour au menu principal" +#: TimeTrackerCLI.py:682 +msgid "Invalid choice. Please enter a number from 0 to 4." +msgstr "Choix invalide. Veuillez entrer un nombre entre 0 et 4." -#: TimeTrackerCLI.py:40 TimeTrackerCLI.py:406 TimeTrackerCLI.py:464 TimeTrackerCLI.py:595 -msgid "Choice: " -msgstr "Choix : " +#: TimeTrackerCLI.py:687 +msgid "" +"\n" +"--- Language Settings ---" +msgstr "" +"\n" +"--- Paramètres de langue ---" -#: TimeTrackerCLI.py:44 -msgid "\n--- Add New Project ---" -msgstr "\n--- Ajouter un nouveau projet ---" +#: TimeTrackerCLI.py:692 +msgid "No additional languages found." +msgstr "Aucune langue supplémentaire trouvée." -msgid "Error: Could not update task." -msgstr "Erreur : Impossible de mettre à jour la tâche." +#: TimeTrackerCLI.py:716 +#, python-brace-format +msgid "Language changed to '{lang}'. Please restart the application." +msgstr "Langue changée en '{lang}'. Veuillez redémarrer l'application." -#: TimeTrackerCLI.py:45 -msgid "Name of the project: " -msgstr "Nom du projet : " +#: TimeTrackerCLI.py:719 +msgid "Invalid choice." +msgstr "Choix invalide." -#: TimeTrackerCLI.py:48 -msgid "Project '{name}' added." -msgstr "Projet '{name}' ajouté." +#: TimeTrackerCLI.py:721 +msgid "Invalid input. Please enter a number." +msgstr "Entrée invalide. Veuillez entrer un nombre." -#: TimeTrackerCLI.py:50 TimeTrackerCLI.py:55 -msgid "\n--- List Projects ---" -msgstr "\n--- Lister les projets ---" +#: TimeTrackerCLI.py:725 +msgid "" +"\n" +"--- Data Storage Settings ---" +msgstr "" +"\n" +"--- Paramètres de stockage des données ---" -msgid "No open projects found. Please add one first." -msgstr "Aucun projet ouvert trouvé. Veuillez d'abord en ajouter un." +#: TimeTrackerCLI.py:726 +#, python-brace-format +msgid "Current data file: {path}" +msgstr "Fichier de données actuel : {path}" -#: TimeTrackerCLI.py:55 TimeTrackerCLI.py:166 TimeTrackerCLI.py:288 TimeTrackerCLI.py:411 TimeTrackerCLI.py:434 TimeTrackerCLI.py:479 -msgid "No projects found." -msgstr "Aucun projet trouvé." +#: TimeTrackerCLI.py:728 +msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." +msgstr "" +"Entrez le nouveau chemin pour le fichier de données (ex : " +"/chemin/vers/mes_donnees.json)." -#: TimeTrackerCLI.py:58 -msgid "\n--- Rename Project ---" -msgstr "\n--- Renommer le projet ---" +#: TimeTrackerCLI.py:729 +msgid "Leave empty to cancel." +msgstr "Laisser vide pour annuler." -#: TimeTrackerCLI.py:61 -msgid "No projects to rename." -msgstr "Aucun projet à renommer." +#: TimeTrackerCLI.py:730 +msgid "New Path: " +msgstr "Nouveau chemin : " -msgid "Start Work" -msgstr "Démarrer le travail" +#: TimeTrackerCLI.py:738 sl/SL_Menu.py:1974 +#, python-brace-format +msgid "Error: The directory '{dir}' does not exist." +msgstr "Erreur : Le répertoire '{dir}' n'existe pas." -#: TimeTrackerCLI.py:64 -msgid "Select a project to rename:" -msgstr "Sélectionnez un projet à renommer :" +#: TimeTrackerCLI.py:752 +msgid "Storage location updated." +msgstr "Emplacement de stockage mis à jour." -#: TimeTrackerCLI.py:68 -msgid "Enter the number of the project: " -msgstr "Entrez le numéro du projet : " +#: TimeTrackerCLI.py:756 +msgid "Do you want to move the existing data to the new location? (y/n): " +msgstr "" +"Voulez-vous déplacer les données existantes vers le nouvel emplacement ? " +"(o/n) : " -#: TimeTrackerCLI.py:71 -msgid "Enter the new name for '{name}': " -msgstr "Entrez le nouveau nom pour '{name}' : " +#: TimeTrackerCLI.py:760 sl/SL_Menu.py:1985 +msgid "Data moved successfully." +msgstr "Données déplacées avec succès." -msgid "Error starting work." -msgstr "Erreur lors du démarrage du travail." +#: TimeTrackerCLI.py:762 sl/SL_Menu.py:1987 +#, python-brace-format +msgid "Error moving data: {error}" +msgstr "Erreur lors du déplacement des données : {error}" -#: TimeTrackerCLI.py:74 -msgid "Project '{old_name}' successfully renamed to '{new_name}'." -msgstr "Le projet '{old_name}' a été renommé en '{new_name}' avec succès." +#: TimeTrackerCLI.py:764 tt/TimeTracker.py:117 +msgid "Please restart the application for the changes to take effect." +msgstr "" +"Veuillez redémarrer l'application pour que les changements prennent effet." -#: TimeTrackerCLI.py:76 -msgid "Error: Could not rename. The new name '{new_name}' might already exist." -msgstr "Erreur : Impossible de renommer. Le nouveau nom '{new_name}' existe peut-être déjà." +#: TimeTrackerCLI.py:767 +#, python-brace-format +msgid "Error updating configuration: {error}" +msgstr "Erreur lors de la mise à jour de la configuration : {error}" -#: TimeTrackerCLI.py:78 TimeTrackerCLI.py:98 TimeTrackerCLI.py:120 TimeTrackerCLI.py:139 TimeTrackerCLI.py:160 TimeTrackerCLI.py:194 TimeTrackerCLI.py:222 TimeTrackerCLI.py:247 TimeTrackerCLI.py:284 TimeTrackerCLI.py:311 TimeTrackerCLI.py:342 TimeTrackerCLI.py:387 TimeTrackerCLI.py:431 TimeTrackerCLI.py:456 TimeTrackerCLI.py:532 -msgid "Invalid input. Please enter a valid number." -msgstr "Entrée invalide. Veuillez entrer un numéro valide." +#: TimeTrackerCLI.py:771 +msgid "" +"\n" +"--- Streamlit Port Settings ---" +msgstr "" +"\n" +"--- Paramètres du port Streamlit ---" -msgid "Current Active Work" -msgstr "Travail actif en cours" +#: TimeTrackerCLI.py:781 +#, python-brace-format +msgid "Current Streamlit Port: {port}" +msgstr "Port Streamlit actuel : {port}" -#: TimeTrackerCLI.py:81 -msgid "\n--- Delete Project ---" -msgstr "\n--- Supprimer le projet ---" +#: TimeTrackerCLI.py:783 +msgid "Enter new port (or press Enter to keep current): " +msgstr "" +"Entrez le nouveau port (ou appuyez sur Entrée pour conserver l'actuel) : " -#: TimeTrackerCLI.py:84 -msgid "No projects to delete." -msgstr "Aucun projet à supprimer." +#: TimeTrackerCLI.py:792 +#, python-brace-format +msgid "" +"Port updated to {port}. Please restart Streamlit for changes to take effect." +msgstr "" +"Port mis à jour vers {port}. Veuillez redémarrer Streamlit pour que les " +"changements prennent effet." -#: TimeTrackerCLI.py:87 -msgid "Select a project to delete:" -msgstr "Sélectionnez un projet à supprimer :" +#: TimeTrackerCLI.py:800 +msgid "" +"\n" +"--- Reporting ---" +msgstr "" +"\n" +"--- Rapports ---" -msgid "Project" -msgstr "Projet" +#: TimeTrackerCLI.py:801 +msgid "1. Daily Report (Today)" +msgstr "1. Rapport journalier (Aujourd'hui)" -#: TimeTrackerCLI.py:93 -msgid "Project '{name}' deleted." -msgstr "Projet '{name}' supprimé." +#: TimeTrackerCLI.py:802 +msgid "2. Daily Report (Specific Day)" +msgstr "2. Rapport journalier (Jour spécifique)" -#: TimeTrackerCLI.py:95 -msgid "Error: Project '{name}' not found." -msgstr "Erreur : Projet '{name}' non trouvé." +#: TimeTrackerCLI.py:803 +msgid "3. Date Range Report" +msgstr "3. Rapport par plage de dates" -#: TimeTrackerCLI.py:101 -msgid "\n--- List Inactive Projects ---" -msgstr "\n--- Lister les projets inactifs ---" +#: TimeTrackerCLI.py:804 +msgid "4. Detailed Task Report" +msgstr "4. Rapport détaillé de tâche" -msgid "Task" -msgstr "Tâche" +#: TimeTrackerCLI.py:805 +msgid "5. Detailed Main-Project Report" +msgstr "5. Rapport détaillé du projet principal" -#: TimeTrackerCLI.py:103 -msgid "Enter the number of weeks without activity (e.g., 8): " -msgstr "Entrez le nombre de semaines sans activité (ex: 8) : " +#: TimeTrackerCLI.py:806 +msgid "6. Detailed Daily Report" +msgstr "6. Rapport journalier détaillé" -#: TimeTrackerCLI.py:105 -msgid "Please enter a positive number." -msgstr "Veuillez entrer un nombre positif." +#: TimeTrackerCLI.py:815 +msgid "" +"\n" +"--- Generate Daily Report (Today) ---" +msgstr "" +"\n" +"--- Générer le rapport journalier (Aujourd'hui) ---" -#: TimeTrackerCLI.py:110 -msgid "\nInactive Main-Projects (>{weeks} weeks):" -msgstr "\nProjets principaux inactifs (>{weeks} semaines) :" +#: TimeTrackerCLI.py:820 +msgid "" +"\n" +"--- Generate Daily Report for a specific Day ---" +msgstr "" +"\n" +"--- Générer le rapport journalier pour un jour spécifique ---" -msgid "Started at" -msgstr "Démarré à" +#: TimeTrackerCLI.py:821 +msgid "Enter the date (YYYY-MM-DD): " +msgstr "Entrez la date (AAAA-MM-JJ) : " -#: TimeTrackerCLI.py:112 -msgid " - Main Project: {name}" -msgstr " - Projet principal : {name}" +#: TimeTrackerCLI.py:827 TimeTrackerCLI.py:842 TimeTrackerCLI.py:903 +msgid "Invalid date format. Please use YYYY-MM-DD." +msgstr "Format de date invalide. Veuillez utiliser AAAA-MM-JJ." -#: TimeTrackerCLI.py:113 -msgid " Last Activity: {date}" -msgstr " Dernière activité : {date}" +#: TimeTrackerCLI.py:830 +msgid "" +"\n" +"--- Generate Report for a Date Range ---" +msgstr "" +"\n" +"--- Générer un rapport pour une plage de dates ---" -#: TimeTrackerCLI.py:116 -msgid "No main-projects found inactive for more than {weeks} week." -msgid_plural "No main-projects found inactive for more than {weeks} weeks." -msgstr[0] "Aucun projet principal inactif depuis plus de {weeks} semaine n'a été trouvé." -msgstr[1] "Aucun projet principal inactif depuis plus de {weeks} semaines n'a été trouvé." +#: TimeTrackerCLI.py:831 +msgid "Enter the start date (YYYY-MM-DD): " +msgstr "Entrez la date de début (AAAA-MM-JJ) : " -#: TimeTrackerCLI.py:119 -msgid "Invalid input. Please enter a valid number for weeks." -msgstr "Entrée invalide. Veuillez entrer un nombre valide pour les semaines." +#: TimeTrackerCLI.py:832 +msgid "Enter the end date (YYYY-MM-DD): " +msgstr "Entrez la date de fin (AAAA-MM-JJ) : " -msgid "Streamlit Port Settings" -msgstr "Paramètres du port Streamlit" +#: TimeTrackerCLI.py:837 sl/SL_Menu.py:2227 +msgid "Error: The start date cannot be after the end date." +msgstr "" +"Erreur : La date de début ne peut pas être postérieure à la date de fin." -#: TimeTrackerCLI.py:122 -msgid "\n--- Add New Sub-Project ---" -msgstr "\n--- Ajouter un nouveau sous-projet ---" +#: TimeTrackerCLI.py:844 +msgid "" +"\n" +"--- Detailed Task Report ---" +msgstr "" +"\n" +"--- Rapport détaillé de tâche ---" -#: TimeTrackerCLI.py:125 -msgid "No main projects found. Please add one first." -msgstr "Aucun projet principal trouvé. Veuillez d'abord en ajouter un." +#: TimeTrackerCLI.py:847 TimeTrackerCLI.py:880 sl/SL_Menu.py:1249 +#: sl/SL_Menu.py:1296 sl/SL_Menu.py:1435 sl/SL_Menu.py:2245 sl/SL_Menu.py:2304 +msgid "No projects found." +msgstr "Aucun projet trouvé." -#: TimeTrackerCLI.py:128 -msgid "Select a main project to add a sub-project to:" -msgstr "Sélectionnez un projet principal auquel ajouter un sous-projet :" +#: TimeTrackerCLI.py:864 +msgid "" +"\n" +"Select the task for the report:" +msgstr "" +"\n" +"Sélectionnez la tâche pour le rapport :" -msgid "New Port" -msgstr "Nouveau port" +#: TimeTrackerCLI.py:877 +msgid "" +"\n" +"--- Detailed Main-Project Report ---" +msgstr "" +"\n" +"--- Rapport détaillé du projet principal ---" -#: TimeTrackerCLI.py:135 -msgid "Name of the new sub-project: " -msgstr "Nom du nouveau sous-projet : " +#: TimeTrackerCLI.py:885 +msgid "Select the main project for the report:" +msgstr "Sélectionnez le projet principal pour le rapport :" + +#: TimeTrackerCLI.py:896 +msgid "" +"\n" +"--- Detailed Daily Report ---" +msgstr "" +"\n" +"--- Rapport journalier détaillé ---" -#: TimeTrackerCLI.py:137 -msgid "Sub-project '{sub_name}' added to '{main_name}'." -msgstr "Sous-projet '{sub_name}' ajouté à '{main_name}'." +#: TimeTrackerCLI.py:897 +msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " +msgstr "Entrez la date (AAAA-MM-JJ) ou appuyez sur Entrée pour aujourd'hui : " -#: TimeTrackerCLI.py:142 -msgid "\n--- List Sub-Projects ---" -msgstr "\n--- Lister les sous-projets ---" +#: TimeTrackerCLI.py:911 TimeTrackerCLI.py:1042 +msgid "Invalid choice. Please enter a number from 0 to 6." +msgstr "Choix invalide. Veuillez entrer un nombre de 0 à 6." -msgid "Save" -msgstr "Enregistrer" +#: TimeTrackerCLI.py:919 +msgid "" +"\n" +"--- Update Available ---" +msgstr "" +"\n" +"--- Mise à jour disponible ---" -#: TimeTrackerCLI.py:145 -msgid "No main projects found. Cannot list sub-projects." -msgstr "Aucun projet principal trouvé. Impossible de lister les sous-projets." +#: TimeTrackerCLI.py:920 +msgid "A downloaded update is ready to be installed." +msgstr "Une mise à jour téléchargée est prête à être installée." -#: TimeTrackerCLI.py:148 -msgid "Select the main project whose sub-projects you want to list:" -msgstr "Sélectionnez le projet principal dont vous voulez lister les sous-projets :" +#: TimeTrackerCLI.py:921 +msgid "0. Skip update for now" +msgstr "0. Ignorer la mise à jour pour l'instant" -#: TimeTrackerCLI.py:156 -msgid "Sub-projects for '{name}':" -msgstr "Sous-projets pour '{name}' :" +#: TimeTrackerCLI.py:922 +msgid "1. Install update now" +msgstr "1. Installer la mise à jour maintenant" -msgid "Port updated to {port}. Please restart Streamlit." -msgstr "Port mis à jour vers {port}. Veuillez redémarrer Streamlit." +#: TimeTrackerCLI.py:923 +msgid "Enter your choice (0 or 1): " +msgstr "Entrez votre choix (0 ou 1) : " -#: TimeTrackerCLI.py:159 TimeTrackerCLI.py:262 TimeTrackerCLI.py:489 -msgid "No sub-projects found for '{name}'." -msgstr "Aucun sous-projet trouvé pour '{name}'." +#: TimeTrackerCLI.py:927 +msgid "Application is restarting to complete the update..." +msgstr "L'application redémarre pour terminer la mise à jour..." -#: TimeTrackerCLI.py:163 -msgid "\n--- Rename Sub-Project ---" -msgstr "\n--- Renommer le sous-projet ---" +#: TimeTrackerCLI.py:931 +msgid "Update installation skipped. The application will start normally." +msgstr "" +"Installation de la mise à jour ignorée. L'application démarrera " +"normallement." -#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:201 TimeTrackerCLI.py:414 TimeTrackerCLI.py:437 TimeTrackerCLI.py:482 -msgid "Select the main project:" -msgstr "Sélectionnez le projet principal :" +#: TimeTrackerCLI.py:933 +msgid "" +"Invalid choice. Update installation skipped. The application will start " +"normally." +msgstr "" +"Choix invalide. Installation de la mise à jour ignorée. L'application " +"démarrera normalement." -msgid "Change Data Storage Location" -msgstr "Changer l'emplacement de stockage des données" +#: TimeTrackerCLI.py:940 +#, python-brace-format +msgid "" +"\n" +"=== Time Control {version} ===" +msgstr "" +"\n" +"=== Time Control {version} ===" -#: TimeTrackerCLI.py:177 -msgid "No sub-projects to rename for '{name}'." -msgstr "Aucun sous-projet à renommer pour '{name}'." +#: TimeTrackerCLI.py:941 +msgid "--- Main Menu ---" +msgstr "--- Menu principal ---" -#: TimeTrackerCLI.py:180 -msgid "Select a sub-project from '{name}' to rename:" -msgstr "Sélectionnez un sous-projet de '{name}' à renommer :" +#: TimeTrackerCLI.py:942 +msgid "1. Start work on task" +msgstr "1. Démarrer le travail sur une tâche" -#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:214 TimeTrackerCLI.py:267 TimeTrackerCLI.py:307 TimeTrackerCLI.py:499 -msgid "Enter the number of the sub-project: " -msgstr "Entrez le numéro du sous-projet : " +#: TimeTrackerCLI.py:943 +msgid "2. Show current work" +msgstr "2. Afficher le travail en cours" -msgid "Current data file" -msgstr "Fichier de données actuel" +#: TimeTrackerCLI.py:944 +msgid "3. Stop current work" +msgstr "3. Arrêter le travail en cours" -#: TimeTrackerCLI.py:190 -msgid "Sub-project '{old_name}' renamed to '{new_name}'." -msgstr "Le sous-projet '{old_name}' a été renommé en '{new_name}'." +#: TimeTrackerCLI.py:946 +msgid "4. Handle projects and tasks" +msgstr "4. Gérer les projets et les tâches" -#: TimeTrackerCLI.py:192 -msgid "" -"Error: Could not rename. The new name might already exist or the project " -"was not found." -msgstr "Erreur : Impossible de renommer. Le nouveau nom existe peut-être déjà ou le projet n'a pas été trouvé." +#: TimeTrackerCLI.py:947 +msgid "5. Reporting" +msgstr "5. Rapports" -msgid "New Path for data file" -msgstr "Nouveau chemin pour le fichier de données" +#: TimeTrackerCLI.py:948 +msgid "6. Settings" +msgstr "6. Paramètres" + +#: TimeTrackerCLI.py:950 +msgid "0. Exit" +msgstr "0. Quitter" -#: TimeTrackerCLI.py:195 -msgid "\n--- Delete Sub-Project ---" -msgstr "\n--- Supprimer le sous-projet ---" +#: TimeTrackerCLI.py:957 +msgid "" +"\n" +"--- Start Work on a Task ---" +msgstr "" +"\n" +"--- Démarrer le travail sur une tâche ---" -#: TimeTrackerCLI.py:207 -msgid "No sub-projects to delete for '{name}'." -msgstr "Aucun sous-projet à supprimer pour '{name}'." +#: TimeTrackerCLI.py:963 +msgid "Select a main project:" +msgstr "Sélectionnez un projet principal :" -#: TimeTrackerCLI.py:210 -msgid "Select a sub-project from '{name}' to delete:" -msgstr "Sélectionnez un sous-projet de '{name}' à supprimer :" +#: TimeTrackerCLI.py:974 +#, python-brace-format +msgid "No open tasks found for '{name}' to start work on." +msgstr "" +"Aucune tâche ouverte trouvée pour '{name}' sur laquelle commencer à " +"travailler." -msgid "Move existing data to the new location" -msgstr "Déplacer les données existantes vers le nouvel emplacement" +#: TimeTrackerCLI.py:977 +#, python-brace-format +msgid "Select a task from '{name}':" +msgstr "Sélectionnez une tâche de '{name}' :" -#: TimeTrackerCLI.py:217 -msgid "Sub-project '{sub_name}' deleted from '{main_name}'." -msgstr "Sous-projet '{sub_name}' supprimé de '{main_name}'." +#: TimeTrackerCLI.py:987 sl/SL_Menu.py:1884 +#, python-brace-format +msgid "Work started on '{task_name}' in project '{main_name}'." +msgstr "Travail commencé sur '{task_name}' dans le projet '{main_name}'." -msgid "\n--- List All Closed Sub-Projects ---" -msgstr "\n--- Lister tous les sous-projets fermés ---" +#: TimeTrackerCLI.py:989 sl/SL_Menu.py:1888 +msgid "Error starting work." +msgstr "Erreur lors du démarrage du travail." +#: TimeTrackerCLI.py:996 msgid "" -"If unchecked, the old data file will remain, and a new empty one might be " -"created at the new location on restart." +"\n" +"--- Current Active Work ---" msgstr "" -"Si décoché, l'ancien fichier de données restera, et un nouveau fichier vide " -"pourrait être créé au nouvel emplacement au redémarrage." - -msgid "No closed sub-projects found." -msgstr "Aucun sous-projet fermé trouvé." +"\n" +"--- Travail actif en cours ---" -msgid "\n--- Delete All Closed Sub-Projects ---" -msgstr "\n--- Supprimer tous les sous-projets fermés ---" +#: TimeTrackerCLI.py:1006 +msgid "You are currently working on:" +msgstr "Vous travaillez actuellement sur :" -msgid "Are you sure you want to delete ALL closed sub-projects? (y/n): " -msgstr "Êtes-vous sûr de vouloir supprimer TOUS les sous-projets fermés ? (o/n) : " +#: TimeTrackerCLI.py:1007 +#, python-brace-format +msgid " Main Project: {name}" +msgstr "Projet principal :{name}" -msgid "Error: For security, the data file must be located within the application directory." -msgstr "Erreur : Pour des raisons de sécurité, le fichier de données doit être situé dans le répertoire de l'application." +#: TimeTrackerCLI.py:1008 +#, python-brace-format +msgid " Task: {name}" +msgstr "Tâche :{name}" -msgid "{count} closed sub-projects were deleted." -msgstr "{count} sous-projets fermés ont été supprimés." +#: TimeTrackerCLI.py:1009 +#, python-brace-format +msgid " Started at: {date}" +msgstr " Démarré à : {date}" -msgid "Operation cancelled." -msgstr "Opération annulée." +#: TimeTrackerCLI.py:1010 +#, python-brace-format +msgid " Duration: {duration}" +msgstr " Durée : {duration}" -#: TimeTrackerCLI.py:219 TimeTrackerCLI.py:281 -msgid "Error: The directory '{dir}' does not exist." -msgstr "Erreur : Le répertoire '{dir}' n'existe pas." +#: TimeTrackerCLI.py:1012 sl/SL_Menu.py:373 sl/SL_Menu.py:1910 +msgid "No active work session." +msgstr "Aucune session de travail active." -msgid "Error: Main project or sub-project not found." -msgstr "Erreur : Projet principal ou sous-projet non trouvé." +#: TimeTrackerCLI.py:1016 +msgid "" +"\n" +"--- Stop Work ---" +msgstr "" +"\n" +"--- Arrêter le travail ---" -#: TimeTrackerCLI.py:226 -msgid "\n--- List Inactive Sub-Projects ---" -msgstr "\n--- Lister les sous-projets inactifs ---" +#: TimeTrackerCLI.py:1018 sl/SL_Menu.py:341 +msgid "Work session stopped successfully." +msgstr "Session de travail arrêtée avec succès." -msgid "Storage location updated. Please restart the application for the changes to take effect." -msgstr "Emplacement de stockage mis à jour. Veuillez redémarrer l'application pour que les changements prennent effet." +#: TimeTrackerCLI.py:1020 sl/SL_Menu.py:343 +msgid "No active work session to stop." +msgstr "Aucune session de travail active à arrêter." -#: TimeTrackerCLI.py:228 -msgid "Enter the number of weeks without activity (e.g., 4): " -msgstr "Entrez le nombre de semaines sans activité (ex: 4) : " +#: TimeTrackerCLI.py:1034 +msgid "" +"\n" +"Checking for updates..." +msgstr "" +"\n" +"Recherche de mises à jour..." -#: TimeTrackerCLI.py:235 -msgid "\nInactive Sub-Projects (>{weeks} weeks):" -msgstr "\nSous-projets inactifs (>{weeks} semaines) :" +#: TimeTrackerCLI.py:1038 +msgid "Exiting application. Goodbye!" +msgstr "Fermeture de l'application. Au revoir !" -#: TimeTrackerCLI.py:238 -msgid " Sub-Project: {name}" -msgstr " Sous-projet : {name}" +#: update.py:35 +msgid "" +"Warning: Update check skipped. 'github_repo' not found in config.json or " +"file is invalid." +msgstr "" +"Avertissement : Vérification de mise à jour ignorée. 'github_repo' non " +"trouvé dans config.json ou fichier invalide." -msgid "Error moving data: {error}" -msgstr "Erreur lors du déplacement des données : {error}" +#: update.py:49 +#, python-brace-format +msgid "A new version ({version}) is available." +msgstr "Une nouvelle version ({version}) est disponible." -#: TimeTrackerCLI.py:241 -msgid "No sub-projects found inactive for more than {weeks} week." -msgid_plural "No sub-projects found inactive for more than {weeks} weeks." -msgstr[0] "Aucun sous-projet inactif depuis plus de {weeks} semaine n'a été trouvé." -msgstr[1] "Aucun sous-projet inactif depuis plus de {weeks} semaines n'a été trouvé." +#: update.py:55 +msgid "Error: Download URL for the new version not found." +msgstr "Erreur : URL de téléchargement pour la nouvelle version non trouvée." -#: TimeTrackerCLI.py:248 -msgid "\n--- Move Sub-Project ---" -msgstr "\n--- Déplacer le sous-projet ---" +#: update.py:59 +#, python-brace-format +msgid "Error checking for updates: {error}" +msgstr "Erreur lors de la recherche de mises à jour : {error}" -msgid "Change CSS Style" -msgstr "Changer le style CSS" +#: update.py:61 +#, python-brace-format +msgid "An unexpected error occurred while checking for updates: {error}" +msgstr "" +"Une erreur inattendue s'est produite lors de la recherche de mises à jour : " +"{error}Une erreur inattendue s'est produite lors de la recherche de mises à " +"jour : {error}" -#: TimeTrackerCLI.py:250 -msgid "You need at least two main projects to move a sub-project." -msgstr "Vous avez besoin d'au moins deux projets principaux pour déplacer un sous-projet." +#: update.py:73 +msgid "Downloading update..." +msgstr "Téléchargement de la mise à jour..." -#: TimeTrackerCLI.py:254 -msgid "Select the source main project:" -msgstr "Sélectionnez le projet principal source :" +#: update.py:79 +msgid "Download complete. The update will be installed on the next start." +msgstr "" +"Téléchargement terminé. La mise à jour sera installée au prochain démarrage." -#: TimeTrackerCLI.py:257 -msgid "Enter the number of the source main project: " -msgstr "Entrez le numéro du projet principal source : " +#: update.py:82 +#, python-brace-format +msgid "Error downloading the update: {error}" +msgstr "Erreur lors du téléchargement de la mise à jour : {error}" -msgid "Current CSS file" -msgstr "Fichier CSS actuel" +#: update.py:108 +msgid "Creating backup of current version before update..." +msgstr "" +"Création d'une sauvegarde de la version actuelle avant la mise à jour..." -#: TimeTrackerCLI.py:265 -msgid "\nSelect a sub-project from '{name}' to move:" -msgstr "\nSélectionnez un sous-projet de '{name}' à déplacer :" +#: update.py:118 +#, python-brace-format +msgid "Backup created successfully as {filename}." +msgstr "Sauvegarde créée avec succès sous le nom {filename}." -#: TimeTrackerCLI.py:270 -msgid "\nSelect the destination main project:" -msgstr "\nSélectionnez le projet principal de destination :" +#: update.py:120 +#, python-brace-format +msgid "Warning: Could not create backup. Error: {error}" +msgstr "Avertissement : Impossible de créer la sauvegarde. Erreur : {error}" -#: TimeTrackerCLI.py:274 -msgid "Enter the number of the destination main project: " -msgstr "Entrez le numéro du projet principal de destination : " +#: update.py:122 +msgid "Installing update..." +msgstr "Installation de la mise à jour..." -msgid "Select CSS File" -msgstr "Sélectionner le fichier CSS" +#: update.py:142 +#, python-brace-format +msgid "Skipping protected file: {filename}. It will not be overwritten." +msgstr "Fichier protégé ignoré : {filename}. Il ne sera pas écrasé." -#: TimeTrackerCLI.py:279 -msgid "Successfully moved '{sub_name}' from '{source_name}' to '{dest_name}'." -msgstr "Déplacement réussi de '{sub_name}' de '{source_name}' vers '{dest_name}'." +#: update.py:151 +msgid "Update installed successfully." +msgstr "Mise à jour installée avec succès." -msgid "Error: {message}" -msgstr "Erreur : {message}" +#: update.py:153 +#, python-brace-format +msgid "Error during update installation: {error}" +msgstr "Erreur lors de l'installation de la mise à jour : {error}" -msgid "CSS style updated. Please restart the application for the changes to take effect." -msgstr "Style CSS mis à jour. Veuillez redémarrer l'application pour que les changements prennent effet." +#: update.py:168 +#, python-brace-format +msgid "Error: No previous version backup '{filename}' found." +msgstr "" +"Erreur : Aucune sauvegarde de la version précédente '{filename}' trouvée." -#: TimeTrackerCLI.py:286 -msgid "\n--- Promote Sub-Project to Main-Project ---" -msgstr "\n--- Promouvoir un sous-projet en projet principal ---" +#: update.py:171 +#, python-brace-format +msgid "Restoring previous version from '{filename}'..." +msgstr "Restauration de la version précédente depuis '{filename}'..." -#: TimeTrackerCLI.py:293 -msgid "Select the main project containing the sub-project to promote:" -msgstr "Sélectionnez le projet principal contenant le sous-projet à promouvoir :" +#: update.py:192 +#, python-brace-format +msgid "" +"Skipping user data file: {filename}. It will not be overwritten during " +"restore." +msgstr "" +"Ignorer le fichier de données utilisateur : {filename}. Il ne sera pas " +"écrasé lors de la restauration." -#: TimeTrackerCLI.py:301 -msgid "No sub-projects to promote in '{name}'." -msgstr "Aucun sous-projet à promouvoir dans '{name}'." +#: update.py:199 +msgid "Previous version restored successfully." +msgstr "Version précédente restaurée avec succès." -msgid "Change View Mode" -msgstr "Changer le mode d'affichage" +#: update.py:201 +msgid "Restarting application to apply changes..." +msgstr "Redémarrage de l'application pour appliquer les modifications..." -#: TimeTrackerCLI.py:304 -msgid "\nSelect a sub-project from '{name}' to promote:" -msgstr "\nSélectionnez un sous-projet de '{name}' à promouvoir :" +#: update.py:204 +#, python-brace-format +msgid "Error during restoration: {error}" +msgstr "Erreur lors de la restauration : {error}" -#: TimeTrackerCLI.py:315 -msgid "\n--- Demote Main-Project to Sub-Project ---" -msgstr "\n--- Rétrograder un projet principal en sous-projet ---" +#: update.py:205 +#, python-brace-format +msgid "The backup file '{filename}' was not deleted." +msgstr "Le fichier de sauvegarde '{filename}' n'a pas été supprimé." -#: TimeTrackerCLI.py:318 TimeTrackerCLI.py:322 -msgid "You need at least two main projects for this operation." -msgstr "Vous avez besoin d'au moins deux projets principaux pour cette opération." +#: update.py:212 +msgid "Error: Could not import TimeTracker to get the current version." +msgstr "" +"Erreur : Impossible d'importer TimeTracker pour obtenir la version actuelle." -msgid "App Window (Webview)" -msgstr "Fenêtre d'application (Webview)" +#: update.py:215 +msgid "Checking for updates..." +msgstr "Vérification des mises à jour..." -msgid "Select the main project to demote:" -msgstr "Sélectionnez le projet principal à rétrograder :" +#: update.py:222 +msgid "No updates available." +msgstr "Aucune mise à jour disponible." -#: TimeTrackerCLI.py:325 -msgid "Enter the number of the project to demote: " -msgstr "Entrez le numéro du projet à rétrograder : " +#: tt/TimeTracker.py:90 +#, python-brace-format +msgid "Warning: Could not read {file}. Error: {error}" +msgstr "Avertissement : Impossible de lire {file}. Erreur : {error}" -#: TimeTrackerCLI.py:328 -msgid "\nSelect the new parent main project:" -msgstr "\nSélectionnez le nouveau projet principal parent :" +#: tt/TimeTracker.py:105 +msgid "Some required packages are missing. Attempting to install them..." +msgstr "Certains paquets requis sont manquants. Tentative d'installation..." -msgid "System Browser" -msgstr "Navigateur système" - -#: TimeTrackerCLI.py:333 -msgid "Enter the number of the new parent project: " -msgstr "Entrez le numéro du nouveau projet parent : " - -msgid "Invalid choice. Please enter a number from 0 to 17." -msgstr "Choix invalide. Veuillez entrer un nombre de 0 à 17." +#: tt/TimeTracker.py:108 +#, python-brace-format +msgid "Installing {package}..." +msgstr "Installation de {package}..." -#: TimeTrackerCLI.py:348 -msgid "\n--- Reporting ---" -msgstr "\n--- Rapports ---" +#: tt/TimeTracker.py:112 +#, python-brace-format +msgid "Failed to install {package}. Continuing without it." +msgstr "Échec de l'installation de{package}. Continuer sans cela." -msgid "Select View Mode" -msgstr "Sélectionner le mode d'affichage" +#: tt/TimeTracker.py:116 +msgid "" +"\n" +"Dependencies installed successfully." +msgstr "" +"\n" +"Dépendances installées avec succès." -#: TimeTrackerCLI.py:349 -msgid "1. Daily Report (Today)" -msgstr "1. Rapport journalier (Aujourd'hui)" +#: tt/TimeTracker.py:120 +#, python-brace-format +msgid "" +"\n" +"Warning: Some dependencies could not be installed: {packages}" +msgstr "" +"\n" +"Attention : Certaines dépendances n'ont pas pu être installées :{packages}" -#: TimeTrackerCLI.py:350 -msgid "2. Daily Report (Specific Day)" -msgstr "2. Rapport journalier (Jour spécifique)" +#: tt/TimeTracker.py:122 +#, python-brace-format +msgid "An unexpected error occurred during dependency check: {error}" +msgstr "" +"Une erreur inattendue s'est produite lors de la vérification des dépendances" +" : {error}" -#: TimeTrackerCLI.py:351 -msgid "3. Date Range Report" -msgstr "3. Rapport par plage de dates" +#: tt/TimeTracker.py:229 +msgid "Info: Report content has been copied to the clipboard." +msgstr "Info : Le contenu du rapport a été copié dans le presse-papiers." -msgid "View mode updated. Please restart the application for the changes to take effect." -msgstr "Mode d'affichage mis à jour. Veuillez redémarrer l'application pour que les changements prennent effet." +#: tt/TimeTracker.py:231 +#, python-brace-format +msgid "Warning: Could not copy to clipboard. Error: {error}" +msgstr "" +"Avertissement : Impossible de copier dans le presse-papiers. Erreur : " +"{error}" -#: TimeTrackerCLI.py:352 -msgid "4. Detailed Task Report" -msgstr "4. Rapport détaillé de tâche" +#: tt/TimeTracker.py:233 +msgid "" +"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " +"install pyperclip`)." +msgstr "" +"Avertissement : Impossible de copier dans le presse-papiers. Veuillez " +"installer 'pyperclip' (`pip install pyperclip`)." -#: TimeTrackerCLI.py:353 -msgid "5. Detailed Project Report" -msgstr "5. Rapport détaillé de projet" +#: tt/TimeTracker.py:253 +#, python-brace-format +msgid "{hours} hours ({dlp} DLP)" +msgstr "{hours}heures ({dlp}DLP)" -#: TimeTrackerCLI.py:359 -msgid "\n--- Generate Daily Report (Today) ---" -msgstr "\n--- Générer le rapport journalier (Aujourd'hui) ---" +#: tt/TimeTracker.py:846 tt/TimeTracker.py:886 +#, python-brace-format +msgid "Source main project '{name}' not found." +msgstr "Source du projet principal '{name}' introuvable." -msgid "Restore Previous Version" -msgstr "Restaurer la version précédente" +#: tt/TimeTracker.py:848 +#, python-brace-format +msgid "Destination main project '{name}' not found." +msgstr "Projet principal de destination «{name}» introuvable." -#: TimeTrackerCLI.py:363 -msgid "\n--- Generate Daily Report for a specific Day ---" -msgstr "\n--- Générer le rapport journalier pour un jour spécifique ---" +#: tt/TimeTracker.py:860 +#, python-brace-format +msgid "Task '{task_name}' moved successfully." +msgstr "La tâche '{task_name}' a été déplacée avec succès." -#: TimeTrackerCLI.py:364 -msgid "Enter the date (YYYY-MM-DD): " -msgstr "Entrez la date (AAAA-MM-JJ) : " +#: tt/TimeTracker.py:861 tt/TimeTracker.py:896 tt/TimeTracker.py:1373 +#, python-brace-format +msgid "Task '{task_name}' not found in '{main_name}'." +msgstr "La tâche '{task_name}' n'a pas été trouvée dans '{main_name}'." -#: TimeTrackerCLI.py:369 -msgid "Invalid date format. Please use YYYY-MM-DD." -msgstr "Format de date invalide. Veuillez utiliser AAAA-MM-JJ." +#: tt/TimeTracker.py:880 +#, python-brace-format +msgid "A main project named '{name}' already exists." +msgstr "Un projet principal nommé «{name}» existe déjà." -msgid "No previous version backup '{filename}' found." -msgstr "Aucune sauvegarde de la version précédente '{filename}' trouvée." +#: tt/TimeTracker.py:905 +msgid "General" +msgstr "Général" -#: TimeTrackerCLI.py:371 TimeTrackerCLI.py:373 -msgid "\n--- Generate Report for a Date Range ---" -msgstr "\n--- Générer un rapport pour une plage de dates ---" +#: tt/TimeTracker.py:909 +#, python-brace-format +msgid "Task '{task_name}' was promoted to a new main project." +msgstr "La tâche '{task_name}' a été promue en nouveau projet principal." -msgid "Enter the start date (YYYY-MM-DD): " -msgstr "Entrez la date de début (AAAA-MM-JJ) : " +#: tt/TimeTracker.py:936 +#, python-brace-format +msgid "Main project to demote '{name}' not found." +msgstr "Projet principal à rétrograder '{name}' introuvable." -#: TimeTrackerCLI.py:375 -msgid "Enter the end date (YYYY-MM-DD): " -msgstr "Entrez la date de fin (AAAA-MM-JJ) : " +#: tt/TimeTracker.py:938 +#, python-brace-format +msgid "New parent main project '{name}' not found." +msgstr "Nouveau projet principal parent '{name}' introuvable." -msgid "This will restore the application to the previously backed-up version. The application will then restart. You may need to manually refresh your browser if it does not reconnect automatically." -msgstr "Ceci restaurera l'application à la version sauvegardée précédemment. L'application redémarrera ensuite. Vous devrez peut-être actualiser manuellement votre navigateur s'il ne se reconnecte pas automatiquement." +#: tt/TimeTracker.py:963 +#, python-brace-format +msgid "" +"Main project '{demoted_name}' was demoted to a sub-project under " +"'{parent_name}'." +msgstr "" +"Le projet principal «{demoted_name}» a été rétrogradé au rang de sous-projet" +" sous «{parent_name}»." -#: TimeTrackerCLI.py:377 -msgid "Error: The start date cannot be after the end date." -msgstr "Erreur : La date de début ne peut pas être postérieure à la date de fin." +#: tt/TimeTracker.py:1042 +msgid "Email import is not enabled." +msgstr "L'importation d'e-mails n'est pas activée." -#: TimeTrackerCLI.py:383 -msgid "\n--- Detailed Task Report ---" -msgstr "\n--- Rapport détaillé de tâche ---" +#: tt/TimeTracker.py:1051 +msgid "Email settings are incomplete." +msgstr "Les paramètres de messagerie sont incomplets." -#: TimeTrackerCLI.py:397 -msgid "\nSelect the sub-project for the report:" -msgstr "\nSélectionnez le sous-projet pour le rapport :" +#: tt/TimeTracker.py:1064 +msgid "Error searching emails." +msgstr "Erreur lors de la recherche d'e-mails." -msgid "Restore and Restart" -msgstr "Restaurer et redémarrer" +#: tt/TimeTracker.py:1079 +msgid "No Subject" +msgstr "Aucun sujet" -#: TimeTrackerCLI.py:405 -msgid "\n--- Detailed Project Report ---" -msgstr "\n--- Rapport détaillé de projet ---" +#: tt/TimeTracker.py:1139 +msgid "Unknown Task" +msgstr "Tâche inconnue" -#: TimeTrackerCLI.py:417 -msgid "Select the project for the report:" -msgstr "Sélectionnez le projet pour le rapport :" +#: tt/TimeTracker.py:1330 +#, python-brace-format +msgid "- {name}: {hours} hours" +msgstr "-{name}:{hours}heures" -#: TimeTrackerCLI.py:424 -msgid "Invalid choice. Please enter a number from 0 to 5." -msgstr "Choix invalide. Veuillez entrer un nombre de 0 à 5." +#: tt/TimeTracker.py:1338 +#, python-brace-format +msgid "## {name} ({hours} hours)\n" +msgstr "##{name}({hours}heures)\n" -msgid "Restoring and restarting..." -msgstr "Restauration et redémarrage..." +#: tt/TimeTracker.py:1347 +#, python-brace-format +msgid "# Daily Time Report: {date}\n" +msgstr "# Rapport de temps journalier : {date}\n" -#: TimeTrackerCLI.py:428 TimeTrackerCLI.py:469 -msgid "\n--- Settings ---" -msgstr "\n--- Paramètres ---" +#: tt/TimeTracker.py:1348 +#, python-brace-format +msgid "" +"\n" +"**Total Daily Time: {hours} hours**" +msgstr "" +"\n" +"**Durée quotidienne totale :{hours}heures**" -#: TimeTrackerCLI.py:429 TimeTrackerCLI.py:562 -msgid "1. Change Language" -msgstr "1. Changer de langue" +#: tt/TimeTracker.py:1352 tt/TimeTracker.py:1665 +#, python-brace-format +msgid "No time tracked for {date}." +msgstr "Aucun temps suivi pour le {date}." -msgid "Change Language" -msgstr "1. Changer de langue" +#: tt/TimeTracker.py:1369 tt/TimeTracker.py:1464 +#, python-brace-format +msgid "Main project '{name}' not found." +msgstr "Projet principal «{name}» introuvable." -msgid "3. Change Data Storage Location" -msgstr "3. Changer l'emplacement de stockage des données" +#: tt/TimeTracker.py:1377 +#, python-brace-format +msgid "No time entries found for task '{task_name}'." +msgstr "Aucune entrée de temps trouvée pour la tâche '{task_name}'." -#: TimeTrackerCLI.py:430 -msgid "2. Restore Previous Version" -msgstr "2. Restaurer la version précédente" +#: tt/TimeTracker.py:1410 tt/TimeTracker.py:1640 +msgid "now" +msgstr "maintenant" -msgid "Select Language" -msgstr "Sélectionner la langue" +#: tt/TimeTracker.py:1411 sl/SL_Menu.py:1908 +msgid "Duration" +msgstr "Durée" -msgid "Invalid choice. Please enter a number from 0 to 3." -msgstr "Choix invalide. Veuillez entrer un nombre de 0 à 3." +#: tt/TimeTracker.py:1415 +#, python-brace-format +msgid "# Detailed Report for Task: {name}" +msgstr "# Rapport détaillé pour la tâche : {name}" -#: TimeTrackerCLI.py:446 TimeTrackerCLI.py:545 -msgid "\n--- Language Settings ---" -msgstr "\n--- Paramètres de langue ---" +#: tt/TimeTracker.py:1416 +#, python-brace-format +msgid "Part of Main Project: {name}" +msgstr "Fait partie du projet principal : {name}" -#: TimeTrackerCLI.py:449 TimeTrackerCLI.py:548 -msgid "No additional languages found." -msgstr "Aucune langue supplémentaire trouvée." +#: tt/TimeTracker.py:1419 +msgid "Active (currently running)" +msgstr "Actif (en cours)" -msgid "Language changed. Please restart the application for the changes to take effect." -msgstr "Langue changée. Veuillez redémarrer l'application pour que les changements prennent effet." +#: tt/TimeTracker.py:1419 tt/TimeTracker.py:1516 +msgid "Inactive" +msgstr "Inactif" -#: TimeTrackerCLI.py:458 TimeTrackerCLI.py:587 -msgid "Language changed to '{lang}'. Please restart the application." -msgstr "Langue changée en '{lang}'. Veuillez redémarrer l'application." +#: tt/TimeTracker.py:1420 tt/TimeTracker.py:1517 +msgid "Status" +msgstr "Statut" -#: TimeTrackerCLI.py:460 TimeTrackerCLI.py:590 -msgid "Invalid choice." -msgstr "Choix invalide." +#: tt/TimeTracker.py:1422 tt/TimeTracker.py:1519 +msgid "First entry" +msgstr "Première entrée" -#: TimeTrackerCLI.py:462 TimeTrackerCLI.py:592 -msgid "Invalid input. Please enter a number." -msgstr "Entrée invalide. Veuillez entrer un nombre." +#: tt/TimeTracker.py:1424 tt/TimeTracker.py:1521 +msgid "Last activity" +msgstr "Dernière activité" -msgid "\n--- Data Storage Settings ---" -msgstr "\n--- Paramètres de stockage des données ---" +#: tt/TimeTracker.py:1426 tt/TimeTracker.py:1523 +msgid "Total recorded time" +msgstr "Temps total enregistré" -msgid "Current data file: {path}" -msgstr "Fichier de données actuel : {path}" +#: tt/TimeTracker.py:1427 tt/TimeTracker.py:1525 +msgid "Total work sessions" +msgstr "Nombre total de sessions de travail" -msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." -msgstr "Entrez le nouveau chemin pour le fichier de données (ex : /chemin/vers/mes_donnees.json)." +#: tt/TimeTracker.py:1431 tt/TimeTracker.py:1529 +msgid "Average session duration" +msgstr "Durée moyenne des sessions" -msgid "Leave empty to cancel." -msgstr "Laisser vide pour annuler." +#: tt/TimeTracker.py:1434 tt/TimeTracker.py:1532 +msgid "Weekday Distribution" +msgstr "Répartition par jour de la semaine" -msgid "New Path: " -msgstr "Nouveau chemin : " +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Monday" +msgstr "Lundi" -msgid "IMAP Server" -msgstr "Serveur IMAP" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Tuesday" +msgstr "Mardi" -msgid "Storage location updated." -msgstr "Emplacement de stockage mis à jour." +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Wednesday" +msgstr "Mercredi" -msgid "Do you want to move the existing data to the new location? (y/n): " -msgstr "Voulez-vous déplacer les données existantes vers le nouvel emplacement ? (o/n) : " +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Thursday" +msgstr "Jeudi" -msgid "Data moved successfully." -msgstr "Données déplacées avec succès." +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Friday" +msgstr "Vendredi" -msgid "Port" -msgstr "Port" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Saturday" +msgstr "Samedi" -msgid "Error updating configuration: {error}" -msgstr "Erreur lors de la mise à jour de la configuration : {error}" +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Sunday" +msgstr "Dimanche" -#: TimeTrackerCLI.py:508 -msgid "\n--- Update Available ---" -msgstr "\n--- Mise à jour disponible ---" +#: tt/TimeTracker.py:1444 +msgid "Daily Breakdown" +msgstr "Répartition journalière" -#: TimeTrackerCLI.py:509 -msgid "A downloaded update is ready to be installed." -msgstr "Une mise à jour téléchargée est prête à être installée." +#: tt/TimeTracker.py:1513 +#, python-brace-format +msgid "# Detailed Report for Main Project: {name}" +msgstr "# Rapport détaillé pour le projet principal : {name}" -#: TimeTrackerCLI.py:510 -msgid "0. Skip update for now" -msgstr "0. Ignorer la mise à jour pour l'instant" +#: tt/TimeTracker.py:1516 +#, python-brace-format +msgid "Active (working on '{task_name}')" +msgstr "Actif (travail sur '{task_name}')" -#: TimeTrackerCLI.py:511 -msgid "1. Install update now" -msgstr "1. Installer la mise à jour maintenant" +#: tt/TimeTracker.py:1524 +msgid "Number of tasks" +msgstr "Nombre de tâches" -#: TimeTrackerCLI.py:512 -msgid "Enter your choice (0 or 1): " -msgstr "Entrez votre choix (0 ou 1) : " +#: tt/TimeTracker.py:1543 +msgid "Task Breakdown" +msgstr "Répartition par tâche" -#: TimeTrackerCLI.py:515 -msgid "Application is restarting to complete the update..." -msgstr "L'application redémarre pour terminer la mise à jour..." +#: tt/TimeTracker.py:1552 +#, python-brace-format +msgid "{num_sessions} sessions" +msgstr "{num_sessions} sessions" -#: TimeTrackerCLI.py:518 -msgid "Update installation skipped. The application will start normally." -msgstr "Installation de la mise à jour ignorée. L'application démarrera normallement." +#: tt/TimeTracker.py:1605 +#, python-brace-format +msgid "# Time Report: {start_date} to {end_date}\n" +msgstr "# Rapport de temps : du {start_date} au {end_date}\n" -#: TimeTrackerCLI.py:520 +#: tt/TimeTracker.py:1606 +#, python-brace-format msgid "" -"Invalid choice. Update installation skipped. The application will start " -"normally." +"\n" +"**Total Time in Period: {total_time}**" msgstr "" -"Choix invalide. Installation de la mise à jour ignorée. L'application " -"démarrera normalement." +"\n" +"**Temps total sur la période : {total_time}**" -#: TimeTrackerCLI.py:525 -msgid "\n=== Time Control {version} ===" -msgstr "\n=== Time Control {version} ===" +#: tt/TimeTracker.py:1610 +#, python-brace-format +msgid "No time tracked between {start_date} and {end_date}." +msgstr "Aucun temps suivi entre le {start_date} et le {end_date}." -#: TimeTrackerCLI.py:526 -msgid "--- Main Menu ---" -msgstr "--- Menu principal ---" +#: tt/TimeTracker.py:1626 +#, python-brace-format +msgid "# Detailed Daily Report: {date}" +msgstr "# Rapport journalier détaillé : {date}" -msgid "1. Start work on task" -msgstr "1. Démarrer le travail sur une tâche" +#: sl/SL_Menu.py:277 +msgid "New" +msgstr "Nouveau" -msgid "Daily Report (Specific Day)" -msgstr "Rapport journalier (Jour spécifique)" +#: sl/SL_Menu.py:278 +msgid "New Project" +msgstr "Nouveau projet" -#: TimeTrackerCLI.py:528 -msgid "2. Show current work" -msgstr "2. Afficher le travail en cours" +#: sl/SL_Menu.py:281 +msgid "New Task" +msgstr "Nouvelle tâche" -#: TimeTrackerCLI.py:530 -msgid "3. Stop current work" -msgstr "3. Arrêter le travail en cours" +#: sl/SL_Menu.py:286 +msgid "Project & Task Management" +msgstr "Gestion des projets et des tâches" -#: TimeTrackerCLI.py:531 -msgid "4. Handle projects and tasks" -msgstr "4. Gérer les projets et les tâches" +#: sl/SL_Menu.py:287 sl/SL_Menu.py:780 +msgid "Main Project Management" +msgstr "Gestion du projet principal" -msgid "Select Date" -msgstr "Sélectionner la date" +#: sl/SL_Menu.py:288 sl/SL_Menu.py:796 sl/SL_Menu.py:894 +msgid "Add Project" +msgstr "Ajouter un projet" -#: TimeTrackerCLI.py:532 -msgid "5. Reporting" -msgstr "5. Rapports" +#: sl/SL_Menu.py:291 sl/SL_Menu.py:799 sl/SL_Menu.py:1242 +msgid "List Projects" +msgstr "Liste des projets" -#: TimeTrackerCLI.py:533 -msgid "6. Settings" -msgstr "6. Paramètres" +#: sl/SL_Menu.py:292 sl/SL_Menu.py:800 sl/SL_Menu.py:1257 +msgid "Rename Project" +msgstr "Renommer le projet" -#: TimeTrackerCLI.py:535 -msgid "0. Exit" -msgstr "0. Quitter" +#: sl/SL_Menu.py:293 sl/SL_Menu.py:801 sl/SL_Menu.py:1371 sl/SL_Menu.py:1384 +msgid "Close Project" +msgstr "Fermer le projet" -msgid "Generate Report" -msgstr "Générer le rapport" +#: sl/SL_Menu.py:294 sl/SL_Menu.py:802 sl/SL_Menu.py:1401 sl/SL_Menu.py:1414 +msgid "Re-open Project" +msgstr "Rouvrir le projet" -#: TimeTrackerCLI.py:541 -msgid "\n--- Start Work on a Task ---" -msgstr "\n--- Démarrer le travail sur une tâche ---" +#: sl/SL_Menu.py:295 sl/SL_Menu.py:803 sl/SL_Menu.py:1431 sl/SL_Menu.py:1445 +msgid "Delete Project" +msgstr "Supprimer le projet" -#: TimeTrackerCLI.py:498 -msgid "Select a task from '{name}':" -msgstr "Sélectionnez une tâche de '{name}' :" +#: sl/SL_Menu.py:296 sl/SL_Menu.py:804 sl/SL_Menu.py:1462 +msgid "List Inactive Projects" +msgstr "Liste des projets inactifs" -msgid "Date Range Report" -msgstr "Rapport par plage de dates" +#: sl/SL_Menu.py:297 sl/SL_Menu.py:805 +msgid "Demote Project to Task" +msgstr "Rétrograder le projet en tâche" -#: TimeTrackerCLI.py:507 -msgid "Work started on '{sub_name}' in project '{main_name}'." -msgstr "Travail démarré sur '{sub_name}' dans le projet '{main_name}'." +#: sl/SL_Menu.py:298 sl/SL_Menu.py:806 sl/SL_Menu.py:1524 +msgid "List Completed Projects" +msgstr "Liste des projets terminés" -#: TimeTrackerCLI.py:514 -msgid "\n--- Current Active Work ---" -msgstr "\n--- Travail actif en cours ---" +#: sl/SL_Menu.py:300 sl/SL_Menu.py:782 sl/SL_Menu.py:817 +msgid "Task Management" +msgstr "Gestion des tâches" -msgid "Start Date" -msgstr "Date de début" +#: sl/SL_Menu.py:301 sl/SL_Menu.py:819 sl/SL_Menu.py:1542 sl/SL_Menu.py:1573 +#: sl/SL_Menu.py:1646 +msgid "Add Task" +msgstr "Ajouter une tâche" -#: TimeTrackerCLI.py:523 -msgid "You are currently working on:" -msgstr "Vous travaillez actuellement sur :" +#: sl/SL_Menu.py:304 sl/SL_Menu.py:822 sl/SL_Menu.py:1292 +msgid "List Tasks" +msgstr "Liste des tâches" -#: TimeTrackerCLI.py:524 -msgid " Project: {name}" -msgstr " Projet : {name}" +#: sl/SL_Menu.py:305 sl/SL_Menu.py:823 sl/SL_Menu.py:1324 +msgid "Rename Task" +msgstr "Renommer la tâche" -msgid "End Date" -msgstr "Date de fin" +#: sl/SL_Menu.py:306 sl/SL_Menu.py:824 sl/SL_Menu.py:909 sl/SL_Menu.py:935 +#: sl/SL_Menu.py:1114 +msgid "Close Task" +msgstr "Fermer la tâche" -#: TimeTrackerCLI.py:525 -msgid " Task: {name}" -msgstr " Tâche : {name}" +#: sl/SL_Menu.py:307 sl/SL_Menu.py:825 sl/SL_Menu.py:954 sl/SL_Menu.py:980 +msgid "Re-open Task" +msgstr "Rouvrir la tâche" -#: TimeTrackerCLI.py:526 -msgid " Started at: {date}" -msgstr " Démarré à : {date}" +#: sl/SL_Menu.py:308 sl/SL_Menu.py:826 sl/SL_Menu.py:999 sl/SL_Menu.py:1026 +msgid "Delete Task" +msgstr "Supprimer la tâche" -#: TimeTrackerCLI.py:527 -msgid " Duration: {duration}" -msgstr " Durée : {duration}" +#: sl/SL_Menu.py:309 sl/SL_Menu.py:827 sl/SL_Menu.py:1045 sl/SL_Menu.py:1081 +msgid "Move Task" +msgstr "Déplacer la tâche" -#: TimeTrackerCLI.py:529 -msgid "No active work session." -msgstr "Aucune session de travail active." +#: sl/SL_Menu.py:310 sl/SL_Menu.py:828 sl/SL_Menu.py:1100 +msgid "List Inactive Tasks" +msgstr "Liste des tâches inactives" -#: TimeTrackerCLI.py:532 -msgid "\n--- Stop Work ---" -msgstr "\n--- Arrêter le travail ---" +#: sl/SL_Menu.py:311 sl/SL_Menu.py:829 sl/SL_Menu.py:1127 +msgid "List All Closed Tasks" +msgstr "Liste de toutes les tâches fermées" -#: TimeTrackerCLI.py:534 -msgid "Work session stopped successfully." -msgstr "Session de travail arrêtée avec succès." +#: sl/SL_Menu.py:312 sl/SL_Menu.py:477 sl/SL_Menu.py:539 sl/SL_Menu.py:626 +#: sl/SL_Menu.py:830 sl/SL_Menu.py:1673 sl/SL_Menu.py:1693 sl/SL_Menu.py:1728 +msgid "Edit Task" +msgstr "Modifier la tâche" -msgid "Detailed Task Report" -msgstr "Rapport détaillé de tâche" +#: sl/SL_Menu.py:315 sl/SL_Menu.py:833 sl/SL_Menu.py:1152 +msgid "Delete All Closed Tasks" +msgstr "Supprimer toutes les tâches fermées" -#: TimeTrackerCLI.py:536 -msgid "No active work session to stop." -msgstr "Aucune session de travail active à arrêter." +#: sl/SL_Menu.py:316 sl/SL_Menu.py:834 sl/SL_Menu.py:1194 +msgid "Promote Task to Project" +msgstr "Promouvoir la tâche en projet" -#: TimeTrackerCLI.py:598 -msgid "\nChecking for updates..." -msgstr "\nRecherche de mises à jour..." +#: sl/SL_Menu.py:319 +msgid "Today View" +msgstr "Vue du jour" -#: TimeTrackerCLI.py:602 -msgid "Exiting application. Goodbye!" -msgstr "Fermeture de l'application. Au revoir !" +#: sl/SL_Menu.py:323 sl/SL_Menu.py:405 +msgid "Task Planning" +msgstr "Planification des tâches" -msgid "Detailed Project Report" -msgstr "Rapport détaillé de projet" +#: sl/SL_Menu.py:327 sl/SL_Menu.py:655 +msgid "E-Mail Task Assignment" +msgstr "Attribution des tâches par e-mail" -#: TimeTrackerCLI.py:605 -msgid "Invalid choice. Please enter a number from 0 to 6." -msgstr "Choix invalide. Veuillez entrer un nombre de 0 à 6." +#: sl/SL_Menu.py:331 sl/SL_Menu.py:473 sl/SL_Menu.py:535 sl/SL_Menu.py:622 +msgid "Start work on task" +msgstr "Démarrer le travail sur la tâche" -#: update.py:24 -msgid "" -"Warning: Update check skipped. 'github_repo' not found in config.json or " -"file is invalid." -msgstr "" -"Avertissement : Vérification de mise à jour ignorée. 'github_repo' non " -"trouvé dans config.json ou fichier invalide." +#: sl/SL_Menu.py:335 +msgid "Show current work" +msgstr "Afficher le travail en cours" + +#: sl/SL_Menu.py:339 +msgid "Stop current work" +msgstr "Arrêter le travail en cours" + +#: sl/SL_Menu.py:347 sl/SL_Menu.py:845 +msgid "Reporting" +msgstr "Rapports" + +#: sl/SL_Menu.py:348 sl/SL_Menu.py:848 +msgid "Daily Report (Today)" +msgstr "Rapport quotidien (aujourd'hui)" + +#: sl/SL_Menu.py:352 sl/SL_Menu.py:853 sl/SL_Menu.py:2195 +msgid "Daily Report (Specific Day)" +msgstr "Rapport journalier (Jour spécifique)" + +#: sl/SL_Menu.py:354 sl/SL_Menu.py:854 sl/SL_Menu.py:2214 +msgid "Date Range Report" +msgstr "Rapport par plage de dates" + +#: sl/SL_Menu.py:356 sl/SL_Menu.py:855 sl/SL_Menu.py:2241 sl/SL_Menu.py:2272 +msgid "Detailed Task Report" +msgstr "Rapport détaillé de tâche" -#: update.py:38 +#: sl/SL_Menu.py:358 sl/SL_Menu.py:856 sl/SL_Menu.py:2300 +msgid "Detailed Project Report" +msgstr "Rapport détaillé de projet" + +#: sl/SL_Menu.py:360 sl/SL_Menu.py:857 sl/SL_Menu.py:2327 msgid "Detailed Daily Report" msgstr "Rapport journalier détaillé" -msgid "A new version ({version}) is available." -msgstr "Une nouvelle version ({version}) est disponible." +#: sl/SL_Menu.py:364 sl/SL_Menu.py:868 +msgid "Settings" +msgstr "Paramètres" -#: update.py:43 -msgid "Error: Download URL for the new version not found." -msgstr "Erreur : URL de téléchargement pour la nouvelle version non trouvée." +#: sl/SL_Menu.py:371 sl/SL_Menu.py:1897 +msgid "Current Active Work" +msgstr "Travail actif en cours" -#: update.py:47 -msgid "Error checking for updates: {error}" -msgstr "Erreur lors de la recherche de mises à jour : {error}" +#: sl/SL_Menu.py:376 sl/SL_Menu.py:497 sl/SL_Menu.py:559 sl/SL_Menu.py:633 +#: sl/SL_Menu.py:1773 +msgid "Done" +msgstr "Terminé" -#: update.py:49 -msgid "An unexpected error occurred while checking for updates: {error}" +#: sl/SL_Menu.py:390 +msgid "Edit current task" +msgstr "Modifier la tâche actuelle" + +#: sl/SL_Menu.py:398 +msgid "Exit" +msgstr "Quitter" + +#: sl/SL_Menu.py:410 sl/SL_Menu.py:420 +msgid "Tomorrow" +msgstr "Demain" + +#: sl/SL_Menu.py:411 sl/SL_Menu.py:421 +msgid "Weekly overview" +msgstr "Aperçu hebdomadaire" + +#: sl/SL_Menu.py:412 sl/SL_Menu.py:422 +msgid "Overdue tasks" +msgstr "Tâches en retard" + +#: sl/SL_Menu.py:413 sl/SL_Menu.py:423 +msgid "Unplanned tasks" +msgstr "Tâches non planifiées" + +#: sl/SL_Menu.py:414 +msgid "All" +msgstr "Tous" + +#: sl/SL_Menu.py:416 +msgid "Filter" +msgstr "Filtrer" + +#: sl/SL_Menu.py:430 +msgid "Tasks" +msgstr "Tâches" + +#: sl/SL_Menu.py:572 +msgid "No tasks found." +msgstr "Aucune tâche trouvée." + +#: sl/SL_Menu.py:574 sl/SL_Menu.py:648 sl/SL_Menu.py:770 sl/SL_Menu.py:810 +#: sl/SL_Menu.py:838 sl/SL_Menu.py:914 sl/SL_Menu.py:925 sl/SL_Menu.py:959 +#: sl/SL_Menu.py:970 sl/SL_Menu.py:1004 sl/SL_Menu.py:1015 sl/SL_Menu.py:1050 +#: sl/SL_Menu.py:1061 sl/SL_Menu.py:1069 sl/SL_Menu.py:1120 sl/SL_Menu.py:1145 +#: sl/SL_Menu.py:1167 sl/SL_Menu.py:1199 sl/SL_Menu.py:1210 sl/SL_Menu.py:1250 +#: sl/SL_Menu.py:1262 sl/SL_Menu.py:1297 sl/SL_Menu.py:1317 sl/SL_Menu.py:1329 +#: sl/SL_Menu.py:1340 sl/SL_Menu.py:1376 sl/SL_Menu.py:1406 sl/SL_Menu.py:1436 +#: sl/SL_Menu.py:1476 sl/SL_Menu.py:1488 sl/SL_Menu.py:1535 sl/SL_Menu.py:1547 +#: sl/SL_Menu.py:1678 sl/SL_Menu.py:1697 sl/SL_Menu.py:1710 sl/SL_Menu.py:1725 +#: sl/SL_Menu.py:1858 sl/SL_Menu.py:1868 sl/SL_Menu.py:1912 sl/SL_Menu.py:2097 +#: sl/SL_Menu.py:2102 sl/SL_Menu.py:2207 sl/SL_Menu.py:2234 sl/SL_Menu.py:2246 +#: sl/SL_Menu.py:2258 sl/SL_Menu.py:2277 sl/SL_Menu.py:2293 sl/SL_Menu.py:2305 +#: sl/SL_Menu.py:2320 sl/SL_Menu.py:2339 sl/SL_Menu.py:2380 sl/SL_Menu.py:2395 +msgid "Back" +msgstr "Retour" + +#: sl/SL_Menu.py:581 +msgid "Today's Tasks" +msgstr "Tâches du jour" + +#: sl/SL_Menu.py:646 +msgid "No tasks for today." +msgstr "Aucune tâche pour aujourd'hui." + +#: sl/SL_Menu.py:661 +msgid "Fetching emails..." +msgstr "Récupération des e-mails..." + +#: sl/SL_Menu.py:664 +#, python-brace-format +msgid "Error fetching emails: {error}" +msgstr "Erreur lors de la récupération des e-mails : {error}" + +#: sl/SL_Menu.py:667 +#, python-brace-format +msgid "{count} new tasks created from emails." +msgstr "{count} nouvelles tâches créées à partir des e-mails." + +#: sl/SL_Menu.py:669 +msgid "No new emails found." +msgstr "Aucun nouvel e-mail trouvé." + +#: sl/SL_Menu.py:675 +msgid "No unassigned email tasks available." +msgstr "Aucune tâche par e-mail non attribuée disponible." + +#: sl/SL_Menu.py:687 +msgid "Assign Project" +msgstr "Attribuer un projet" + +#: sl/SL_Menu.py:698 +msgid "Are you sure you want to delete this task?" +msgstr "Êtes-vous sûr de vouloir supprimer cette tâche ?" + +#: sl/SL_Menu.py:701 +msgid "Yes, delete" +msgstr "Oui, supprimer" + +#: sl/SL_Menu.py:706 +msgid "No, cancel" +msgstr "Non, annuler" + +#: sl/SL_Menu.py:713 +msgid "Delete" +msgstr "Supprimer" + +#: sl/SL_Menu.py:717 +msgid "Edit Details" +msgstr "Modifier les détails" + +#: sl/SL_Menu.py:725 sl/SL_Menu.py:1757 +msgid "Task Name" +msgstr "Nom de la tâche" + +#: sl/SL_Menu.py:734 sl/SL_Menu.py:1761 +msgid "Due Date" +msgstr "Date d'échéance" + +#: sl/SL_Menu.py:742 sl/SL_Menu.py:1765 +msgid "Clear" +msgstr "Effacer" + +#: sl/SL_Menu.py:749 sl/SL_Menu.py:1634 sl/SL_Menu.py:1804 +msgid "Notes (Markdown)" +msgstr "Aucun temps suivi entre le {start_date} et le {end_date}." + +#: sl/SL_Menu.py:751 sl/SL_Menu.py:1816 +msgid "Save Changes" +msgstr "Enregistrer les modifications" + +#: sl/SL_Menu.py:762 +msgid "Task details updated successfully." +msgstr "Détails de la tâche mis à jour avec succès." + +#: sl/SL_Menu.py:768 +msgid "Error updating task details." +msgstr "Erreur lors de la mise à jour des détails de la tâche." + +#: sl/SL_Menu.py:778 sl/SL_Menu.py:794 +msgid "Project Management" +msgstr "Gestion de projet" + +#: sl/SL_Menu.py:787 sl/SL_Menu.py:861 +msgid "Back to Main Menu" +msgstr "Retour au menu principal" + +#: sl/SL_Menu.py:873 sl/SL_Menu.py:2000 +msgid "Report Format" +msgstr "Format du rapport" + +#: sl/SL_Menu.py:875 sl/SL_Menu.py:2159 +msgid "Email Settings" +msgstr "Paramètres de messagerie" + +#: sl/SL_Menu.py:876 sl/SL_Menu.py:2020 +msgid "Change CSS Style" +msgstr "Changer le style CSS" + +#: sl/SL_Menu.py:877 sl/SL_Menu.py:2058 +msgid "Change View Mode" +msgstr "Changer le mode d'affichage" + +#: sl/SL_Menu.py:890 +msgid "Add New Project" +msgstr "Ajouter un nouveau projet" + +#: sl/SL_Menu.py:893 +msgid "Name of the project" +msgstr "Nom du projet" + +#: sl/SL_Menu.py:897 +#, python-brace-format +msgid "Project '{name}' added." +msgstr "Projet '{name}' ajouté." + +#: sl/SL_Menu.py:901 sl/SL_Menu.py:947 sl/SL_Menu.py:992 sl/SL_Menu.py:1038 +#: sl/SL_Menu.py:1093 sl/SL_Menu.py:1187 sl/SL_Menu.py:1235 sl/SL_Menu.py:1285 +#: sl/SL_Menu.py:1364 sl/SL_Menu.py:1394 sl/SL_Menu.py:1424 sl/SL_Menu.py:1455 +#: sl/SL_Menu.py:1517 sl/SL_Menu.py:1557 sl/SL_Menu.py:1666 sl/SL_Menu.py:1685 +#: sl/SL_Menu.py:1843 sl/SL_Menu.py:1890 sl/SL_Menu.py:1934 sl/SL_Menu.py:1995 +#: sl/SL_Menu.py:2014 sl/SL_Menu.py:2051 sl/SL_Menu.py:2084 sl/SL_Menu.py:2152 +#: sl/SL_Menu.py:2188 +msgid "Cancel" +msgstr "Annuler" + +#: sl/SL_Menu.py:919 sl/SL_Menu.py:964 sl/SL_Menu.py:1009 sl/SL_Menu.py:1204 +#: sl/SL_Menu.py:1267 sl/SL_Menu.py:1302 sl/SL_Menu.py:1334 sl/SL_Menu.py:1383 +#: sl/SL_Menu.py:1413 sl/SL_Menu.py:1443 sl/SL_Menu.py:1863 sl/SL_Menu.py:2251 +#: sl/SL_Menu.py:2312 +msgid "Select Project" +msgstr "Sélectionner le projet" + +#: sl/SL_Menu.py:924 +#, python-brace-format +msgid "No open tasks to close in '{name}'." +msgstr "Aucune tâche ouverte à fermer dans '{name}'." + +#: sl/SL_Menu.py:931 sl/SL_Menu.py:976 sl/SL_Menu.py:1021 sl/SL_Menu.py:1075 +#: sl/SL_Menu.py:1216 sl/SL_Menu.py:1344 sl/SL_Menu.py:1700 sl/SL_Menu.py:1874 +#: sl/SL_Menu.py:2282 +msgid "Select Task" +msgstr "Sélectionner une tâche" + +#: sl/SL_Menu.py:941 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been closed." +msgstr "La tâche '{sub_name}' dans '{main_name}' a été fermée." + +#: sl/SL_Menu.py:969 +#, python-brace-format +msgid "No closed tasks to reopen in '{name}'." +msgstr "Aucune tâche fermée à rouvrir dans '{name}'." + +#: sl/SL_Menu.py:986 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been reopened." +msgstr "La tâche '{sub_name}' dans '{main_name}' a été rouverte." + +#: sl/SL_Menu.py:1014 +#, python-brace-format +msgid "No open tasks to delete in '{name}'." +msgstr "Aucune tâche ouverte à supprimer dans '{name}'." + +#: sl/SL_Menu.py:1025 +msgid "This action cannot be undone." +msgstr "Cette action ne peut pas être annulée." + +#: sl/SL_Menu.py:1032 +#, python-brace-format +msgid "Task '{sub_name}' deleted from '{main_name}'." +msgstr "Tâche '{sub_name}' supprimée de '{main_name}'." + +#: sl/SL_Menu.py:1055 +msgid "Select Source Project" +msgstr "Sélectionnez le projet source" + +#: sl/SL_Menu.py:1060 +#, python-brace-format +msgid "No tasks found in '{name}'." +msgstr "Aucune tâche trouvée dans '{name}'." + +#: sl/SL_Menu.py:1068 +msgid "No other projects available to move to." +msgstr "Aucun autre projet disponible vers lequel migrer." + +#: sl/SL_Menu.py:1079 sl/SL_Menu.py:1503 +msgid "Select Target Project" +msgstr "Sélectionnez le projet cible" + +#: sl/SL_Menu.py:1087 +#, python-brace-format +msgid "Task '{sub}' moved from '{src}' to '{dst}'." +msgstr "La tâche «{sub}» a été déplacée de «{src}» à «{dst}»." + +#: sl/SL_Menu.py:1091 +msgid "Error: Could not move task." +msgstr "Erreur : impossible de déplacer la tâche." + +#: sl/SL_Menu.py:1102 sl/SL_Menu.py:1464 +msgid "Weeks of inactivity" +msgstr "Semaines d'inactivité" + +#: sl/SL_Menu.py:1107 +#, python-brace-format +msgid "Inactive Tasks (> {weeks} weeks):" +msgstr "Tâches inactives (>{weeks}semaines) :" + +#: sl/SL_Menu.py:1112 sl/SL_Menu.py:1472 +msgid "Last Activity" +msgstr "Dernière activité" + +#: sl/SL_Menu.py:1171 +#, python-brace-format +msgid "" +"Are you sure you want to delete {count} closed tasks? This action cannot be " +"undone." msgstr "" -"Une erreur inattendue s'est produite lors de la recherche de mises à jour : " -"{error}" +"Êtes-vous sûr de vouloir supprimer{count}tâches fermées ? Cette action ne " +"peut pas être annulée." -"Une erreur inattendue s'est produite lors de la recherche de mises à jour : " -"{error}" +#: sl/SL_Menu.py:1173 +msgid "Show projects to delete" +msgstr "Afficher les projets à supprimer" -#: update.py:61 -msgid "Downloading update..." -msgstr "Téléchargement de la mise à jour..." +#: sl/SL_Menu.py:1177 +msgid "Delete All" +msgstr "Supprimer tout" -#: update.py:67 -msgid "Download complete. The update will be installed on the next start." -msgstr "Téléchargement terminé. La mise à jour sera installée au prochain démarrage." +#: sl/SL_Menu.py:1183 +#, python-brace-format +msgid "Successfully deleted {count} tasks." +msgstr "Tâches{count}supprimées avec succès." -#: update.py:70 -msgid "Error downloading the update: {error}" -msgstr "Erreur lors du téléchargement de la mise à jour : {error}" +#: sl/SL_Menu.py:1209 +#, python-brace-format +msgid "No open tasks to promote in '{name}'." +msgstr "Aucune tâche ouverte à promouvoir dans '{name}'." -msgid "Report Result" -msgstr "Résultat du rapport" +#: sl/SL_Menu.py:1220 +msgid "" +"This will create a new Project with the task's name and move all time " +"entries to a 'General' task within it." +msgstr "" +"Cela créera un nouveau projet avec le nom de la tâche et déplacera toutes " +"les entrées de temps vers une tâche « Générale » à l'intérieur de celui-ci." -#: update.py:112 -msgid "Creating backup of current version before update..." -msgstr "Création d'une sauvegarde de la version actuelle avant la mise à jour..." +#: sl/SL_Menu.py:1222 +msgid "Promote to Project" +msgstr "Promouvoir vers le projet" -#: update.py:121 -msgid "Backup created successfully as {filename}." -msgstr "Sauvegarde créée avec succès sous le nom {filename}." +#: sl/SL_Menu.py:1261 +msgid "No open projects to rename." +msgstr "Aucun projet ouvert à renommer." -#: update.py:123 -msgid "Warning: Could not create backup. Error: {error}" -msgstr "Avertissement : Impossible de créer la sauvegarde. Erreur : {error}" +#: sl/SL_Menu.py:1270 sl/SL_Menu.py:1349 +msgid "New Name" +msgstr "Nouveau nom" -msgid "This feature is available in the CLI. GUI implementation coming soon." -msgstr "Cette fonctionnalité est disponible en CLI. L'implémentation GUI arrive bientôt." +#: sl/SL_Menu.py:1271 sl/SL_Menu.py:1350 +msgid "Rename" +msgstr "Renommer" -#: update.py:125 -msgid "Installing update..." -msgstr "Installation de la mise à jour..." +#: sl/SL_Menu.py:1275 sl/SL_Menu.py:1354 +msgid "Please enter a new name." +msgstr "Veuillez saisir un nouveau nom." -#: update.py:143 -msgid "Skipping protected file: {filename}. It will not be overwritten." -msgstr "Fichier protégé ignoré : {filename}. Il ne sera pas écrasé." +#: sl/SL_Menu.py:1277 sl/SL_Menu.py:1356 +msgid "New name is the same as the old name." +msgstr "Le nouveau nom est le même que l'ancien nom." -#: update.py:152 -msgid "Update installed successfully." -msgstr "Mise à jour installée avec succès." +#: sl/SL_Menu.py:1279 +#, python-brace-format +msgid "Project '{old_name}' successfully renamed to '{new_name}'." +msgstr "Le projet '{old_name}' a été renommé en '{new_name}' avec succès." -msgid "Time Control" -msgstr "Contrôle du temps" +#: sl/SL_Menu.py:1339 +#, python-brace-format +msgid "No open tasks to rename in '{name}'." +msgstr "Aucune tâche ouverte à renommer dans '{name}'." -#: update.py:154 -msgid "Error during update installation: {error}" -msgstr "Erreur lors de l'installation de la mise à jour : {error}" +#: sl/SL_Menu.py:1362 +msgid "Error: Could not rename. The new name might already exist." +msgstr "" +"Erreur : impossible de renommer. Le nouveau nom existe peut-être déjà." -#: update.py:164 -msgid "Error: No previous version backup '{filename}' found." -msgstr "Erreur : Aucune sauvegarde de la version précédente '{filename}' trouvée." +#: sl/SL_Menu.py:1375 +msgid "No open projects to close." +msgstr "Aucun projet ouvert à fermer." -#: update.py:167 -msgid "Restoring previous version from '{filename}'..." -msgstr "Restauration de la version précédente depuis '{filename}'..." +#: sl/SL_Menu.py:1388 +#, python-brace-format +msgid "Project '{name}' has been closed." +msgstr "Le projet '{name}' a été clôturé." + +#: sl/SL_Menu.py:1392 sl/SL_Menu.py:1422 sl/SL_Menu.py:1453 +msgid "Error: Project not found." +msgstr "Erreur : projet introuvable." -#: update.py:182 +#: sl/SL_Menu.py:1405 +msgid "No closed projects to reopen." +msgstr "Aucun projet fermé à rouvrir." + +#: sl/SL_Menu.py:1418 +#, python-brace-format +msgid "Project '{name}' has been reopened." +msgstr "Le projet '{name}' a été rouvert." + +#: sl/SL_Menu.py:1444 msgid "" -"Skipping user data file: {filename}. It will not be overwritten during " -"restore." +"This action cannot be undone. All associated tasks and time entries will be " +"deleted." msgstr "" -"Ignorer le fichier de données utilisateur : {filename}. Il ne sera pas " -"écrasé lors de la restauration." +"Cette action ne peut pas être annulée. Toutes les tâches et entrées de temps" +" associées seront supprimées." + +#: sl/SL_Menu.py:1449 +#, python-brace-format +msgid "Project '{name}' has been deleted." +msgstr "Le projet '{name}' a été supprimé." + +#: sl/SL_Menu.py:1469 +#, python-brace-format +msgid "Inactive Projects (> {weeks} weeks):" +msgstr "Projets inactifs (>{weeks}semaines) :" + +#: sl/SL_Menu.py:1474 +#, python-brace-format +msgid "No projects found inactive for more than {weeks} weeks." +msgstr "Aucun projet trouvé inactif pendant plus de{weeks}semaines." + +#: sl/SL_Menu.py:1483 sl/SL_Menu.py:1506 +msgid "Demote Project" +msgstr "Rétrograder le projet" + +#: sl/SL_Menu.py:1495 +msgid "Select Project to Demote" +msgstr "Sélectionner le projet à rétrograder" + +#: sl/SL_Menu.py:1501 +msgid "No other projects available to demote into." +msgstr "Aucun autre projet disponible pour rétrograder." + +#: sl/SL_Menu.py:1504 +#, python-brace-format +msgid "This will convert '{src}' into a task of '{dst}'." +msgstr "Cela convertira '{src}' en une tâche de '{dst}'." + +#: sl/SL_Menu.py:1529 +msgid "Projects with only closed or no tasks:" +msgstr "Projets avec uniquement des tâches fermées ou aucune tâche :" + +#: sl/SL_Menu.py:1533 +msgid "No completed projects found." +msgstr "Aucun projet terminé trouvé." + +#: sl/SL_Menu.py:1542 sl/SL_Menu.py:1673 sl/SL_Menu.py:2241 +msgid "Step 1: Select Project" +msgstr "Étape 1 : Sélectionner le projet" -#: update.py:188 -msgid "Previous version restored successfully." -msgstr "Version précédente restaurée avec succès." +#: sl/SL_Menu.py:1546 sl/SL_Menu.py:1857 +msgid "No open projects found. Please add one first." +msgstr "Aucun projet ouvert trouvé. Veuillez d'abord en ajouter un." -#: update.py:190 -msgid "Restarting application to apply changes..." -msgstr "Redémarrage de l'application pour appliquer les modifications..." +#: sl/SL_Menu.py:1551 sl/SL_Menu.py:1680 sl/SL_Menu.py:1905 +msgid "Project" +msgstr "Projet" -#: update.py:192 -msgid "Error during restoration: {error}" -msgstr "Erreur lors de la restauration : {error}" +#: sl/SL_Menu.py:1553 sl/SL_Menu.py:1681 sl/SL_Menu.py:1705 sl/SL_Menu.py:2253 +msgid "Next" +msgstr "Suivant" -#: update.py:193 -msgid "The backup file '{filename}' was not deleted." -msgstr "Le fichier de sauvegarde '{filename}' n'a pas été supprimé." +#: sl/SL_Menu.py:1568 sl/SL_Menu.py:2267 +msgid "No project selected. Please start again." +msgstr "Aucun projet sélectionné. S'il vous plaît, recommencez." + +#: sl/SL_Menu.py:1573 +msgid "To Project:" +msgstr "Au projet :" + +#: sl/SL_Menu.py:1594 +msgid "Name of the new task" +msgstr "Nom de la nouvelle tâche" + +#: sl/SL_Menu.py:1600 +msgid "Due date" +msgstr "Date d'échéance" + +#: sl/SL_Menu.py:1606 sl/SL_Menu.py:1775 +msgid "Recurring" +msgstr "Récurrent" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "daily" +msgstr "quotidien" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "on all business days" +msgstr "tous les jours ouvrables" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "weekly" +msgstr "hebdomadaire" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "monthly" +msgstr "mensuel" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "userdefined" +msgstr "# Rapport de temps journalier : {date}" + +#: sl/SL_Menu.py:1624 sl/SL_Menu.py:1797 +msgid "Frequency" +msgstr "Fréquence" + +#: sl/SL_Menu.py:1628 sl/SL_Menu.py:1800 +msgid "Days" +msgstr "Aucun temps suivi pour le {date}." + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Edit" +msgstr "Modifier" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Preview" +msgstr "Aperçu" + +#: sl/SL_Menu.py:1637 sl/SL_Menu.py:1807 +msgid "No notes provided." +msgstr "Aucune note fournie." + +#: sl/SL_Menu.py:1642 sl/SL_Menu.py:1812 +msgid "A due date is required for recurring tasks." +msgstr "Une date d'échéance est requise pour les tâches récurrentes." + +#: sl/SL_Menu.py:1650 +msgid "Please enter a name." +msgstr "Veuillez entrer un nom." + +#: sl/SL_Menu.py:1661 +#, python-brace-format +msgid "Task '{sub_name}' added to '{main_name}'." +msgstr "Tâche '{sub_name}' ajoutée à '{main_name}'." + +#: sl/SL_Menu.py:1693 sl/SL_Menu.py:2272 +msgid "Step 2: Select Task from" +msgstr "Étape 2 : Sélectionner la tâche de" + +#: sl/SL_Menu.py:1696 +msgid "No open tasks found." +msgstr "Aucune tâche ouverte trouvée." + +#: sl/SL_Menu.py:1724 +msgid "Task not found." +msgstr "Tâche non trouvée." + +#: sl/SL_Menu.py:1840 +msgid "Error: Could not update task." +msgstr "Erreur : Impossible de mettre à jour la tâche." + +#: sl/SL_Menu.py:1853 +msgid "Start Work on Task" +msgstr "Démarrer le travail sur la tâche" + +#: sl/SL_Menu.py:1867 +#, python-brace-format +msgid "No open tasks to start work on in '{name}'." +msgstr "" +"Aucune tâche ouverte sur laquelle commencer à travailler dans '{name}'." + +#: sl/SL_Menu.py:1878 +msgid "Start Work" +msgstr "Démarrer le travail" + +#: sl/SL_Menu.py:1906 +msgid "Task" +msgstr "Tâche" + +#: sl/SL_Menu.py:1907 +msgid "Started at" +msgstr "Démarré à" + +#: sl/SL_Menu.py:1918 +msgid "Streamlit Port Settings" +msgstr "Paramètres du port Streamlit" + +#: sl/SL_Menu.py:1922 +msgid "Current Streamlit Port" +msgstr "Port Streamlit actuel" + +#: sl/SL_Menu.py:1925 +msgid "New Port" +msgstr "Nouveau port" + +#: sl/SL_Menu.py:1926 sl/SL_Menu.py:1958 sl/SL_Menu.py:2007 sl/SL_Menu.py:2042 +#: sl/SL_Menu.py:2074 sl/SL_Menu.py:2141 sl/SL_Menu.py:2173 +msgid "Save" +msgstr "Enregistrer" + +#: sl/SL_Menu.py:1930 +#, python-brace-format +msgid "Port updated to {port}. Please restart Streamlit." +msgstr "Port mis à jour vers {port}. Veuillez redémarrer Streamlit." + +#: sl/SL_Menu.py:1940 +msgid "Change Data Storage Location" +msgstr "Changer l'emplacement de stockage des données" + +#: sl/SL_Menu.py:1943 +msgid "Current data file" +msgstr "Fichier de données actuel" + +#: sl/SL_Menu.py:1946 +msgid "New Path for data file" +msgstr "Nouveau chemin pour le fichier de données" + +#: sl/SL_Menu.py:1952 +msgid "Move existing data to the new location" +msgstr "Déplacer les données existantes vers le nouvel emplacement" + +#: sl/SL_Menu.py:1955 +msgid "" +"If unchecked, the old data file will remain, and a new empty one might be " +"created at the new location on restart." +msgstr "" +"Si décoché, l'ancien fichier de données restera, et un nouveau fichier vide " +"pourrait être créé au nouvel emplacement au redémarrage." + +#: sl/SL_Menu.py:1962 +msgid "Please enter a new path." +msgstr "Veuillez entrer un nouveau chemin." + +#: sl/SL_Menu.py:1970 +msgid "" +"Error: For security, the data file must be located within the application " +"directory." +msgstr "" +"Erreur : Pour des raisons de sécurité, le fichier de données doit être situé" +" dans le répertoire de l'application." + +#: sl/SL_Menu.py:1980 +msgid "" +"Storage location updated. Please restart the application for the changes to " +"take effect." +msgstr "" +"Emplacement de stockage mis à jour. Veuillez redémarrer l'application pour " +"que les changements prennent effet." + +#: sl/SL_Menu.py:2006 +msgid "Select Format" +msgstr "Sélectionnez le format" + +#: sl/SL_Menu.py:2011 +msgid "Report format updated." +msgstr "Format de rapport mis à jour." + +#: sl/SL_Menu.py:2024 +msgid "Current CSS file" +msgstr "Fichier CSS actuel" + +#: sl/SL_Menu.py:2041 +msgid "Select CSS File" +msgstr "Sélectionner le fichier CSS" + +#: sl/SL_Menu.py:2047 +msgid "" +"CSS style updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"Style CSS mis à jour. Veuillez redémarrer l'application pour que les " +"changements prennent effet." + +#: sl/SL_Menu.py:2063 +msgid "App Window (Webview)" +msgstr "Fenêtre d'application (Webview)" + +#: sl/SL_Menu.py:2063 +msgid "System Browser" +msgstr "Navigateur système" + +#: sl/SL_Menu.py:2073 +msgid "Select View Mode" +msgstr "Sélectionner le mode d'affichage" + +#: sl/SL_Menu.py:2080 +msgid "" +"View mode updated. Please restart the application for the changes to take " +"effect." +msgstr "" +"Mode d'affichage mis à jour. Veuillez redémarrer l'application pour que les " +"changements prennent effet." + +#: sl/SL_Menu.py:2091 +msgid "Restore Previous Version" +msgstr "Restaurer la version précédente" + +#: sl/SL_Menu.py:2096 +msgid "The 'update' module is not available. This feature is disabled." +msgstr "" +"Le module 'mise à jour' n'est pas disponible. Cette fonctionnalité est " +"désactivée." + +#: sl/SL_Menu.py:2101 +#, python-brace-format +msgid "No previous version backup '{filename}' found." +msgstr "Aucune sauvegarde de la version précédente '{filename}' trouvée." + +#: sl/SL_Menu.py:2105 +msgid "" +"This will restore the application to the previously backed-up version. The " +"application will then restart. You may need to manually refresh your browser" +" if it does not reconnect automatically." +msgstr "" +"Ceci restaurera l'application à la version sauvegardée précédemment. " +"L'application redémarrera ensuite. Vous devrez peut-être actualiser " +"manuellement votre navigateur s'il ne se reconnecte pas automatiquement." + +#: sl/SL_Menu.py:2107 +msgid "Restore and Restart" +msgstr "Restaurer et redémarrer" + +#: sl/SL_Menu.py:2108 +msgid "Restoring and restarting..." +msgstr "Restauration et redémarrage..." + +#: sl/SL_Menu.py:2111 +msgid "Restore complete. Please restart the application." +msgstr "Restauration terminée. Veuillez redémarrer l'application." + +#: sl/SL_Menu.py:2117 +msgid "Change Language" +msgstr "1. Changer de langue" + +#: sl/SL_Menu.py:2140 +msgid "Select Language" +msgstr "Sélectionner la langue" + +#: sl/SL_Menu.py:2148 +msgid "" +"Language changed. Please restart the application for the changes to take " +"effect." +msgstr "" +"Langue changée. Veuillez redémarrer l'application pour que les changements " +"prennent effet." + +#: sl/SL_Menu.py:2166 +msgid "Enable email import" +msgstr "Activer l'importation d'e-mails" + +#: sl/SL_Menu.py:2167 +msgid "IMAP Server" +msgstr "Serveur IMAP" + +#: sl/SL_Menu.py:2168 +msgid "Port" +msgstr "Port" + +#: sl/SL_Menu.py:2169 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: sl/SL_Menu.py:2170 +msgid "Password" +msgstr "Mot de passe" + +#: sl/SL_Menu.py:2171 +msgid "Use SSL" +msgstr "Utiliser SSL" + +#: sl/SL_Menu.py:2184 +msgid "Email settings saved." +msgstr "Paramètres de messagerie enregistrés." + +#: sl/SL_Menu.py:2198 sl/SL_Menu.py:2330 +msgid "Select Date" +msgstr "Sélectionner la date" + +#: sl/SL_Menu.py:2199 sl/SL_Menu.py:2223 sl/SL_Menu.py:2287 sl/SL_Menu.py:2313 +#: sl/SL_Menu.py:2331 +msgid "Generate Report" +msgstr "Générer le rapport" + +#: sl/SL_Menu.py:2219 +msgid "Start Date" +msgstr "Date de début" + +#: sl/SL_Menu.py:2221 +msgid "End Date" +msgstr "Date de fin" + +#: sl/SL_Menu.py:2346 +msgid "Report Result" +msgstr "Résultat du rapport" + +#: sl/SL_Menu.py:2375 +msgid "Export Report" +msgstr "Rapport d'exportation" + +#~ msgid "" +#~ "\n" +#~ "Error: Failed to install dependencies. Please install them manually using: pip install -r {requirements_path}" +#~ msgstr "" +#~ "\n" +#~ "Erreur : Échec de l'installation des dépendances. Veuillez les installer manuellement avec : pip install -r {requirements_path}" + +#~ msgid "open" +#~ msgstr "ouvert" + +#~ msgid "A task named '{task_name}' already exists in '{main_name}'." +#~ msgstr "Une tâche nommée '{task_name}' existe déjà dans '{main_name}'." + +#~ msgid "Project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Le projet '{old_name}' a été renommé en '{new_name}'." + +#~ msgid "6. Demote Main-Project to Task" +#~ msgstr "6. Rétrograder un projet principal en tâche" + +#~ msgid "" +#~ "\n" +#~ "No time tracked for {date}." +#~ msgstr "" +#~ "\n" +#~ "Aucun temps suivi pour le {date}." + +#~ msgid "A task with this name already exists in this project." +#~ msgstr "Une tâche avec ce nom existe déjà dans ce projet." + +#~ msgid "" +#~ "\n" +#~ "--- Add New Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Ajouter un nouveau sous-projet ---" + +#~ msgid "No main projects found. Please add one first." +#~ msgstr "Aucun projet principal trouvé. Veuillez d'abord en ajouter un." + +#~ msgid "Name of the new sub-project: " +#~ msgstr "Nom du nouveau sous-projet : " + +#~ msgid "" +#~ "\n" +#~ "--- List Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Lister les sous-projets ---" + +#~ msgid "Sub-projects for '{name}':" +#~ msgstr "Sous-projets pour '{name}' :" + +#~ msgid "" +#~ "\n" +#~ "--- Rename Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Renommer le sous-projet ---" + +#~ msgid "Select a sub-project from '{name}' to rename:" +#~ msgstr "Sélectionnez un sous-projet de '{name}' à renommer :" + +#~ msgid "Enter the number of the sub-project: " +#~ msgstr "Entrez le numéro du sous-projet : " + +#~ msgid "Sub-project '{old_name}' renamed to '{new_name}'." +#~ msgstr "Le sous-projet '{old_name}' a été renommé en '{new_name}'." + +#~ msgid "" +#~ "\n" +#~ "--- Delete Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Supprimer le sous-projet ---" + +#~ msgid "Select a sub-project from '{name}' to delete:" +#~ msgstr "Sélectionnez un sous-projet de '{name}' à supprimer :" + +#~ msgid "" +#~ "\n" +#~ "--- List All Closed Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Lister tous les sous-projets fermés ---" + +#~ msgid "" +#~ "\n" +#~ "--- Delete All Closed Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Supprimer tous les sous-projets fermés ---" + +#~ msgid "" +#~ "\n" +#~ "--- List Inactive Sub-Projects ---" +#~ msgstr "" +#~ "\n" +#~ "--- Lister les sous-projets inactifs ---" + +#~ msgid " Sub-Project: {name}" +#~ msgstr " Sous-projet : {name}" + +#~ msgid "" +#~ "\n" +#~ "--- Move Sub-Project ---" +#~ msgstr "" +#~ "\n" +#~ "--- Déplacer le sous-projet ---" + +#~ msgid "" +#~ "\n" +#~ "Select a sub-project from '{name}' to move:" +#~ msgstr "" +#~ "\n" +#~ "Sélectionnez un sous-projet de '{name}' à déplacer :" + +#~ msgid "" +#~ "\n" +#~ "Select the sub-project for the report:" +#~ msgstr "" +#~ "\n" +#~ "Sélectionnez le sous-projet pour le rapport :" + +#~ msgid "Invalid choice. Please enter a number from 0 to 3." +#~ msgstr "Choix invalide. Veuillez entrer un nombre de 0 à 3." + +#~ msgid "Work started on '{sub_name}' in project '{main_name}'." +#~ msgstr "Travail démarré sur '{sub_name}' dans le projet '{main_name}'." + +#~ msgid " Project: {name}" +#~ msgstr " Projet : {name}" + +#~ msgid "This feature is available in the CLI. GUI implementation coming soon." +#~ msgstr "" +#~ "Cette fonctionnalité est disponible en CLI. L'implémentation GUI arrive " +#~ "bientôt." + +#~ msgid "Time Control" +#~ msgstr "Contrôle du temps" diff --git a/locale/timetracker.pot b/locale/timetracker.pot new file mode 100644 index 0000000..896afc2 --- /dev/null +++ b/locale/timetracker.pot @@ -0,0 +1,2476 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-06-18 12:24+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: TimeTrackerCLI.py:25 +msgid "" +"\n" +"--- Project Management ---" +msgstr "" + +#: TimeTrackerCLI.py:26 +msgid "1. Main Project Management" +msgstr "" + +#: TimeTrackerCLI.py:27 +msgid "2. Task Management" +msgstr "" + +#: TimeTrackerCLI.py:29 +msgid "0. Back to Main Menu" +msgstr "" + +#: TimeTrackerCLI.py:32 TimeTrackerCLI.py:60 TimeTrackerCLI.py:257 +#: TimeTrackerCLI.py:662 TimeTrackerCLI.py:701 TimeTrackerCLI.py:811 +#: TimeTrackerCLI.py:953 +msgid "Choice: " +msgstr "" + +#: TimeTrackerCLI.py:41 +msgid "Invalid choice. Please enter a number from 0 to 2." +msgstr "" + +#: TimeTrackerCLI.py:46 +msgid "" +"\n" +"--- Main Project Management ---" +msgstr "" + +#: TimeTrackerCLI.py:47 +msgid "1. Add Main Project" +msgstr "" + +#: TimeTrackerCLI.py:48 +msgid "2. List Main Projects" +msgstr "" + +#: TimeTrackerCLI.py:49 +msgid "3. Rename Main Project" +msgstr "" + +#: TimeTrackerCLI.py:50 +msgid "4. Close Main Project" +msgstr "" + +#: TimeTrackerCLI.py:51 +msgid "5. Re-open Main Project" +msgstr "" + +#: TimeTrackerCLI.py:52 +msgid "6. Delete Main Project" +msgstr "" + +#: TimeTrackerCLI.py:53 +msgid "7. List Inactive Main Projects" +msgstr "" + +#: TimeTrackerCLI.py:54 +msgid "8. Demote Main-Project to Sub-Project" +msgstr "" + +#: TimeTrackerCLI.py:55 +msgid "9. List Completed Main Projects" +msgstr "" + +#: TimeTrackerCLI.py:57 TimeTrackerCLI.py:254 +msgid "0. Back" +msgstr "" + +#: TimeTrackerCLI.py:64 +msgid "" +"\n" +"--- Add New Main Project ---" +msgstr "" + +#: TimeTrackerCLI.py:65 +msgid "Name of the main project: " +msgstr "" + +#: TimeTrackerCLI.py:67 +#, python-brace-format +msgid "Main project '{name}' added." +msgstr "" + +#: TimeTrackerCLI.py:70 +msgid "" +"\n" +"--- List Main Projects ---" +msgstr "" + +#: TimeTrackerCLI.py:76 TimeTrackerCLI.py:313 sl/SL_Menu.py:1246 +#: sl/SL_Menu.py:1310 +msgid "closed" +msgstr "" + +#: TimeTrackerCLI.py:79 +msgid "No main projects found." +msgstr "" + +#: TimeTrackerCLI.py:82 +msgid "" +"\n" +"--- Rename Main Project ---" +msgstr "" + +#: TimeTrackerCLI.py:85 +msgid "No main projects to rename." +msgstr "" + +#: TimeTrackerCLI.py:88 +msgid "Select an open main project to rename:" +msgstr "" + +#: TimeTrackerCLI.py:93 TimeTrackerCLI.py:117 TimeTrackerCLI.py:139 +#: TimeTrackerCLI.py:162 TimeTrackerCLI.py:272 TimeTrackerCLI.py:301 +#: TimeTrackerCLI.py:333 TimeTrackerCLI.py:370 TimeTrackerCLI.py:405 +#: TimeTrackerCLI.py:441 TimeTrackerCLI.py:568 TimeTrackerCLI.py:604 +#: TimeTrackerCLI.py:855 TimeTrackerCLI.py:888 TimeTrackerCLI.py:969 +msgid "Enter the number of the main project: " +msgstr "" + +#: TimeTrackerCLI.py:96 TimeTrackerCLI.py:349 +#, python-brace-format +msgid "Enter the new name for '{name}': " +msgstr "" + +#: TimeTrackerCLI.py:99 +#, python-brace-format +msgid "Main project '{old_name}' successfully renamed to '{new_name}'." +msgstr "" + +#: TimeTrackerCLI.py:101 sl/SL_Menu.py:1283 +#, python-brace-format +msgid "Error: Could not rename. The new name '{new_name}' might already exist." +msgstr "" + +#: TimeTrackerCLI.py:103 TimeTrackerCLI.py:125 TimeTrackerCLI.py:147 +#: TimeTrackerCLI.py:169 TimeTrackerCLI.py:221 TimeTrackerCLI.py:287 +#: TimeTrackerCLI.py:319 TimeTrackerCLI.py:356 TimeTrackerCLI.py:391 +#: TimeTrackerCLI.py:426 TimeTrackerCLI.py:463 TimeTrackerCLI.py:510 +#: TimeTrackerCLI.py:589 TimeTrackerCLI.py:794 TimeTrackerCLI.py:875 +#: TimeTrackerCLI.py:894 TimeTrackerCLI.py:992 +msgid "Invalid input. Please enter a valid number." +msgstr "" + +#: TimeTrackerCLI.py:106 +msgid "" +"\n" +"--- Close Main Project ---" +msgstr "" + +#: TimeTrackerCLI.py:109 +msgid "No open main projects to close." +msgstr "" + +#: TimeTrackerCLI.py:112 +msgid "Select a main project to close:" +msgstr "" + +#: TimeTrackerCLI.py:121 +#, python-brace-format +msgid "Main project '{name}' has been closed." +msgstr "" + +#: TimeTrackerCLI.py:123 TimeTrackerCLI.py:145 +msgid "Error: Main project not found." +msgstr "" + +#: TimeTrackerCLI.py:128 +msgid "" +"\n" +"--- Re-open Main Project ---" +msgstr "" + +#: TimeTrackerCLI.py:131 +msgid "No closed main projects to reopen." +msgstr "" + +#: TimeTrackerCLI.py:134 +msgid "Select a main project to reopen:" +msgstr "" + +#: TimeTrackerCLI.py:143 +#, python-brace-format +msgid "Main project '{name}' has been reopened." +msgstr "" + +#: TimeTrackerCLI.py:150 +msgid "" +"\n" +"--- Delete Main Project ---" +msgstr "" + +#: TimeTrackerCLI.py:153 +msgid "No main projects to delete." +msgstr "" + +#: TimeTrackerCLI.py:156 +msgid "Select a main project to delete:" +msgstr "" + +#: TimeTrackerCLI.py:165 +#, python-brace-format +msgid "Main project '{name}' deleted." +msgstr "" + +#: TimeTrackerCLI.py:167 TimeTrackerCLI.py:285 +#, python-brace-format +msgid "Error: Main project '{name}' not found." +msgstr "" + +#: TimeTrackerCLI.py:172 +msgid "" +"\n" +"--- List Inactive Main-Projects ---" +msgstr "" + +#: TimeTrackerCLI.py:174 +msgid "Enter the number of weeks without activity (e.g., 8): " +msgstr "" + +#: TimeTrackerCLI.py:176 TimeTrackerCLI.py:518 +msgid "Please enter a positive number." +msgstr "" + +#: TimeTrackerCLI.py:182 +#, python-brace-format +msgid "" +"\n" +"Inactive Main-Projects (>{weeks} weeks):" +msgstr "" + +#: TimeTrackerCLI.py:184 TimeTrackerCLI.py:526 +#, python-brace-format +msgid " - Main Project: {name}" +msgstr "" + +#: TimeTrackerCLI.py:185 TimeTrackerCLI.py:528 +#, python-brace-format +msgid " Last Activity: {date}" +msgstr "" + +#: TimeTrackerCLI.py:188 +#, python-brace-format +msgid "No main-projects found inactive for more than {weeks} weeks." +msgstr "" + +#: TimeTrackerCLI.py:191 TimeTrackerCLI.py:534 +msgid "Invalid input. Please enter a valid number for weeks." +msgstr "" + +#: TimeTrackerCLI.py:194 +msgid "" +"\n" +"--- Demote Main-Project to Sub-Project ---" +msgstr "" + +#: TimeTrackerCLI.py:197 +msgid "You need at least two open main projects for this operation." +msgstr "" + +#: TimeTrackerCLI.py:202 +msgid "Select the main project to demote:" +msgstr "" + +#: TimeTrackerCLI.py:205 +msgid "Enter the number of the project to demote: " +msgstr "" + +#: TimeTrackerCLI.py:209 +msgid "" +"\n" +"Select the new parent main project:" +msgstr "" + +#: TimeTrackerCLI.py:213 +msgid "Enter the number of the new parent project: " +msgstr "" + +#: TimeTrackerCLI.py:224 +msgid "" +"\n" +"--- List Completed Main Projects ---" +msgstr "" + +#: TimeTrackerCLI.py:227 +msgid "Main projects with only closed or no sub-projects:" +msgstr "" + +#: TimeTrackerCLI.py:231 +msgid "No completed main projects found." +msgstr "" + +#: TimeTrackerCLI.py:235 +msgid "Invalid choice. Please enter a number from 0 to 9." +msgstr "" + +#: TimeTrackerCLI.py:240 +msgid "" +"\n" +"--- Task Management ---" +msgstr "" + +#: TimeTrackerCLI.py:241 +msgid "1. Add Task" +msgstr "" + +#: TimeTrackerCLI.py:242 +msgid "2. List Tasks" +msgstr "" + +#: TimeTrackerCLI.py:243 +msgid "3. Rename Task" +msgstr "" + +#: TimeTrackerCLI.py:244 +msgid "4. Close Task" +msgstr "" + +#: TimeTrackerCLI.py:245 +msgid "5. Re-open Task" +msgstr "" + +#: TimeTrackerCLI.py:246 +msgid "6. Delete Task" +msgstr "" + +#: TimeTrackerCLI.py:247 +msgid "7. Move Task" +msgstr "" + +#: TimeTrackerCLI.py:248 +msgid "8. List Inactive Tasks" +msgstr "" + +#: TimeTrackerCLI.py:249 +msgid "9. List All Closed Tasks" +msgstr "" + +#: TimeTrackerCLI.py:250 +msgid "10. Delete All Closed Tasks" +msgstr "" + +#: TimeTrackerCLI.py:251 +msgid "11. Promote Task to Main-Project" +msgstr "" + +#: TimeTrackerCLI.py:252 +msgid "12. Edit Task (Name & Due Date)" +msgstr "" + +#: TimeTrackerCLI.py:261 +msgid "" +"\n" +"--- Add New Task ---" +msgstr "" + +#: TimeTrackerCLI.py:264 TimeTrackerCLI.py:960 +msgid "No open main projects found. Please add one first." +msgstr "" + +#: TimeTrackerCLI.py:267 +msgid "Select a main project to add a task to:" +msgstr "" + +#: TimeTrackerCLI.py:275 +msgid "Name of the new task: " +msgstr "" + +#: TimeTrackerCLI.py:276 +msgid "Due date (YYYY-MM-DD, press Enter to skip): " +msgstr "" + +#: TimeTrackerCLI.py:278 +msgid "Add to 'Today' list? (y/n, default n): " +msgstr "" + +#: TimeTrackerCLI.py:280 +msgid "Note (Markdown supported): " +msgstr "" + +#: TimeTrackerCLI.py:283 +#, python-brace-format +msgid "Task '{task_name}' added." +msgstr "" + +#: TimeTrackerCLI.py:290 +msgid "" +"\n" +"--- List Tasks ---" +msgstr "" + +#: TimeTrackerCLI.py:293 +msgid "No main projects found. Cannot list tasks." +msgstr "" + +#: TimeTrackerCLI.py:296 +msgid "Select the main project whose tasks you want to list:" +msgstr "" + +#: TimeTrackerCLI.py:305 sl/SL_Menu.py:1307 +#, python-brace-format +msgid "Tasks for '{name}':" +msgstr "" + +#: TimeTrackerCLI.py:308 sl/SL_Menu.py:524 sl/SL_Menu.py:612 +msgid "Due" +msgstr "" + +#: TimeTrackerCLI.py:309 sl/SL_Menu.py:409 sl/SL_Menu.py:419 sl/SL_Menu.py:484 +#: sl/SL_Menu.py:546 sl/SL_Menu.py:747 sl/SL_Menu.py:1603 sl/SL_Menu.py:1771 +msgid "Today" +msgstr "" + +#: TimeTrackerCLI.py:317 TimeTrackerCLI.py:861 sl/SL_Menu.py:1315 +#: sl/SL_Menu.py:2276 +#, python-brace-format +msgid "No tasks found for '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:322 +msgid "" +"\n" +"--- Rename Task ---" +msgstr "" + +#: TimeTrackerCLI.py:325 TimeTrackerCLI.py:362 TimeTrackerCLI.py:397 +#: TimeTrackerCLI.py:432 TimeTrackerCLI.py:560 +msgid "No open main projects found." +msgstr "" + +#: TimeTrackerCLI.py:328 TimeTrackerCLI.py:365 TimeTrackerCLI.py:400 +#: TimeTrackerCLI.py:435 TimeTrackerCLI.py:599 TimeTrackerCLI.py:852 +msgid "Select the main project:" +msgstr "" + +#: TimeTrackerCLI.py:338 +#, python-brace-format +msgid "No tasks to rename for '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:341 +#, python-brace-format +msgid "Select a task from '{name}' to rename:" +msgstr "" + +#: TimeTrackerCLI.py:345 TimeTrackerCLI.py:382 TimeTrackerCLI.py:417 +#: TimeTrackerCLI.py:453 TimeTrackerCLI.py:489 TimeTrackerCLI.py:580 +#: TimeTrackerCLI.py:867 TimeTrackerCLI.py:982 +msgid "Enter the number of the task: " +msgstr "" + +#: TimeTrackerCLI.py:352 sl/SL_Menu.py:1358 +#, python-brace-format +msgid "Task '{old_name}' renamed to '{new_name}'." +msgstr "" + +#: TimeTrackerCLI.py:354 +msgid "" +"Error: Could not rename. The new name might already exist or the project was " +"not found." +msgstr "" + +#: TimeTrackerCLI.py:359 +msgid "" +"\n" +"--- Close Task ---" +msgstr "" + +#: TimeTrackerCLI.py:375 +#, python-brace-format +msgid "No open tasks to close for '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:378 +#, python-brace-format +msgid "Select a task from '{name}' to close:" +msgstr "" + +#: TimeTrackerCLI.py:387 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been closed." +msgstr "" + +#: TimeTrackerCLI.py:389 TimeTrackerCLI.py:424 TimeTrackerCLI.py:460 +#: sl/SL_Menu.py:945 sl/SL_Menu.py:990 sl/SL_Menu.py:1036 +msgid "Error: Main project or task not found." +msgstr "" + +#: TimeTrackerCLI.py:394 +msgid "" +"\n" +"--- Re-open Task ---" +msgstr "" + +#: TimeTrackerCLI.py:410 +#, python-brace-format +msgid "No closed tasks to reopen for '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:413 +#, python-brace-format +msgid "Select a task from '{name}' to reopen:" +msgstr "" + +#: TimeTrackerCLI.py:422 +#, python-brace-format +msgid "Task '{task_name}' in '{main_name}' has been reopened." +msgstr "" + +#: TimeTrackerCLI.py:429 +msgid "" +"\n" +"--- Delete Task ---" +msgstr "" + +#: TimeTrackerCLI.py:446 +#, python-brace-format +msgid "No tasks to delete for '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:449 +#, python-brace-format +msgid "Select a task from '{name}' to delete:" +msgstr "" + +#: TimeTrackerCLI.py:458 +#, python-brace-format +msgid "Task '{task_name}' deleted from '{main_name}'." +msgstr "" + +#: TimeTrackerCLI.py:466 +msgid "" +"\n" +"--- Move Task ---" +msgstr "" + +#: TimeTrackerCLI.py:469 +msgid "You need at least two open main projects to move a task." +msgstr "" + +#: TimeTrackerCLI.py:474 +msgid "Select the source main project:" +msgstr "" + +#: TimeTrackerCLI.py:477 +msgid "Enter the number of the source main project: " +msgstr "" + +#: TimeTrackerCLI.py:483 +#, python-brace-format +msgid "No tasks to move from '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:486 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to move:" +msgstr "" + +#: TimeTrackerCLI.py:494 +msgid "" +"\n" +"Select the destination main project:" +msgstr "" + +#: TimeTrackerCLI.py:499 +msgid "Enter the number of the destination main project: " +msgstr "" + +#: TimeTrackerCLI.py:505 +#, python-brace-format +msgid "" +"Successfully moved '{task_name}' from '{source_main_project}' to " +"'{dest_main_project}'." +msgstr "" + +#: TimeTrackerCLI.py:507 +#, python-brace-format +msgid "Error: {message}" +msgstr "" + +#: TimeTrackerCLI.py:514 +msgid "" +"\n" +"--- List Inactive Tasks ---" +msgstr "" + +#: TimeTrackerCLI.py:516 +msgid "Enter the number of weeks without activity (e.g., 4): " +msgstr "" + +#: TimeTrackerCLI.py:524 +#, python-brace-format +msgid "" +"\n" +"Inactive Tasks (>{weeks} weeks):" +msgstr "" + +#: TimeTrackerCLI.py:527 +#, python-brace-format +msgid " Task: {name}" +msgstr "" + +#: TimeTrackerCLI.py:531 sl/SL_Menu.py:1118 +#, python-brace-format +msgid "No tasks found inactive for more than {weeks} weeks." +msgstr "" + +#: TimeTrackerCLI.py:537 +msgid "" +"\n" +"--- List All Closed Tasks ---" +msgstr "" + +#: TimeTrackerCLI.py:543 sl/SL_Menu.py:1143 sl/SL_Menu.py:1166 +msgid "No closed tasks found." +msgstr "" + +#: TimeTrackerCLI.py:547 +msgid "" +"\n" +"--- Delete All Closed Tasks ---" +msgstr "" + +#: TimeTrackerCLI.py:548 +msgid "Are you sure you want to delete ALL closed tasks? (y/n): " +msgstr "" + +#: TimeTrackerCLI.py:551 +#, python-brace-format +msgid "{count} closed tasks were deleted." +msgstr "" + +#: TimeTrackerCLI.py:553 +msgid "Operation cancelled." +msgstr "" + +#: TimeTrackerCLI.py:557 +msgid "" +"\n" +"--- Promote Task to Main-Project ---" +msgstr "" + +#: TimeTrackerCLI.py:565 +msgid "Select the main project containing the task to promote:" +msgstr "" + +#: TimeTrackerCLI.py:574 +#, python-brace-format +msgid "No tasks to promote in '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:577 +#, python-brace-format +msgid "" +"\n" +"Select a task from '{name}' to promote:" +msgstr "" + +#: TimeTrackerCLI.py:593 +msgid "" +"\n" +"--- Edit Task ---" +msgstr "" + +#: TimeTrackerCLI.py:596 sl/SL_Menu.py:913 sl/SL_Menu.py:958 sl/SL_Menu.py:1003 +#: sl/SL_Menu.py:1049 sl/SL_Menu.py:1198 sl/SL_Menu.py:1328 sl/SL_Menu.py:1487 +#: sl/SL_Menu.py:1677 +msgid "No open projects found." +msgstr "" + +#: TimeTrackerCLI.py:609 +#, python-brace-format +msgid "No open tasks in '{name}'." +msgstr "" + +#: TimeTrackerCLI.py:612 +msgid "Select a task to edit:" +msgstr "" + +#: TimeTrackerCLI.py:616 +msgid "Enter the number: " +msgstr "" + +#: TimeTrackerCLI.py:623 +#, python-brace-format +msgid "New name (press Enter to keep '{name}'): " +msgstr "" + +#: TimeTrackerCLI.py:624 +#, python-brace-format +msgid "New due date (YYYY-MM-DD, current: '{due}', enter '-' to clear): " +msgstr "" + +#: TimeTrackerCLI.py:627 +#, python-brace-format +msgid "Is this for today? (current: {current}, y/n, press Enter to keep): " +msgstr "" + +#: TimeTrackerCLI.py:630 +#, python-brace-format +msgid "Current Note: {note}" +msgstr "" + +#: TimeTrackerCLI.py:631 +msgid "New note (press Enter to keep current): " +msgstr "" + +#: TimeTrackerCLI.py:635 +#, python-brace-format +msgid "Is this task done? (current: {current}, y/n, press Enter to keep): " +msgstr "" + +#: TimeTrackerCLI.py:639 sl/SL_Menu.py:1834 +msgid "Task updated successfully." +msgstr "" + +#: TimeTrackerCLI.py:641 +msgid "Error updating task." +msgstr "" + +#: TimeTrackerCLI.py:643 +msgid "Invalid input." +msgstr "" + +#: TimeTrackerCLI.py:648 +msgid "Invalid choice. Please enter a number from 0 to 11." +msgstr "" + +#: TimeTrackerCLI.py:653 +msgid "" +"\n" +"--- Settings ---" +msgstr "" + +#: TimeTrackerCLI.py:654 sl/SL_Menu.py:870 +msgid "1. Change Language" +msgstr "" + +#: TimeTrackerCLI.py:655 sl/SL_Menu.py:871 +msgid "2. Restore Previous Version" +msgstr "" + +#: TimeTrackerCLI.py:656 sl/SL_Menu.py:872 +msgid "3. Change Data Storage Location" +msgstr "" + +#: TimeTrackerCLI.py:657 sl/SL_Menu.py:874 +msgid "4. Change Streamlit Port" +msgstr "" + +#: TimeTrackerCLI.py:659 TimeTrackerCLI.py:698 TimeTrackerCLI.py:808 +#: sl/SL_Menu.py:881 +msgid "0. Back to Main Menu" +msgstr "" + +#: TimeTrackerCLI.py:682 +msgid "Invalid choice. Please enter a number from 0 to 4." +msgstr "" + +#: TimeTrackerCLI.py:687 +msgid "" +"\n" +"--- Language Settings ---" +msgstr "" + +#: TimeTrackerCLI.py:692 +msgid "No additional languages found." +msgstr "" + +#: TimeTrackerCLI.py:716 +#, python-brace-format +msgid "Language changed to '{lang}'. Please restart the application." +msgstr "" + +#: TimeTrackerCLI.py:719 +msgid "Invalid choice." +msgstr "" + +#: TimeTrackerCLI.py:721 +msgid "Invalid input. Please enter a number." +msgstr "" + +#: TimeTrackerCLI.py:725 +msgid "" +"\n" +"--- Data Storage Settings ---" +msgstr "" + +#: TimeTrackerCLI.py:726 +#, python-brace-format +msgid "Current data file: {path}" +msgstr "" + +#: TimeTrackerCLI.py:728 +msgid "Enter the new path for the data file (e.g., /path/to/my_data.json)." +msgstr "" + +#: TimeTrackerCLI.py:729 +msgid "Leave empty to cancel." +msgstr "" + +#: TimeTrackerCLI.py:730 +msgid "New Path: " +msgstr "" + +#: TimeTrackerCLI.py:738 sl/SL_Menu.py:1974 +#, python-brace-format +msgid "Error: The directory '{dir}' does not exist." +msgstr "" + +#: TimeTrackerCLI.py:752 +msgid "Storage location updated." +msgstr "" + +#: TimeTrackerCLI.py:756 +msgid "Do you want to move the existing data to the new location? (y/n): " +msgstr "" + +#: TimeTrackerCLI.py:760 sl/SL_Menu.py:1985 +msgid "Data moved successfully." +msgstr "" + +#: TimeTrackerCLI.py:762 sl/SL_Menu.py:1987 +#, python-brace-format +msgid "Error moving data: {error}" +msgstr "" + +#: TimeTrackerCLI.py:764 tt/TimeTracker.py:117 +msgid "Please restart the application for the changes to take effect." +msgstr "" + +#: TimeTrackerCLI.py:767 +#, python-brace-format +msgid "Error updating configuration: {error}" +msgstr "" + +#: TimeTrackerCLI.py:771 +msgid "" +"\n" +"--- Streamlit Port Settings ---" +msgstr "" + +#: TimeTrackerCLI.py:781 +#, python-brace-format +msgid "Current Streamlit Port: {port}" +msgstr "" + +#: TimeTrackerCLI.py:783 +msgid "Enter new port (or press Enter to keep current): " +msgstr "" + +#: TimeTrackerCLI.py:792 +#, python-brace-format +msgid "" +"Port updated to {port}. Please restart Streamlit for changes to take effect." +msgstr "" + +#: TimeTrackerCLI.py:800 +msgid "" +"\n" +"--- Reporting ---" +msgstr "" + +#: TimeTrackerCLI.py:801 +msgid "1. Daily Report (Today)" +msgstr "" + +#: TimeTrackerCLI.py:802 +msgid "2. Daily Report (Specific Day)" +msgstr "" + +#: TimeTrackerCLI.py:803 +msgid "3. Date Range Report" +msgstr "" + +#: TimeTrackerCLI.py:804 +msgid "4. Detailed Task Report" +msgstr "" + +#: TimeTrackerCLI.py:805 +msgid "5. Detailed Main-Project Report" +msgstr "" + +#: TimeTrackerCLI.py:806 +msgid "6. Detailed Daily Report" +msgstr "" + +#: TimeTrackerCLI.py:815 +msgid "" +"\n" +"--- Generate Daily Report (Today) ---" +msgstr "" + +#: TimeTrackerCLI.py:820 +msgid "" +"\n" +"--- Generate Daily Report for a specific Day ---" +msgstr "" + +#: TimeTrackerCLI.py:821 +msgid "Enter the date (YYYY-MM-DD): " +msgstr "" + +#: TimeTrackerCLI.py:827 TimeTrackerCLI.py:842 TimeTrackerCLI.py:903 +msgid "Invalid date format. Please use YYYY-MM-DD." +msgstr "" + +#: TimeTrackerCLI.py:830 +msgid "" +"\n" +"--- Generate Report for a Date Range ---" +msgstr "" + +#: TimeTrackerCLI.py:831 +msgid "Enter the start date (YYYY-MM-DD): " +msgstr "" + +#: TimeTrackerCLI.py:832 +msgid "Enter the end date (YYYY-MM-DD): " +msgstr "" + +#: TimeTrackerCLI.py:837 sl/SL_Menu.py:2227 +msgid "Error: The start date cannot be after the end date." +msgstr "" + +#: TimeTrackerCLI.py:844 +msgid "" +"\n" +"--- Detailed Task Report ---" +msgstr "" + +#: TimeTrackerCLI.py:847 TimeTrackerCLI.py:880 sl/SL_Menu.py:1249 +#: sl/SL_Menu.py:1296 sl/SL_Menu.py:1435 sl/SL_Menu.py:2245 sl/SL_Menu.py:2304 +msgid "No projects found." +msgstr "" + +#: TimeTrackerCLI.py:864 +msgid "" +"\n" +"Select the task for the report:" +msgstr "" + +#: TimeTrackerCLI.py:877 +msgid "" +"\n" +"--- Detailed Main-Project Report ---" +msgstr "" + +#: TimeTrackerCLI.py:885 +msgid "Select the main project for the report:" +msgstr "" + +#: TimeTrackerCLI.py:896 +msgid "" +"\n" +"--- Detailed Daily Report ---" +msgstr "" + +#: TimeTrackerCLI.py:897 +msgid "Enter the date (YYYY-MM-DD) or press Enter for today: " +msgstr "" + +#: TimeTrackerCLI.py:911 TimeTrackerCLI.py:1042 +msgid "Invalid choice. Please enter a number from 0 to 6." +msgstr "" + +#: TimeTrackerCLI.py:919 +msgid "" +"\n" +"--- Update Available ---" +msgstr "" + +#: TimeTrackerCLI.py:920 +msgid "A downloaded update is ready to be installed." +msgstr "" + +#: TimeTrackerCLI.py:921 +msgid "0. Skip update for now" +msgstr "" + +#: TimeTrackerCLI.py:922 +msgid "1. Install update now" +msgstr "" + +#: TimeTrackerCLI.py:923 +msgid "Enter your choice (0 or 1): " +msgstr "" + +#: TimeTrackerCLI.py:927 +msgid "Application is restarting to complete the update..." +msgstr "" + +#: TimeTrackerCLI.py:931 +msgid "Update installation skipped. The application will start normally." +msgstr "" + +#: TimeTrackerCLI.py:933 +msgid "" +"Invalid choice. Update installation skipped. The application will start " +"normally." +msgstr "" + +#: TimeTrackerCLI.py:940 +#, python-brace-format +msgid "" +"\n" +"=== Time Control {version} ===" +msgstr "" + +#: TimeTrackerCLI.py:941 +msgid "--- Main Menu ---" +msgstr "" + +#: TimeTrackerCLI.py:942 +msgid "1. Start work on task" +msgstr "" + +#: TimeTrackerCLI.py:943 +msgid "2. Show current work" +msgstr "" + +#: TimeTrackerCLI.py:944 +msgid "3. Stop current work" +msgstr "" + +#: TimeTrackerCLI.py:946 +msgid "4. Handle projects and tasks" +msgstr "" + +#: TimeTrackerCLI.py:947 +msgid "5. Reporting" +msgstr "" + +#: TimeTrackerCLI.py:948 +msgid "6. Settings" +msgstr "" + +#: TimeTrackerCLI.py:950 +msgid "0. Exit" +msgstr "" + +#: TimeTrackerCLI.py:957 +msgid "" +"\n" +"--- Start Work on a Task ---" +msgstr "" + +#: TimeTrackerCLI.py:963 +msgid "Select a main project:" +msgstr "" + +#: TimeTrackerCLI.py:974 +#, python-brace-format +msgid "No open tasks found for '{name}' to start work on." +msgstr "" + +#: TimeTrackerCLI.py:977 +#, python-brace-format +msgid "Select a task from '{name}':" +msgstr "" + +#: TimeTrackerCLI.py:987 sl/SL_Menu.py:1884 +#, python-brace-format +msgid "Work started on '{task_name}' in project '{main_name}'." +msgstr "" + +#: TimeTrackerCLI.py:989 sl/SL_Menu.py:1888 +msgid "Error starting work." +msgstr "" + +#: TimeTrackerCLI.py:996 +msgid "" +"\n" +"--- Current Active Work ---" +msgstr "" + +#: TimeTrackerCLI.py:1006 +msgid "You are currently working on:" +msgstr "" + +#: TimeTrackerCLI.py:1007 +#, python-brace-format +msgid " Main Project: {name}" +msgstr "" + +#: TimeTrackerCLI.py:1008 +#, python-brace-format +msgid " Task: {name}" +msgstr "" + +#: TimeTrackerCLI.py:1009 +#, python-brace-format +msgid " Started at: {date}" +msgstr "" + +#: TimeTrackerCLI.py:1010 +#, python-brace-format +msgid " Duration: {duration}" +msgstr "" + +#: TimeTrackerCLI.py:1012 sl/SL_Menu.py:373 sl/SL_Menu.py:1910 +msgid "No active work session." +msgstr "" + +#: TimeTrackerCLI.py:1016 +msgid "" +"\n" +"--- Stop Work ---" +msgstr "" + +#: TimeTrackerCLI.py:1018 sl/SL_Menu.py:341 +msgid "Work session stopped successfully." +msgstr "" + +#: TimeTrackerCLI.py:1020 sl/SL_Menu.py:343 +msgid "No active work session to stop." +msgstr "" + +#: TimeTrackerCLI.py:1034 +msgid "" +"\n" +"Checking for updates..." +msgstr "" + +#: TimeTrackerCLI.py:1038 +msgid "Exiting application. Goodbye!" +msgstr "" + +#: update.py:35 +msgid "" +"Warning: Update check skipped. 'github_repo' not found in config.json or " +"file is invalid." +msgstr "" + +#: update.py:49 +#, python-brace-format +msgid "A new version ({version}) is available." +msgstr "" + +#: update.py:55 +msgid "Error: Download URL for the new version not found." +msgstr "" + +#: update.py:59 +#, python-brace-format +msgid "Error checking for updates: {error}" +msgstr "" + +#: update.py:61 +#, python-brace-format +msgid "An unexpected error occurred while checking for updates: {error}" +msgstr "" + +#: update.py:73 +msgid "Downloading update..." +msgstr "" + +#: update.py:79 +msgid "Download complete. The update will be installed on the next start." +msgstr "" + +#: update.py:82 +#, python-brace-format +msgid "Error downloading the update: {error}" +msgstr "" + +#: update.py:108 +msgid "Creating backup of current version before update..." +msgstr "" + +#: update.py:118 +#, python-brace-format +msgid "Backup created successfully as {filename}." +msgstr "" + +#: update.py:120 +#, python-brace-format +msgid "Warning: Could not create backup. Error: {error}" +msgstr "" + +#: update.py:122 +msgid "Installing update..." +msgstr "" + +#: update.py:142 +#, python-brace-format +msgid "Skipping protected file: {filename}. It will not be overwritten." +msgstr "" + +#: update.py:151 +msgid "Update installed successfully." +msgstr "" + +#: update.py:153 +#, python-brace-format +msgid "Error during update installation: {error}" +msgstr "" + +#: update.py:168 +#, python-brace-format +msgid "Error: No previous version backup '{filename}' found." +msgstr "" + +#: update.py:171 +#, python-brace-format +msgid "Restoring previous version from '{filename}'..." +msgstr "" + +#: update.py:192 +#, python-brace-format +msgid "" +"Skipping user data file: {filename}. It will not be overwritten during " +"restore." +msgstr "" + +#: update.py:199 +msgid "Previous version restored successfully." +msgstr "" + +#: update.py:201 +msgid "Restarting application to apply changes..." +msgstr "" + +#: update.py:204 +#, python-brace-format +msgid "Error during restoration: {error}" +msgstr "" + +#: update.py:205 +#, python-brace-format +msgid "The backup file '{filename}' was not deleted." +msgstr "" + +#: update.py:212 +msgid "Error: Could not import TimeTracker to get the current version." +msgstr "" + +#: update.py:215 +msgid "Checking for updates..." +msgstr "" + +#: update.py:222 +msgid "No updates available." +msgstr "" + +#: tt/TimeTracker.py:90 +#, python-brace-format +msgid "Warning: Could not read {file}. Error: {error}" +msgstr "" + +#: tt/TimeTracker.py:105 +msgid "Some required packages are missing. Attempting to install them..." +msgstr "" + +#: tt/TimeTracker.py:108 +#, python-brace-format +msgid "Installing {package}..." +msgstr "" + +#: tt/TimeTracker.py:112 +#, python-brace-format +msgid "Failed to install {package}. Continuing without it." +msgstr "" + +#: tt/TimeTracker.py:116 +msgid "" +"\n" +"Dependencies installed successfully." +msgstr "" + +#: tt/TimeTracker.py:120 +#, python-brace-format +msgid "" +"\n" +"Warning: Some dependencies could not be installed: {packages}" +msgstr "" + +#: tt/TimeTracker.py:122 +#, python-brace-format +msgid "An unexpected error occurred during dependency check: {error}" +msgstr "" + +#: tt/TimeTracker.py:229 +msgid "Info: Report content has been copied to the clipboard." +msgstr "" + +#: tt/TimeTracker.py:231 +#, python-brace-format +msgid "Warning: Could not copy to clipboard. Error: {error}" +msgstr "" + +#: tt/TimeTracker.py:233 +msgid "" +"Warning: Could not copy to clipboard. Please install 'pyperclip' (`pip " +"install pyperclip`)." +msgstr "" + +#: tt/TimeTracker.py:253 +#, python-brace-format +msgid "{hours} hours ({dlp} DLP)" +msgstr "" + +#: tt/TimeTracker.py:846 tt/TimeTracker.py:886 +#, python-brace-format +msgid "Source main project '{name}' not found." +msgstr "" + +#: tt/TimeTracker.py:848 +#, python-brace-format +msgid "Destination main project '{name}' not found." +msgstr "" + +#: tt/TimeTracker.py:860 +#, python-brace-format +msgid "Task '{task_name}' moved successfully." +msgstr "" + +#: tt/TimeTracker.py:861 tt/TimeTracker.py:896 tt/TimeTracker.py:1373 +#, python-brace-format +msgid "Task '{task_name}' not found in '{main_name}'." +msgstr "" + +#: tt/TimeTracker.py:880 +#, python-brace-format +msgid "A main project named '{name}' already exists." +msgstr "" + +#: tt/TimeTracker.py:905 +msgid "General" +msgstr "" + +#: tt/TimeTracker.py:909 +#, python-brace-format +msgid "Task '{task_name}' was promoted to a new main project." +msgstr "" + +#: tt/TimeTracker.py:936 +#, python-brace-format +msgid "Main project to demote '{name}' not found." +msgstr "" + +#: tt/TimeTracker.py:938 +#, python-brace-format +msgid "New parent main project '{name}' not found." +msgstr "" + +#: tt/TimeTracker.py:963 +#, python-brace-format +msgid "" +"Main project '{demoted_name}' was demoted to a sub-project under " +"'{parent_name}'." +msgstr "" + +#: tt/TimeTracker.py:1042 +msgid "Email import is not enabled." +msgstr "" + +#: tt/TimeTracker.py:1051 +msgid "Email settings are incomplete." +msgstr "" + +#: tt/TimeTracker.py:1064 +msgid "Error searching emails." +msgstr "" + +#: tt/TimeTracker.py:1079 +msgid "No Subject" +msgstr "" + +#: tt/TimeTracker.py:1139 +msgid "Unknown Task" +msgstr "" + +#: tt/TimeTracker.py:1330 +#, python-brace-format +msgid "- {name}: {hours} hours" +msgstr "" + +#: tt/TimeTracker.py:1338 +#, python-brace-format +msgid "## {name} ({hours} hours)\n" +msgstr "" + +#: tt/TimeTracker.py:1347 +#, python-brace-format +msgid "# Daily Time Report: {date}\n" +msgstr "" + +#: tt/TimeTracker.py:1348 +#, python-brace-format +msgid "" +"\n" +"**Total Daily Time: {hours} hours**" +msgstr "" + +#: tt/TimeTracker.py:1352 tt/TimeTracker.py:1665 +#, python-brace-format +msgid "No time tracked for {date}." +msgstr "" + +#: tt/TimeTracker.py:1369 tt/TimeTracker.py:1464 +#, python-brace-format +msgid "Main project '{name}' not found." +msgstr "" + +#: tt/TimeTracker.py:1377 +#, python-brace-format +msgid "No time entries found for task '{task_name}'." +msgstr "" + +#: tt/TimeTracker.py:1410 tt/TimeTracker.py:1640 +msgid "now" +msgstr "" + +#: tt/TimeTracker.py:1411 sl/SL_Menu.py:1908 +msgid "Duration" +msgstr "" + +#: tt/TimeTracker.py:1415 +#, python-brace-format +msgid "# Detailed Report for Task: {name}" +msgstr "" + +#: tt/TimeTracker.py:1416 +#, python-brace-format +msgid "Part of Main Project: {name}" +msgstr "" + +#: tt/TimeTracker.py:1419 +msgid "Active (currently running)" +msgstr "" + +#: tt/TimeTracker.py:1419 tt/TimeTracker.py:1516 +msgid "Inactive" +msgstr "" + +#: tt/TimeTracker.py:1420 tt/TimeTracker.py:1517 +msgid "Status" +msgstr "" + +#: tt/TimeTracker.py:1422 tt/TimeTracker.py:1519 +msgid "First entry" +msgstr "" + +#: tt/TimeTracker.py:1424 tt/TimeTracker.py:1521 +msgid "Last activity" +msgstr "" + +#: tt/TimeTracker.py:1426 tt/TimeTracker.py:1523 +msgid "Total recorded time" +msgstr "" + +#: tt/TimeTracker.py:1427 tt/TimeTracker.py:1525 +msgid "Total work sessions" +msgstr "" + +#: tt/TimeTracker.py:1431 tt/TimeTracker.py:1529 +msgid "Average session duration" +msgstr "" + +#: tt/TimeTracker.py:1434 tt/TimeTracker.py:1532 +msgid "Weekday Distribution" +msgstr "" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Monday" +msgstr "" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Tuesday" +msgstr "" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Wednesday" +msgstr "" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Thursday" +msgstr "" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Friday" +msgstr "" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Saturday" +msgstr "" + +#: tt/TimeTracker.py:1436 tt/TimeTracker.py:1534 sl/SL_Menu.py:437 +msgid "Sunday" +msgstr "" + +#: tt/TimeTracker.py:1444 +msgid "Daily Breakdown" +msgstr "" + +#: tt/TimeTracker.py:1513 +#, python-brace-format +msgid "# Detailed Report for Main Project: {name}" +msgstr "" + +#: tt/TimeTracker.py:1516 +#, python-brace-format +msgid "Active (working on '{task_name}')" +msgstr "" + +#: tt/TimeTracker.py:1524 +msgid "Number of tasks" +msgstr "" + +#: tt/TimeTracker.py:1543 +msgid "Task Breakdown" +msgstr "" + +#: tt/TimeTracker.py:1552 +#, python-brace-format +msgid "{num_sessions} sessions" +msgstr "" + +#: tt/TimeTracker.py:1605 +#, python-brace-format +msgid "# Time Report: {start_date} to {end_date}\n" +msgstr "" + +#: tt/TimeTracker.py:1606 +#, python-brace-format +msgid "" +"\n" +"**Total Time in Period: {total_time}**" +msgstr "" + +#: tt/TimeTracker.py:1610 +#, python-brace-format +msgid "No time tracked between {start_date} and {end_date}." +msgstr "" + +#: tt/TimeTracker.py:1626 +#, python-brace-format +msgid "# Detailed Daily Report: {date}" +msgstr "" + +#: sl/SL_Menu.py:277 +msgid "New" +msgstr "" + +#: sl/SL_Menu.py:278 +msgid "New Project" +msgstr "" + +#: sl/SL_Menu.py:281 +msgid "New Task" +msgstr "" + +#: sl/SL_Menu.py:286 +msgid "Project & Task Management" +msgstr "" + +#: sl/SL_Menu.py:287 sl/SL_Menu.py:780 +msgid "Main Project Management" +msgstr "" + +#: sl/SL_Menu.py:288 sl/SL_Menu.py:796 sl/SL_Menu.py:894 +msgid "Add Project" +msgstr "" + +#: sl/SL_Menu.py:291 sl/SL_Menu.py:799 sl/SL_Menu.py:1242 +msgid "List Projects" +msgstr "" + +#: sl/SL_Menu.py:292 sl/SL_Menu.py:800 sl/SL_Menu.py:1257 +msgid "Rename Project" +msgstr "" + +#: sl/SL_Menu.py:293 sl/SL_Menu.py:801 sl/SL_Menu.py:1371 sl/SL_Menu.py:1384 +msgid "Close Project" +msgstr "" + +#: sl/SL_Menu.py:294 sl/SL_Menu.py:802 sl/SL_Menu.py:1401 sl/SL_Menu.py:1414 +msgid "Re-open Project" +msgstr "" + +#: sl/SL_Menu.py:295 sl/SL_Menu.py:803 sl/SL_Menu.py:1431 sl/SL_Menu.py:1445 +msgid "Delete Project" +msgstr "" + +#: sl/SL_Menu.py:296 sl/SL_Menu.py:804 sl/SL_Menu.py:1462 +msgid "List Inactive Projects" +msgstr "" + +#: sl/SL_Menu.py:297 sl/SL_Menu.py:805 +msgid "Demote Project to Task" +msgstr "" + +#: sl/SL_Menu.py:298 sl/SL_Menu.py:806 sl/SL_Menu.py:1524 +msgid "List Completed Projects" +msgstr "" + +#: sl/SL_Menu.py:300 sl/SL_Menu.py:782 sl/SL_Menu.py:817 +msgid "Task Management" +msgstr "" + +#: sl/SL_Menu.py:301 sl/SL_Menu.py:819 sl/SL_Menu.py:1542 sl/SL_Menu.py:1573 +#: sl/SL_Menu.py:1646 +msgid "Add Task" +msgstr "" + +#: sl/SL_Menu.py:304 sl/SL_Menu.py:822 sl/SL_Menu.py:1292 +msgid "List Tasks" +msgstr "" + +#: sl/SL_Menu.py:305 sl/SL_Menu.py:823 sl/SL_Menu.py:1324 +msgid "Rename Task" +msgstr "" + +#: sl/SL_Menu.py:306 sl/SL_Menu.py:824 sl/SL_Menu.py:909 sl/SL_Menu.py:935 +#: sl/SL_Menu.py:1114 +msgid "Close Task" +msgstr "" + +#: sl/SL_Menu.py:307 sl/SL_Menu.py:825 sl/SL_Menu.py:954 sl/SL_Menu.py:980 +msgid "Re-open Task" +msgstr "" + +#: sl/SL_Menu.py:308 sl/SL_Menu.py:826 sl/SL_Menu.py:999 sl/SL_Menu.py:1026 +msgid "Delete Task" +msgstr "" + +#: sl/SL_Menu.py:309 sl/SL_Menu.py:827 sl/SL_Menu.py:1045 sl/SL_Menu.py:1081 +msgid "Move Task" +msgstr "" + +#: sl/SL_Menu.py:310 sl/SL_Menu.py:828 sl/SL_Menu.py:1100 +msgid "List Inactive Tasks" +msgstr "" + +#: sl/SL_Menu.py:311 sl/SL_Menu.py:829 sl/SL_Menu.py:1127 +msgid "List All Closed Tasks" +msgstr "" + +#: sl/SL_Menu.py:312 sl/SL_Menu.py:477 sl/SL_Menu.py:539 sl/SL_Menu.py:626 +#: sl/SL_Menu.py:830 sl/SL_Menu.py:1673 sl/SL_Menu.py:1693 sl/SL_Menu.py:1728 +msgid "Edit Task" +msgstr "" + +#: sl/SL_Menu.py:315 sl/SL_Menu.py:833 sl/SL_Menu.py:1152 +msgid "Delete All Closed Tasks" +msgstr "" + +#: sl/SL_Menu.py:316 sl/SL_Menu.py:834 sl/SL_Menu.py:1194 +msgid "Promote Task to Project" +msgstr "" + +#: sl/SL_Menu.py:319 +msgid "Today View" +msgstr "" + +#: sl/SL_Menu.py:323 sl/SL_Menu.py:405 +msgid "Task Planning" +msgstr "" + +#: sl/SL_Menu.py:327 sl/SL_Menu.py:655 +msgid "E-Mail Task Assignment" +msgstr "" + +#: sl/SL_Menu.py:331 sl/SL_Menu.py:473 sl/SL_Menu.py:535 sl/SL_Menu.py:622 +msgid "Start work on task" +msgstr "" + +#: sl/SL_Menu.py:335 +msgid "Show current work" +msgstr "" + +#: sl/SL_Menu.py:339 +msgid "Stop current work" +msgstr "" + +#: sl/SL_Menu.py:347 sl/SL_Menu.py:845 +msgid "Reporting" +msgstr "" + +#: sl/SL_Menu.py:348 sl/SL_Menu.py:848 +msgid "Daily Report (Today)" +msgstr "" + +#: sl/SL_Menu.py:352 sl/SL_Menu.py:853 sl/SL_Menu.py:2195 +msgid "Daily Report (Specific Day)" +msgstr "" + +#: sl/SL_Menu.py:354 sl/SL_Menu.py:854 sl/SL_Menu.py:2214 +msgid "Date Range Report" +msgstr "" + +#: sl/SL_Menu.py:356 sl/SL_Menu.py:855 sl/SL_Menu.py:2241 sl/SL_Menu.py:2272 +msgid "Detailed Task Report" +msgstr "" + +#: sl/SL_Menu.py:358 sl/SL_Menu.py:856 sl/SL_Menu.py:2300 +msgid "Detailed Project Report" +msgstr "" + +#: sl/SL_Menu.py:360 sl/SL_Menu.py:857 sl/SL_Menu.py:2327 +msgid "Detailed Daily Report" +msgstr "" + +#: sl/SL_Menu.py:364 sl/SL_Menu.py:868 +msgid "Settings" +msgstr "" + +#: sl/SL_Menu.py:371 sl/SL_Menu.py:1897 +msgid "Current Active Work" +msgstr "" + +#: sl/SL_Menu.py:376 sl/SL_Menu.py:497 sl/SL_Menu.py:559 sl/SL_Menu.py:633 +#: sl/SL_Menu.py:1773 +msgid "Done" +msgstr "" + +#: sl/SL_Menu.py:390 +msgid "Edit current task" +msgstr "" + +#: sl/SL_Menu.py:398 +msgid "Exit" +msgstr "" + +#: sl/SL_Menu.py:410 sl/SL_Menu.py:420 +msgid "Tomorrow" +msgstr "" + +#: sl/SL_Menu.py:411 sl/SL_Menu.py:421 +msgid "Weekly overview" +msgstr "" + +#: sl/SL_Menu.py:412 sl/SL_Menu.py:422 +msgid "Overdue tasks" +msgstr "" + +#: sl/SL_Menu.py:413 sl/SL_Menu.py:423 +msgid "Unplanned tasks" +msgstr "" + +#: sl/SL_Menu.py:414 +msgid "All" +msgstr "" + +#: sl/SL_Menu.py:416 +msgid "Filter" +msgstr "" + +#: sl/SL_Menu.py:430 +msgid "Tasks" +msgstr "" + +#: sl/SL_Menu.py:572 +msgid "No tasks found." +msgstr "" + +#: sl/SL_Menu.py:574 sl/SL_Menu.py:648 sl/SL_Menu.py:770 sl/SL_Menu.py:810 +#: sl/SL_Menu.py:838 sl/SL_Menu.py:914 sl/SL_Menu.py:925 sl/SL_Menu.py:959 +#: sl/SL_Menu.py:970 sl/SL_Menu.py:1004 sl/SL_Menu.py:1015 sl/SL_Menu.py:1050 +#: sl/SL_Menu.py:1061 sl/SL_Menu.py:1069 sl/SL_Menu.py:1120 sl/SL_Menu.py:1145 +#: sl/SL_Menu.py:1167 sl/SL_Menu.py:1199 sl/SL_Menu.py:1210 sl/SL_Menu.py:1250 +#: sl/SL_Menu.py:1262 sl/SL_Menu.py:1297 sl/SL_Menu.py:1317 sl/SL_Menu.py:1329 +#: sl/SL_Menu.py:1340 sl/SL_Menu.py:1376 sl/SL_Menu.py:1406 sl/SL_Menu.py:1436 +#: sl/SL_Menu.py:1476 sl/SL_Menu.py:1488 sl/SL_Menu.py:1535 sl/SL_Menu.py:1547 +#: sl/SL_Menu.py:1678 sl/SL_Menu.py:1697 sl/SL_Menu.py:1710 sl/SL_Menu.py:1725 +#: sl/SL_Menu.py:1858 sl/SL_Menu.py:1868 sl/SL_Menu.py:1912 sl/SL_Menu.py:2097 +#: sl/SL_Menu.py:2102 sl/SL_Menu.py:2207 sl/SL_Menu.py:2234 sl/SL_Menu.py:2246 +#: sl/SL_Menu.py:2258 sl/SL_Menu.py:2277 sl/SL_Menu.py:2293 sl/SL_Menu.py:2305 +#: sl/SL_Menu.py:2320 sl/SL_Menu.py:2339 sl/SL_Menu.py:2380 sl/SL_Menu.py:2395 +msgid "Back" +msgstr "" + +#: sl/SL_Menu.py:581 +msgid "Today's Tasks" +msgstr "" + +#: sl/SL_Menu.py:646 +msgid "No tasks for today." +msgstr "" + +#: sl/SL_Menu.py:661 +msgid "Fetching emails..." +msgstr "" + +#: sl/SL_Menu.py:664 +#, python-brace-format +msgid "Error fetching emails: {error}" +msgstr "" + +#: sl/SL_Menu.py:667 +#, python-brace-format +msgid "{count} new tasks created from emails." +msgstr "" + +#: sl/SL_Menu.py:669 +msgid "No new emails found." +msgstr "" + +#: sl/SL_Menu.py:675 +msgid "No unassigned email tasks available." +msgstr "" + +#: sl/SL_Menu.py:687 +msgid "Assign Project" +msgstr "" + +#: sl/SL_Menu.py:698 +msgid "Are you sure you want to delete this task?" +msgstr "" + +#: sl/SL_Menu.py:701 +msgid "Yes, delete" +msgstr "" + +#: sl/SL_Menu.py:706 +msgid "No, cancel" +msgstr "" + +#: sl/SL_Menu.py:713 +msgid "Delete" +msgstr "" + +#: sl/SL_Menu.py:717 +msgid "Edit Details" +msgstr "" + +#: sl/SL_Menu.py:725 sl/SL_Menu.py:1757 +msgid "Task Name" +msgstr "" + +#: sl/SL_Menu.py:734 sl/SL_Menu.py:1761 +msgid "Due Date" +msgstr "" + +#: sl/SL_Menu.py:742 sl/SL_Menu.py:1765 +msgid "Clear" +msgstr "" + +#: sl/SL_Menu.py:749 sl/SL_Menu.py:1634 sl/SL_Menu.py:1804 +msgid "Notes (Markdown)" +msgstr "" + +#: sl/SL_Menu.py:751 sl/SL_Menu.py:1816 +msgid "Save Changes" +msgstr "" + +#: sl/SL_Menu.py:762 +msgid "Task details updated successfully." +msgstr "" + +#: sl/SL_Menu.py:768 +msgid "Error updating task details." +msgstr "" + +#: sl/SL_Menu.py:778 sl/SL_Menu.py:794 +msgid "Project Management" +msgstr "" + +#: sl/SL_Menu.py:787 sl/SL_Menu.py:861 +msgid "Back to Main Menu" +msgstr "" + +#: sl/SL_Menu.py:873 sl/SL_Menu.py:2000 +msgid "Report Format" +msgstr "" + +#: sl/SL_Menu.py:875 sl/SL_Menu.py:2159 +msgid "Email Settings" +msgstr "" + +#: sl/SL_Menu.py:876 sl/SL_Menu.py:2020 +msgid "Change CSS Style" +msgstr "" + +#: sl/SL_Menu.py:877 sl/SL_Menu.py:2058 +msgid "Change View Mode" +msgstr "" + +#: sl/SL_Menu.py:890 +msgid "Add New Project" +msgstr "" + +#: sl/SL_Menu.py:893 +msgid "Name of the project" +msgstr "" + +#: sl/SL_Menu.py:897 +#, python-brace-format +msgid "Project '{name}' added." +msgstr "" + +#: sl/SL_Menu.py:901 sl/SL_Menu.py:947 sl/SL_Menu.py:992 sl/SL_Menu.py:1038 +#: sl/SL_Menu.py:1093 sl/SL_Menu.py:1187 sl/SL_Menu.py:1235 sl/SL_Menu.py:1285 +#: sl/SL_Menu.py:1364 sl/SL_Menu.py:1394 sl/SL_Menu.py:1424 sl/SL_Menu.py:1455 +#: sl/SL_Menu.py:1517 sl/SL_Menu.py:1557 sl/SL_Menu.py:1666 sl/SL_Menu.py:1685 +#: sl/SL_Menu.py:1843 sl/SL_Menu.py:1890 sl/SL_Menu.py:1934 sl/SL_Menu.py:1995 +#: sl/SL_Menu.py:2014 sl/SL_Menu.py:2051 sl/SL_Menu.py:2084 sl/SL_Menu.py:2152 +#: sl/SL_Menu.py:2188 +msgid "Cancel" +msgstr "" + +#: sl/SL_Menu.py:919 sl/SL_Menu.py:964 sl/SL_Menu.py:1009 sl/SL_Menu.py:1204 +#: sl/SL_Menu.py:1267 sl/SL_Menu.py:1302 sl/SL_Menu.py:1334 sl/SL_Menu.py:1383 +#: sl/SL_Menu.py:1413 sl/SL_Menu.py:1443 sl/SL_Menu.py:1863 sl/SL_Menu.py:2251 +#: sl/SL_Menu.py:2312 +msgid "Select Project" +msgstr "" + +#: sl/SL_Menu.py:924 +#, python-brace-format +msgid "No open tasks to close in '{name}'." +msgstr "" + +#: sl/SL_Menu.py:931 sl/SL_Menu.py:976 sl/SL_Menu.py:1021 sl/SL_Menu.py:1075 +#: sl/SL_Menu.py:1216 sl/SL_Menu.py:1344 sl/SL_Menu.py:1700 sl/SL_Menu.py:1874 +#: sl/SL_Menu.py:2282 +msgid "Select Task" +msgstr "" + +#: sl/SL_Menu.py:941 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been closed." +msgstr "" + +#: sl/SL_Menu.py:969 +#, python-brace-format +msgid "No closed tasks to reopen in '{name}'." +msgstr "" + +#: sl/SL_Menu.py:986 +#, python-brace-format +msgid "Task '{sub_name}' in '{main_name}' has been reopened." +msgstr "" + +#: sl/SL_Menu.py:1014 +#, python-brace-format +msgid "No open tasks to delete in '{name}'." +msgstr "" + +#: sl/SL_Menu.py:1025 +msgid "This action cannot be undone." +msgstr "" + +#: sl/SL_Menu.py:1032 +#, python-brace-format +msgid "Task '{sub_name}' deleted from '{main_name}'." +msgstr "" + +#: sl/SL_Menu.py:1055 +msgid "Select Source Project" +msgstr "" + +#: sl/SL_Menu.py:1060 +#, python-brace-format +msgid "No tasks found in '{name}'." +msgstr "" + +#: sl/SL_Menu.py:1068 +msgid "No other projects available to move to." +msgstr "" + +#: sl/SL_Menu.py:1079 sl/SL_Menu.py:1503 +msgid "Select Target Project" +msgstr "" + +#: sl/SL_Menu.py:1087 +#, python-brace-format +msgid "Task '{sub}' moved from '{src}' to '{dst}'." +msgstr "" + +#: sl/SL_Menu.py:1091 +msgid "Error: Could not move task." +msgstr "" + +#: sl/SL_Menu.py:1102 sl/SL_Menu.py:1464 +msgid "Weeks of inactivity" +msgstr "" + +#: sl/SL_Menu.py:1107 +#, python-brace-format +msgid "Inactive Tasks (> {weeks} weeks):" +msgstr "" + +#: sl/SL_Menu.py:1112 sl/SL_Menu.py:1472 +msgid "Last Activity" +msgstr "" + +#: sl/SL_Menu.py:1171 +#, python-brace-format +msgid "" +"Are you sure you want to delete {count} closed tasks? This action cannot be " +"undone." +msgstr "" + +#: sl/SL_Menu.py:1173 +msgid "Show projects to delete" +msgstr "" + +#: sl/SL_Menu.py:1177 +msgid "Delete All" +msgstr "" + +#: sl/SL_Menu.py:1183 +#, python-brace-format +msgid "Successfully deleted {count} tasks." +msgstr "" + +#: sl/SL_Menu.py:1209 +#, python-brace-format +msgid "No open tasks to promote in '{name}'." +msgstr "" + +#: sl/SL_Menu.py:1220 +msgid "" +"This will create a new Project with the task's name and move all time " +"entries to a 'General' task within it." +msgstr "" + +#: sl/SL_Menu.py:1222 +msgid "Promote to Project" +msgstr "" + +#: sl/SL_Menu.py:1261 +msgid "No open projects to rename." +msgstr "" + +#: sl/SL_Menu.py:1270 sl/SL_Menu.py:1349 +msgid "New Name" +msgstr "" + +#: sl/SL_Menu.py:1271 sl/SL_Menu.py:1350 +msgid "Rename" +msgstr "" + +#: sl/SL_Menu.py:1275 sl/SL_Menu.py:1354 +msgid "Please enter a new name." +msgstr "" + +#: sl/SL_Menu.py:1277 sl/SL_Menu.py:1356 +msgid "New name is the same as the old name." +msgstr "" + +#: sl/SL_Menu.py:1279 +#, python-brace-format +msgid "Project '{old_name}' successfully renamed to '{new_name}'." +msgstr "" + +#: sl/SL_Menu.py:1339 +#, python-brace-format +msgid "No open tasks to rename in '{name}'." +msgstr "" + +#: sl/SL_Menu.py:1362 +msgid "Error: Could not rename. The new name might already exist." +msgstr "" + +#: sl/SL_Menu.py:1375 +msgid "No open projects to close." +msgstr "" + +#: sl/SL_Menu.py:1388 +#, python-brace-format +msgid "Project '{name}' has been closed." +msgstr "" + +#: sl/SL_Menu.py:1392 sl/SL_Menu.py:1422 sl/SL_Menu.py:1453 +msgid "Error: Project not found." +msgstr "" + +#: sl/SL_Menu.py:1405 +msgid "No closed projects to reopen." +msgstr "" + +#: sl/SL_Menu.py:1418 +#, python-brace-format +msgid "Project '{name}' has been reopened." +msgstr "" + +#: sl/SL_Menu.py:1444 +msgid "" +"This action cannot be undone. All associated tasks and time entries will be " +"deleted." +msgstr "" + +#: sl/SL_Menu.py:1449 +#, python-brace-format +msgid "Project '{name}' has been deleted." +msgstr "" + +#: sl/SL_Menu.py:1469 +#, python-brace-format +msgid "Inactive Projects (> {weeks} weeks):" +msgstr "" + +#: sl/SL_Menu.py:1474 +#, python-brace-format +msgid "No projects found inactive for more than {weeks} weeks." +msgstr "" + +#: sl/SL_Menu.py:1483 sl/SL_Menu.py:1506 +msgid "Demote Project" +msgstr "" + +#: sl/SL_Menu.py:1495 +msgid "Select Project to Demote" +msgstr "" + +#: sl/SL_Menu.py:1501 +msgid "No other projects available to demote into." +msgstr "" + +#: sl/SL_Menu.py:1504 +#, python-brace-format +msgid "This will convert '{src}' into a task of '{dst}'." +msgstr "" + +#: sl/SL_Menu.py:1529 +msgid "Projects with only closed or no tasks:" +msgstr "" + +#: sl/SL_Menu.py:1533 +msgid "No completed projects found." +msgstr "" + +#: sl/SL_Menu.py:1542 sl/SL_Menu.py:1673 sl/SL_Menu.py:2241 +msgid "Step 1: Select Project" +msgstr "" + +#: sl/SL_Menu.py:1546 sl/SL_Menu.py:1857 +msgid "No open projects found. Please add one first." +msgstr "" + +#: sl/SL_Menu.py:1551 sl/SL_Menu.py:1680 sl/SL_Menu.py:1905 +msgid "Project" +msgstr "" + +#: sl/SL_Menu.py:1553 sl/SL_Menu.py:1681 sl/SL_Menu.py:1705 sl/SL_Menu.py:2253 +msgid "Next" +msgstr "" + +#: sl/SL_Menu.py:1568 sl/SL_Menu.py:2267 +msgid "No project selected. Please start again." +msgstr "" + +#: sl/SL_Menu.py:1573 +msgid "To Project:" +msgstr "" + +#: sl/SL_Menu.py:1594 +msgid "Name of the new task" +msgstr "" + +#: sl/SL_Menu.py:1600 +msgid "Due date" +msgstr "" + +#: sl/SL_Menu.py:1606 sl/SL_Menu.py:1775 +msgid "Recurring" +msgstr "" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "daily" +msgstr "" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "on all business days" +msgstr "" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "weekly" +msgstr "" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "monthly" +msgstr "" + +#: sl/SL_Menu.py:1620 sl/SL_Menu.py:1788 +msgid "userdefined" +msgstr "" + +#: sl/SL_Menu.py:1624 sl/SL_Menu.py:1797 +msgid "Frequency" +msgstr "" + +#: sl/SL_Menu.py:1628 sl/SL_Menu.py:1800 +msgid "Days" +msgstr "" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Edit" +msgstr "" + +#: sl/SL_Menu.py:1632 sl/SL_Menu.py:1802 +msgid "Preview" +msgstr "" + +#: sl/SL_Menu.py:1637 sl/SL_Menu.py:1807 +msgid "No notes provided." +msgstr "" + +#: sl/SL_Menu.py:1642 sl/SL_Menu.py:1812 +msgid "A due date is required for recurring tasks." +msgstr "" + +#: sl/SL_Menu.py:1650 +msgid "Please enter a name." +msgstr "" + +#: sl/SL_Menu.py:1661 +#, python-brace-format +msgid "Task '{sub_name}' added to '{main_name}'." +msgstr "" + +#: sl/SL_Menu.py:1693 sl/SL_Menu.py:2272 +msgid "Step 2: Select Task from" +msgstr "" + +#: sl/SL_Menu.py:1696 +msgid "No open tasks found." +msgstr "" + +#: sl/SL_Menu.py:1724 +msgid "Task not found." +msgstr "" + +#: sl/SL_Menu.py:1840 +msgid "Error: Could not update task." +msgstr "" + +#: sl/SL_Menu.py:1853 +msgid "Start Work on Task" +msgstr "" + +#: sl/SL_Menu.py:1867 +#, python-brace-format +msgid "No open tasks to start work on in '{name}'." +msgstr "" + +#: sl/SL_Menu.py:1878 +msgid "Start Work" +msgstr "" + +#: sl/SL_Menu.py:1906 +msgid "Task" +msgstr "" + +#: sl/SL_Menu.py:1907 +msgid "Started at" +msgstr "" + +#: sl/SL_Menu.py:1918 +msgid "Streamlit Port Settings" +msgstr "" + +#: sl/SL_Menu.py:1922 +msgid "Current Streamlit Port" +msgstr "" + +#: sl/SL_Menu.py:1925 +msgid "New Port" +msgstr "" + +#: sl/SL_Menu.py:1926 sl/SL_Menu.py:1958 sl/SL_Menu.py:2007 sl/SL_Menu.py:2042 +#: sl/SL_Menu.py:2074 sl/SL_Menu.py:2141 sl/SL_Menu.py:2173 +msgid "Save" +msgstr "" + +#: sl/SL_Menu.py:1930 +#, python-brace-format +msgid "Port updated to {port}. Please restart Streamlit." +msgstr "" + +#: sl/SL_Menu.py:1940 +msgid "Change Data Storage Location" +msgstr "" + +#: sl/SL_Menu.py:1943 +msgid "Current data file" +msgstr "" + +#: sl/SL_Menu.py:1946 +msgid "New Path for data file" +msgstr "" + +#: sl/SL_Menu.py:1952 +msgid "Move existing data to the new location" +msgstr "" + +#: sl/SL_Menu.py:1955 +msgid "" +"If unchecked, the old data file will remain, and a new empty one might be " +"created at the new location on restart." +msgstr "" + +#: sl/SL_Menu.py:1962 +msgid "Please enter a new path." +msgstr "" + +#: sl/SL_Menu.py:1970 +msgid "" +"Error: For security, the data file must be located within the application " +"directory." +msgstr "" + +#: sl/SL_Menu.py:1980 +msgid "" +"Storage location updated. Please restart the application for the changes to " +"take effect." +msgstr "" + +#: sl/SL_Menu.py:2006 +msgid "Select Format" +msgstr "" + +#: sl/SL_Menu.py:2011 +msgid "Report format updated." +msgstr "" + +#: sl/SL_Menu.py:2024 +msgid "Current CSS file" +msgstr "" + +#: sl/SL_Menu.py:2041 +msgid "Select CSS File" +msgstr "" + +#: sl/SL_Menu.py:2047 +msgid "" +"CSS style updated. Please restart the application for the changes to take " +"effect." +msgstr "" + +#: sl/SL_Menu.py:2063 +msgid "App Window (Webview)" +msgstr "" + +#: sl/SL_Menu.py:2063 +msgid "System Browser" +msgstr "" + +#: sl/SL_Menu.py:2073 +msgid "Select View Mode" +msgstr "" + +#: sl/SL_Menu.py:2080 +msgid "" +"View mode updated. Please restart the application for the changes to take " +"effect." +msgstr "" + +#: sl/SL_Menu.py:2091 +msgid "Restore Previous Version" +msgstr "" + +#: sl/SL_Menu.py:2096 +msgid "The 'update' module is not available. This feature is disabled." +msgstr "" + +#: sl/SL_Menu.py:2101 +#, python-brace-format +msgid "No previous version backup '{filename}' found." +msgstr "" + +#: sl/SL_Menu.py:2105 +msgid "" +"This will restore the application to the previously backed-up version. The " +"application will then restart. You may need to manually refresh your browser " +"if it does not reconnect automatically." +msgstr "" + +#: sl/SL_Menu.py:2107 +msgid "Restore and Restart" +msgstr "" + +#: sl/SL_Menu.py:2108 +msgid "Restoring and restarting..." +msgstr "" + +#: sl/SL_Menu.py:2111 +msgid "Restore complete. Please restart the application." +msgstr "" + +#: sl/SL_Menu.py:2117 +msgid "Change Language" +msgstr "" + +#: sl/SL_Menu.py:2140 +msgid "Select Language" +msgstr "" + +#: sl/SL_Menu.py:2148 +msgid "" +"Language changed. Please restart the application for the changes to take " +"effect." +msgstr "" + +#: sl/SL_Menu.py:2166 +msgid "Enable email import" +msgstr "" + +#: sl/SL_Menu.py:2167 +msgid "IMAP Server" +msgstr "" + +#: sl/SL_Menu.py:2168 +msgid "Port" +msgstr "" + +#: sl/SL_Menu.py:2169 +msgid "Username" +msgstr "" + +#: sl/SL_Menu.py:2170 +msgid "Password" +msgstr "" + +#: sl/SL_Menu.py:2171 +msgid "Use SSL" +msgstr "" + +#: sl/SL_Menu.py:2184 +msgid "Email settings saved." +msgstr "" + +#: sl/SL_Menu.py:2198 sl/SL_Menu.py:2330 +msgid "Select Date" +msgstr "" + +#: sl/SL_Menu.py:2199 sl/SL_Menu.py:2223 sl/SL_Menu.py:2287 sl/SL_Menu.py:2313 +#: sl/SL_Menu.py:2331 +msgid "Generate Report" +msgstr "" + +#: sl/SL_Menu.py:2219 +msgid "Start Date" +msgstr "" + +#: sl/SL_Menu.py:2221 +msgid "End Date" +msgstr "" + +#: sl/SL_Menu.py:2346 +msgid "Report Result" +msgstr "" + +#: sl/SL_Menu.py:2375 +msgid "Export Report" +msgstr "" diff --git a/tt/TimeTracker.py b/tt/TimeTracker.py index ce2b625..65b182b 100644 --- a/tt/TimeTracker.py +++ b/tt/TimeTracker.py @@ -37,7 +37,7 @@ class TimeTracker: The data is loaded from and saved to a JSON file. """ - VERSION = "3.14" + VERSION = "3.15" STATUS_OPEN = "open" STATUS_CLOSED = "closed" STATUS_DONE = "done"