Initial import from Docker volume

This commit is contained in:
root
2025-12-26 13:11:43 +00:00
commit 4998dc066a
13336 changed files with 1767801 additions and 0 deletions

21
modules/project/__init__.py Executable file
View File

@@ -0,0 +1,21 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
from . import ir, party, timesheet, work
def register():
Pool.register(
# Before Work because status default value is read from WorkStatus
work.WorkStatus,
work.Work,
timesheet.Line,
timesheet.Work,
ir.ActWindow,
module='project', type_='model')
Pool.register(
party.Replace,
party.Erase,
module='project', type_='wizard')

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

12
modules/project/exceptions.py Executable file
View File

@@ -0,0 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model.exceptions import ValidationError
class WorkValidationError(ValidationError):
pass
class WorkProgressValidationError(WorkValidationError):
pass

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M20 6h-4V4c0-1.11-.89-2-2-2h-4c-1.11 0-2 .89-2 2v2H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-6 0h-4V4h4v2z"/>
</svg>

After

Width:  |  Height:  |  Size: 301 B

15
modules/project/ir.py Executable file
View File

@@ -0,0 +1,15 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
class ActWindow(metaclass=PoolMeta):
__name__ = 'ir.action.act_window'
def get_domains(self, name):
domains = super().get_domains(name)
if self.res_model == 'project.work':
pool = Pool()
WorkStatus = pool.get('project.work.status')
domains = WorkStatus.get_window_domains(self)
return domains

317
modules/project/locale/bg.po Executable file
View File

@@ -0,0 +1,317 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Наследници"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Коментар"
#, fuzzy
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Фирма"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Име"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Родител"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Партньор"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Адрес за контакт"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Състояние"
#, fuzzy
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Наличен в график"
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Продължителност"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Ред от график"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Общо усилия"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Вид"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Име"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Вид"
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Предполагаеми общо усилия за тази задача и подзадачите"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Дейност"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
#, fuzzy
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Проект"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Задача"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Основен"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

295
modules/project/locale/ca.po Executable file
View File

@@ -0,0 +1,295 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Fills"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentari"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Esforç"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Pare"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Tercer"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adreça de contacte"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Ruta"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progrés"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Estat"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponible en fulls de treball"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Temps"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Final del full de treball"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Inici del full de treball"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Fulls de treball"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Esforç total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progrés total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipus"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Comptador"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Per defecte"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progrés"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipus"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esforç estimat per aquest treball."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progrés estimat per aquest treball."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Marqueu per registrar temps invertit."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Temps total dedicat en aquest treball i els seus subtreballs."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Esforç total estimat per aquest treball i els seus subtreballs."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progrés total estimat per aquest treball i els seus subtreballs."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Marqueu per mostrar el nombre de treballs en aquest estat."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Marqueu per utilizar com a estat per defecte pel tipus."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "El progrés mínim que es requereix per aquest estat."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Els tipus de treball que poden utilitzar aquest estat."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasques"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projectes"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Arbre de projectes"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasques"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Línies del full de treball"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Projectes i tasques"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Estat del treball"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Arbre de projectes i tasques"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Tot"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"No es pot eliminar el tercer \"%(party)s\" mentre tingui projectes oberts "
"amb l'empresa \"%(company)s\"."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Per completar el treball \"%(work)s\", heu de completar primer tots els seus"
" fills."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Per actualitzar el treball \"%(work)s\" al estat \"%(status)s\", heu "
"d'incrementar el seu progres com a mínim fins a %(progress)s."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
"Per re-obrir el treball \"%(work)s\", heu de re-obrir primer el seu pare "
"\"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Usuari a les empreses"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuració"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projectes"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projectes"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Arbre de projectes"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Informes"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasques"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Projectes i tasques"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Estat del treball"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Arbre de projectes i tasques"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Projecte i tasca"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "Estat del treball"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Finalitzat"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Obert"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administració de projectes"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projecte"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasca"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fi:"
msgctxt "view:project.work:"
msgid "General"
msgstr "General"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Inici:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Full de treball:"

297
modules/project/locale/cs.po Executable file
View File

@@ -0,0 +1,297 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

302
modules/project/locale/de.po Executable file
View File

@@ -0,0 +1,302 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Untergeordnet (Projekte/Projektaufgaben)"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Kommentar"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Unternehmen"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Veranschlagte Zeit"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Name"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Übergeordnet (Projekt/Projektaufgabe)"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Partei"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontaktadresse"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Pfad"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Fortschritt"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Status"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Verfügbar für Zeiterfassung"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Erfasste Zeit"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Zeiterfassung Ende"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Zeiterfassung Beginn"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Aufgaben"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Veranschlagter Gesamtaufwand"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Gesamtfortschritt"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Zählen"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Standard"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Name"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Fortschritt"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Typen"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Geschätzter Zeitaufwand für diese Projektaufgabe."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Geschätzter Fortschritt für diese Projektaufgabe."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Auswählen um Zeiterfassung zu aktivieren."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
"Die gesamte Zeit, die für diese Aufgabe inkl. Unteraufgaben aufgewendet "
"wurde."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
"Geschätzter Zeitaufwand für dieses Projekt oder diese Projektaufgabe "
"inklusive aller untergeordneten Projekte und Projektaufgaben."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
"Geschätzter Gesamtfortschritt für diese Projektaufgabe inkl. Unteraufgaben."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
"Auswählen, um die Anzahl der Projekte/Projektaufgaben mit diesem Status "
"anzuzeigen."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Auswählen, um diesen Status für den Typ als Standard zu verwenden."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "Der minimale Fortschritt, der für diesen Status erforderlich ist."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Die Typen, die diesen Status verwenden können."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Projektaufgabe"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Projektaufgaben"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Zeiterfassungspositionen"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Projektaufgaben Status"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Alle"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Partei \"%(party)s\" kann nicht gelöscht werden solange für sie noch offene "
"Projekte bei Unternehmen \"%(company)s\" bestehen."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Um das Projekt/die Projektaufgabe \"%(work)s\" abschließen zu können, müssen"
" auch alle zugehörigen Unteraufgaben abgeschlossen werden."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Um \"%(work)s\" in den Status \"%(status)s\" setzen zu können, muss der "
"Fortschritt mindestens auf %(progress)s gesetzt werden."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
"Um das Projekt \"%(work)s\" wieder öffnen zu können, muss zuerst das "
"übergeordnete Projekt \"%(parent)s\" wieder geöffnet werden."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Benutzer in Unternehmen"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Einstellungen"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projekte"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Auswertungen"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Projektaufgaben"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Projektaufgabenstatus"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Projekte und Projektaufgaben"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Projekt/Projektaufgabe"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "Projekt Status"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Erledigt"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Offen"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Projekte Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Projektaufgabe"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Ende:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Allgemein"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Start:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Zeiterfassung:"

293
modules/project/locale/es.po Executable file
View File

@@ -0,0 +1,293 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Hijos"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentario"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Esfuerzo"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nombre"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Padre"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Tercero"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Dirección de contacto"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Ruta"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progreso"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Estado"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponible en partes de trabajo"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Tiempo"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Fin de parte de trabajo"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Inicio de parte de trabajo"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Partes de trabajo"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Tiempo total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progreso total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Contador"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Por defecto"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nombre"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progreso"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipos"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esfuerzo estimado para este trabajo."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progreso estimado para este trabajo."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Marcar para registrar el tiempo invertido."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Tiempo total empleado en este trabajo y sus subtrabajos."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progreso total estimado para este trabajo y sus subtrabajos."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Marcar para mostrar el número de trabajos en este estado."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Marcar para usar como estado por defecto para el tipo."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "El progreso mínimo que se requerie para este estado."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Los tipos de trabajo que pueden usar este estado."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tareas"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Proyectos"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Árbol de proyectos"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tareas"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Líneas del parte de trabajo"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Proyectos y tareas"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Estado del trabajo"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Árbol de proyectos y tareas"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Todo"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"No puede eliminar el tercero \"%(party)s\" mientras tenga proyectos abiertos"
" con la empresa \"%(company)s\"."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Para completar el trabajo \"%(work)s\", debe completar primero todos sus "
"hijos."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Para establecer el trabajo \"%(work)s\" en el estado \"%(status)s\", debe "
"incrementar su progreso como mínimo hasta %(progress)s."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr "Para reabrir el trabajo \"%(work)s\", debe reabrir su padre \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Usuario en las empresas"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuración"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Proyectos"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Proyectos"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Árbol de proyectos"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Informes"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tareas"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Proyectos y tareas"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Estado del trabajo"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Árbol de proyectos y tareas"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Proyecto y tarea"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "Estado del trabajo"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Finalizado"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Abierto"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administración de proyectos"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Proyecto"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tarea"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fin:"
msgctxt "view:project.work:"
msgid "General"
msgstr "General"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Inicio:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Parte de trabajo:"

292
modules/project/locale/es_419.po Executable file
View File

@@ -0,0 +1,292 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Duración"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Esfuerzo total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Esfuerzo total estimado para este trabajo y sus subtrabajos"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr ""
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr ""
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr ""
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr ""
msgctxt "view:project.work.status:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

297
modules/project/locale/et.po Executable file
View File

@@ -0,0 +1,297 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Alamjaotus"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Kommentaar"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Ettevõte"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Püüdlus"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nimi"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Ülem"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Osapool"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontaktaadress"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progress"
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Olek"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Ajatabelis saadaval"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Kestvus"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Töögraafiku lõpp"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Töögraafiku algus"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Töögraafiku tööd"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Koku püüdlus"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Kogu progress"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tüüp"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nimi"
#, fuzzy
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progress"
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tüüp"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Ülesanded"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Ülesanded"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Töögraafiku read"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Tööpingutused"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Tööpingutused"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Seadistus"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projektid"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Ülesanded"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Tööpingutused"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Tööpingutused"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Tööpingutused"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Tehtud"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Avatud"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Projekti juhtimine"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Ülesanne"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Lõpp"
msgctxt "view:project.work:"
msgid "General"
msgstr "Peamine"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Algus"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Töögraafik:"

308
modules/project/locale/fa.po Executable file
View File

@@ -0,0 +1,308 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "زیر مجموعه"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "اظهار نظر"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "شرکت"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "تلاش"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "نام"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "منبع"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "نهاد/سازمان"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "آدرس تماس"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "پیشرفت"
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "وضعیت"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "موجود در جدول زمانی"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "مدت زمان"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "پایان جدول زمانی"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "شروع جدول زمانی"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "جدول زمانی کارها"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "مجموع تلاش"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "مجموع پیشرفت ها"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "نوع"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "نام"
#, fuzzy
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "پیشرفت"
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "نوع"
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "تلاش پیش بینی شده برای این کار"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "پیشرفت پیش بینی شده برای این کار"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "کل زمان صرف شده در این کار و زیر کارهای آن"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "برآورد کل تلاش برای این کار و زیرکارهای آن"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "برآورد کل پیشرفت برای این کار و زیرکارهای آن"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "وظایف"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "وظایف"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "خطوط جدول زمانی"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"شما نمیتوانید نهاد/سازمان : \"%(party)s\"را هنگامی که پروژه باز با شرکت : "
"\"%(company)s\"دارد حذف کنید."
#, fuzzy
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"برای بستن کار \"%(parent)s\"، شما باید ابتدا کار زیرمجموعه :\"%(child)s\" را"
" ببندید."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
"برای بازکردن کار \"%(child)s\"، شما باید ابتدا کار منبع:\"%(parent)s\" را "
"باز کنید."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "پیکربندی"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "پروژه ها"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "وظایف"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "تلاش ها کارها"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "تلاش کار"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "انجام شد"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "باز شده"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "مدیریت پروژه"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "پروژه"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "وظیفه"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "پایان :"
msgctxt "view:project.work:"
msgid "General"
msgstr "عمومی"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "شروع :"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "جدول زمانی :"

295
modules/project/locale/fi.po Executable file
View File

@@ -0,0 +1,295 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

295
modules/project/locale/fr.po Executable file
View File

@@ -0,0 +1,295 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Enfants"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Commentaire"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Société"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Effort"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Parent"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Tiers"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adresse"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Chemin"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progression"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Statut"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponible sur les feuilles de présence"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Durée"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Fin de feuille de présence"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Début de feuille de présence"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Feuille de présence des travaux"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Effort total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progression totale"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Compter"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Défaut"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progression"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Types"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Effort estimé pour ce travail."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progression estimée pour ce travail."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Cochez pour enregistrer le temps passé."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Temps total passé sur ce travail et ses sous-travaux."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Effort total estimé pour ce travail et ses sous-travaux."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progression total estimée pour ce travail et ses sous-travaux."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Cochez pour montrer le nombre de travaux dans ce statut."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Cochez pour utiliser comme statut par défaut pour le type."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "La progression minimale requise pour ce statut."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Le type de travaux qui peuvent utiliser ce statut."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tâches"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tâches"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Lignes de feuille de présence"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Statut de travail"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Tous"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Vous ne pouvez pas effacer le tiers « %(party)s » tant qu'il a des projets "
"ouverts avec la société « %(company)s »."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Pour terminer le travail « %(work)s », vous devez également terminer tous "
"ses enfants."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Pour définir le travail « %(work)s » dans le statut « %(status)s », vous "
"devez augmenter sa progression jusqu'à au moins %(progress)s."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
"Pour rouvrir le travail « %(work)s », vous devez également rouvrir son "
"parent « %(parent)s »."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Utilisateur dans les sociétés"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projets"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Rapports"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tâches"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Statut de travail"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Efforts de travail"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Effort de travail"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "Statut de travail"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Terminé"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Ouvert"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administration des projets"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projet"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tâche"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fin :"
msgctxt "view:project.work:"
msgid "General"
msgstr "Général"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Début :"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Feuilles de présence :"

309
modules/project/locale/hu.po Executable file
View File

@@ -0,0 +1,309 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Gyermek (csomag)"
#, fuzzy
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Megjegyzés"
#, fuzzy
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Társaság"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Név"
#, fuzzy
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Szülő (csomag)"
#, fuzzy
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Partner"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Állapot"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Időtartam"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Időkövetés vége"
#, fuzzy
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Időkövetés kezdete"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Típus"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Név"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Típus"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Beállítások"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Kész"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

288
modules/project/locale/id.po Executable file
View File

@@ -0,0 +1,288 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Cabang"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Komentar"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Perusahaan"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nama"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Induk"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Pihak"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nama"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr ""
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Konfigurasi"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Pelaporan"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tugas"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr ""
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr ""
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr ""
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Umum"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Mulai:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

300
modules/project/locale/it.po Executable file
View File

@@ -0,0 +1,300 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Figlio"
#, fuzzy
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Commento"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Azienda"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Padre"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Controparte"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Indirizzo contatto"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Percorso"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progresso"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Stato"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponibile sul registro delle attività"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Durata"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipo"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configurazione"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Fatto"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
#, fuzzy
msgctxt "view:project.work:"
msgid "General"
msgstr "Generale"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

310
modules/project/locale/lo.po Executable file
View File

@@ -0,0 +1,310 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "ໝວດຍ່ອຍ"
#, fuzzy
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "ຄໍາເຫັນ"
#, fuzzy
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "ຫ້ອງການ/ສຳນັກງານ"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "ຊື່"
#, fuzzy
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "ຮ່ວງ"
#, fuzzy
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "ພາກສ່ວນ"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "ສະຖານະ"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "ກຳນົດເວລາ"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "ຕາຕະລາງເຮັດວຽກຈົບເວລາ"
#, fuzzy
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "ຕາຕະລາງເຮັດວຽກເລີ້ມເວລາ"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "ຮູບແບບ"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "ຊື່"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "ຮູບແບບ"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "ການຕັ້ງຄ່າ"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "ແລ້ວໆ"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
#, fuzzy
msgctxt "view:project.work:"
msgid "General"
msgstr "ທົ່ວໄປ"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

297
modules/project/locale/lt.po Executable file
View File

@@ -0,0 +1,297 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Komentaras"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Organizacija"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
#, fuzzy
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Kontrahentas"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontaktinis adresas"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Namu"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Nuostatos"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

295
modules/project/locale/nl.po Executable file
View File

@@ -0,0 +1,295 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Onderliggende niveaus"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Opmerking"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Bedrijf"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Inspanning"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Naam"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Bovenliggend niveau"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Relatie"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "contact adres"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Pad"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Vooruitgang"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Status"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Beschikbaar in tijdregistartie"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Looptijd"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Einde urenstaat"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Start urenstaat"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Tijdsregistratie werken"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Totale inspanning"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Totale vooruitgang"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Type"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Tellen"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Standaard"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Naam"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Vooruitgang"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Types"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Geschatte inspanning voor dit werk."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Geschatte voortgang voor dit werk."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Vink aan om de bestede tijd te registreren."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Totale tijd besteed aan dit werk en de subwerken."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Geschatte totale inspanning voor dit werk en de subwerken."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Geschatte totale voortgang voor dit werk en de subwerken."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Vink aan om het aantal werken in deze status te tonen."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Vink aan om als standaardstatus voor het type te gebruiken."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "De minimaal vereiste voortgang voor deze status."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Het soort werken dat deze status kan gebruiken."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "taken"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "taken"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Tijdregistratieregel"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Werk status"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Alle"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"U kunt de relatie \"%(party)s\" niet verwijderen terwijl ze facturen in "
"behandeling hebben bij bedrijf \"%(company)s\"."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Om het werk \"%(work)s\" te voltooien, moet u ook al zijn kinderen "
"voltooien."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Om werk \"%(work)s\" in te stellen op \"%(status)s\" status, moet u de "
"progressie (vooruitgang) verhogen tot minstens %(progress)s."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
"Om werk \"%(work)s\" opnieuw te openen, moet u ook het bovenliggende niveau "
"\"%(parent)s\" opnieuw openen."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Gebruiker in het bedrijf"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuratie"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projecten"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "projecten"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Rapportage"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "taken"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Werk status"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Werkt inspanningen"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Arbeidsinspanning"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "Werk status"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Klaar"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Open"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Taak"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Einde:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Algemeen"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Begin:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Tijdsregistratie:"

308
modules/project/locale/pl.po Executable file
View File

@@ -0,0 +1,308 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Elementy podrzędne"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Komentarz"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Firma"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nazwa"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Element nadrzędny"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Strona"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adres kontaktu"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Postęp"
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Stan"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Czas trwania"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Typ"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nazwa"
#, fuzzy
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Postęp"
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Typ"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Konfiguracja"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Raportowanie"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
#, fuzzy
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Zadanie"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Ogólne"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

306
modules/project/locale/pt.po Executable file
View File

@@ -0,0 +1,306 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Filhos"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentário"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Esforço"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Nome"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Pai"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Parceiro"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Endereço de contato"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progresso"
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Estado"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponível em quadros de tempo"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Duração"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Fim do Horário de Trabalho"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Início do Horário de Trabalho"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Horários de Trabalho"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Esforço total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progresso Total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tipo"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nome"
#, fuzzy
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progresso"
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipo"
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Esforço estimado para este trabalho"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Esforço estimado para este trabalho"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Tempo total gasto nesta tarefa e nas sub-tarefas"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "O esforço total estimado para este trabalho e tarefas secundárias"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "O progresso total estimado para esta tarefa e para suas sub-tarefas."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tarefas"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tarefas"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Linhas de Horário de Trabalho"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Esforços de trabalhos"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Esforços de trabalhos"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Você não pode remover a pessoa \"%(party)s\" enquanto ela tiver projetos em "
"aberto com a empresa \"%(company)s\"."
#, fuzzy
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Para fechar o trabalho \"%(parent)s\", você precisa fechar o trabalho "
"\"%(child)s\"."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr "Para abrir o trabalho \"%(child)s\", você precisa abrir \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuração"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projetos"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tarefas"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Esforços de Trabalhos"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Esforços de Trabalhos"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Esforço do trabalho"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Concluído"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Aberto"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administração de Projetos"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projeto"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tarefa"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Fim:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Geral"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Início:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Quadro de Tempo:"

301
modules/project/locale/ro.po Executable file
View File

@@ -0,0 +1,301 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Copii"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Comentariu"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Companie"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Efort"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Denumire"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Părinte"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Parte"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Adresa de Contact"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Cale"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Progres"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Stare"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Disponibil pe foile de pontaj"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Durata"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Sfârșitul foii de pontaj"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Început foaie de pontaj"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Efort total"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Progres total"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Tip"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Implicit"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Nume"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Progres"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Tipuri"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Efort estimat pentru această lucrare."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Progresul estimat pentru această lucrare."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Bifați pentru a înregistra timpul petrecut."
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Timpul total petrecut cu această lucrare și sub-lucrări."
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Efort total estimat pentru această lucrare și sublucrări."
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Progresul total estimat pentru această lucrare și sublucrări."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Bifați pentru a afișa numărul de lucrări în această stare."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Bifați pentru a utiliza ca stare implicită pentru tip."
#, fuzzy
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "Progresul minim necesar pentru acest statut."
#, fuzzy
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Tipul de lucrări care pot folosi acest statut."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Sarcini"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Sarcini"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Rânduri Foaie Pontaj"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Starea de lucru"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Tot"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Nu puteți șterge partea „%(party)s” în timp ce au proiecte deschise cu "
"compania „%(company)s”."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Pentru a seta lucrarea „%(work)s” în starea „%(status)s”, trebuie să-i "
"măriți progresul până la cel puțin %(progress)s."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Utilizator în companii"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configurare"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Proiecte"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Raportare"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Sarcini"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Starea Lucrării"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Efort de muncă"
#, fuzzy
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "Starea Lucrării"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Terminat"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Deschis"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Administrare Proiect"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Proiect"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Sarcina"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Sfârşit:"
msgctxt "view:project.work:"
msgid "General"
msgstr "General"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Start:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Foaie de pontaj:"

316
modules/project/locale/ru.po Executable file
View File

@@ -0,0 +1,316 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Подчиненый"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Комментарии"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Организация"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Наименование"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Предок"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Контрагент"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Контактный адрес"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Состояние"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Доступно в табелях"
#, fuzzy
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Продолжительность"
#, fuzzy
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Конечная дата табеля"
#, fuzzy
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Начальная дата табеля"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Общие затраты"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Тип"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Наименование"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
#, fuzzy
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Тип"
#, fuzzy
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
#, fuzzy
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
#, fuzzy
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
#, fuzzy
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
#, fuzzy
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Предположительные общие затраты для этой работы и подчиненных работ"
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
#, fuzzy
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Рабочие затраты"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
#, fuzzy
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Проект"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Задача"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
#, fuzzy
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr "Основной"
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

295
modules/project/locale/sl.po Executable file
View File

@@ -0,0 +1,295 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Podnaloge"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Opomba"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Družba"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "Porabljen čas"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "Naziv"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "Matičnia dejavnost"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "Partner"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "Kontakt"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr "Pot"
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "Napredek"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "Status"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "Na evidenci"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "Trajanje"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "Konec evidence"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "Začetek evidence"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "Evidentirane naloge"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "Ocena skupaj"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "Napredek skupaj"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "Vrsta"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "Število"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "Privzeto"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "Naziv"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "Napredek"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "Vrsta"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "Ocenjen čas za to nalogo."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "Ocenjen napredek za to nalogo."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr "Označite za beleženje porabljenega časa."
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "Skupni čas, porabljen na tej nalogi in podnalogami."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "Skupen čas, porabljen za to nalogo in podnaloge."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "Skupen napredek za to nalogo in podnaloge."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "Označi za prikaz števila nalog v tem stanju."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "Označi za uporabo kot privzetega stanja za vrsto."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "Minimalno napredovanje potrebno za to stanje."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "Vrsta naloge, ki sme uporabljati to stanje."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Naloge"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Naloge"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Vrstice urnika"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "Stanje dela"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "Vse"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
"Ni mogoče izbrisati partnerja \"%(party)s\", dokler so nanj vezani odpri "
"projekti z družbo \"%(company)s\"."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
"Za zaključek dela \"%(work)s\", je potrebno zaključiti tudi podrejene "
"elemente."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
"Če želite nastaviti delo »%(work)s« v stanje »%(status)s«, mora biti njegov "
"napredek vsaj %(progress)s."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
"Če želite znova odpreti delo \"%(work)s\", je potrebno znova odpreti tudi "
"njegov matični zapis \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Uporabnik v družbah"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Konfiguracija"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projekti"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Poročanje"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Naloge"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "Stanje dela"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Delovna prizadevanja"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Ocena naloge"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "Stanje dela"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Zaključeno"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Odprto"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Skrbištvo projektov"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Projekt"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Naloga"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "Konec:"
msgctxt "view:project.work:"
msgid "General"
msgstr "Splošno"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "Začetek:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "Urnik:"

294
modules/project/locale/tr.po Executable file
View File

@@ -0,0 +1,294 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "Alt Öge"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "Açıklama"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "Firma"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "Timesheet Lines"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Configuration"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "Projects"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "Tasks"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "Works Efforts"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "Works Efforts"
#, fuzzy
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "Works Efforts"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
#, fuzzy
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "Done"
#, fuzzy
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "Opened"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "Project Administration"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "Project"
#, fuzzy
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "Tasks"
#, fuzzy
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

287
modules/project/locale/uk.po Executable file
View File

@@ -0,0 +1,287 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr ""
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr ""
msgctxt "field:project.work,company:"
msgid "Company"
msgstr ""
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr ""
msgctxt "field:project.work,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:project.work,party:"
msgid "Party"
msgstr ""
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr ""
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work,status:"
msgid "Status"
msgstr ""
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr ""
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr ""
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr ""
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr ""
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr ""
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr ""
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr ""
msgctxt "field:project.work,type:"
msgid "Type"
msgstr ""
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr ""
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr ""
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr ""
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr ""
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr ""
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr ""
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr ""
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr ""
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr ""
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr ""
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr ""
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr ""
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr ""
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr ""
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr ""
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr ""
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr ""
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr "Користувач у компаніях"
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "Налаштування"
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "Звітність"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr ""
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr ""
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr ""
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr ""
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr ""
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr ""
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr ""
msgctxt "view:project.work.status:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "%"
msgstr ""
msgctxt "view:project.work:"
msgid "End:"
msgstr ""
msgctxt "view:project.work:"
msgid "General"
msgstr ""
msgctxt "view:project.work:"
msgid "Start:"
msgstr ""
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr ""

288
modules/project/locale/zh_CN.po Executable file
View File

@@ -0,0 +1,288 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:project.work,children:"
msgid "Children"
msgstr "子工作"
msgctxt "field:project.work,comment:"
msgid "Comment"
msgstr "说明"
msgctxt "field:project.work,company:"
msgid "Company"
msgstr "公司"
msgctxt "field:project.work,effort_duration:"
msgid "Effort"
msgstr "投入"
msgctxt "field:project.work,name:"
msgid "Name"
msgstr "名称"
msgctxt "field:project.work,parent:"
msgid "Parent"
msgstr "父工作"
msgctxt "field:project.work,party:"
msgid "Party"
msgstr "参与者"
msgctxt "field:project.work,party_address:"
msgid "Contact Address"
msgstr "联系地址"
msgctxt "field:project.work,path:"
msgid "Path"
msgstr ""
msgctxt "field:project.work,progress:"
msgid "Progress"
msgstr "进度"
msgctxt "field:project.work,status:"
msgid "Status"
msgstr "状态"
msgctxt "field:project.work,timesheet_available:"
msgid "Available on timesheets"
msgstr "在时间表上显示"
msgctxt "field:project.work,timesheet_duration:"
msgid "Duration"
msgstr "工期"
msgctxt "field:project.work,timesheet_end_date:"
msgid "Timesheet End"
msgstr "时间表结束"
msgctxt "field:project.work,timesheet_start_date:"
msgid "Timesheet Start"
msgstr "时间表开始"
msgctxt "field:project.work,timesheet_works:"
msgid "Timesheet Works"
msgstr "时间表工作"
msgctxt "field:project.work,total_effort:"
msgid "Total Effort"
msgstr "总投入"
msgctxt "field:project.work,total_progress:"
msgid "Total Progress"
msgstr "总进度"
msgctxt "field:project.work,type:"
msgid "Type"
msgstr "类型"
msgctxt "field:project.work.status,count:"
msgid "Count"
msgstr "计数"
msgctxt "field:project.work.status,default:"
msgid "Default"
msgstr "默认"
msgctxt "field:project.work.status,name:"
msgid "Name"
msgstr "名称"
msgctxt "field:project.work.status,progress:"
msgid "Progress"
msgstr "进度"
msgctxt "field:project.work.status,types:"
msgid "Types"
msgstr "类型"
msgctxt "help:project.work,effort_duration:"
msgid "Estimated Effort for this work."
msgstr "这项工作的估计工作量."
msgctxt "help:project.work,progress:"
msgid "Estimated progress for this work."
msgstr "这项工作的估计进度."
msgctxt "help:project.work,timesheet_available:"
msgid "Check to record time spent."
msgstr ""
msgctxt "help:project.work,timesheet_duration:"
msgid "Total time spent on this work and the sub-works."
msgstr "这项工作和其子工作的总投入时间."
msgctxt "help:project.work,total_effort:"
msgid "Estimated total effort for this work and the sub-works."
msgstr "这项工作和其子工作的估计总工作量."
msgctxt "help:project.work,total_progress:"
msgid "Estimated total progress for this work and the sub-works."
msgstr "这项工作和其子工作的估计总进度."
msgctxt "help:project.work.status,count:"
msgid "Check to show the number of works in this status."
msgstr "选中可显示此状态下的工作数."
msgctxt "help:project.work.status,default:"
msgid "Check to use as default status for the type."
msgstr "选中后,将用作此种类型的默认状态."
msgctxt "help:project.work.status,progress:"
msgid "The minimum progress required for this status."
msgstr "此状态要求的最小进度."
msgctxt "help:project.work.status,types:"
msgid "The type of works which can use this status."
msgstr "可以使用此状态的工作类型."
msgctxt "model:ir.action,name:act_open_child_work"
msgid "Tasks"
msgstr "任务"
msgctxt "model:ir.action,name:act_project_form"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.action,name:act_project_tree"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.action,name:act_task_form"
msgid "Tasks"
msgstr "任务"
msgctxt "model:ir.action,name:act_timesheet_line_form_work"
msgid "Timesheet Lines"
msgstr "时间表明细"
msgctxt "model:ir.action,name:act_work_list"
msgid "Works Efforts"
msgstr "工作量"
msgctxt "model:ir.action,name:act_work_status"
msgid "Work Status"
msgstr "工作状态"
msgctxt "model:ir.action,name:act_work_tree"
msgid "Works Efforts"
msgstr "工作量"
msgctxt "model:ir.message,text:msg_domain_all"
msgid "All"
msgstr "所有"
msgctxt "model:ir.message,text:msg_erase_party_opened_project"
msgid ""
"You cannot erase party \"%(party)s\" while they have opened projects with "
"company \"%(company)s\"."
msgstr "无法清除参与者 \"%(party)s\" 因为他们与公司 \"%(company)s\" 有未完成项目."
msgctxt "model:ir.message,text:msg_work_children_progress"
msgid "To complete work \"%(work)s\" you must complete also all its children."
msgstr "如果要完成工作 \"%(work)s\",你必须完成它的所有子工作."
msgctxt "model:ir.message,text:msg_work_invalid_progress_status"
msgid ""
"To set work \"%(work)s\" in \"%(status)s\" status, you must increase its "
"progress up to at least %(progress)s."
msgstr "如果要设置工作 \"%(work)s\" 的状态为 \"%(status)s\",你必须将其进度推进到至少 %(progress)s."
msgctxt "model:ir.message,text:msg_work_parent_progress"
msgid "To re-open work \"%(work)s\" you must re-open also its parent \"%(parent)s\"."
msgstr "如果要重新开启工作 \"%(work)s\",你首先必须重新开启它的父工作 \"%(parent)s\"."
msgctxt "model:ir.rule.group,name:rule_group_work_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_configuration"
msgid "Configuration"
msgstr "设置"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_project"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.ui.menu,name:menu_project_form"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.ui.menu,name:menu_project_tree"
msgid "Projects"
msgstr "项目"
msgctxt "model:ir.ui.menu,name:menu_reporting"
msgid "Reporting"
msgstr "报告"
msgctxt "model:ir.ui.menu,name:menu_task_form"
msgid "Tasks"
msgstr "任务"
msgctxt "model:ir.ui.menu,name:menu_work_list"
msgid "Works Efforts"
msgstr "工作量"
msgctxt "model:ir.ui.menu,name:menu_work_status"
msgid "Work Status"
msgstr "工作状态"
msgctxt "model:ir.ui.menu,name:menu_work_tree"
msgid "Works Efforts"
msgstr "工作量"
msgctxt "model:project.work,name:"
msgid "Work Effort"
msgstr "工作量"
msgctxt "model:project.work.status,name:"
msgid "Work Status"
msgstr "工作状态"
msgctxt "model:project.work.status,name:work_done_status"
msgid "Done"
msgstr "完成"
msgctxt "model:project.work.status,name:work_open_status"
msgid "Open"
msgstr "开启"
msgctxt "model:res.group,name:group_project_admin"
msgid "Project Administration"
msgstr "项目管理"
msgctxt "selection:project.work,type:"
msgid "Project"
msgstr "项目"
msgctxt "selection:project.work,type:"
msgid "Task"
msgstr "任务"
msgctxt "view:project.work.status:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "%"
msgstr "%"
msgctxt "view:project.work:"
msgid "End:"
msgstr "结束:"
msgctxt "view:project.work:"
msgid "General"
msgstr "常规"
msgctxt "view:project.work:"
msgid "Start:"
msgstr "开始:"
msgctxt "view:project.work:"
msgid "Timesheet:"
msgstr "时间表:"

22
modules/project/message.xml Executable file
View File

@@ -0,0 +1,22 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data grouped="1">
<record model="ir.message" id="msg_work_invalid_progress_status">
<field name="text">To set work "%(work)s" in "%(status)s" status, you must increase its progress up to at least %(progress)s.</field>
</record>
<record model="ir.message" id="msg_work_children_progress">
<field name="text">To complete work "%(work)s" you must complete also all its children.</field>
</record>
<record model="ir.message" id="msg_work_parent_progress">
<field name="text">To re-open work "%(work)s" you must re-open also its parent "%(parent)s".</field>
</record>
<record model="ir.message" id="msg_erase_party_opened_project">
<field name="text">You cannot erase party "%(party)s" while they have opened projects with company "%(company)s".</field>
</record>
<record model="ir.message" id="msg_domain_all">
<field name="text">All</field>
</record>
</data>
</tryton>

35
modules/project/party.py Executable file
View File

@@ -0,0 +1,35 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.i18n import gettext
from trytond.modules.party.exceptions import EraseError
from trytond.pool import Pool, PoolMeta
class Replace(metaclass=PoolMeta):
__name__ = 'party.replace'
@classmethod
def fields_to_replace(cls):
return super().fields_to_replace() + [
('project.work', 'party'),
]
class Erase(metaclass=PoolMeta):
__name__ = 'party.erase'
def check_erase_company(self, party, company):
pool = Pool()
Work = pool.get('project.work')
super().check_erase_company(party, company)
works = Work.search([
('party', '=', party.id),
('company', '=', company.id),
('progress', '!=', 1),
])
if works:
raise EraseError(
gettext('project.msg_erase_party_opened_project',
party=party.rec_name,
company=company.rec_name))

40
modules/project/project.xml Executable file
View File

@@ -0,0 +1,40 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="res.group" id="group_project_admin">
<field name="name">Project Administration</field>
</record>
<record model="res.user-res.group" id="user_admin_group_project_admin">
<field name="user" ref="res.user_admin"/>
<field name="group" ref="group_project_admin"/>
</record>
<record model="ir.ui.icon" id="project_icon">
<field name="name">tryton-project</field>
<field name="path">icons/tryton-project.svg</field>
</record>
<menuitem
name="Projects"
sequence="100"
id="menu_project"
icon="tryton-project"/>
<menuitem
name="Configuration"
parent="menu_project"
sequence="0"
id="menu_configuration"
icon="tryton-settings"/>
<record model="ir.ui.menu-res.group"
id="menu_configuration_group_project_admin">
<field name="menu" ref="menu_configuration"/>
<field name="group" ref="group_project_admin"/>
</record>
<menuitem
name="Reporting"
parent="menu_project"
sequence="100"
id="menu_reporting"/>
</data>
</tryton>

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

Binary file not shown.

View File

@@ -0,0 +1,91 @@
=======================
Project Status Scenario
=======================
Imports::
>>> from proteus import Model
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.tests.tools import activate_modules, assertEqual
Activate project::
>>> config = activate_modules('project')
Create a company::
>>> _ = create_company()
Create status::
>>> WorkStatus = Model.get('project.work.status')
>>> in_progress = WorkStatus(name="In-Progress", types=['project'])
>>> in_progress.progress = 0.1
>>> in_progress.save()
>>> open, = WorkStatus.find([('name', '=', "Open")])
>>> done, = WorkStatus.find([('name', '=', "Done")])
Create a project with a task::
>>> Work = Model.get('project.work')
>>> project = Work(type='project', name="Project")
>>> assertEqual(project.status, open)
>>> task = project.children.new(name="Task")
>>> assertEqual(task.status, open)
>>> project.save()
>>> task, = project.children
Open the project::
>>> project.status = in_progress
>>> project.progress
0.1
>>> project.save()
Try to complete project without task::
>>> project.status = done
>>> project.progress
1.0
>>> project.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
>>> task, = project.children
>>> task.progress = 1
>>> project.save()
Try to re-open task without project::
>>> task = Work(task.id)
>>> task.progress = 0.5
>>> task.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
Change progress with updating status::
>>> project.progress = 0.8
>>> project.save()
Traceback (most recent call last):
...
WorkProgressValidationError: ...
>>> project.status = in_progress
>>> project.save()
Re-open task::
>>> task = Work(task.id)
>>> task.progress = 0.5
>>> task.save()
Copy the project::
>>> project_copy, = project.duplicate()
>>> assertEqual(project_copy.status, open)
>>> project_copy.progress

View File

@@ -0,0 +1,204 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
from trytond.modules.company.tests import (
CompanyTestMixin, PartyCompanyCheckEraseMixin, create_company, set_company)
from trytond.pool import Pool
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
from trytond.transaction import Transaction
class ProjectTestCase(
PartyCompanyCheckEraseMixin, CompanyTestMixin, ModuleTestCase):
'Test Project module'
module = 'project'
@with_transaction()
def test_sum_tree(self):
'Test sum_tree'
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
p_work_1, = ProjectWork.create([{
'name': 'Work 1',
'company': company.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1, = ProjectWork.create([{
'name': 'Work 1 1',
'company': company.id,
'parent': p_work_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_2, = ProjectWork.create([{
'name': 'Work 1 2',
'company': company.id,
'parent': p_work_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1_1, = ProjectWork.create([{
'name': 'Work 1 1 1',
'company': company.id,
'parent': p_work_1_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1_2, = ProjectWork.create([{
'name': 'Work 1 1 2',
'company': company.id,
'parent': p_work_1_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
p_work_1_1_3, = ProjectWork.create([{
'name': 'Work 1 1 3',
'company': company.id,
'parent': p_work_1_1.id,
'effort_duration': datetime.timedelta(hours=1),
}])
for work, total_effort in (
(p_work_1, 6),
(p_work_1_1, 4),
(p_work_1_2, 1),
(p_work_1_1_1, 1),
(p_work_1_1_2, 1),
(p_work_1_1_3, 1),
):
self.assertEqual(work.total_effort,
datetime.timedelta(hours=total_effort))
@with_transaction()
def test_timesheet_available(self):
'Test timesheet available'
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = 'Project Work'
p_work.save()
self.assertFalse(p_work.timesheet_works)
p_work.timesheet_available = True
p_work.save()
self.assertEqual(len(p_work.timesheet_works), 1)
p_work.timesheet_available = False
p_work.save()
self.assertFalse(p_work.timesheet_works)
@with_transaction(context={'_check_access': True})
def test_delete_access(self):
'Test delete_access'
pool = Pool()
User = pool.get('res.user')
Group = pool.get('res.group')
ModelData = pool.get('ir.model.data')
ProjectWork = pool.get('project.work')
TimesheetWork = pool.get('timesheet.work')
company = create_company()
with set_company(company):
project_user = User()
project_user.login = 'project'
project_user.companies = [company]
project_user.company = company
project_group = Group(ModelData.get_id(
'project', 'group_project_admin'))
project_user.groups = [project_group]
project_user.save()
with Transaction().set_user(project_user.id):
p_work = ProjectWork()
p_work.name = 'Project Work'
p_work.timesheet_available = True
p_work.save()
self.assertEqual(len(p_work.timesheet_works), 1)
ProjectWork.delete([p_work])
self.assertEqual(TimesheetWork.search([]), [])
@with_transaction()
def test_timesheet_default_work_empty(self):
"Test timesheet default work with no context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = "Work"
p_work.timesheet_available = True
p_work.save()
self.assertFalse(TimesheetLine.default_work())
@with_transaction()
def test_timesheet_default_work_single(self):
"Test timesheet default work with 1 work in context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
p_work = ProjectWork()
p_work.name = "Work"
p_work.timesheet_available = True
p_work.save()
with Transaction().set_context({'project.work': [p_work.id]}):
self.assertEqual(
TimesheetLine.default_work(),
p_work.timesheet_works[0].id)
@with_transaction()
def test_timesheet_default_work_multiple(self):
"Test timesheet default work with multiple work in context"
pool = Pool()
ProjectWork = pool.get('project.work')
TimesheetLine = pool.get('timesheet.line')
company = create_company()
with set_company(company):
works = ProjectWork.create([
{'name': "Work 1", 'timesheet_available': True},
{'name': "Work 2", 'timesheet_available': True},
])
with Transaction().set_context(
{'project.work': map(int, works)}):
self.assertFalse(TimesheetLine.default_work())
@with_transaction()
def test_copy_work_with_children(self):
"Test copy work with children"
pool = Pool()
ProjectWork = pool.get('project.work')
company = create_company()
with set_company(company):
work, = ProjectWork.create([
{'name': "Parent", 'children': [('create', [
{'name': "Work 1", 'timesheet_available': True},
{'name': "Work 2", 'timesheet_available': False},
])]}])
new_work, = ProjectWork.copy([work])
child1, child2 = new_work.children
self.assertTrue(child1.timesheet_available)
self.assertFalse(child2.timesheet_available)
del ModuleTestCase

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

41
modules/project/timesheet.py Executable file
View File

@@ -0,0 +1,41 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool, PoolMeta
from trytond.transaction import Transaction
class Line(metaclass=PoolMeta):
__name__ = 'timesheet.line'
@classmethod
def default_work(cls):
pool = Pool()
Work = pool.get('timesheet.work')
try:
default = super().default_work()
except AttributeError:
default = None
project_works = Transaction().context.get('project.work')
if project_works is not None:
works = Work.search([
('origin.id', 'in', project_works, 'project.work'),
])
if len(works) == 1:
default = works[0].id
return default
class Work(metaclass=PoolMeta):
__name__ = 'timesheet.work'
@classmethod
def _get_origin(cls):
return super()._get_origin() + ['project.work']
def _validate_company(self):
pool = Pool()
ProjectWork = pool.get('project.work')
result = super()._validate_company()
if isinstance(self.origin, ProjectWork):
result &= self.company == self.origin.company
return result

24
modules/project/timesheet.xml Executable file
View File

@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.action.act_window" id="act_timesheet_line_form_work">
<field name="name">Timesheet Lines</field>
<field name="res_model">timesheet.line</field>
<field name="domain"
eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('work.origin.id', '=', Eval('active_id'), 'project.work'), ('work.origin.id', 'in', Eval('active_ids'), 'project.work'))]"
pyson="1"/>
<field
name="context"
eval="{'project.work': Eval('active_ids')}"
pyson="1"/>
</record>
<record model="ir.action.keyword"
id="act_timesheet_line_form_work_keyword1">
<field name="keyword">form_relate</field>
<field name="model">project.work,-1</field>
<field name="action" ref="act_timesheet_line_form_work"/>
</record>
</data>
</tryton>

13
modules/project/tryton.cfg Executable file
View File

@@ -0,0 +1,13 @@
[tryton]
version=7.2.1
depends:
company
company_work_time
ir
party
timesheet
xml:
project.xml
work.xml
timesheet.xml
message.xml

View File

@@ -0,0 +1,59 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form col="6">
<label name="name"/>
<field name="name" colspan="3"/>
<label name="parent"/>
<field name="parent"/>
<label name="type"/>
<field name="type"/>
<label name="company"/>
<field name="company"/>
<label name="sequence"/>
<field name="sequence"/>
<label name="party"/>
<field name="party"/>
<label name="party_address"/>
<field name="party_address"/>
<notebook colspan="8">
<page string="General" id="general" col="6">
<label name="timesheet_available" string="Timesheet:"/>
<group col="-1" id="timesheet">
<field name="timesheet_available" xexpand="0"/>
<label name="timesheet_start_date" string="Start:"/>
<field name="timesheet_start_date" xexpand="0"/>
<label name="timesheet_end_date" string="End:"/>
<field name="timesheet_end_date" xexpand="0"/>
</group>
<newline/>
<label name="effort_duration"/>
<field name="effort_duration"/>
<label name="progress"/>
<group col="2" id="progress">
<field name="progress" factor="100" xexpand="0"/>
<label name="progress" string="%" xalign="0.0" xexpand="1"/>
</group>
<newline/>
<label name="timesheet_duration"/>
<field name="timesheet_duration"/>
<label name="total_effort"/>
<field name="total_effort"/>
<newline/>
<separator name="comment" colspan="6"/>
<field name="comment" colspan="6"/>
<group col="4" colspan="6" id="status_buttons">
<group col="2" colspan="2" id="status">
<label name="status"/>
<field name="status" widget="selection"/>
</group>
<group col="-1" colspan="2" id="buttons">
</group>
</group>
</page>
<page name="children" col="1">
<field name="children"
view_ids="project.work_view_list_children"/>
</page>
</notebook>
</form>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="company" expand="1" optional="1"/>
<field name="rec_name" expand="1"/>
<field name="timesheet_duration" optional="0"/>
<field name="total_effort" optional="0"/>
<field name="type" optional="1"/>
<field name="status"/>
<field name="total_progress" widget="progressbar" expand="1" optional="0"/>
</tree>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name" expand="1"/>
<field name="timesheet_duration" optional="0"/>
<field name="total_effort" optional="0"/>
<field name="type" optional="1"/>
<field name="status"/>
</tree>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
<field name="company" expand="1" optional="1"/>
<field name="rec_name" expand="1"/>
<field name="type" optional="1"/>
<field name="status" optional="0"/>
</tree>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form>
<label name="name"/>
<field name="name"/>
<group colspan="2" col="-1" id="checkboxes">
<label name="active"/>
<field name="active" xexpand="0" width="25"/>
<label name="default"/>
<field name="default" xexpand="0" width="25"/>
<label name="count"/>
<field name="count" xexpand="0" width="25"/>
<label name="sequence"/>
<field name="sequence"/>
</group>
<label name="types"/>
<field name="types" yexpand="0"/>
<label name="progress"/>
<group col="-1" id="progress">
<field name="progress" factor="100" xexpand="0"/>
<label name="progress" string="%" xalign="0.0" xexpand="1"/>
</group>
</form>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name"/>
<field name="types" expand="1"/>
<field name="default"/>
</tree>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name" expand="1"/>
<field name="company" expand="1" optional="1"/>
<field name="timesheet_duration" optional="0"/>
<field name="total_effort" optional="0"/>
<field name="type" optional="1"/>
<field name="status"/>
<field name="total_progress" widget="progressbar" expand="1" optional="0"/>
</tree>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="name" expand="1"/>
<field name="company" expand="1" optional="1"/>
<field name="type" optional="1"/>
<field name="status" optional="0"/>
</tree>

453
modules/project/work.py Executable file
View File

@@ -0,0 +1,453 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime
from collections import defaultdict
from trytond.cache import Cache
from trytond.i18n import gettext
from trytond.model import (
DeactivableMixin, Index, ModelSQL, ModelView, fields, sequence_ordered,
sum_tree, tree)
from trytond.pool import Pool
from trytond.pyson import Bool, Eval, If, PYSONEncoder, TimeDelta
from trytond.transaction import Transaction, without_check_access
from .exceptions import WorkProgressValidationError
class WorkStatus(DeactivableMixin, sequence_ordered(), ModelSQL, ModelView):
'Work Status'
__name__ = 'project.work.status'
_get_default_status_cache = Cache('project_work_status.get_default_status')
_get_window_domains_cache = Cache('project_work_status.get_window_domains')
types = fields.MultiSelection(
'get_types', "Types",
help="The type of works which can use this status.")
name = fields.Char("Name", required=True, translate=True)
progress = fields.Float(
"Progress",
domain=['OR',
('progress', '=', None),
[
('progress', '>=', 0),
('progress', '<=', 1),
],
],
help="The minimum progress required for this status.")
default = fields.Boolean(
"Default",
help="Check to use as default status for the type.")
count = fields.Boolean(
"Count",
help="Check to show the number of works in this status.")
@classmethod
def get_types(cls):
pool = Pool()
Work = pool.get('project.work')
return Work.fields_get(['type'])['type']['selection']
@classmethod
def get_default_status(cls, type_=None):
if type_ is None:
return None
status = cls._get_default_status_cache.get(type_, -1)
if status != -1:
return status
records = cls.search([
('types', 'in', type_),
('default', '=', True)
], limit=1)
if records:
status = records[0].id
else:
status = None
cls._get_default_status_cache.set(type, status)
return status
@classmethod
def create(cls, vlist):
cls._get_default_status_cache.clear()
cls._get_window_domains_cache.clear()
return super().create(vlist)
@classmethod
def write(cls, *args):
super().write(*args)
cls._get_default_status_cache.clear()
cls._get_window_domains_cache.clear()
@classmethod
def delete(cls, status):
cls._get_default_status_cache.clear()
cls._get_window_domains_cache.clear()
super().delete(status)
@classmethod
def get_window_domains(cls, action):
pool = Pool()
Data = pool.get('ir.model.data')
if action.id == Data.get_id('project', 'act_project_tree'):
return cls._get_window_domains([x[0] for x in cls.get_types()])
elif action.id == Data.get_id('project', 'act_project_form'):
return cls._get_window_domains(['project'])
elif action.id == Data.get_id('project', 'act_task_form'):
return cls._get_window_domains(['task'])
else:
return []
@classmethod
def _get_window_domains(cls, types):
key = tuple(sorted(types))
domains = cls._get_window_domains_cache.get(key)
if domains is not None:
return domains
encoder = PYSONEncoder()
domains = []
for status in cls.search([('types', 'in', types)]):
domain = encoder.encode([('status', '=', status.id)])
domains.append((status.name, domain, status.count))
if domains:
domains.append(
(gettext('project.msg_domain_all'), '[]', False))
cls._get_window_domains_cache.set(key, domains)
return domains
class Work(sequence_ordered(), tree(separator='\\'), ModelSQL, ModelView):
'Work Effort'
__name__ = 'project.work'
name = fields.Char("Name", required=True)
type = fields.Selection([
('project', 'Project'),
('task', 'Task')
],
"Type", required=True)
company = fields.Many2One('company.company', "Company", required=True)
party = fields.Many2One('party.party', 'Party',
states={
'invisible': Eval('type') != 'project',
},
context={
'company': Eval('company', -1),
},
depends={'company'})
party_address = fields.Many2One('party.address', 'Contact Address',
domain=[('party', '=', Eval('party'))],
states={
'invisible': Eval('type') != 'project',
})
timesheet_works = fields.One2Many(
'timesheet.work', 'origin', 'Timesheet Works', readonly=True, size=1)
timesheet_available = fields.Function(fields.Boolean(
"Available on timesheets",
help="Check to record time spent."),
'get_timesheet_available', setter='set_timesheet_available')
timesheet_start_date = fields.Function(fields.Date('Timesheet Start',
states={
'invisible': ~Eval('timesheet_available'),
}),
'get_timesheet_date', setter='set_timesheet_date')
timesheet_end_date = fields.Function(fields.Date('Timesheet End',
states={
'invisible': ~Eval('timesheet_available'),
}),
'get_timesheet_date', setter='set_timesheet_date')
timesheet_duration = fields.Function(fields.TimeDelta('Duration',
'company_work_time',
help="Total time spent on this work and the sub-works."),
'get_total')
effort_duration = fields.TimeDelta(
"Effort", 'company_work_time',
domain=['OR',
('effort_duration', '=', None),
('effort_duration', '>=', TimeDelta()),
],
help="Estimated Effort for this work.")
total_effort = fields.Function(fields.TimeDelta('Total Effort',
'company_work_time',
help="Estimated total effort for this work and the sub-works."),
'get_total')
progress = fields.Float('Progress',
domain=['OR',
('progress', '=', None),
[
('progress', '>=', 0),
('progress', '<=', 1),
],
],
help='Estimated progress for this work.')
total_progress = fields.Function(fields.Float('Total Progress',
digits=(16, 4),
help='Estimated total progress for this work and the sub-works.',
states={
'invisible': (
Eval('total_progress', None) == None), # noqa: E711
}),
'get_total')
comment = fields.Text('Comment')
parent = fields.Many2One(
'project.work', 'Parent', path='path', ondelete='RESTRICT',
domain=[
('company', '=', Eval('company', -1)),
])
path = fields.Char("Path")
children = fields.One2Many('project.work', 'parent', 'Children',
domain=[
('company', '=', Eval('company', -1)),
])
status = fields.Many2One(
'project.work.status', "Status", required=True,
domain=[If(Bool(Eval('type')), ('types', 'in', Eval('type')), ())])
@classmethod
def __setup__(cls):
cls.path.search_unaccented = False
super().__setup__()
t = cls.__table__()
cls._sql_indexes.update({
Index(t, (t.path, Index.Similarity(begin=True))),
})
@staticmethod
def default_type():
return 'task'
@classmethod
def default_company(cls):
return Transaction().context.get('company')
@classmethod
def default_status(cls):
pool = Pool()
WorkStatus = pool.get('project.work.status')
return WorkStatus.get_default_status(cls.default_type())
@classmethod
def __register__(cls, module_name):
table_project_work = cls.__table_handler__(module_name)
super(Work, cls).__register__(module_name)
# Migration from 5.4: replace state by status
table_project_work.not_null_action('state', action='remove')
# Migration from 6.0: remove left and right
table_project_work.drop_column('left')
table_project_work.drop_column('right')
@fields.depends('type', 'status')
def on_change_type(self):
pool = Pool()
WorkState = pool.get('project.work.status')
if (self.type
and (not self.status
or self.type not in self.status.types)):
self.status = WorkState.get_default_status(self.type)
@fields.depends('status', 'progress')
def on_change_status(self):
if (self.status
and self.status.progress is not None
and self.status.progress > (self.progress or -1.0)):
self.progress = self.status.progress
@classmethod
def index_set_field(cls, name):
index = super(Work, cls).index_set_field(name)
if name in {'timesheet_start_date', 'timesheet_end_date'}:
index = cls.index_set_field('timesheet_available') + 1
return index
@classmethod
def validate(cls, works):
super(Work, cls).validate(works)
for work in works:
work.check_work_progress()
def check_work_progress(self):
pool = Pool()
progress = -1 if self.progress is None else self.progress
if (self.status.progress is not None
and progress < self.status.progress):
Lang = pool.get('ir.lang')
lang = Lang.get()
raise WorkProgressValidationError(
gettext('project.msg_work_invalid_progress_status',
work=self.rec_name,
progress=lang.format('%.2f%%', self.status.progress * 100),
status=self.status.rec_name))
if (self.status.progress == 1.0
and not all(c.progress == 1.0 for c in self.children)):
raise WorkProgressValidationError(
gettext('project.msg_work_children_progress',
work=self.rec_name,
status=self.status.rec_name))
if (self.parent
and self.parent.progress == 1.0
and not self.progress == 1.0):
raise WorkProgressValidationError(
gettext('project.msg_work_parent_progress',
work=self.rec_name,
parent=self.parent.rec_name))
@property
def effort_hours(self):
if not self.effort_duration:
return 0
return self.effort_duration.total_seconds() / 60 / 60
@property
def total_effort_hours(self):
if not self.total_effort:
return 0
return self.total_effort.total_seconds() / 60 / 60
@property
def timesheet_duration_hours(self):
if not self.timesheet_duration:
return 0
return self.timesheet_duration.total_seconds() / 60 / 60
@classmethod
def default_timesheet_available(cls):
return False
def get_timesheet_available(self, name):
return bool(self.timesheet_works)
@classmethod
def set_timesheet_available(cls, projects, name, value):
pool = Pool()
Timesheet = pool.get('timesheet.work')
to_create = []
to_delete = []
for project in projects:
if not project.timesheet_works and value:
to_create.append({
'origin': str(project),
'company': project.company.id,
})
elif project.timesheet_works and not value:
to_delete.extend(project.timesheet_works)
if to_create:
Timesheet.create(to_create)
if to_delete:
Timesheet.delete(to_delete)
def get_timesheet_date(self, name):
if self.timesheet_works:
func = {
'timesheet_start_date': min,
'timesheet_end_date': max,
}[name]
return func(getattr(w, name) for w in self.timesheet_works)
@classmethod
def set_timesheet_date(cls, projects, name, value):
pool = Pool()
Timesheet = pool.get('timesheet.work')
timesheets = [w for p in projects for w in p.timesheet_works]
if timesheets:
Timesheet.write(timesheets, {
name: value,
})
@classmethod
def get_total(cls, works, names):
works = cls.search([
('parent', 'child_of', [w.id for w in works]),
])
if 'total_progress' in names and 'total_effort' not in names:
names = list(names)
names.append('total_effort')
result = {}
for name in names:
values = getattr(cls, '_get_%s' % name)(works)
result[name] = sum_tree(works, values)
if 'total_progress' in names:
digits = cls.total_progress.digits[1]
total_progress = result['total_progress']
total_effort = result['total_effort']
for work in works:
if total_effort[work.id]:
total_progress[work.id] = round(total_progress[work.id]
/ (total_effort[work.id].total_seconds() / 60 / 60),
digits)
else:
total_effort[work.id] = None
return result
@classmethod
def _get_total_effort(cls, works):
return defaultdict(
datetime.timedelta,
{w.id: w.effort_duration or datetime.timedelta() for w in works})
@classmethod
def _get_timesheet_duration(cls, works):
durations = defaultdict(datetime.timedelta)
for work in works:
value = datetime.timedelta()
for timesheet_work in work.timesheet_works:
if timesheet_work.duration:
value += timesheet_work.duration
durations[work.id] = value
return durations
@classmethod
def _get_total_progress(cls, works):
return defaultdict(
int,
{w.id: w.effort_hours * (w.progress or 0) for w in works})
@classmethod
def copy(cls, project_works, default=None):
pool = Pool()
WorkStatus = pool.get('project.work.status')
if default is None:
default = {}
else:
default = default.copy()
default.setdefault('progress', None)
default.setdefault(
'status', lambda data: WorkStatus.get_default_status(data['type']))
new_works = super().copy(project_works, default=default)
to_save = []
for work, new_work in zip(project_works, new_works):
if work.timesheet_available:
new_work.timesheet_available = work.timesheet_available
new_work.timesheet_start_date = work.timesheet_start_date
new_work.timesheet_end_date = work.timesheet_end_date
to_save.append(new_work)
if to_save:
cls.save(to_save)
return new_works
@classmethod
def delete(cls, project_works):
TimesheetWork = Pool().get('timesheet.work')
# Get the timesheet works linked to the project works
timesheet_works = [
w for pw in project_works for w in pw.timesheet_works]
super(Work, cls).delete(project_works)
if timesheet_works:
with without_check_access():
TimesheetWork.delete(timesheet_works)
@classmethod
def search_global(cls, text):
for record, rec_name, icon in super(Work, cls).search_global(text):
icon = icon or 'tryton-project'
yield record, rec_name, icon

276
modules/project/work.xml Executable file
View File

@@ -0,0 +1,276 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="work_status_view_list">
<field name="model">project.work.status</field>
<field name="type">tree</field>
<field name="name">work_status_list</field>
</record>
<record model="ir.ui.view" id="work_status_view_form">
<field name="model">project.work.status</field>
<field name="type">form</field>
<field name="name">work_status_form</field>
</record>
<record model="ir.action.act_window" id="act_work_status">
<field name="name">Work Status</field>
<field name="res_model">project.work.status</field>
</record>
<record model="ir.action.act_window.view" id="act_work_status_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_status_view_list"/>
<field name="act_window" ref="act_work_status"/>
</record>
<record model="ir.action.act_window.view" id="act_work_status_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_status_view_form"/>
<field name="act_window" ref="act_work_status"/>
</record>
<menuitem
parent="menu_configuration"
sequence="20"
action="act_work_status"
id="menu_work_status"/>
<record model="ir.rule.group" id="rule_group_work_companies">
<field name="name">User in companies</field>
<field name="model">project.work</field>
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_work_companies">
<field name="domain"
eval="[('company', 'in', Eval('companies', []))]"
pyson="1"/>
<field name="rule_group" ref="rule_group_work_companies"/>
</record>
<record model="ir.model.access" id="access_work_status">
<field name="model">project.work.status</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_work_status_admin">
<field name="model">project.work.status</field>
<field name="group" ref="group_project_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
<record model="ir.ui.view" id="work_view_tree">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="field_childs">children</field>
<field name="name">work_tree</field>
</record>
<record model="ir.ui.view" id="work_view_tree_simple">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="field_childs">children</field>
<field name="name">work_tree_simple</field>
</record>
<record model="ir.ui.view" id="work_view_list">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="20"/>
<field name="name">work_list</field>
</record>
<record model="ir.ui.view" id="work_view_list_simple">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="priority" eval="10"/>
<field name="name">work_list_simple</field>
</record>
<record model="ir.ui.view" id="work_view_list_children">
<field name="model">project.work</field>
<field name="type">tree</field>
<field name="name">work_list_children</field>
</record>
<record model="ir.ui.view" id="work_view_form">
<field name="model">project.work</field>
<field name="type">form</field>
<field name="name">work_form</field>
</record>
<record model="ir.action.act_window" id="act_work_tree">
<field name="name">Works Efforts</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
</record>
<record model="ir.action.act_window.view"
id="act_work_tree_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_tree_simple"/>
<field name="act_window" ref="act_work_tree"/>
</record>
<record model="ir.action.act_window.view"
id="act_work_tree_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_work_tree"/>
</record>
<menuitem
parent="menu_configuration"
action="act_work_tree"
sequence="10"
id="menu_work_tree"/>
<record model="ir.action.act_window" id="act_work_list">
<field name="name">Works Efforts</field>
<field name="res_model">project.work</field>
</record>
<record model="ir.action.act_window.view"
id="act_work_list_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list_simple"/>
<field name="act_window" ref="act_work_list"/>
</record>
<record model="ir.action.act_window.view"
id="act_work_list_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_work_list"/>
</record>
<menuitem
parent="menu_work_tree"
action="act_work_list"
sequence="10"
id="menu_work_list"/>
<record model="ir.action.act_window" id="act_project_tree">
<field name="name">Projects</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('parent', '=', None)]" pyson="1"/>
</record>
<record model="ir.action.act_window.view"
id="act_project_tree_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_tree"/>
<field name="act_window" ref="act_project_tree"/>
</record>
<record model="ir.action.act_window.view"
id="act_project_tree_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_project_tree"/>
</record>
<menuitem
parent="menu_reporting"
action="act_project_tree"
sequence="10"
id="menu_project_tree"/>
<record model="ir.action.act_window" id="act_project_form">
<field name="name">Projects</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('type', '=', 'project')]" pyson="1"/>
<field name="context"></field>
</record>
<record model="ir.action.act_window.view"
id="act_project_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list"/>
<field name="act_window" ref="act_project_form"/>
</record>
<record model="ir.action.act_window.view"
id="act_project_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_project_form"/>
</record>
<menuitem
parent="menu_project"
action="act_project_form"
sequence="10"
id="menu_project_form"/>
<record model="ir.action.act_window" id="act_task_form">
<field name="name">Tasks</field>
<field name="res_model">project.work</field>
<field name="domain" eval="[('type', '=', 'task')]" pyson="1"/>
<field name="context"></field>
</record>
<record model="ir.action.act_window.view"
id="act_task_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list"/>
<field name="act_window" ref="act_task_form"/>
</record>
<record model="ir.action.act_window.view"
id="act_task_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_task_form"/>
</record>
<menuitem
parent="menu_project"
action="act_task_form"
sequence="20"
id="menu_task_form"/>
<record model="ir.action.act_window" id="act_open_child_work">
<field name="name">Tasks</field>
<field name="res_model">project.work</field>
<field name="context"></field>
<field name="domain"
eval="[('type', '=', 'task'), If(Eval('active_ids', []) == [Eval('active_id')], ('parent', '=', Eval('active_id')), ('parent', 'in', Eval('active_ids')))]"
pyson="1"/>
</record>
<record model="ir.action.keyword"
id="act_open_project_work_keyword1">
<field name="keyword">form_relate</field>
<field name="model">project.work,-1</field>
<field name="action" ref="act_open_child_work"/>
</record>
<record model="ir.action.act_window.view"
id="act_open_project_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="work_view_list"/>
<field name="act_window" ref="act_open_child_work"/>
</record>
<record model="ir.action.act_window.view"
id="act_open_project_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="work_view_form"/>
<field name="act_window" ref="act_open_child_work"/>
</record>
<record model="ir.model.access" id="access_work">
<field name="model">project.work</field>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_work_admin">
<field name="model">project.work</field>
<field name="group" ref="group_project_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
</data>
<data noupdate="1">
<record model="project.work.status" id="work_open_status">
<field name="name">Open</field>
<field name="default" eval="True"/>
<field name="count" eval="True"/>
<field name="types" eval="['project', 'task']"/>
</record>
<record model="project.work.status" id="work_done_status">
<field name="name">Done</field>
<field name="progress" eval="1.0"/>
<field name="types" eval="['project', 'task']"/>
</record>
</data>
</tryton>