From 5a7da559798d90a3eca2d01fafb2ff7afd9ba34c Mon Sep 17 00:00:00 2001 From: JanKeppler Date: Wed, 24 Nov 2021 14:46:03 +0100 Subject: [PATCH 001/118] [#40139] Adding New FAQ https://community.openproject.org/work_packages/40139 [ci skip] --- docs/user-guide/work-packages/work-packages-faq/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/user-guide/work-packages/work-packages-faq/README.md b/docs/user-guide/work-packages/work-packages-faq/README.md index f6510d630b..de79670662 100644 --- a/docs/user-guide/work-packages/work-packages-faq/README.md +++ b/docs/user-guide/work-packages/work-packages-faq/README.md @@ -75,7 +75,9 @@ As an inherited change is always commented ("Updated automatically by...") they The "Position" attribute is provided by the Backlogs plugin and shows the position of a work package in the backlog. If you create e.g. a Feature and assign it to a sprint, the position of the feature in the sprint is shown in the "Position" attribute on the work package list. +### Can I restore a deleted workpackage? +There is no easy way to restore a deleted workpackage. Generally, you have the option to create and restore your own backups. ## Filters and queries @@ -110,8 +112,6 @@ This is a known behavior of OpenProject, but not trivial to solve. There's alrea - - ## Status and type ### When I create a new work package it's always a "Task". How can I change the default work package type? From 123616c100c3a1ca898be4d1bea7b4f40c47143c Mon Sep 17 00:00:00 2001 From: JanKeppler Date: Thu, 25 Nov 2021 17:39:35 +0100 Subject: [PATCH 002/118] Update FAQ [ci skip] --- docs/faq/README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/faq/README.md b/docs/faq/README.md index 6031c12c5f..fb292583aa 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -33,14 +33,19 @@ A list of the subcontractors currently used in the Cloud Edition can be found he For our cloud product, we aim to completely eliminate subcontractors outside of the EU by the end of 2021. We have made a start by replacing Google Analytics with Matomo since 2020. You can also send us encrypted emails to privacy@openproject.com. You can find the corresponding GPG key here: https://keys.openpgp.org/vks/v1/by-fingerprint/BDCFE01EDE84EA199AE172CE7D669C6D475339588 -#### Is OpenProject Enterprise cloud GDPR compliant? +#### Is OpenProject Enterprise cloud GDPR compliant? The OpenProject cloud environment is hosted on a logically isolated virtual cloud at Amazon Web Services with all services being located in Ireland. AWS is a GDPR compliant cloud infrastructure provider with extensive security and compliance programs as well as unparalleled access control mechanisms to ensure data privacy. Employed facilities are compliant with the ISO 27001 and 27018 standards. The OpenProject cloud environment is continuously backing up user data with data at rest being fully encrypted with AES-256. Each individual instance is logically separated and data is persisted in a unique database schema, reducing the risk of intersection or data leaks between instances. Find out more about GDPR compliance on our [website](https://www.openproject.org/gdpr-compliance). +### Is OpenProject HIPPA compliant? + +Currently OpenProject is not HIPAA-compliant. OpenProject has high data-security and data-privacy standards and fulfills GDPR regulation. + ### How do I get access to the OpenProject premium features? + We offer the premium functions of OpenProject (incl. boards) for two different OpenProject variants: * For the OpenProject Enterprise cloud edition (hosted by us), @@ -50,6 +55,7 @@ If you want to run OpenProject on your own server, the OpenProject Enterprise on Have you already installed the [OpenProject Community edition](https://www.openproject.org/download-and-installation/)? If yes, you can request a trial license for the OpenProject Enterprise on-premises edition by clicking on the button "Free trial license" [here](https://www.openproject.org/de/enterprise-edition/) and test the Enterprise on-premises edition for 14 days for free. ### Can I have some users with premium features and some without? + As the Enterprise premium features affect the whole instance (e.g. with Agile Boards and project custom fields) it's not possible to upgrade only some users. ### What are the system requirements? @@ -190,6 +196,10 @@ No, it's not possible to use OpenProject without Internet access (Enterprise clo Yes, that’s possible. Please have a look at our [Excel sync](../user-guide/integrations/excel-synchronization). +### Is possible to create a task in one place and have it show up in several projects (and only have to update from one place). If so, how can I go about configuring that? + +As a workaround you could use work package relations. Once the task is created in one project you can create the relation "includes" in another project. This would be an option to display that task in multiple projects. + ### Does OpenProject have guest accounts? Currently, all users working in the OpenProject Enterprise editions need a license in order to access OpenProject. Regarding payments we only count the active (not blocked) users. If users only require temporary access, you can [block](../system-admin-guide/users-permissions/users/#lock-and-unlock-users) those users afterwards to free up additional seats. @@ -290,6 +300,10 @@ We will provide a database dump which you can upload into your Enterprise on-pre If you [book Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/#order-the-enterprise-on-premises-edition) you will receive an Enterprise token. Use it to activate the Enterprise premium features. For detailed activation instructions please refer to the [Enterprise activation guide](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/). You can keep your data that you created in the Community Edition. +### Can my data be moved from OpenProject Enterprise Cloud Edition to my own installed Enterprise On-Premises Edition? + +Your data can be moved from the Enterprise cloud to the Enterprise on-premises edition. We will provide a database dump which you can upload into your Enterprise on-premises edition. + ### How can I migrate from Enterprise on-premises to Community Edition? If you cancel your subscription for Enterprise on-premises you will be downgraded to Community Edition automatically as soon as the subscription period ends. You can keep all your data but won't be able to use the [premium features](https://www.openproject.org/de/enterprise-edition/#premium-features) and won't be eligible for support any more. From d5d6a8801a33397263843ab6f5df3c3384fb8d4b Mon Sep 17 00:00:00 2001 From: JanKeppler Date: Fri, 26 Nov 2021 17:35:04 +0100 Subject: [PATCH 003/118] Update FAQs [ci skip] --- docs/faq/README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/faq/README.md b/docs/faq/README.md index fb292583aa..f9c06d05c6 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -33,7 +33,18 @@ A list of the subcontractors currently used in the Cloud Edition can be found he For our cloud product, we aim to completely eliminate subcontractors outside of the EU by the end of 2021. We have made a start by replacing Google Analytics with Matomo since 2020. You can also send us encrypted emails to privacy@openproject.com. You can find the corresponding GPG key here: https://keys.openpgp.org/vks/v1/by-fingerprint/BDCFE01EDE84EA199AE172CE7D669C6D475339588 -#### Is OpenProject Enterprise cloud GDPR compliant? +### Without authentication, can you be sure that users have exactly the permissions you have given them? + +The Anonymous role lets you control what users can do when they have access to public projects without authentication. +Otherwise, you would have to create an account for each user and require authentication so that not everyone has access to your public projects. + +### I would like to know where the data of openproject is saved with the online version, do you recommend us to keep a copy of the data somewhere else? + +At the moment you can not download a backup yourself. However, you are welcome to ask us to do this for you. We are currently developing a feature that will allow users to download backups themselves in the future. The database and also the storage for the attachments (also database backups) are each divided into several so-called AZs (availability zones). This means that even if one data center burns down, the data will not be lost because it is additionally replicated in another data center at a safe distance. + +"AZs are physically separated by a meaningful distance, many kilometers, from any other AZ, although all are within 100 km (60 miles) of each other." + +### Is OpenProject Enterprise cloud GDPR compliant? The OpenProject cloud environment is hosted on a logically isolated virtual cloud at Amazon Web Services with all services being located in Ireland. AWS is a GDPR compliant cloud infrastructure provider with extensive security and compliance programs as well as unparalleled access control mechanisms to ensure data privacy. @@ -109,6 +120,10 @@ However, if you're still using an old OpenProject subscription there may be limi In the Community Edition and in the Enterprise on-premises edition you can use the standard LDAP authentication. However, the Enterprise on-premises edition also includes LDAP group synchronization. This allows you to synchronize group members from LDAP with groups in OpenProject. The respective documentation can be found [here](../system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/#synchronize-ldap-and-openproject-groups-premium-feature). +### Does LDAP work in cloud edition? + +LDAP is possible in principle. Effectively, everything runs on AWS EC2 instances in Ireland. However, the IPs are not fixed, but can theoretically change arbitrarily (within the IP ranges for eu-west-1 in [1]). In practice, this won't necessarily happen all the time, but we ourselves don't currently have a mechanism to make the concrete IPs of all servers available, for example. + ## How to ... in OpenProject? Most of this kind of questions will be answered in the respective sections for each topic (see links below). However, there may be some FAQ that do not really fit elsewhere: From ee7e8047863e70efff1a5cafcd0406fa8c56c5b3 Mon Sep 17 00:00:00 2001 From: JanKeppler Date: Tue, 30 Nov 2021 14:44:39 +0100 Subject: [PATCH 004/118] FAQ update link for WP relations [ci skip] --- docs/faq/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq/README.md b/docs/faq/README.md index f9c06d05c6..310e59e8cc 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -213,7 +213,7 @@ Yes, that’s possible. Please have a look at our [Excel sync](../user-guide/int ### Is possible to create a task in one place and have it show up in several projects (and only have to update from one place). If so, how can I go about configuring that? -As a workaround you could use work package relations. Once the task is created in one project you can create the relation "includes" in another project. This would be an option to display that task in multiple projects. +As a workaround you could use work package relations. Once the task is created in one project you can create the relation "includes" in another project. This would be an option to display that task in multiple projects. You can find a detailed description for workpakage relations [here](../user-guide/work-packages/work-package-relations-hierarchies/). ### Does OpenProject have guest accounts? From c9d36442b6f7665c8595082c8fa5d29d95357a7d Mon Sep 17 00:00:00 2001 From: JanKeppler Date: Mon, 13 Dec 2021 13:15:03 +0100 Subject: [PATCH 005/118] added wiki-faq [ci skip] --- docs/getting-started/.DS_Store | Bin 6148 -> 6148 bytes docs/user-guide/.DS_Store | Bin 8196 -> 8196 bytes docs/user-guide/wiki/wiki-faq/README.md | 54 ++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 docs/user-guide/wiki/wiki-faq/README.md diff --git a/docs/getting-started/.DS_Store b/docs/getting-started/.DS_Store index 4356f34a9fe1fffb671b7da5ace0f0ebe4cde917..a40386802652edf3e538ee203df5dfb911445c07 100644 GIT binary patch delta 83 zcmZoMXfc@JFUrcmz`)4BAi%&-!l28L%#gv5$WXL-BlB`bNsyETLpo3(4=9NwJz1Ao ZhBGatI5{alKZkKM57R!@&Fmb1`2nQ~5@!Ga delta 48 zcmZoMXfc@JFUrEez`)4BAi%&-z)-}H&ydBC%8CIA2c diff --git a/docs/user-guide/.DS_Store b/docs/user-guide/.DS_Store index f22bc65d8c8355db93018657621b2ec5e2e1473c..e8bebd32789c605a32b7d38107feb41c208f1236 100644 GIT binary patch delta 150 zcmZp1XmOa}&&a(oU^hP__hdgYnavskzt}8U7|Izk8L}BN(^86)lk)R(7#SECc!7fX m3`Ia;U4{aNM22J_E0H0cA(f#Ru54oAn$7GI((II&uo3`^04F2> delta 34 qcmZp1XmOa}&&atkU^hP_=VU)Inavskzt|?0KHbbNA Date: Wed, 15 Dec 2021 13:42:05 +0100 Subject: [PATCH 006/118] Add FAQs [ci skip] --- docs/faq/README.md | 39 +++++++++++++------ .../work-packages/work-packages-faq/README.md | 3 ++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/docs/faq/README.md b/docs/faq/README.md index 310e59e8cc..5224fe2315 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -124,6 +124,14 @@ In the Community Edition and in the Enterprise on-premises edition you can use t LDAP is possible in principle. Effectively, everything runs on AWS EC2 instances in Ireland. However, the IPs are not fixed, but can theoretically change arbitrarily (within the IP ranges for eu-west-1 in [1]). In practice, this won't necessarily happen all the time, but we ourselves don't currently have a mechanism to make the concrete IPs of all servers available, for example. +### What is the availability of your hosted OpenProject? Are there fixed maintenance windows where the software is not available? + +There is no fixed maintenance window per se. The databases have a maintenance window of half an hour each. One is on mondays at 3 am (CET), the other on thursdays at 1 am. But this does not mean that the database is not available. Since the databases are redundant (for vips at least), there is usually no interruption. +With new releases it always depends on the changes. +With the last release (11.2) there was no downtime, because the database changes were upward compatible. I.e. the old version could work with the new data. +Sometimes this is not the case, and then we need a downtime to roll out the new version. This usually takes up to an hour and we always announce it a few days in advance. +So there are no regular downtimes. + ## How to ... in OpenProject? Most of this kind of questions will be answered in the respective sections for each topic (see links below). However, there may be some FAQ that do not really fit elsewhere: @@ -150,6 +158,10 @@ This is not possible per se, there's no Ctrl+Z option or anything similar. Please use these resources to find out about the latest changes and re-do them manually: The [work package activity](../getting-started/work-packages-introduction/#activity-of-work-packages), the [history of the wiki page](../user-guide/wiki/more-wiki-functions/#show-wiki-page-history) or the [Activities module](../user-guide/activity). +### What happens when the unit cost of a project, or budget, changes during a project or during a budget term? + +The behavior depends on the date the budget and the rate of cost types refer to. The budget will contain the rate that was valid for the included unit costs at its creation (see “fixed date” in the budget details). Please note that it is possible to change this “fixed date” as well as old rates for cost types which will influence the budget or/and the spent costs. + ### How can I increase or decrease the number of users in OpenProject? You can invite new users in the system administration as long as you have enough licenses. @@ -159,6 +171,10 @@ If you are using Enterprise on-premises, please write an email to sales @ openpr If you are using the Enterprise cloud, you can easily upgrade or downgrade the number of users by navigating to *Administration -> Billing -> Manage subscription* and choosing the new amount of users which you need in your system. Find out more [here](../enterprise-guide/enterprise-cloud-guide/manage-cloud-subscription). +### How can I check the workload of each of my employees? + +The best way is to use one of our Action boards, the [Assignee board](.../.../.../agile-boards/#choose-between-board-types). Alternatively, you can filter work package lists (in each project or using the global work package list accessible via Modules in the right part of the header) to filter for work packages where employees are set as Assignee or as Accountable. + ### How can I change the day my week starts with, etc.? You can do this as a system administrator in the [System settings](../system-admin-guide/system-settings/display-settings/#time-and-date-formatting-aggregation-of-changes-in-activity). @@ -258,6 +274,7 @@ IFC2x3 and IFC4. We accept those formats and convert them to some other format t Yes, (only) as part of the Community Edition you can use OpenProject BIM for free. Please have a look [here](../installation-and-operations/changing-to-bim-edition/) to find out how to activate the BIM modules in your on-premises installation. + ### Can a BCF file created from other software e.g. BIMcollab, Solibri, etc. be opened in OpenProject? Yes, of course. That's why the module for this in OpenProject is called "BCF". You can import and export BCF XML files. Our goal is to have specialized tools like Solibri do model checks, but the coordination of the results, the issues, is done in OpenProject, because more people can get access to the BCF issues through OpenProject because our licenses are much cheaper. In addition, BCF issues imported into OpenProject behave just like other non-BCF work packages. For example, you can plan them in a Gantt chart on the timeline, or manage them agilely in boards. We support the current BCF XML format 2.1. @@ -278,8 +295,6 @@ Yes. Take a photo with your camera and save it on your phone. Then open the corr Yes, of course. Within the BCF module you can upload multiple IFC models and create and manage BCF issues. - - ## Migration ### How can I migrate from Bitnami to OpenProject? @@ -303,30 +318,30 @@ At the moment there are these ways to migrate: For more information please contact us. -### How can I migrate from Community Edition or Enterprise on-premises to Enterprise cloud? - -We will need a database dump from you which we will upload to your new Enterprise cloud. Please contact us to plan the migration and get more instructions. - ### How can I migrate from Enterprise cloud to Enterprise on-premises? We will provide a database dump which you can upload into your Enterprise on-premises edition. This way you can keep all your data. -### How can I migrate from Community Edition to Enterprise on-premises? +### Can my data be moved from OpenProject Enterprise cloud edition to my own installed Enterprise on-premises edition? -If you [book Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/#order-the-enterprise-on-premises-edition) you will receive an Enterprise token. Use it to activate the Enterprise premium features. For detailed activation instructions please refer to the [Enterprise activation guide](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/). You can keep your data that you created in the Community Edition. +Your data can be moved from the Enterprise cloud to the Enterprise on-premises edition. We will provide a database dump which you can upload into your Enterprise on-premises edition. -### Can my data be moved from OpenProject Enterprise Cloud Edition to my own installed Enterprise On-Premises Edition? +### How can I migrate from Community edition to Enterprise on-premises? -Your data can be moved from the Enterprise cloud to the Enterprise on-premises edition. We will provide a database dump which you can upload into your Enterprise on-premises edition. +If you [book Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/#order-the-enterprise-on-premises-edition) you will receive an Enterprise token. Use it to activate the Enterprise premium features. For detailed activation instructions please refer to the [Enterprise activation guide](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/). You can keep your data that you created in the Community Edition. -### How can I migrate from Enterprise on-premises to Community Edition? +### How can I migrate from Enterprise on-premises to Community edition? -If you cancel your subscription for Enterprise on-premises you will be downgraded to Community Edition automatically as soon as the subscription period ends. You can keep all your data but won't be able to use the [premium features](https://www.openproject.org/de/enterprise-edition/#premium-features) and won't be eligible for support any more. +If you cancel your subscription for Enterprise on-premises you will be downgraded to Community Edition automatically as soon as the subscription period ends. You can keep all your data but won't be able to use the [premium features](.../.../enterprise-edition/#premium-features) and won't be eligible for support any more. ### Where can I find information on additional migrations (e.g. from MySQL to PostgreSQL)? Please have a look at [this section](../installation-and-operations/misc). +### Do you have any documentation to enable slack plugin on the docker-compose file of your project? + +We have a [documentation](.../installation-and-operations/installation/docker/#openproject-plugins) for how to add Slack to a docker setup, but you need to extend the OpenProject docker container yourself in order to add the plugin. There is no documentation as of now for how to do the same with the docker-compose setup. + ## Other ### How can I contribute to OpenProject? diff --git a/docs/user-guide/work-packages/work-packages-faq/README.md b/docs/user-guide/work-packages/work-packages-faq/README.md index de79670662..688177ece0 100644 --- a/docs/user-guide/work-packages/work-packages-faq/README.md +++ b/docs/user-guide/work-packages/work-packages-faq/README.md @@ -177,6 +177,9 @@ In the work package list: Right-click on the work package and choose **Change pr In the details view of the work package: Click on **More** (button with three dots in the upper right hand corner) and the on **Change project**. +### Can I group tasks into folders? + +There are no folders for work packages. I suggest either setting all work packages belonging together as children of the same parent work package (e.g. a Phase) or to create multiple projects for different topics. Alternatively you could use the [work package categories](../../../projects/project-settings/work-package-categories) or a custom field to group work packages. You can also indent hierarchy for for tasks to associate it with another work package like a phase, then they are relatete to the Pahase in the gantt chart. ## Custom fields From 5ddf4486cc12103f102130c6791dd8e7f0309119 Mon Sep 17 00:00:00 2001 From: JanKeppler Date: Wed, 22 Dec 2021 12:43:49 +0100 Subject: [PATCH 007/118] Add error messages [ci skip] --- docs/Error Message/README.md | 36 ++++++++++++++++++++++++++++++++++++ docs/faq/README.md | 28 +++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 docs/Error Message/README.md diff --git a/docs/Error Message/README.md b/docs/Error Message/README.md new file mode 100644 index 0000000000..fd1f737d8f --- /dev/null +++ b/docs/Error Message/README.md @@ -0,0 +1,36 @@ +--- +sidebar_navigation: + title: Error Message + priority: 951 +description: Error messages from OpenProject +robots: index, follow +keywords: error, introduction, tutorial, project management software, error message, help +--- +# Error messages from OpenProject + +Welcome to the central overview for frequent OpenProject. + +| Topic | Content | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| [Frequent errors](#frequent-errors) | General Error messages in OpenProject | +| [Error after new update](#error after new update) | Error messages regarding an update | +| [No authorization](#no-authorization) | Set the right rights to work withpout errors in OpenProject | +| [...](#...) | ... | +| [...](#...) | ... | +| [...](#...) | ... | +| [...](#...) | ... | + + + +## Frequent errors + +### ... + +## Error after new update + +### ... + +## No authorization + +### ... + diff --git a/docs/faq/README.md b/docs/faq/README.md index 5224fe2315..09f7a0356c 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -75,7 +75,7 @@ The system requirements can be found [here](../installation-and-operations/syste Apart from using OpenProject in the cloud (OpenProject Enterprise cloud) OpenProject can be installed in two different ways: The packaged installation of OpenProject is the recommended way to install and maintain OpenProject using DEB or RPM packages. There's also a Docker based installation option. -### How can I learn more about OpenProject and how to use it? +### How can I test OpenProject and lern how to use it? Here are resources to get to know OpenProject: @@ -179,6 +179,14 @@ The best way is to use one of our Action boards, the [Assignee board](.../.../.. You can do this as a system administrator in the [System settings](../system-admin-guide/system-settings/display-settings/#time-and-date-formatting-aggregation-of-changes-in-activity). +### How to use plugins in OpenProject and where can I find them? + +Not all available plugins for OpenProject are published yet. After updating the plugins so that they are working with the Rails3 OpenProject Core, they will be published on Github continiously. Please write us a note if you have questions to any of the plugins. + +### Which Plugins are published so far? + +Please refer to the project timeline to see which plugins will be released. Plugin development will take place in dedicated sub-projects on openproject.org. + ### How can I add a RACI matrix in OpenProject? You can add [project custom fields](../system-admin-guide/custom-fields/custom-fields-projects/) of the type "user" to your projects and track the respective persons there. @@ -202,11 +210,29 @@ Please go to https://www.openproject.org/newsletter/ and submit your data to rec Please find information on the features of OpenProject [here](https://www.openproject.org/collaboration-software-features/) and a comparison between Enterprise on-premises, Enterprise cloud and Community Edition [here](https://www.openproject.org/pricing/#compare). The community platform to see and [issue](../development/submit-feature-idea/) feature ideas can be found [here](https://community.openproject.com). +### How can I become a member of the community? + +You can start collaborating with other members of OpenProject [here](https://community.openproject.org/projects/openproject/), bring in your contributions and ideas to improve the software and the community. Share your experiences with OpenProject. Also take a look at the Contribution page for further information. We are looking forward to your participation. + +### What is OPF (OpenProject Foundation)? + +The OpenProject Foundation (Hyperlik to OPF) (OPF) (e.V.) is incorporated as a membership-based, non-profit organisation. It establishes a framework in which the open source software can successfully be developed. It supports and guides the software project, the community and its growth, furthermore, ensures that OpenProject continues to exist beyond the participation of individual members or companies. + +### How can I become a member of OPF? + +Individuals as well as enterprises who have a proven commitment to collaborative open-source software development through sustained participation and contributions within OpenProject, are eligible for membership. Enterprises will be represented by individuals who will represent the interests of the company within the foundation. +An individual or a representative of a company is awarded for membership after nomination and approval by the majority of the existing members of the OpenProject Foundation. + ### Is it possible to use multiple languages in OpenProject? Yes, it is possible to use OpenProject in multiple languages. We support English, German, French and a number of additional languages. Each user can select their own preferred language by signing into OpenProject, clicking on the user avatar on the upper right side and selecting "My account" from the dropdown menu. You can then select "Settings" from the side menu on the left side and [change the language](../getting-started/my-account/#change-your-language). +### How are decisions taken within this community, e.g. what will be a core feature? + +We aim to take decisions in a transparent and collaborative approach and agree together on future developments and the overall thrust of the project. +General decisions will be governed by the OpenProject Foundation. + ### Is there an OpenProject app? There is no native iOS or Android app for OpenProject, but OpenProject is responsive - so it displays well on smaller screens. From 769b95ca4e1733fbd6b48d97e8bab6e95fd3d24f Mon Sep 17 00:00:00 2001 From: Birthe Lindenthal Date: Thu, 23 Dec 2021 10:16:15 +0100 Subject: [PATCH 008/118] fix typo --- docs/faq/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq/README.md b/docs/faq/README.md index 09f7a0356c..26436fe985 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -75,7 +75,7 @@ The system requirements can be found [here](../installation-and-operations/syste Apart from using OpenProject in the cloud (OpenProject Enterprise cloud) OpenProject can be installed in two different ways: The packaged installation of OpenProject is the recommended way to install and maintain OpenProject using DEB or RPM packages. There's also a Docker based installation option. -### How can I test OpenProject and lern how to use it? +### How can I test OpenProject and learn how to use it? Here are resources to get to know OpenProject: From dbaaf595fa00ef9760ee30b097f96b9e9f1344d2 Mon Sep 17 00:00:00 2001 From: Birthe Lindenthal Date: Thu, 23 Dec 2021 10:17:26 +0100 Subject: [PATCH 009/118] change URL for GDPR compliance --- docs/faq/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq/README.md b/docs/faq/README.md index 26436fe985..52ede52d52 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -49,7 +49,7 @@ At the moment you can not download a backup yourself. However, you are welcome t The OpenProject cloud environment is hosted on a logically isolated virtual cloud at Amazon Web Services with all services being located in Ireland. AWS is a GDPR compliant cloud infrastructure provider with extensive security and compliance programs as well as unparalleled access control mechanisms to ensure data privacy. Employed facilities are compliant with the ISO 27001 and 27018 standards. The OpenProject cloud environment is continuously backing up user data with data at rest being fully encrypted with AES-256. -Each individual instance is logically separated and data is persisted in a unique database schema, reducing the risk of intersection or data leaks between instances. Find out more about GDPR compliance on our [website](https://www.openproject.org/gdpr-compliance). +Each individual instance is logically separated and data is persisted in a unique database schema, reducing the risk of intersection or data leaks between instances. Find out more about GDPR compliance on our [website](https://www.openproject.org/security-and-privacy/). ### Is OpenProject HIPPA compliant? From 89cfee203ff65e0c01b3f668588b5d9e5835a55c Mon Sep 17 00:00:00 2001 From: ulferts Date: Tue, 4 Jan 2022 14:11:50 +0100 Subject: [PATCH 010/118] remove usage of require_dependency according to the rails 6 migration guide, it should no longer be necessary: https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#require-dependency --- app/cells/enumerations/table_cell.rb | 2 -- app/cells/oauth/applications/table_cell.rb | 2 -- app/cells/statuses/table_cell.rb | 2 -- app/controllers/repositories_controller.rb | 1 - app/models/attribute_help_text.rb | 4 ++-- app/models/enumeration.rb | 2 +- app/models/queries/filters/available_filters.rb | 2 -- app/models/setting.rb | 2 -- app/models/token/auto_login.rb | 2 -- app/models/token/enterprise_trial_key.rb | 2 -- app/models/token/hashed_token.rb | 2 -- app/models/token/invitation.rb | 2 -- app/models/token/recovery.rb | 2 -- lib/api/v3/help_texts/help_texts_api.rb | 3 --- .../schemas/filter_dependency_representer_factory.rb | 2 +- lib/open_project/journal_formatter/diff.rb | 2 -- lib/open_project/plugins/acts_as_op_engine.rb | 8 ++++---- lib/open_project/plugins/load_dependency.rb | 2 +- lib/open_project/plugins/patch_registry.rb | 2 +- lib/open_project/scm/adapters/git.rb | 2 -- modules/avatars/lib/open_project/avatars/engine.rb | 4 ---- .../backlogs/patches/permitted_params_patch.rb | 2 -- .../lib/open_project/backlogs/patches/project_patch.rb | 2 -- .../patches/specific_work_package_schema_patch.rb | 2 -- .../lib/open_project/backlogs/patches/status_patch.rb | 2 -- .../lib/open_project/backlogs/patches/type_patch.rb | 2 -- .../lib/open_project/backlogs/patches/user_patch.rb | 2 -- .../lib/open_project/backlogs/patches/version_patch.rb | 2 -- .../backlogs/patches/versions_controller_patch.rb | 2 -- .../open_project/backlogs/patches/work_package_patch.rb | 2 -- modules/bim/lib/open_project/bim/patches/journal_patch.rb | 2 -- modules/bim/lib/open_project/bim/patches/project_patch.rb | 2 -- .../lib/open_project/bim/patches/work_package_patch.rb | 2 -- modules/boards/app/models/boards/grid.rb | 2 -- modules/documents/lib/open_project/documents/engine.rb | 7 +------ modules/overviews/lib/overviews/engine.rb | 8 +------- .../reporting/app/models/cost_query/filter/status_id.rb | 2 -- modules/reporting/lib/open_project/reporting/engine.rb | 8 -------- .../reporting/patches/custom_fields_controller_patch.rb | 2 -- .../reporting/patches/open_project/configuration_patch.rb | 2 -- modules/reporting/lib/widget/filters.rb | 1 - modules/reporting/lib/widget/filters/date.rb | 3 --- modules/reporting/lib/widget/filters/heavy.rb | 3 --- modules/reporting/lib/widget/filters/label.rb | 3 --- modules/reporting/lib/widget/filters/multi_choice.rb | 3 --- modules/reporting/lib/widget/filters/multi_values.rb | 3 --- modules/reporting/lib/widget/filters/operators.rb | 3 --- modules/reporting/lib/widget/filters/option.rb | 3 --- modules/reporting/lib/widget/filters/remove_button.rb | 3 --- modules/reporting/lib/widget/filters/text_box.rb | 3 --- modules/reporting/lib/widget/reporting_widget.rb | 2 -- modules/reporting/lib/widget/settings_patch.rb | 3 --- .../app/models/two_factor_authentication/backup_code.rb | 1 - .../app/models/two_factor_authentication/device/sms.rb | 1 - .../app/models/two_factor_authentication/device/totp.rb | 1 - .../app/models/two_factor_authentication/login_token.rb | 3 --- .../two_factor_authentication/remembered_auth_token.rb | 3 --- 57 files changed, 12 insertions(+), 137 deletions(-) diff --git a/app/cells/enumerations/table_cell.rb b/app/cells/enumerations/table_cell.rb index 837a7ca72e..0b5f4e57ef 100644 --- a/app/cells/enumerations/table_cell.rb +++ b/app/cells/enumerations/table_cell.rb @@ -1,5 +1,3 @@ -require_dependency 'enumerations/row_cell' - module Enumerations class TableCell < ::TableCell def initial_sort diff --git a/app/cells/oauth/applications/table_cell.rb b/app/cells/oauth/applications/table_cell.rb index fcc915cf2c..48637206a1 100644 --- a/app/cells/oauth/applications/table_cell.rb +++ b/app/cells/oauth/applications/table_cell.rb @@ -1,5 +1,3 @@ -require_dependency 'oauth/applications/row_cell' - module OAuth module Applications class TableCell < ::TableCell diff --git a/app/cells/statuses/table_cell.rb b/app/cells/statuses/table_cell.rb index f79f2af48d..48f3f467b6 100644 --- a/app/cells/statuses/table_cell.rb +++ b/app/cells/statuses/table_cell.rb @@ -1,5 +1,3 @@ -require_dependency 'statuses/row_cell' - module Statuses class TableCell < ::TableCell def initial_sort diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 1bd50b282e..bf2706db17 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -31,7 +31,6 @@ require 'SVG/Graph/Bar' require 'SVG/Graph/BarHorizontal' require 'digest/sha1' -require_dependency 'open_project/scm/adapters' class ChangesetNotFound < StandardError end diff --git a/app/models/attribute_help_text.rb b/app/models/attribute_help_text.rb index 0660ba761b..7f83375242 100644 --- a/app/models/attribute_help_text.rb +++ b/app/models/attribute_help_text.rb @@ -78,5 +78,5 @@ class AttributeHelpText < ApplicationRecord end end -require_dependency 'attribute_help_text/work_package' -require_dependency 'attribute_help_text/project' +require 'attribute_help_text/work_package' +require 'attribute_help_text/project' diff --git a/app/models/enumeration.rb b/app/models/enumeration.rb index 258e111e15..e6f7aea774 100644 --- a/app/models/enumeration.rb +++ b/app/models/enumeration.rb @@ -182,5 +182,5 @@ end # Force load the subclasses in development mode %w(time_entry_activity issue_priority).each do |enum_subclass| - require_dependency enum_subclass + require enum_subclass end diff --git a/app/models/queries/filters/available_filters.rb b/app/models/queries/filters/available_filters.rb index 675a97876e..68c17db1cc 100644 --- a/app/models/queries/filters/available_filters.rb +++ b/app/models/queries/filters/available_filters.rb @@ -28,8 +28,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'queries/filters' - module Queries module Filters module AvailableFilters diff --git a/app/models/setting.rb b/app/models/setting.rb index 77883879c2..f63cc9c077 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -339,9 +339,7 @@ class Setting < ApplicationRecord end end - require_dependency 'setting/callbacks' extend Callbacks - require_dependency 'setting/aliases' extend Aliases end diff --git a/app/models/token/auto_login.rb b/app/models/token/auto_login.rb index dabea6d781..9feff00511 100644 --- a/app/models/token/auto_login.rb +++ b/app/models/token/auto_login.rb @@ -28,8 +28,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'token/hashed_token' - module Token class AutoLogin < HashedToken end diff --git a/app/models/token/enterprise_trial_key.rb b/app/models/token/enterprise_trial_key.rb index d5e0a9c1e2..cac398bb12 100644 --- a/app/models/token/enterprise_trial_key.rb +++ b/app/models/token/enterprise_trial_key.rb @@ -28,8 +28,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'token/base' - module Token class EnterpriseTrialKey < Base include ExpirableToken diff --git a/app/models/token/hashed_token.rb b/app/models/token/hashed_token.rb index 57b22838ca..9cf61fe385 100644 --- a/app/models/token/hashed_token.rb +++ b/app/models/token/hashed_token.rb @@ -16,8 +16,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require_dependency 'token/base' - module Token class HashedToken < Base # Allow access to the plain value during initial access / creation of the token diff --git a/app/models/token/invitation.rb b/app/models/token/invitation.rb index 831b1fb520..36692ded11 100644 --- a/app/models/token/invitation.rb +++ b/app/models/token/invitation.rb @@ -28,8 +28,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'token/base' - module Token class Invitation < Base include ExpirableToken diff --git a/app/models/token/recovery.rb b/app/models/token/recovery.rb index 8f660bbe17..eaebd8137f 100644 --- a/app/models/token/recovery.rb +++ b/app/models/token/recovery.rb @@ -28,8 +28,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'token/base' - module Token class Recovery < Base include ExpirableToken diff --git a/lib/api/v3/help_texts/help_texts_api.rb b/lib/api/v3/help_texts/help_texts_api.rb index 9b426636c0..8b13eb2cab 100644 --- a/lib/api/v3/help_texts/help_texts_api.rb +++ b/lib/api/v3/help_texts/help_texts_api.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'api/v3/help_texts/help_text_representer' -require_dependency 'api/v3/help_texts/help_text_collection_representer' - module API module V3 module HelpTexts diff --git a/lib/api/v3/queries/schemas/filter_dependency_representer_factory.rb b/lib/api/v3/queries/schemas/filter_dependency_representer_factory.rb index 567487790f..c27fe66963 100644 --- a/lib/api/v3/queries/schemas/filter_dependency_representer_factory.rb +++ b/lib/api/v3/queries/schemas/filter_dependency_representer_factory.rb @@ -28,7 +28,7 @@ # See COPYRIGHT and LICENSE files for more details. #++ -Dir[File.dirname(__FILE__) + '/*.rb'].each { |file| require_dependency file } +Dir[File.dirname(__FILE__) + '/*.rb'].each { |file| require file } module API module V3 diff --git a/lib/open_project/journal_formatter/diff.rb b/lib/open_project/journal_formatter/diff.rb index 4740141b39..1339529475 100644 --- a/lib/open_project/journal_formatter/diff.rb +++ b/lib/open_project/journal_formatter/diff.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'journal_formatter/base' - class OpenProject::JournalFormatter::Diff < JournalFormatter::Base include OpenProject::StaticRouting::UrlHelpers diff --git a/lib/open_project/plugins/acts_as_op_engine.rb b/lib/open_project/plugins/acts_as_op_engine.rb index 1965ffa339..37eed89641 100644 --- a/lib/open_project/plugins/acts_as_op_engine.rb +++ b/lib/open_project/plugins/acts_as_op_engine.rb @@ -26,10 +26,10 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'open_project/ui/extensible_tabs' -require_dependency 'config/constants/api_patch_registry' -require_dependency 'config/constants/open_project/activity' -require_dependency 'config/constants/views' +require 'open_project/ui/extensible_tabs' +require_relative '../../../config/constants/api_patch_registry' +require_relative '../../../config/constants/open_project/activity' +require_relative '../../../config/constants/views' module OpenProject::Plugins module ActsAsOpEngine diff --git a/lib/open_project/plugins/load_dependency.rb b/lib/open_project/plugins/load_dependency.rb index 5a0549e03a..81f85250c2 100644 --- a/lib/open_project/plugins/load_dependency.rb +++ b/lib/open_project/plugins/load_dependency.rb @@ -31,7 +31,7 @@ module OpenProject::Plugins def self.register(target, *dependencies) ActiveSupport.on_load(target) do dependencies.each do |dependency| - require_dependency dependency + require dependency end end end diff --git a/lib/open_project/plugins/patch_registry.rb b/lib/open_project/plugins/patch_registry.rb index 85a0ae67c4..09007abbfc 100644 --- a/lib/open_project/plugins/patch_registry.rb +++ b/lib/open_project/plugins/patch_registry.rb @@ -30,7 +30,7 @@ module OpenProject::Plugins module PatchRegistry def self.register(target, patch) ActiveSupport.on_load(target) do - require_dependency patch + require patch constant = patch.camelcase.constantize target.to_s.camelcase.constantize.send(:include, constant) diff --git a/lib/open_project/scm/adapters/git.rb b/lib/open_project/scm/adapters/git.rb index 262ba02110..52ffe8f5da 100644 --- a/lib/open_project/scm/adapters/git.rb +++ b/lib/open_project/scm/adapters/git.rb @@ -28,8 +28,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'open_project/scm/adapters' - module OpenProject module SCM module Adapters diff --git a/modules/avatars/lib/open_project/avatars/engine.rb b/modules/avatars/lib/open_project/avatars/engine.rb index 6cdf88182c..f81701d551 100644 --- a/modules/avatars/lib/open_project/avatars/engine.rb +++ b/modules/avatars/lib/open_project/avatars/engine.rb @@ -41,10 +41,6 @@ module OpenProject::Avatars icon: 'icon2 icon-image1' end - config.to_prepare do - require_dependency 'project' - end - add_api_endpoint 'API::V3::Users::UsersAPI', :id do mount ::API::V3::Users::UserAvatarAPI end diff --git a/modules/backlogs/lib/open_project/backlogs/patches/permitted_params_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/permitted_params_patch.rb index 2e9a3ca22a..e534ef0d68 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/permitted_params_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/permitted_params_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'permitted_params' - module OpenProject::Backlogs::Patches::PermittedParamsPatch def self.included(base) base.prepend InstanceMethods diff --git a/modules/backlogs/lib/open_project/backlogs/patches/project_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/project_patch.rb index 7b0329f1ee..a18bc05c94 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/project_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/project_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'project' - module OpenProject::Backlogs::Patches::ProjectPatch def self.included(base) base.class_eval do diff --git a/modules/backlogs/lib/open_project/backlogs/patches/specific_work_package_schema_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/specific_work_package_schema_patch.rb index ab98bd72ab..066fee74e6 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/specific_work_package_schema_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/specific_work_package_schema_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'api/v3/work_packages/schema/specific_work_package_schema' - module OpenProject::Backlogs::Patches::SpecificWorkPackageSchemaPatch def self.included(base) base.class_eval do diff --git a/modules/backlogs/lib/open_project/backlogs/patches/status_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/status_patch.rb index 6286bc1712..fac7c23b7f 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/status_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/status_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'status' - module OpenProject::Backlogs::Patches::StatusPatch def self.included(base) base.class_eval do diff --git a/modules/backlogs/lib/open_project/backlogs/patches/type_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/type_patch.rb index f6e8fe7dbb..f7660b3fd6 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/type_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/type_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'type' - module OpenProject::Backlogs::Patches::TypePatch def self.included(base) base.class_eval do diff --git a/modules/backlogs/lib/open_project/backlogs/patches/user_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/user_patch.rb index 91cba0e63f..54d56f6a49 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/user_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/user_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'user' - module OpenProject::Backlogs::Patches::UserPatch def self.included(base) base.class_eval do diff --git a/modules/backlogs/lib/open_project/backlogs/patches/version_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/version_patch.rb index 282d56812e..5a20c211d1 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/version_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/version_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'version' - module OpenProject::Backlogs::Patches::VersionPatch def self.included(base) base.class_eval do diff --git a/modules/backlogs/lib/open_project/backlogs/patches/versions_controller_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/versions_controller_patch.rb index 74f73d3d89..5deca2c950 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/versions_controller_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/versions_controller_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'versions_controller' - module OpenProject::Backlogs::Patches::VersionsControllerPatch def self.included(base) base.class_eval do diff --git a/modules/backlogs/lib/open_project/backlogs/patches/work_package_patch.rb b/modules/backlogs/lib/open_project/backlogs/patches/work_package_patch.rb index 8e83e86909..974927d36e 100644 --- a/modules/backlogs/lib/open_project/backlogs/patches/work_package_patch.rb +++ b/modules/backlogs/lib/open_project/backlogs/patches/work_package_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'work_package' - module OpenProject::Backlogs::Patches::WorkPackagePatch extend ActiveSupport::Concern diff --git a/modules/bim/lib/open_project/bim/patches/journal_patch.rb b/modules/bim/lib/open_project/bim/patches/journal_patch.rb index 4fe6bbd8e3..48a9d98b61 100644 --- a/modules/bim/lib/open_project/bim/patches/journal_patch.rb +++ b/modules/bim/lib/open_project/bim/patches/journal_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'journal' - module OpenProject::Bim::Patches::JournalPatch def self.included(base) base.class_eval do diff --git a/modules/bim/lib/open_project/bim/patches/project_patch.rb b/modules/bim/lib/open_project/bim/patches/project_patch.rb index 853dee1f4d..983e2635e0 100644 --- a/modules/bim/lib/open_project/bim/patches/project_patch.rb +++ b/modules/bim/lib/open_project/bim/patches/project_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'work_package' - module OpenProject::Bim::Patches::ProjectPatch def self.included(base) base.class_eval do diff --git a/modules/bim/lib/open_project/bim/patches/work_package_patch.rb b/modules/bim/lib/open_project/bim/patches/work_package_patch.rb index d0b8f40006..1d7f2e262b 100644 --- a/modules/bim/lib/open_project/bim/patches/work_package_patch.rb +++ b/modules/bim/lib/open_project/bim/patches/work_package_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'work_package' - module OpenProject::Bim::Patches::WorkPackagePatch def self.included(base) base.class_eval do diff --git a/modules/boards/app/models/boards/grid.rb b/modules/boards/app/models/boards/grid.rb index 8a497f2835..0a7e88b1c5 100644 --- a/modules/boards/app/models/boards/grid.rb +++ b/modules/boards/app/models/boards/grid.rb @@ -28,8 +28,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'grids/grid' - module Boards class Grid < ::Grids::Grid belongs_to :project diff --git a/modules/documents/lib/open_project/documents/engine.rb b/modules/documents/lib/open_project/documents/engine.rb index 7e0fde687e..087fdb2897 100644 --- a/modules/documents/lib/open_project/documents/engine.rb +++ b/modules/documents/lib/open_project/documents/engine.rb @@ -75,11 +75,6 @@ module OpenProject::Documents # Add documents to allowed search params additional_permitted_attributes search: %i(documents) - config.to_prepare do - require_dependency 'document' - require_dependency 'document_category' - - require_dependency 'open_project/documents/patches/textile_converter_patch' - end + patch_with_namespace :OpenProject, :TextFormatting, :Formats, :Markdown, :TextileConverter end end diff --git a/modules/overviews/lib/overviews/engine.rb b/modules/overviews/lib/overviews/engine.rb index 7025b40115..ffef67dd2f 100644 --- a/modules/overviews/lib/overviews/engine.rb +++ b/modules/overviews/lib/overviews/engine.rb @@ -28,13 +28,7 @@ module Overviews end end - initializer 'overviews.patches' do - unless ::OpenProject::TextFormatting::Formats::Markdown::TextileConverter - .included_modules - .include?(Overviews::Patches::TextileConverterPatch) - ::OpenProject::TextFormatting::Formats::Markdown::TextileConverter.include(Overviews::Patches::TextileConverterPatch) - end - end + patch_with_namespace :OpenProject, :TextFormatting, :Formats, :Markdown, :TextileConverter initializer 'overviews.conversion' do require Rails.root.join('config', 'constants', 'ar_to_api_conversions') diff --git a/modules/reporting/app/models/cost_query/filter/status_id.rb b/modules/reporting/app/models/cost_query/filter/status_id.rb index ab7d47b473..a45d3b0e5d 100644 --- a/modules/reporting/app/models/cost_query/filter/status_id.rb +++ b/modules/reporting/app/models/cost_query/filter/status_id.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# we have to require this here because the operators would not be defined otherwise -require_dependency 'cost_query/operator' class CostQuery::Filter::StatusId < Report::Filter::Base available_operators 'c', 'o' join_table WorkPackage, Status => [WorkPackage, :status] diff --git a/modules/reporting/lib/open_project/reporting/engine.rb b/modules/reporting/lib/open_project/reporting/engine.rb index c6dc4b7e8c..58b91ea5c8 100644 --- a/modules/reporting/lib/open_project/reporting/engine.rb +++ b/modules/reporting/lib/open_project/reporting/engine.rb @@ -95,14 +95,6 @@ module OpenProject::Reporting require_relative 'patches/to_date_patch' end - config.to_prepare do - require_dependency 'report/walker' - require_dependency 'report/transformer' - require_dependency 'widget/table/entry_table' - require_dependency 'widget/settings_patch' - require_dependency 'cost_query/group_by' - end - patches %i[CustomFieldsController OpenProject::Configuration] patch_with_namespace :BasicData, :RoleSeeder patch_with_namespace :BasicData, :SettingSeeder diff --git a/modules/reporting/lib/open_project/reporting/patches/custom_fields_controller_patch.rb b/modules/reporting/lib/open_project/reporting/patches/custom_fields_controller_patch.rb index 6905348ab9..eeec768be3 100644 --- a/modules/reporting/lib/open_project/reporting/patches/custom_fields_controller_patch.rb +++ b/modules/reporting/lib/open_project/reporting/patches/custom_fields_controller_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'costlog_controller' - module OpenProject::Reporting::Patches module CustomFieldsControllerPatch def self.included(base) # :nodoc: diff --git a/modules/reporting/lib/open_project/reporting/patches/open_project/configuration_patch.rb b/modules/reporting/lib/open_project/reporting/patches/open_project/configuration_patch.rb index 8c6de110b4..b586622767 100644 --- a/modules/reporting/lib/open_project/reporting/patches/open_project/configuration_patch.rb +++ b/modules/reporting/lib/open_project/reporting/patches/open_project/configuration_patch.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'open_project/configuration' - module OpenProject::Reporting::Patches module OpenProject::ConfigurationPatch def self.included(base) diff --git a/modules/reporting/lib/widget/filters.rb b/modules/reporting/lib/widget/filters.rb index 7023a6049d..124b8adc3f 100644 --- a/modules/reporting/lib/widget/filters.rb +++ b/modules/reporting/lib/widget/filters.rb @@ -26,7 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'widget/base' class Widget::Filters < ::Widget::Base def render spacer = content_tag :li, '', class: 'advanced-filters--spacer hide-when-print' diff --git a/modules/reporting/lib/widget/filters/date.rb b/modules/reporting/lib/widget/filters/date.rb index 74735b1139..f93c18841f 100644 --- a/modules/reporting/lib/widget/filters/date.rb +++ b/modules/reporting/lib/widget/filters/date.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::Date < Widget::Filters::Base def render @calendar_headers_tags_included = true diff --git a/modules/reporting/lib/widget/filters/heavy.rb b/modules/reporting/lib/widget/filters/heavy.rb index 37df0b918d..020fa5b037 100644 --- a/modules/reporting/lib/widget/filters/heavy.rb +++ b/modules/reporting/lib/widget/filters/heavy.rb @@ -30,9 +30,6 @@ # The select-box. This way we allow our JS to pretend this is just another # Filter. This is overhead... # But well this is again one of those temporary solutions. -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::Heavy < Widget::Filters::Base def render # TODO: sometimes filter.values is of the form [["3"]] and somtimes ["3"]. diff --git a/modules/reporting/lib/widget/filters/label.rb b/modules/reporting/lib/widget/filters/label.rb index 39711d5259..b9454e6528 100644 --- a/modules/reporting/lib/widget/filters/label.rb +++ b/modules/reporting/lib/widget/filters/label.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::Label < Widget::Filters::Base def render options = { diff --git a/modules/reporting/lib/widget/filters/multi_choice.rb b/modules/reporting/lib/widget/filters/multi_choice.rb index d353fa13bb..691bf4e6e0 100644 --- a/modules/reporting/lib/widget/filters/multi_choice.rb +++ b/modules/reporting/lib/widget/filters/multi_choice.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::MultiChoice < Widget::Filters::Base def render filterName = filter_class.underscore_name diff --git a/modules/reporting/lib/widget/filters/multi_values.rb b/modules/reporting/lib/widget/filters/multi_values.rb index 90469cc6b0..0828c964c6 100644 --- a/modules/reporting/lib/widget/filters/multi_values.rb +++ b/modules/reporting/lib/widget/filters/multi_values.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::MultiValues < Widget::Filters::Base def render write(content_tag(:div, id: "#{filter_class.underscore_name}_arg_1", class: 'advanced-filters--filter-value') do diff --git a/modules/reporting/lib/widget/filters/operators.rb b/modules/reporting/lib/widget/filters/operators.rb index 3b46d0519a..65e26d1195 100644 --- a/modules/reporting/lib/widget/filters/operators.rb +++ b/modules/reporting/lib/widget/filters/operators.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::Operators < Widget::Filters::Base def render write(content_tag(:div, class: 'advanced-filters--filter-operator') do diff --git a/modules/reporting/lib/widget/filters/option.rb b/modules/reporting/lib/widget/filters/option.rb index 0f981125df..143539c3da 100644 --- a/modules/reporting/lib/widget/filters/option.rb +++ b/modules/reporting/lib/widget/filters/option.rb @@ -30,9 +30,6 @@ # Accepts option :content, which expects an enumerable of [name, id, *args] # as it would appear in a filters available values. If given, it renders the # option-tags from the content array instead of the filters available values. -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::Option < Widget::Filters::Base def render first = true diff --git a/modules/reporting/lib/widget/filters/remove_button.rb b/modules/reporting/lib/widget/filters/remove_button.rb index c4f36743b5..f43852bca0 100644 --- a/modules/reporting/lib/widget/filters/remove_button.rb +++ b/modules/reporting/lib/widget/filters/remove_button.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::RemoveButton < Widget::Filters::Base def render hidden_field = tag :input, id: "rm_#{filter_class.underscore_name}", diff --git a/modules/reporting/lib/widget/filters/text_box.rb b/modules/reporting/lib/widget/filters/text_box.rb index d679803314..4cf529c9ac 100644 --- a/modules/reporting/lib/widget/filters/text_box.rb +++ b/modules/reporting/lib/widget/filters/text_box.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# make sure to require Widget::Filters::Base first because otherwise -# ruby might find Base within Widget and Rails will not load it -require_dependency 'widget/filters/base' class Widget::Filters::TextBox < Widget::Filters::Base def render label = content_tag :label, diff --git a/modules/reporting/lib/widget/reporting_widget.rb b/modules/reporting/lib/widget/reporting_widget.rb index 9634ebf5a5..b3b5745d45 100644 --- a/modules/reporting/lib/widget/reporting_widget.rb +++ b/modules/reporting/lib/widget/reporting_widget.rb @@ -26,8 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -require_dependency 'reporting_helper' - class Widget::ReportingWidget < ActionView::Base include ActionView::Helpers::TagHelper include ActionView::Helpers::AssetTagHelper diff --git a/modules/reporting/lib/widget/settings_patch.rb b/modules/reporting/lib/widget/settings_patch.rb index d4b759341c..52d3cdd114 100644 --- a/modules/reporting/lib/widget/settings_patch.rb +++ b/modules/reporting/lib/widget/settings_patch.rb @@ -26,9 +26,6 @@ # See COPYRIGHT and LICENSE files for more details. #++ -# explicitly require what will be patched to be loaded from the ReportingEngine -require_dependency 'widget/settings' - module Widget::SettingsPatch extend ActiveSupport::Concern diff --git a/modules/two_factor_authentication/app/models/two_factor_authentication/backup_code.rb b/modules/two_factor_authentication/app/models/two_factor_authentication/backup_code.rb index ea8d46773e..40a0b7805a 100644 --- a/modules/two_factor_authentication/app/models/two_factor_authentication/backup_code.rb +++ b/modules/two_factor_authentication/app/models/two_factor_authentication/backup_code.rb @@ -1,4 +1,3 @@ -require_dependency 'token/hashed_token' module TwoFactorAuthentication class BackupCode < ::Token::HashedToken diff --git a/modules/two_factor_authentication/app/models/two_factor_authentication/device/sms.rb b/modules/two_factor_authentication/app/models/two_factor_authentication/device/sms.rb index 1794de03dc..7f312f882d 100644 --- a/modules/two_factor_authentication/app/models/two_factor_authentication/device/sms.rb +++ b/modules/two_factor_authentication/app/models/two_factor_authentication/device/sms.rb @@ -1,4 +1,3 @@ -require_dependency 'two_factor_authentication/device' module TwoFactorAuthentication class Device::Sms < Device diff --git a/modules/two_factor_authentication/app/models/two_factor_authentication/device/totp.rb b/modules/two_factor_authentication/app/models/two_factor_authentication/device/totp.rb index 67259a948a..e6716994dd 100644 --- a/modules/two_factor_authentication/app/models/two_factor_authentication/device/totp.rb +++ b/modules/two_factor_authentication/app/models/two_factor_authentication/device/totp.rb @@ -1,5 +1,4 @@ require 'rotp' -require_dependency 'two_factor_authentication/device' module TwoFactorAuthentication class Device::Totp < Device diff --git a/modules/two_factor_authentication/app/models/two_factor_authentication/login_token.rb b/modules/two_factor_authentication/app/models/two_factor_authentication/login_token.rb index 07f54a74bc..846376fe21 100644 --- a/modules/two_factor_authentication/app/models/two_factor_authentication/login_token.rb +++ b/modules/two_factor_authentication/app/models/two_factor_authentication/login_token.rb @@ -1,6 +1,3 @@ -require_dependency 'token/hashed_token' -require_dependency 'token/expirable_token' - module TwoFactorAuthentication class LoginToken < ::Token::HashedToken include ::Token::ExpirableToken diff --git a/modules/two_factor_authentication/app/models/two_factor_authentication/remembered_auth_token.rb b/modules/two_factor_authentication/app/models/two_factor_authentication/remembered_auth_token.rb index e915d61f44..09f8c3b9f6 100644 --- a/modules/two_factor_authentication/app/models/two_factor_authentication/remembered_auth_token.rb +++ b/modules/two_factor_authentication/app/models/two_factor_authentication/remembered_auth_token.rb @@ -1,6 +1,3 @@ -require_dependency 'token/hashed_token' -require_dependency 'token/expirable_token' - module TwoFactorAuthentication class RememberedAuthToken < ::Token::HashedToken include ::Token::ExpirableToken From 407e5ffa1e1068581d9abbc9f11a251018bd249b Mon Sep 17 00:00:00 2001 From: ulferts Date: Fri, 7 Jan 2022 14:59:53 +0100 Subject: [PATCH 011/118] avoid overwriting default setting value --- app/models/setting.rb | 7 ++--- .../20190618115620_fix_available_languages.rb | 28 +++++++++++-------- ...e_current_project_custom_fields_columns.rb | 2 ++ 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/app/models/setting.rb b/app/models/setting.rb index f63cc9c077..b4644810b5 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -29,6 +29,9 @@ #++ class Setting < ApplicationRecord + extend Callbacks + extend Aliases + DATE_FORMATS = [ '%Y-%m-%d', '%d/%m/%Y', @@ -338,8 +341,4 @@ class Setting < ApplicationRecord value end end - - extend Callbacks - - extend Aliases end diff --git a/db/migrate/20190618115620_fix_available_languages.rb b/db/migrate/20190618115620_fix_available_languages.rb index dba5261e00..aad7954ebe 100644 --- a/db/migrate/20190618115620_fix_available_languages.rb +++ b/db/migrate/20190618115620_fix_available_languages.rb @@ -1,12 +1,14 @@ class FixAvailableLanguages < ActiveRecord::Migration[5.2] def up - Setting.reset_column_information + if Setting.exists?(name: 'available_languages') + Setting.reset_column_information - Setting.available_languages = Setting.available_languages.map do |lang| - if lang == 'zh' - 'zh-CN' - else - lang + Setting.available_languages = Setting.available_languages.map do |lang| + if lang == 'zh' + 'zh-CN' + else + lang + end end end @@ -14,13 +16,15 @@ class FixAvailableLanguages < ActiveRecord::Migration[5.2] end def down - Setting.reset_column_information + if Setting.exists?(name: 'available_languages') + Setting.reset_column_information - Setting.available_languages = Setting.available_languages.map do |lang| - if lang == 'zh-CN' - 'zh' - else - lang + Setting.available_languages = Setting.available_languages.map do |lang| + if lang == 'zh-CN' + 'zh' + else + lang + end end end diff --git a/db/migrate/20200903064009_enable_current_project_custom_fields_columns.rb b/db/migrate/20200903064009_enable_current_project_custom_fields_columns.rb index 4b3540b302..a2e32f5289 100644 --- a/db/migrate/20200903064009_enable_current_project_custom_fields_columns.rb +++ b/db/migrate/20200903064009_enable_current_project_custom_fields_columns.rb @@ -1,5 +1,7 @@ class EnableCurrentProjectCustomFieldsColumns < ActiveRecord::Migration[6.0] def up + return unless Setting.exists?(name: 'enabled_projects_column') + columns = Setting.enabled_projects_columns cf_columns = ProjectCustomField.pluck(:id).map { |id| "cf_#{id}" } From 1f4a886da3aa8e1fec95ce1f7a5dd7ea719e4954 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Tue, 25 Jan 2022 11:31:00 +0100 Subject: [PATCH 012/118] Use fixed width for team planner resource column --- .../team-planner/team-planner/planner/team-planner.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts index 8652e42190..d49d114bcf 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts @@ -279,7 +279,7 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, }, events: this.calendarEventsFunction.bind(this) as unknown, resources: [], - resourceAreaWidth: '20%', + resourceAreaWidth: '250px', select: this.handleDateClicked.bind(this) as unknown, resourceLabelContent: (data:ResourceLabelContentArg) => this.renderTemplate(this.resourceContent, data.resource.id, data), resourceLabelWillUnmount: (data:ResourceLabelContentArg) => this.unrenderTemplate(data.resource.id), From fdddd79c45173b947feef439e486f2c8d9e65662 Mon Sep 17 00:00:00 2001 From: ulferts Date: Fri, 14 Jan 2022 16:58:33 +0100 Subject: [PATCH 013/118] linting --- app/models/query.rb | 11 +- app/models/query/results.rb | 2 +- spec/models/query_spec.rb | 35 +- .../by_project_index_resource_spec.rb | 324 +++++++----------- 4 files changed, 155 insertions(+), 217 deletions(-) diff --git a/app/models/query.rb b/app/models/query.rb index 4ce82e9427..4af4e74d8f 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -43,8 +43,9 @@ class Query < ApplicationRecord serialize :column_names, Array serialize :sort_criteria, Array - validates :name, presence: true - validates_length_of :name, maximum: 255 + validates :name, + presence: true, + length: { maximum: 255 } validate :validate_work_package_filters validate :validate_columns @@ -93,7 +94,7 @@ class Query < ApplicationRecord end def add_default_filter - return unless filters.blank? + return if filters.present? add_filter('status_id', 'o', ['']) end @@ -251,7 +252,7 @@ class Query < ApplicationRecord def column_names=(names) col_names = Array(names) - .reject(&:blank?) + .compact_blank .map(&:to_sym) # Set column_names to blank/nil if it is equal to the default columns @@ -335,7 +336,7 @@ class Query < ApplicationRecord statement_filters .map { |filter| "(#{filter.where})" } - .reject(&:empty?) + .compact_blank .join(' AND ') end diff --git a/app/models/query/results.rb b/app/models/query/results.rb index bbba297c8f..07ab710e8d 100644 --- a/app/models/query/results.rb +++ b/app/models/query/results.rb @@ -74,7 +74,7 @@ class ::Query::Results end def order_option - order_option = [group_by_sort].reject(&:blank?).join(', ') + order_option = [group_by_sort].compact_blank.join(', ') if order_option.blank? nil diff --git a/spec/models/query_spec.rb b/spec/models/query_spec.rb index 32cd1c673b..04170765f7 100644 --- a/spec/models/query_spec.rb +++ b/spec/models/query_spec.rb @@ -48,14 +48,14 @@ describe Query, type: :model do describe '.new_default' do it 'set the default sortation' do - query = Query.new_default + query = described_class.new_default expect(query.sort_criteria) .to match_array([['id', 'asc']]) end it 'does not use the default sortation if an order is provided' do - query = Query.new_default(sort_criteria: [['id', 'asc']]) + query = described_class.new_default(sort_criteria: [['id', 'asc']]) expect(query.sort_criteria) .to match_array([['id', 'asc']]) @@ -175,14 +175,14 @@ describe Query, type: :model do describe 'hierarchies' do it 'is enabled in default queries' do - query = Query.new_default + query = described_class.new_default expect(query.show_hierarchies).to be_truthy query.show_hierarchies = false expect(query.show_hierarchies).to be_falsey end it 'is mutually exclusive with group_by' do - query = Query.new_default + query = described_class.new_default expect(query.show_hierarchies).to be_truthy query.group_by = :assignee @@ -195,7 +195,7 @@ describe Query, type: :model do describe '#available_columns' do context 'with work_package_done_ratio NOT disabled' do - it 'should include the done_ratio column' do + it 'includes the done_ratio column' do expect(query.available_columns.map(&:name)).to include :done_ratio end end @@ -205,7 +205,7 @@ describe Query, type: :model do allow(WorkPackage).to receive(:done_ratio_disabled?).and_return(true) end - it 'should NOT include the done_ratio column' do + it 'does not include the done_ratio column' do expect(query.available_columns.map(&:name)).not_to include :done_ratio end end @@ -281,7 +281,7 @@ describe Query, type: :model do type_not_in_project end - context 'in project' do + context 'when in project' do before do query.project = project end @@ -303,7 +303,7 @@ describe Query, type: :model do end end - context 'global' do + context 'when global' do before do query.project = nil end @@ -324,7 +324,7 @@ describe Query, type: :model do end end - context 'relation_of_type columns' do + context 'with relation_of_type columns' do before do stub_const('Relation::TYPES', relation1: { name: :label_relates_to, sym_name: :label_relates_to, order: 1, sym: :relation1 }, @@ -368,7 +368,7 @@ describe Query, type: :model do [:"relations_to_type_#{type.id}"] + %i(relations_of_type_relation1 relations_of_type_relation2) - expect(Query.available_columns.map(&:name)).to include *expected_columns + expect(described_class.available_columns.map(&:name)).to include *expected_columns end end @@ -386,14 +386,14 @@ describe Query, type: :model do unexpected_columns = [:"relations_to_type_#{type.id}"] + %i(relations_of_type_relation1 relations_of_type_relation2) - expect(Query.available_columns.map(&:name)).to include *expected_columns - expect(Query.available_columns.map(&:name)).not_to include *unexpected_columns + expect(described_class.available_columns.map(&:name)).to include *expected_columns + expect(described_class.available_columns.map(&:name)).not_to include *unexpected_columns end end end describe '#valid?' do - it 'should not be valid without a name' do + it 'is not valid without a name' do query.name = '' expect(query.save).to be_falsey expect(query.errors[:name].first).to include(I18n.t('activerecord.errors.messages.blank')) @@ -415,7 +415,8 @@ describe Query, type: :model do let(:query) { build(:query).tap { |q| q.filters = [] } } it 'is valid' do - expect(query.valid?).to be_truthy + expect(query) + .to be_valid end end @@ -428,8 +429,8 @@ describe Query, type: :model do query.add_filter('cf_' + custom_field.id.to_s, '=', ['']) end - it 'should have the name of the custom field in the error message' do - expect(query).to_not be_valid + it 'has the name of the custom field in the error message' do + expect(query).not_to be_valid expect(query.errors.messages[:base].to_s).to include(custom_field.name) end end @@ -661,7 +662,7 @@ describe Query, type: :model do end end - describe 'project limiting filter' do + describe '#statement_filters (private method)' do def subproject_filter?(filter) filter.is_a?(Queries::WorkPackages::Filter::SubprojectFilter) end diff --git a/spec/requests/api/v3/work_packages/by_project_index_resource_spec.rb b/spec/requests/api/v3/work_packages/by_project_index_resource_spec.rb index e32ddbac43..dd5c0c495d 100644 --- a/spec/requests/api/v3/work_packages/by_project_index_resource_spec.rb +++ b/spec/requests/api/v3/work_packages/by_project_index_resource_spec.rb @@ -37,7 +37,9 @@ describe API::V3::WorkPackages::WorkPackagesByProjectAPI, type: :request, conten let(:role) { create(:role, permissions: permissions) } let(:permissions) { [:view_work_packages] } let(:project) { create(:project_with_types, public: false) } - let(:path) { api_v3_paths.work_packages_by_project project.id } + let(:base_path) { api_v3_paths.work_packages_by_project project.id } + let(:query) { {} } + let(:path) { "#{base_path}?#{query.to_query}" } let(:work_packages) { [] } current_user do @@ -71,217 +73,151 @@ describe API::V3::WorkPackages::WorkPackagesByProjectAPI, type: :request, conten end end - describe 'advanced query options' do - let(:base_path) { api_v3_paths.work_packages_by_project project.id } - let(:query) { {} } - let(:path) { "#{base_path}?#{query.to_query}" } + describe 'sorting' do + let(:query) { { sortBy: '[["id", "desc"]]' } } + let(:work_packages) { create_list(:work_package, 2, project: project) } - describe 'sorting' do - let(:query) { { sortBy: '[["id", "desc"]]' } } - let(:work_packages) { create_list(:work_package, 2, project: project) } - - it 'returns both elements' do - expect(subject.body).to be_json_eql(2).at_path('count') - expect(subject.body).to be_json_eql(2).at_path('total') - end - - it 'returns work packages in the expected order' do - first_wp = work_packages.first - last_wp = work_packages.last - - expect(subject.body).to be_json_eql(last_wp.id).at_path('_embedded/elements/0/id') - expect(subject.body).to be_json_eql(first_wp.id).at_path('_embedded/elements/1/id') - end + it_behaves_like 'API V3 collection response', 2, 2, 'WorkPackage', 'WorkPackageCollection' do + let(:elements) { work_packages.reverse } end + end - describe 'filtering' do - let(:query) do - { - filters: [ - { - priority: { - operator: '=', - values: [priority1.id.to_s] - } + describe 'filtering by priority' do + let(:query) do + { + filters: [ + { + priority: { + operator: '=', + values: [priority1.id.to_s] } - ].to_json - } - end - let(:priority1) { create(:priority, name: 'Prio A') } - let(:priority2) { create(:priority, name: 'Prio B') } - let(:work_packages) do - [ - create(:work_package, project: project, priority: priority1), - create(:work_package, project: project, priority: priority2) - ] - end - - it 'returns only one element' do - expect(subject.body).to be_json_eql(1).at_path('count') - expect(subject.body).to be_json_eql(1).at_path('total') - end + } + ].to_json + } + end + let(:priority1) { create(:priority, name: 'Prio A') } + let(:priority2) { create(:priority, name: 'Prio B') } + let(:work_packages) do + [ + create(:work_package, project: project, priority: priority1), + create(:work_package, project: project, priority: priority2) + ] + end - it 'returns the matching element' do - expected_id = work_packages.first.id - expect(subject.body).to be_json_eql(expected_id).at_path('_embedded/elements/0/id') - end + it_behaves_like 'API V3 collection response', 1, 1, 'WorkPackage', 'WorkPackageCollection' do + let(:elements) { [work_packages.first] } end + end - describe 'grouping' do - let(:query) { { groupBy: 'priority' } } - let(:priority1) { build(:priority, name: 'Prio A', position: 2) } - let(:priority2) { build(:priority, name: 'Prio B', position: 1) } - let(:work_packages) do - [ - create(:work_package, - project: project, - priority: priority1, - estimated_hours: 1), - create(:work_package, - project: project, - priority: priority2, - estimated_hours: 2), - create(:work_package, - project: project, - priority: priority1, - estimated_hours: 3) - ] - end - let(:expected_group1) do - { - _links: { - valueLink: [{ - href: api_v3_paths.priority(priority1.id) - }], - groupBy: { - href: api_v3_paths.query_group_by('priority'), - title: 'Priority' - } - }, - value: priority1.name, - count: 2 - } - end - let(:expected_group2) do - { - _links: { - valueLink: [{ - href: api_v3_paths.priority(priority2.id) - }], - groupBy: { - href: api_v3_paths.query_group_by('priority'), - title: 'Priority' + describe 'filtering by project (one different from the project of the path)' do + let(:query) do + { + filters: [ + { + project: { + operator: '=', + values: [other_project.id.to_s] } - }, - value: priority2.name, - count: 1 - } - end - - it 'returns all elements' do - expect(subject.body).to be_json_eql(3).at_path('count') - expect(subject.body).to be_json_eql(3).at_path('total') - end - - it 'returns work packages ordered by priority' do - prio1_path = api_v3_paths.priority(priority1.id) - prio2_path = api_v3_paths.priority(priority2.id) - - expect(subject.body).to(be_json_eql(prio2_path.to_json) - .at_path('_embedded/elements/0/_links/priority/href')) - expect(subject.body).to(be_json_eql(prio1_path.to_json) - .at_path('_embedded/elements/1/_links/priority/href')) - expect(subject.body).to(be_json_eql(prio1_path.to_json) - .at_path('_embedded/elements/2/_links/priority/href')) - end + } + ].to_json + } + end + let(:other_project) { create(:project, members: { current_user => role }) } + let(:work_packages) { [other_project_work_package, project_work_package] } + let(:project_work_package) { create(:work_package, project: project) } + let(:other_project_work_package) { create(:work_package, project: other_project) } - it 'contains group elements' do - expect(subject.body).to include_json(expected_group1.to_json).at_path('groups') - expect(subject.body).to include_json(expected_group2.to_json).at_path('groups') - end + it_behaves_like 'API V3 collection response', 1, 1, 'WorkPackage', 'WorkPackageCollection' do + let(:elements) { [other_project_work_package] } + end + end - context 'when displaying sums' do - let(:query) { { groupBy: 'priority', showSums: 'true' } } - let(:expected_group1) do - { - _links: { - valueLink: [{ - href: api_v3_paths.priority(priority1.id) - }], - groupBy: { - href: api_v3_paths.query_group_by('priority'), - title: 'Priority' - } - }, - value: priority1.name, - count: 2, - sums: { - estimatedTime: 'PT4H', - laborCosts: "0.00 EUR", - materialCosts: "0.00 EUR", - overallCosts: "0.00 EUR", - remainingTime: nil, - storyPoints: nil - } + describe 'grouping' do + let(:query) { { groupBy: 'priority' } } + let(:priority1) { build(:priority, name: 'Prio A', position: 2) } + let(:priority2) { build(:priority, name: 'Prio B', position: 1) } + let(:work_packages) do + [ + create(:work_package, + project: project, + priority: priority1, + estimated_hours: 1), + create(:work_package, + project: project, + priority: priority2, + estimated_hours: 2), + create(:work_package, + project: project, + priority: priority1, + estimated_hours: 3) + ] + end + let(:expected_group1) do + { + _links: { + valueLink: [{ + href: api_v3_paths.priority(priority1.id) + }], + groupBy: { + href: api_v3_paths.query_group_by('priority'), + title: 'Priority' } - end - let(:expected_group2) do - { - _links: { - valueLink: [{ - href: api_v3_paths.priority(priority2.id) - }], - groupBy: { - href: api_v3_paths.query_group_by('priority'), - title: 'Priority' - } - }, - value: priority2.name, - count: 1, - sums: { - estimatedTime: 'PT2H', - laborCosts: "0.00 EUR", - materialCosts: "0.00 EUR", - overallCosts: "0.00 EUR", - remainingTime: nil, - storyPoints: nil - } + }, + value: priority1.name, + count: 2 + } + end + let(:expected_group2) do + { + _links: { + valueLink: [{ + href: api_v3_paths.priority(priority2.id) + }], + groupBy: { + href: api_v3_paths.query_group_by('priority'), + title: 'Priority' } - end + }, + value: priority2.name, + count: 1 + } + end - it 'contains extended group elements' do - expect(subject.body).to include_json(expected_group1.to_json).at_path('groups') - expect(subject.body).to include_json(expected_group2.to_json).at_path('groups') - end - end + it_behaves_like 'API V3 collection response', 3, 3, 'WorkPackage', 'WorkPackageCollection' do + let(:elements) { [work_packages.second, work_packages.first, work_packages.third] } end - describe 'displaying sums' do - let(:query) { { showSums: 'true' } } - let(:work_packages) do - [ - create(:work_package, project: project, estimated_hours: 1), - create(:work_package, project: project, estimated_hours: 2) - ] - end + it 'contains group elements' do + expect(subject.body).to include_json(expected_group1.to_json).at_path('groups') + expect(subject.body).to include_json(expected_group2.to_json).at_path('groups') + end + end - it 'returns both elements' do - expect(subject.body).to be_json_eql(2).at_path('count') - expect(subject.body).to be_json_eql(2).at_path('total') - end - it 'contains the sum element' do - expected = { - estimatedTime: 'PT3H', - laborCosts: "0.00 EUR", - materialCosts: "0.00 EUR", - overallCosts: "0.00 EUR", - remainingTime: nil, - storyPoints: nil - } + describe 'displaying sums' do + let(:query) { { showSums: 'true' } } + let(:work_packages) do + [ + create(:work_package, project: project, estimated_hours: 1), + create(:work_package, project: project, estimated_hours: 2) + ] + end + + it_behaves_like 'API V3 collection response', 2, 2, 'WorkPackage', 'WorkPackageCollection' do + let(:elements) { work_packages } + end - expect(subject.body).to be_json_eql(expected.to_json).at_path('totalSums') - end + it 'contains the sum element' do + expected = { + estimatedTime: 'PT3H', + laborCosts: "0.00 EUR", + materialCosts: "0.00 EUR", + overallCosts: "0.00 EUR", + remainingTime: nil, + storyPoints: nil + } + + expect(subject.body).to be_json_eql(expected.to_json).at_path('totalSums') end end end From 6b2a2e567b77d76066690e2b0cadf8c48ac94524 Mon Sep 17 00:00:00 2001 From: ulferts Date: Fri, 14 Jan 2022 17:31:47 +0100 Subject: [PATCH 014/118] allow project filter within project If a project filter exists, no subproject filter is added. --- .../work_packages/filter/project_filter.rb | 2 +- app/models/query.rb | 12 ++- .../filter/project_filter_spec.rb | 77 +++++++++-------- spec/models/query_spec.rb | 67 +++++++-------- ...ry_filter_instance_schema_resource_spec.rb | 84 +++++++++---------- 5 files changed, 125 insertions(+), 117 deletions(-) diff --git a/app/models/queries/work_packages/filter/project_filter.rb b/app/models/queries/work_packages/filter/project_filter.rb index 04ca13c429..73eff2532c 100644 --- a/app/models/queries/work_packages/filter/project_filter.rb +++ b/app/models/queries/work_packages/filter/project_filter.rb @@ -42,7 +42,7 @@ class Queries::WorkPackages::Filter::ProjectFilter < Queries::WorkPackages::Filt end def available? - !project && visible_projects.exists? + visible_projects.exists? end def type diff --git a/app/models/query.rb b/app/models/query.rb index 4af4e74d8f..1cb3ccb5de 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -365,7 +365,7 @@ class Query < ApplicationRecord end def project_limiting_filter - return if subproject_filters_involved? + return if project_filter_set? subproject_filter = Queries::WorkPackages::Filter::SubprojectFilter.create! subproject_filter.context = self @@ -382,10 +382,14 @@ class Query < ApplicationRecord ## # Determine whether there are explicit filters - # on whether work packages from subprojects are used - def subproject_filters_involved? + # on whether work packages from + # * subprojects + # * other projects + # are used. + def project_filter_set? filters.any? do |filter| - filter.is_a?(::Queries::WorkPackages::Filter::SubprojectFilter) + filter.is_a?(::Queries::WorkPackages::Filter::SubprojectFilter) || + filter.is_a?(::Queries::WorkPackages::Filter::ProjectFilter) end end diff --git a/spec/models/queries/work_packages/filter/project_filter_spec.rb b/spec/models/queries/work_packages/filter/project_filter_spec.rb index 2a36d2b970..2eaa7cad9b 100644 --- a/spec/models/queries/work_packages/filter/project_filter_spec.rb +++ b/spec/models/queries/work_packages/filter/project_filter_spec.rb @@ -32,48 +32,60 @@ describe Queries::WorkPackages::Filter::ProjectFilter, type: :model do it_behaves_like 'basic query filter' do let(:type) { :list } let(:class_key) { :project_id } + let(:visible_projects) { build_stubbed_list(:project, 2) } - describe '#available?' do - context 'within a project' do - it 'is false' do - expect(instance).to_not be_available - end - end + before do + scope = class_double(Project) - context 'outside of a project' do - let(:project) { nil } + allow(Project) + .to receive(:visible) + .and_return(scope) + + allow(scope) + .to receive(:active) + .and_return(visible_projects) - it 'is true if the user can see project' do - allow(Project) - .to receive_message_chain(:visible, :active, :exists?) - .and_return(true) + allow(visible_projects) + .to receive(:exists?) + .and_return(visible_projects.any?) + end - expect(instance).to be_available + describe '#available?' do + shared_examples_for 'filter availability' do + context 'when able to see projects' do + it 'is true' do + expect(instance).to be_available + end end - it 'is true if the user can not see project' do - allow(Project) - .to receive_message_chain(:visible, :active, :exists?) - .and_return(false) + context 'when not able to see projects' do + let(:visible_projects) { [] } - expect(instance).to_not be_available + it 'is true' do + expect(instance).not_to be_available + end end end + + context 'when inside a project' do + # Used to be always false hence still checking. + it_behaves_like 'filter availability' + end + + context 'when outside of a project' do + let(:project) { nil } + + it_behaves_like 'filter availability' + end end describe '#allowed_values' do let(:project) { nil } + let(:parent) { build_stubbed(:project, id: 1) } + let(:child) { build_stubbed(:project, parent: parent, id: 2) } + let(:visible_projects) { [parent, child] } it 'is an array of group values' do - parent = build_stubbed(:project, id: 1) - child = build_stubbed(:project, parent: parent, id: 2) - - visible_projects = [parent, child] - - allow(Project) - .to receive_message_chain(:visible, :active) - .and_return(visible_projects) - allow(Project) .to receive(:project_tree) .with(visible_projects) @@ -94,20 +106,13 @@ describe Queries::WorkPackages::Filter::ProjectFilter, type: :model do end describe '#value_objects' do - let(:project) { build_stubbed(:project) } - let(:project2) { build_stubbed(:project) } - before do - allow(Project) - .to receive_message_chain(:visible, :active) - .and_return([project, project2]) - - instance.values = [project.id.to_s] + instance.values = [visible_projects.first.id.to_s] end it 'returns an array of projects' do expect(instance.value_objects) - .to match_array([project]) + .to match_array([visible_projects.first]) end end end diff --git a/spec/models/query_spec.rb b/spec/models/query_spec.rb index 04170765f7..6b13a17b51 100644 --- a/spec/models/query_spec.rb +++ b/spec/models/query_spec.rb @@ -662,7 +662,7 @@ describe Query, type: :model do end end - describe '#statement_filters (private method)' do + describe 'filters and statement_filters (private method)' do def subproject_filter?(filter) filter.is_a?(Queries::WorkPackages::Filter::SubprojectFilter) end @@ -671,56 +671,57 @@ describe Query, type: :model do filters.detect { |filter| subproject_filter?(filter) } end - context 'when subprojects included', with_settings: { display_subprojects_work_packages: true } do - it 'adds a * subproject_id filter' do + shared_examples_for 'adds a subproject id filter' do |operator| + it "does not add a visible subproject filter" do expect(detect_subproject_filter(query.filters)).to eq nil + end + it "adds a #{operator} subproject_id filter to the statement" do added_filter = detect_subproject_filter(query.send(:statement_filters)) expect(added_filter).to be_present - expect(added_filter.operator).to eq '*' + expect(added_filter.operator).to eq operator end end - context 'when subprojects not included', with_settings: { display_subprojects_work_packages: false } do - it 'adds a !* subproject_id filter' do - expect(detect_subproject_filter(query.filters)).to eq nil + shared_examples_for 'does not add a subproject id filter' do + it 'does not add a second subproject id filter' do + expect(query.filters.count).to eq(query.send(:statement_filters).count) - added_filter = detect_subproject_filter(query.send(:statement_filters)) - expect(added_filter).to be_present - expect(added_filter.operator).to eq '!*' + expect(query.filters.select { |filter| subproject_filter?(filter) }) + .to match_array(query.send(:statement_filters).select { |filter| subproject_filter?(filter) }) end + end - context 'when subproject filter added manually' do - before do - query.add_filter('subproject_id', '=', ['1234']) - end - - it 'does not add a second subproject id filter' do - expect(query.filters.count).to eq(query.send(:statement_filters).count) + context 'when subprojects included settings active', with_settings: { display_subprojects_work_packages: true } do + it_behaves_like 'adds a subproject id filter', '*' + end - subproject_filters = query.filters.select { |filter| subproject_filter?(filter) } - expect(subproject_filters.count).to eq 1 + context 'when subprojects included settings inactive', with_settings: { display_subprojects_work_packages: false } do + it_behaves_like 'adds a subproject id filter', '!*' + end - subproject_filters = query.send(:statement_filters).select { |filter| subproject_filter?(filter) } - expect(subproject_filters.count).to eq 1 - end + context 'with a subproject filter added manually' do + before do + query.add_filter('subproject_id', '=', ['1234']) end - context 'when only subproject filter added manually' do - before do - query.add_filter('only_subproject_id', '=', ['1234']) - end + it_behaves_like 'does not add a subproject id filter' + end - it 'does not add a second subproject id filter' do - expect(query.filters.count).to eq(query.send(:statement_filters).count) + context 'with a only_subproject filter added manually' do + before do + query.add_filter('only_subproject_id', '=', ['1234']) + end - subproject_filters = query.filters.select { |filter| subproject_filter?(filter) } - expect(subproject_filters.count).to eq 1 + it_behaves_like 'does not add a subproject id filter' + end - subproject_filters = query.send(:statement_filters).select { |filter| subproject_filter?(filter) } - expect(subproject_filters.count).to eq 1 - end + context 'with a project filter added manually' do + before do + query.add_filter('project_id', '=', ['1234']) end + + it_behaves_like 'does not add a subproject id filter' end end end diff --git a/spec/requests/api/v3/queries/schemas/query_filter_instance_schema_resource_spec.rb b/spec/requests/api/v3/queries/schemas/query_filter_instance_schema_resource_spec.rb index 223d96ec47..e468176532 100644 --- a/spec/requests/api/v3/queries/schemas/query_filter_instance_schema_resource_spec.rb +++ b/spec/requests/api/v3/queries/schemas/query_filter_instance_schema_resource_spec.rb @@ -33,46 +33,34 @@ describe 'API v3 Query Filter Schema resource', type: :request do include Rack::Test::Methods include API::V3::Utilities::PathHelper - let(:project) { create(:project) } + let(:project) do + create(:project).tap do |p| + create(:category, project: p) + end + end let(:visible_child) do - create(:project, parent: project, members: { user => role }) + create(:project, parent: project, members: { current_user => role }) end let(:role) { create(:role, permissions: permissions) } let(:permissions) { [:view_work_packages] } - let(:user) do + let(:global_path) { api_v3_paths.query_filter_instance_schemas } + let(:project_path) { api_v3_paths.query_project_filter_instance_schemas(project.id) } + + current_user do create(:user, - member_in_project: project, - member_through_role: role) + member_in_project: project, + member_through_role: role) end before do - allow(User) - .to receive(:current) - .and_return(user) + get path end - let(:global_path) { api_v3_paths.query_filter_instance_schemas } - let(:project_path) { api_v3_paths.query_project_filter_instance_schemas(project.id) } - subject do last_response end - def instance_in_collection(response, name) - collection_hash = ::JSON.parse(response) - - collection_hash['_embedded']['elements'].any? do |instance_hash| - href = instance_hash['_links']['self']['href'] - - href == api_v3_paths.query_filter_instance_schema(name) - end - end - - before do - get path - end - - describe '#get queries/filter_instance_schemas' do + describe '#GET /api/v3/queries/filter_instance_schemas' do %i[global project].each do |current_path| context current_path do @@ -80,7 +68,7 @@ describe 'API v3 Query Filter Schema resource', type: :request do it 'succeeds' do expect(subject.status) - .to eql(200) + .to eq(200) end it 'returns a collection of schemas' do @@ -98,7 +86,7 @@ describe 'API v3 Query Filter Schema resource', type: :request do .at_path('_embedded/elements/0/_type') end - context 'user not allowed' do + context 'when the user is not allowed' do let(:permissions) { [] } it_behaves_like 'unauthorized access' @@ -106,7 +94,7 @@ describe 'API v3 Query Filter Schema resource', type: :request do end end - context 'global' do + context 'when in a global context' do let(:path) { global_path } before do @@ -115,15 +103,20 @@ describe 'API v3 Query Filter Schema resource', type: :request do end it 'includes only global specific filter' do - expect(instance_in_collection(subject.body, 'project')) - .to be_truthy + instance_paths = JSON.parse(subject.body).dig('_embedded', 'elements').map { |f| f.dig('_links', 'self', 'href') } + + expect(instance_paths) + .not_to include(api_v3_paths.query_filter_instance_schema('category')) + + expect(instance_paths) + .to include(api_v3_paths.query_filter_instance_schema('project')) - expect(instance_in_collection(subject.body, 'subprojectId')) - .to be_falsey + expect(instance_paths) + .not_to include(api_v3_paths.query_filter_instance_schema('subprojectId')) end end - context 'project' do + context 'when in a project context' do let(:path) { project_path } before do @@ -131,23 +124,28 @@ describe 'API v3 Query Filter Schema resource', type: :request do get path end - it 'includes only project specific filter' do - expect(instance_in_collection(subject.body, 'project')) - .to be_falsey + it 'includes project specific filter' do + instance_paths = JSON.parse(subject.body).dig('_embedded', 'elements').map { |f| f.dig('_links', 'self', 'href') } + + expect(instance_paths) + .to include(api_v3_paths.query_filter_instance_schema('category')) + + expect(instance_paths) + .to include(api_v3_paths.query_filter_instance_schema('project')) - expect(instance_in_collection(subject.body, 'subprojectId')) - .to be_truthy + expect(instance_paths) + .to include(api_v3_paths.query_filter_instance_schema('subprojectId')) end end end - describe '#get queries/filter_instance_schemas/:id' do + describe '#GET /api/v3/queries/filter_instance_schemas/:id' do let(:filter_name) { 'assignee' } let(:path) { api_v3_paths.query_filter_instance_schema(filter_name) } it 'succeeds' do expect(subject.status) - .to eql(200) + .to eq(200) end it 'returns the instance schema' do @@ -156,13 +154,13 @@ describe 'API v3 Query Filter Schema resource', type: :request do .at_path('_links/self/href') end - context 'user not allowed' do + context 'when the user is not allowed' do let(:permissions) { [] } it_behaves_like 'unauthorized access' end - context 'not found' do + context 'when the id is not found' do let(:filter_name) { 'bogus' } it_behaves_like 'not found' From e7fba9b677af723afa9e345119156a838280c617 Mon Sep 17 00:00:00 2001 From: ulferts Date: Mon, 17 Jan 2022 14:39:12 +0100 Subject: [PATCH 015/118] remove unused method --- app/models/query/results.rb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/app/models/query/results.rb b/app/models/query/results.rb index 07ab710e8d..1c758b2439 100644 --- a/app/models/query/results.rb +++ b/app/models/query/results.rb @@ -62,17 +62,6 @@ class ::Query::Results .order(sort_criteria_array) end - def versions - scope = Version - .visible - - if query.project && (limiting_filter = query.project_limiting_filter) - scope.where(limiting_filter.where) - end - - scope - end - def order_option order_option = [group_by_sort].compact_blank.join(', ') From 482407392b1d1993becf79be53b187ea84500742 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Tue, 18 Jan 2022 17:17:33 +0100 Subject: [PATCH 016/118] add global role to users when added to a group having global role --- app/services/groups/add_users_service.rb | 6 +-- .../add_users_service_integration_spec.rb | 46 ++++++++++++++++++- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/app/services/groups/add_users_service.rb b/app/services/groups/add_users_service.rb index 15486f29c7..01fe85ef15 100644 --- a/app/services/groups/add_users_service.rb +++ b/app/services/groups/add_users_service.rb @@ -85,7 +85,7 @@ module Groups SELECT members.id, found_users.user_id, members.project_id FROM members, found_users, group_memberships WHERE members.user_id = found_users.user_id - AND members.project_id = group_memberships.project_id + AND members.project_id IS NOT DISTINCT FROM group_memberships.project_id AND members.id IS NOT NULL ), -- insert the group user into members @@ -93,7 +93,7 @@ module Groups INSERT INTO #{Member.table_name} (project_id, user_id, updated_at, created_at) SELECT group_memberships.project_id, found_users.user_id, (SELECT time from timestamp), (SELECT time from timestamp) FROM found_users, group_memberships - WHERE NOT EXISTS (SELECT 1 FROM existing_members WHERE existing_members.user_id = found_users.user_id AND existing_members.project_id = group_memberships.project_id) + WHERE NOT EXISTS (SELECT 1 FROM existing_members WHERE existing_members.user_id = found_users.user_id AND existing_members.project_id IS NOT DISTINCT FROM group_memberships.project_id) ON CONFLICT(project_id, user_id) DO NOTHING RETURNING id, user_id, project_id ), @@ -103,7 +103,7 @@ module Groups SELECT members.id, group_roles.role_id, group_roles.member_role_id FROM group_roles JOIN - (SELECT * FROM new_members UNION SELECT * from existing_members) members ON group_roles.project_id = members.project_id + (SELECT * FROM new_members UNION SELECT * from existing_members) members ON group_roles.project_id IS NOT DISTINCT FROM members.project_id -- Ignore if the role was already inserted by us ON CONFLICT DO NOTHING RETURNING id, member_id, role_id diff --git a/spec/services/groups/add_users_service_integration_spec.rb b/spec/services/groups/add_users_service_integration_spec.rb index 1c201e61c5..6eb9058a85 100644 --- a/spec/services/groups/add_users_service_integration_spec.rb +++ b/spec/services/groups/add_users_service_integration_spec.rb @@ -158,8 +158,6 @@ describe Groups::AddUsersService, 'integration', type: :model do .to match_array([user1, user2]) expect(user1.memberships.where(project_id: project).map(&:roles).flatten) .to match_array(roles) - expect(user1.memberships.where(project_id: project).map(&:roles).flatten) - .to match_array(roles) expect(user2.memberships.where(project_id: project).count).to eq 1 expect(user2.memberships.map(&:roles).flatten).to match_array roles end @@ -210,6 +208,50 @@ describe Groups::AddUsersService, 'integration', type: :model do let(:user) { user_ids } end end + + context 'with global role' do + let(:role) { FactoryBot.create :global_role } + let!(:group) do + FactoryBot.create :group, + global_role: role, + global_permission: :add_project + end + + it 'adds the users to the group and their membership to the global role' do + expect(service_call).to be_success + + expect(group.users).to match_array([user1, user2]) + expect(user1.memberships.where(project_id: nil).count).to eq 1 + expect(user1.memberships.flat_map(&:roles)).to match_array [role] + expect(user2.memberships.where(project_id: nil).count).to eq 1 + expect(user2.memberships.flat_map(&:roles)).to match_array [role] + end + + context 'when one user already has a global role that the group would add' do + let(:global_roles) { FactoryBot.create_list(:global_role, 2) } + let!(:group) do + FactoryBot.create :group do |g| + FactoryBot.create(:member, + project: nil, + principal: g, + roles: global_roles) + end + end + let!(:user_membership) do + FactoryBot.create(:member, + project: nil, + roles: [global_roles.first], + principal: user1) + end + + it 'adds their membership to the global role' do + expect(service_call).to be_success + + expect(user1.memberships.where(project_id: nil).flat_map(&:roles)).to match_array global_roles + expect(user2.memberships.flat_map(&:roles)).to match_array global_roles + end + end + end end context 'when not allowed' do From c5a6b9deb0ccd9024d570b8e82ab4e8fcc1b9491 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Wed, 19 Jan 2022 11:22:58 +0100 Subject: [PATCH 017/118] Filter out global roles when editing project memberships for group --- app/views/groups/_memberships.html.erb | 2 +- spec/controllers/groups_controller_spec.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/views/groups/_memberships.html.erb b/app/views/groups/_memberships.html.erb index b2efc84725..55c8d079e4 100644 --- a/app/views/groups/_memberships.html.erb +++ b/app/views/groups/_memberships.html.erb @@ -64,7 +64,7 @@ See COPYRIGHT and LICENSE files for more details. - <% @group.memberships.each do |membership| %> + <% @group.memberships.where.not(project: nil).each do |membership| %> <% next if membership.new_record? %> <%= link_to membership.project.name, project_members_path(membership.project) %> diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index 6f7721ca41..3cd170e35b 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -112,6 +112,23 @@ describe GroupsController, type: :controller do end end + context 'with a global role membership' do + render_views + + let!(:member_group) do + FactoryBot.create(:global_member, + principal: group, + roles: [FactoryBot.create(:global_role)]) + end + + it 'should edit memberships' do + get :edit, params: { id: group.id, tab: 'memberships' } + + expect(response).to be_successful + expect(response).to render_template 'edit' + end + end + context 'with project and role' do let(:project) { create :project } let(:role1) { create :role } From 7d862d4cc8c4d0ce85a390bfb351820bf3716031 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Wed, 19 Jan 2022 14:32:32 +0100 Subject: [PATCH 018/118] Update global role for users belonging to a group having global role --- app/services/groups/update_roles_service.rb | 2 +- .../update_roles_service_integration_spec.rb | 68 +++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/app/services/groups/update_roles_service.rb b/app/services/groups/update_roles_service.rb index 9aeb95300a..f0da731f80 100644 --- a/app/services/groups/update_roles_service.rb +++ b/app/services/groups/update_roles_service.rb @@ -68,7 +68,7 @@ module Groups SELECT id FROM #{Member.table_name} WHERE user_id IN (SELECT user_id FROM group_users) - AND project_id = :project_id + AND project_id IS NOT DISTINCT FROM :project_id ), -- select all member roles the group has for the member group_member_roles AS ( diff --git a/spec/services/groups/update_roles_service_integration_spec.rb b/spec/services/groups/update_roles_service_integration_spec.rb index 1aa22003e3..2c6ab5860e 100644 --- a/spec/services/groups/update_roles_service_integration_spec.rb +++ b/spec/services/groups/update_roles_service_integration_spec.rb @@ -114,6 +114,74 @@ describe Groups::UpdateRolesService, 'integration', type: :model do end end + context 'with global membership' do + let(:role) { FactoryBot.create :global_role } + let!(:group) do + FactoryBot.create(:group, + members: users).tap do |group| + FactoryBot.create(:global_member, + principal: group, + roles: roles) + + ::Groups::AddUsersService + .new(group, current_user: User.system, contract_class: EmptyContract) + .call(ids: users.map(&:id)) + end + end + + context 'when adding a global role' do + let(:added_role) { FactoryBot.create(:global_role) } + + before do + member.roles << added_role + end + + it 'is successful' do + expect(service_call) + .to be_success + end + + it 'adds the roles to all inherited memberships' do + service_call + + Member.where(principal: users).each do |member| + expect(member.roles) + .to match_array([role, added_role]) + end + end + + it_behaves_like 'sends notification' do + let(:user) { users } + end + end + + context 'when removing a global role' do + let(:roles) { [role, FactoryBot.create(:global_role)] } + + before do + member.roles = [role] + end + + it 'is successful' do + expect(service_call) + .to be_success + end + + it 'removes the roles from all inherited memberships' do + service_call + + Member.where(principal: users).each do |member| + expect(member.roles) + .to match_array([role]) + end + end + + it_behaves_like 'sends notification' do + let(:user) { users } + end + end + end + context 'when adding a role but with one user having had the role before (no inherited from)' do let(:added_role) { create(:role) } From e6d75f87564dc15c92df3a17e866d4dd584283da Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Wed, 19 Jan 2022 15:58:57 +0100 Subject: [PATCH 019/118] Cleanup global role associated with group when membership is deleted It was already handled. Only tests were updated. --- ...nherited_roles_service_integration_spec.rb | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb b/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb index 7c3085b580..a1a25eeaec 100644 --- a/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb +++ b/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb @@ -30,24 +30,29 @@ require 'spec_helper' describe Groups::CleanupInheritedRolesService, 'integration', type: :model do subject(:service_call) do - member.destroy + members.destroy_all instance.call(params) end let(:project) { create :project } let(:role) { create :role } + let(:global_role) { create :global_role } let(:current_user) { create :admin } let(:roles) { [role] } + let(:global_roles) { [global_role] } let(:params) { { message: message } } let(:message) { "Some message" } let!(:group) do create(:group, - members: users).tap do |group| + members: users).tap do |group| create(:member, - project: project, - principal: group, - roles: roles) + project: project, + principal: group, + roles: roles) + create(:global_member, + principal: group, + roles: global_roles) ::Groups::AddUsersService .new(group, current_user: User.system, contract_class: EmptyContract) @@ -55,7 +60,7 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do end end let(:users) { create_list :user, 2 } - let(:member) { Member.find_by(principal: group) } + let(:members) { Member.where(principal: group) } let(:instance) do described_class.new(group, current_user: current_user) @@ -104,10 +109,12 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do context 'when also having own roles' do let(:another_role) { create(:role) } + let(:another_global_role) { create(:global_role) } let!(:first_user_member) do group Member.find_by(principal: users.first).tap do |m| m.roles << another_role + m.roles << another_global_role end end @@ -130,7 +137,7 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do .not_to eql(Member.find_by(id: first_user_member.id).updated_at) expect(first_user_member.reload.roles) - .to match_array([another_role]) + .to match_array([another_role, another_global_role]) end it 'sends a notification on the kept membership' do @@ -144,11 +151,12 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do end end - context 'when the user has had the role added by the group before' do + context 'when the user has had the roles added by the group before' do let(:another_role) { create(:role) } let!(:first_user_member) do Member.find_by(principal: users.first).tap do |m| m.member_roles.create(role: role) + m.member_roles.create(role: global_role) end end @@ -171,7 +179,7 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do .not_to eql(Member.find_by(id: first_user_member.id).updated_at) expect(first_user_member.reload.roles) - .to match_array([role]) + .to match_array([role, global_role]) end it 'sends a notification on the kept membership' do @@ -191,7 +199,7 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do .where(member_id: Member.where(principal: users.first)) .pluck(:id) end - let(:params) { { member_role_ids: member_role_ids} } + let(:params) { { member_role_ids: member_role_ids } } it 'is successful' do expect(service_call) From 616013526cbcde9519a4713c0b420e19be3e8915 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Wed, 19 Jan 2022 17:09:48 +0100 Subject: [PATCH 020/118] fix rubocop warning RSpec/ExampleWording: Do not use should when describing your tests. --- spec/controllers/groups_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index 3cd170e35b..49bbc2313d 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -121,7 +121,7 @@ describe GroupsController, type: :controller do roles: [FactoryBot.create(:global_role)]) end - it 'should edit memberships' do + it 'displays edit memberships' do get :edit, params: { id: group.id, tab: 'memberships' } expect(response).to be_successful From 6be1461cca4259eb4e042d28ea6b561ad1a7fb89 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Wed, 19 Jan 2022 18:16:47 +0100 Subject: [PATCH 021/118] fix indentation --- app/models/principal.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/models/principal.rb b/app/models/principal.rb index ddd1038391..0242958910 100644 --- a/app/models/principal.rb +++ b/app/models/principal.rb @@ -47,12 +47,13 @@ class Principal < ApplicationRecord class_name: 'UserPreference', foreign_key: 'user_id' has_many :members, foreign_key: 'user_id', dependent: :destroy - has_many :memberships, -> { - includes(:project, :roles) - .where(["projects.active = ? OR project_id IS NULL", true]) - .order(Arel.sql('projects.name ASC')) - # haven't been able to produce the order using hashes - }, + has_many :memberships, + -> { + includes(:project, :roles) + .where(["projects.active = ? OR project_id IS NULL", true]) + .order(Arel.sql('projects.name ASC')) + # haven't been able to produce the order using hashes + }, class_name: 'Member', foreign_key: 'user_id' has_many :projects, through: :memberships From 590fa591aef9b6234f46f5282969b9d7990869f6 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Thu, 20 Jan 2022 11:20:47 +0100 Subject: [PATCH 022/118] Make rubocop happier --- app/models/principal.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/principal.rb b/app/models/principal.rb index 0242958910..4c0b97d678 100644 --- a/app/models/principal.rb +++ b/app/models/principal.rb @@ -54,6 +54,8 @@ class Principal < ApplicationRecord .order(Arel.sql('projects.name ASC')) # haven't been able to produce the order using hashes }, + inverse_of: :principal, + dependent: :nullify, class_name: 'Member', foreign_key: 'user_id' has_many :projects, through: :memberships From 15f00ffe847b56905c7671c04313215508eccb34 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Thu, 20 Jan 2022 11:23:47 +0100 Subject: [PATCH 023/118] Add 'Global role' tab for groups Global roles can now be added, update, and removed for a group --- app/controllers/groups_controller.rb | 15 +++- app/helpers/groups_helper.rb | 6 ++ app/helpers/members_helper.rb | 18 ++++- app/models/member.rb | 2 +- .../groups/_assigned_global_role.html.erb | 37 ++++++++++ .../groups/_available_global_role.html.erb | 42 +++++++++++ .../groups/_available_global_roles.html.erb | 65 +++++++++++++++++ app/views/groups/_global_roles.html.erb | 73 +++++++++++++++++++ .../groups/_global_roles_header.html.erb | 32 ++++++++ config/routes.rb | 3 +- 10 files changed, 286 insertions(+), 7 deletions(-) create mode 100644 app/views/groups/_assigned_global_role.html.erb create mode 100644 app/views/groups/_available_global_role.html.erb create mode 100644 app/views/groups/_available_global_roles.html.erb create mode 100644 app/views/groups/_global_roles.html.erb create mode 100644 app/views/groups/_global_roles_header.html.erb diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 49f1df03d2..dc055766f0 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -176,12 +176,13 @@ class GroupsController < ApplicationController end def destroy_membership + member = Member.find(params[:membership_id]) Members::DeleteService - .new(model: Member.find(params[:membership_id]), user: current_user) + .new(model: member, user: current_user) .call flash[:notice] = I18n.t :notice_successful_delete - redirect_to controller: '/groups', action: 'edit', id: @group, tab: 'memberships' + redirect_to controller: '/groups', action: 'edit', id: @group, tab: redirected_to_tab(member) end protected @@ -222,7 +223,15 @@ class GroupsController < ApplicationController flash[:error] = service_call.errors.full_messages.join("\n") end - redirect_to controller: '/groups', action: 'edit', id: @group, tab: 'memberships' + redirect_to controller: '/groups', action: 'edit', id: @group, tab: redirected_to_tab(service_call.result) + end + + def redirected_to_tab(membership) + if membership.project + 'memberships' + else + 'global_roles' + end end def respond_users_altered(service_call) diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb index db8b08611a..f0e3154307 100644 --- a/app/helpers/groups_helper.rb +++ b/app/helpers/groups_helper.rb @@ -48,6 +48,12 @@ module GroupsHelper partial: 'groups/memberships', path: edit_group_path(@group, tab: :memberships), label: :label_project_plural + }, + { + name: 'global_roles', + partial: 'groups/global_roles', + path: edit_group_path(@group, tab: :global_roles), + label: :label_global_roles } ] end diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb index fa48abc262..7fec059897 100644 --- a/app/helpers/members_helper.rb +++ b/app/helpers/members_helper.rb @@ -36,12 +36,26 @@ module MembersHelper # If it is the later, the ids of the non delete roles are appended to the url so that they are kept. def global_member_role_deletion_link(member, role) if member.roles.length == 1 + path = + if member.principal.is_a?(Group) + membership_of_group_path(member.principal, member) + else + user_membership_path(user_id: member.user_id, id: member.id) + end + link_to('', - user_membership_path(user_id: member.user_id, id: member.id), + path, { method: :delete, class: 'icon icon-delete', title: t(:button_delete) }) else + path = + if member.principal.is_a?(Group) + membership_of_group_path(member.principal, member, 'membership[role_ids]' => member.roles - [role]) + else + user_membership_path(user_id: member.user_id, id: member.id, 'membership[role_ids]' => member.roles - [role]) + end + link_to('', - user_membership_path(user_id: member.user_id, id: member.id, 'membership[role_ids]' => member.roles - [role]), + path, { method: :patch, class: 'icon icon-delete', title: t(:button_delete) }) end end diff --git a/app/models/member.rb b/app/models/member.rb index 7c0984ae08..bf7c3a5326 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -34,7 +34,7 @@ class Member < ApplicationRecord extend DeprecatedAlias belongs_to :principal, foreign_key: 'user_id' has_many :member_roles, dependent: :destroy, autosave: true, validate: false - has_many :roles, through: :member_roles + has_many :roles, -> { distinct }, through: :member_roles belongs_to :project validates_presence_of :principal diff --git a/app/views/groups/_assigned_global_role.html.erb b/app/views/groups/_assigned_global_role.html.erb new file mode 100644 index 0000000000..a8db1612c7 --- /dev/null +++ b/app/views/groups/_assigned_global_role.html.erb @@ -0,0 +1,37 @@ +<%#-- copyright +OpenProject is an open source project management software. +Copyright (C) 2012-2021 the OpenProject GmbH + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License version 3. + +OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +Copyright (C) 2006-2013 Jean-Philippe Lang +Copyright (C) 2010-2013 the ChiliProject Team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +See COPYRIGHT and LICENSE files for more details. + +++#%> + + + + <%=h role %> + + + <%= global_member_role_deletion_link(member, role) %> + + diff --git a/app/views/groups/_available_global_role.html.erb b/app/views/groups/_available_global_role.html.erb new file mode 100644 index 0000000000..d4a3aaf233 --- /dev/null +++ b/app/views/groups/_available_global_role.html.erb @@ -0,0 +1,42 @@ +<%#-- copyright +OpenProject is an open source project management software. +Copyright (C) 2012-2021 the OpenProject GmbH + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License version 3. + +OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +Copyright (C) 2006-2013 Jean-Philippe Lang +Copyright (C) 2010-2013 the ChiliProject Team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +See COPYRIGHT and LICENSE files for more details. + +++#%> + +<% + name = global_member ? 'membership[role_ids][]' : 'new_membership[role_ids][]' +%> + +
+ +
diff --git a/app/views/groups/_available_global_roles.html.erb b/app/views/groups/_available_global_roles.html.erb new file mode 100644 index 0000000000..66dd037712 --- /dev/null +++ b/app/views/groups/_available_global_roles.html.erb @@ -0,0 +1,65 @@ +<%#-- copyright +OpenProject is an open source project management software. +Copyright (C) 2012-2021 the OpenProject GmbH + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License version 3. + +OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +Copyright (C) 2006-2013 Jean-Philippe Lang +Copyright (C) 2010-2013 the ChiliProject Team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +See COPYRIGHT and LICENSE files for more details. + +++#%> + +<% available_roles = GlobalRole.all - (global_member&.roles || []) %> + +
+
+ <%= Role.model_name.human(:count => 2) %> + <% if available_roles.empty? %> + + <%= no_results_box %> + + <% else %> + + <% args = + if global_member + { url: membership_of_group_path(group, global_member), method: :put } + else + { url: memberships_of_group_path(group), method: :post } + end + %> + <%= form_for(:principal_roles, **args) do %> + <% if global_member %> + <%= hidden_field_tag('membership[id]', global_member.id ) %> + + <% global_member.roles.each do |role| %> + <%= hidden_field_tag('membership[role_ids][]', role.id ) %> + <% end %> + <% end %> + + <% available_roles.each do |role| %> + <%= render :partial => 'groups/available_global_role', :locals => {role: role, global_member: global_member} %> + <% end %> +


<%= styled_button_tag t(:button_add), class: '-with-icon icon-checkmark' %>

+ <% end %> +
+ <% end %> +
+
diff --git a/app/views/groups/_global_roles.html.erb b/app/views/groups/_global_roles.html.erb new file mode 100644 index 0000000000..8cb25c8954 --- /dev/null +++ b/app/views/groups/_global_roles.html.erb @@ -0,0 +1,73 @@ +<%#-- copyright +OpenProject is an open source project management software. +Copyright (C) 2012-2021 the OpenProject GmbH + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License version 3. + +OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +Copyright (C) 2006-2013 Jean-Philippe Lang +Copyright (C) 2010-2013 the ChiliProject Team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +See COPYRIGHT and LICENSE files for more details. + +++#%> + +<%= render partial: 'global_roles_header' %> + +<% global_member = Member.global.where(principal: @group).includes(:roles).first %> + +
+
+ <% unless global_member&.roles&.any? %> + <%= no_results_box %> + <% else %> +
+
+ + + + + + + + + + + + + <% global_member.roles.each do |role| %> + <%= render :partial => 'assigned_global_role', :locals => { :role => role, member: global_member } %> + <%end%> + +
+
+
+ + <%= Role.model_name.human %> + +
+
+
+ +
+
+ <% end %> +
+ + <%= render partial: 'groups/available_global_roles', locals: { group: @group, global_member: global_member }%> +
diff --git a/app/views/groups/_global_roles_header.html.erb b/app/views/groups/_global_roles_header.html.erb new file mode 100644 index 0000000000..2ead7011da --- /dev/null +++ b/app/views/groups/_global_roles_header.html.erb @@ -0,0 +1,32 @@ +<%#-- copyright +OpenProject is an open source project management software. +Copyright (C) 2012-2021 the OpenProject GmbH + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License version 3. + +OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +Copyright (C) 2006-2013 Jean-Philippe Lang +Copyright (C) 2010-2013 the ChiliProject Team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +See COPYRIGHT and LICENSE files for more details. + +++#%> + +<% content_for :header_tags do %> + +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 3b17d48e57..3a6bee4954 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -366,7 +366,8 @@ OpenProject::Application.routes.draw do match '/members' => 'groups#add_users', via: :post, as: 'members_of' match '/members/:user_id' => 'groups#remove_user', via: :delete, as: 'member_of' # this should be put into it's own resource - match '/memberships/:membership_id' => 'groups#edit_membership', via: :put, as: 'membership_of' + match '/memberships/:membership_id' => 'groups#edit_membership', via: :patch, as: 'membership_of' + match '/memberships/:membership_id' => 'groups#edit_membership', via: :put match '/memberships/:membership_id' => 'groups#destroy_membership', via: :delete match '/memberships' => 'groups#create_memberships', via: :post, as: 'memberships_of' end From 551885c30339d4d9f126cd5a3c7cf127b32c132c Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Thu, 20 Jan 2022 11:39:46 +0100 Subject: [PATCH 024/118] Harmonize params name for membership creation and update This will allow further factorization --- app/controllers/groups_controller.rb | 2 +- app/models/permitted_params.rb | 6 +----- app/views/groups/_available_global_role.html.erb | 6 +----- app/views/groups/_available_global_roles.html.erb | 2 +- app/views/groups/_memberships.html.erb | 6 +++--- spec/controllers/groups_controller_spec.rb | 2 +- spec/support/pages/groups.rb | 2 +- 7 files changed, 9 insertions(+), 17 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index dc055766f0..4c976224fe 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -154,7 +154,7 @@ class GroupsController < ApplicationController end def create_memberships - membership_params = permitted_params.group_membership[:new_membership] + membership_params = permitted_params.group_membership[:membership] service_call = Members::CreateService .new(user: current_user) diff --git a/app/models/permitted_params.rb b/app/models/permitted_params.rb index c23dc51caa..2f76fb99fb 100644 --- a/app/models/permitted_params.rb +++ b/app/models/permitted_params.rb @@ -490,11 +490,7 @@ class PermittedParams { membership: [ :project_id, { role_ids: [] } - ], - new_membership: [ - :project_id, - { role_ids: [] } - ] } + ] } ], member: [ role_ids: [] diff --git a/app/views/groups/_available_global_role.html.erb b/app/views/groups/_available_global_role.html.erb index d4a3aaf233..b6796bb0e6 100644 --- a/app/views/groups/_available_global_role.html.erb +++ b/app/views/groups/_available_global_role.html.erb @@ -27,13 +27,9 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<% - name = global_member ? 'membership[role_ids][]' : 'new_membership[role_ids][]' -%> -
From 2fec9a879533bea756d7a350be5a3f891861a154 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Fri, 21 Jan 2022 17:56:54 +0100 Subject: [PATCH 027/118] merge some common global roles files from users and groups --- app/helpers/members_helper.rb | 48 +++++++++----- app/views/groups/_global_roles.html.erb | 6 +- app/views/groups/_memberships.html.erb | 18 +++-- .../_memberships.html.erb | 10 +-- .../_assigned_global_role.html.erb | 0 .../_available_global_role.html.erb | 0 .../_available_global_roles.html.erb | 13 +--- .../users/_assigned_global_role.html.erb | 37 ----------- .../users/_available_global_role.html.erb | 38 ----------- .../users/_available_global_roles.html.erb | 65 ------------------- app/views/users/_global_roles.html.erb | 6 +- 11 files changed, 59 insertions(+), 182 deletions(-) rename app/views/{groups => principals}/_assigned_global_role.html.erb (100%) rename app/views/{groups => principals}/_available_global_role.html.erb (100%) rename app/views/{groups => principals}/_available_global_roles.html.erb (83%) delete mode 100644 app/views/users/_assigned_global_role.html.erb delete mode 100644 app/views/users/_available_global_role.html.erb delete mode 100644 app/views/users/_available_global_roles.html.erb diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb index 7fec059897..9788bbecb8 100644 --- a/app/helpers/members_helper.rb +++ b/app/helpers/members_helper.rb @@ -36,27 +36,43 @@ module MembersHelper # If it is the later, the ids of the non delete roles are appended to the url so that they are kept. def global_member_role_deletion_link(member, role) if member.roles.length == 1 - path = - if member.principal.is_a?(Group) - membership_of_group_path(member.principal, member) - else - user_membership_path(user_id: member.user_id, id: member.id) - end - link_to('', - path, + principal_membership_path(member.principal, member), { method: :delete, class: 'icon icon-delete', title: t(:button_delete) }) else - path = - if member.principal.is_a?(Group) - membership_of_group_path(member.principal, member, 'membership[role_ids]' => member.roles - [role]) - else - user_membership_path(user_id: member.user_id, id: member.id, 'membership[role_ids]' => member.roles - [role]) - end - link_to('', - path, + principal_membership_path(member.principal, member, 'membership[role_ids]' => member.roles - [role]), { method: :patch, class: 'icon icon-delete', title: t(:button_delete) }) end end + + ## + # Decorate the form_for helper for membership of a user or a group to a global + # role. + def global_role_membership_form_for(principal, global_member, options = {}, &block) + args = + if global_member + { url: principal_membership_path(principal, global_member), method: :patch } + else + { url: principal_memberships_path(principal), method: :post } + end + + form_for(:principal_roles, args.merge(options), &block) + end + + def principal_membership_path(principal, global_member, options = {}) + if principal.is_a?(Group) + membership_of_group_path(principal, global_member, options) + else + user_membership_path(principal, global_member, options) + end + end + + def principal_memberships_path(principal, options = {}) + if principal.is_a?(Group) + memberships_of_group_path(principal, options) + else + user_memberships_path(principal, options) + end + end end diff --git a/app/views/groups/_global_roles.html.erb b/app/views/groups/_global_roles.html.erb index 8cb25c8954..30ae5a2054 100644 --- a/app/views/groups/_global_roles.html.erb +++ b/app/views/groups/_global_roles.html.erb @@ -59,8 +59,8 @@ See COPYRIGHT and LICENSE files for more details. <% global_member.roles.each do |role| %> - <%= render :partial => 'assigned_global_role', :locals => { :role => role, member: global_member } %> - <%end%> + <%= render partial: 'principals/assigned_global_role', locals: { role: role, member: global_member } %> + <% end %> @@ -69,5 +69,5 @@ See COPYRIGHT and LICENSE files for more details. <% end %> - <%= render partial: 'groups/available_global_roles', locals: { group: @group, global_member: global_member }%> + <%= render partial: 'principals/available_global_roles', locals: { principal: @group, global_member: global_member } %> diff --git a/app/views/groups/_memberships.html.erb b/app/views/groups/_memberships.html.erb index c4c2fdb42a..b019d3f851 100644 --- a/app/views/groups/_memberships.html.erb +++ b/app/views/groups/_memberships.html.erb @@ -28,6 +28,7 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <% roles = Role.givable %> <% projects = Project.active.order(Arel.sql('lft')) %> +<% memberships = @group.memberships %>
@@ -64,15 +65,19 @@ See COPYRIGHT and LICENSE files for more details. - <% @group.memberships.where.not(project: nil).each do |membership| %> + <% memberships.where.not(project: nil).each do |membership| %> <% next if membership.new_record? %> - - <%= link_to membership.project.name, project_members_path(membership.project) %> + + + <%= link_to membership.project.name, project_members_path(membership.project) %> + - <%=h membership.roles.sort.collect(&:to_s).join(', ') %> + + <%=h membership.roles.sort.collect(&:to_s).join(', ') %> + <%= labelled_tabular_form_for(:membership, url: membership_of_group_path(@group, membership), - method: :put, + method: :patch, html: { id: "member-#{membership.id}-roles-form", style: 'display:none;' @@ -83,7 +88,8 @@ See COPYRIGHT and LICENSE files for more details. role.id, membership.roles.include?(role), role.name, - no_label: true + no_label: true, + id: nil %> <%= role %> diff --git a/app/views/individual_principals/_memberships.html.erb b/app/views/individual_principals/_memberships.html.erb index 65e27c9b90..00dc90c34e 100644 --- a/app/views/individual_principals/_memberships.html.erb +++ b/app/views/individual_principals/_memberships.html.erb @@ -83,10 +83,12 @@ See COPYRIGHT and LICENSE files for more details. <%= labelled_tabular_form_for(:membership, url: polymorphic_path([@individual_principal, :membership], id: membership), - html: { id: "member-#{membership.id}-roles-form", - class: "member-#{membership.id}--edit-toggle-item", - style: 'display:none;'}, - method: :patch) do |f| %> + method: :patch, + html: { + id: "member-#{membership.id}-roles-form", + class: "member-#{membership.id}--edit-toggle-item", + style: 'display:none;' + }) do |f| %>
<% roles.each do |role| %>
From ff4367b084ec892d52d37f2b8c2ab689ffb4e472 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 24 Jan 2022 09:50:35 +0100 Subject: [PATCH 028/118] Avoid instance variable in view helpers rubocop rule Rails/HelperInstanceVariable --- app/controllers/groups_controller.rb | 2 -- app/helpers/groups_helper.rb | 9 +++++---- app/views/groups/_users.html.erb | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 4c976224fe..e45351943f 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -75,8 +75,6 @@ class GroupsController < ApplicationController # GET /groups/1/edit def edit @group = Group.includes(:members, :users).find(params[:id]) - - set_filters_for_user_autocompleter end # POST /groups diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb index c777176af8..498a247620 100644 --- a/app/helpers/groups_helper.rb +++ b/app/helpers/groups_helper.rb @@ -58,9 +58,10 @@ module GroupsHelper ] end - def set_filters_for_user_autocompleter - @autocompleter_filters = [] - @autocompleter_filters.push({ selector: 'status', operator: '=', values: ['active', 'invited'] }) - @autocompleter_filters.push({ selector: 'group', operator: '!', values: [@group.id] }) + def autocompleter_filters(group) + [ + { selector: 'status', operator: '=', values: ['active', 'invited'] }, + { selector: 'group', operator: '!', values: [group.id] } + ] end end diff --git a/app/views/groups/_users.html.erb b/app/views/groups/_users.html.erb index 736d9b6369..2cb9b9f288 100644 --- a/app/views/groups/_users.html.erb +++ b/app/views/groups/_users.html.erb @@ -55,7 +55,7 @@ See COPYRIGHT and LICENSE files for more details.
<%= hidden_field_tag :user_ids, nil %>
From 447f10cabf7c0769587f5296dd63fd55cd916f06 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 24 Jan 2022 10:06:06 +0100 Subject: [PATCH 029/118] merge common global roles view files from users and groups --- app/helpers/groups_helper.rb | 2 +- .../_global_roles.html.erb | 9 ++- .../_global_roles_header.html.erb | 0 app/views/roles/_form.html.erb | 3 +- app/views/users/_global_roles.html.erb | 73 ------------------- app/views/users/_global_roles_header.html.erb | 32 -------- lib/open_project/ui/extensible_tabs.rb | 2 +- 7 files changed, 9 insertions(+), 112 deletions(-) rename app/views/{groups => principals}/_global_roles.html.erb (91%) rename app/views/{groups => principals}/_global_roles_header.html.erb (100%) delete mode 100644 app/views/users/_global_roles.html.erb delete mode 100644 app/views/users/_global_roles_header.html.erb diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb index 498a247620..2a7ede9422 100644 --- a/app/helpers/groups_helper.rb +++ b/app/helpers/groups_helper.rb @@ -51,7 +51,7 @@ module GroupsHelper }, { name: 'global_roles', - partial: 'groups/global_roles', + partial: 'principals/global_roles', path: edit_group_path(group, tab: :global_roles), label: :label_global_roles } diff --git a/app/views/groups/_global_roles.html.erb b/app/views/principals/_global_roles.html.erb similarity index 91% rename from app/views/groups/_global_roles.html.erb rename to app/views/principals/_global_roles.html.erb index 30ae5a2054..7ad96be8ba 100644 --- a/app/views/groups/_global_roles.html.erb +++ b/app/views/principals/_global_roles.html.erb @@ -27,9 +27,12 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<%= render partial: 'global_roles_header' %> +<%= render partial: 'principals/global_roles_header' %> -<% global_member = Member.global.where(principal: @group).includes(:roles).first %> +<% + principal = @group || @user + global_member = Member.global.where(principal: principal).includes(:roles).first +%>
@@ -69,5 +72,5 @@ See COPYRIGHT and LICENSE files for more details. <% end %>
- <%= render partial: 'principals/available_global_roles', locals: { principal: @group, global_member: global_member } %> + <%= render partial: 'principals/available_global_roles', locals: { principal: principal, global_member: global_member } %>
diff --git a/app/views/groups/_global_roles_header.html.erb b/app/views/principals/_global_roles_header.html.erb similarity index 100% rename from app/views/groups/_global_roles_header.html.erb rename to app/views/principals/_global_roles_header.html.erb diff --git a/app/views/roles/_form.html.erb b/app/views/roles/_form.html.erb index 54654a2d33..3de7a4c3c5 100644 --- a/app/views/roles/_form.html.erb +++ b/app/views/roles/_form.html.erb @@ -27,7 +27,7 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<%= render :partial => 'users/global_roles_header' %> +<%= render partial: 'principals/global_roles_header' %> <% roles ||= nil %> @@ -66,4 +66,3 @@ See COPYRIGHT and LICENSE files for more details. <%= render partial: "permissions", locals: {permissions: grouped_setable_permissions(role), role: role, showGlobalRole: false }%>
<% end %> - diff --git a/app/views/users/_global_roles.html.erb b/app/views/users/_global_roles.html.erb deleted file mode 100644 index c14250959a..0000000000 --- a/app/views/users/_global_roles.html.erb +++ /dev/null @@ -1,73 +0,0 @@ -<%#-- copyright -OpenProject is an open source project management software. -Copyright (C) 2012-2021 the OpenProject GmbH - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License version 3. - -OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -Copyright (C) 2006-2013 Jean-Philippe Lang -Copyright (C) 2010-2013 the ChiliProject Team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -See COPYRIGHT and LICENSE files for more details. - -++#%> - -<%= render partial: 'global_roles_header' %> - -<% global_member = Member.global.where(principal: @user).includes(:roles).first %> - -
-
- <% unless global_member&.roles&.any? %> - <%= no_results_box %> - <% else %> -
-
- - - - - - - - - - - - - <% global_member.roles.each do |role| %> - <%= render partial: 'principals/assigned_global_role', locals: { role: role, member: global_member } %> - <% end %> - -
-
-
- - <%= Role.model_name.human %> - -
-
-
- -
-
- <% end %> -
- - <%= render partial: 'principals/available_global_roles', locals: { principal: @user, global_member: global_member } %> -
diff --git a/app/views/users/_global_roles_header.html.erb b/app/views/users/_global_roles_header.html.erb deleted file mode 100644 index 2ead7011da..0000000000 --- a/app/views/users/_global_roles_header.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -<%#-- copyright -OpenProject is an open source project management software. -Copyright (C) 2012-2021 the OpenProject GmbH - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License version 3. - -OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -Copyright (C) 2006-2013 Jean-Philippe Lang -Copyright (C) 2010-2013 the ChiliProject Team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -See COPYRIGHT and LICENSE files for more details. - -++#%> - -<% content_for :header_tags do %> - -<% end %> diff --git a/lib/open_project/ui/extensible_tabs.rb b/lib/open_project/ui/extensible_tabs.rb index 38d58509ed..3eb142f334 100644 --- a/lib/open_project/ui/extensible_tabs.rb +++ b/lib/open_project/ui/extensible_tabs.rb @@ -79,7 +79,7 @@ module OpenProject }, { name: 'global_roles', - partial: 'users/global_roles', + partial: 'principals/global_roles', path: ->(params) { edit_user_path(params[:user], tab: :global_roles) }, label: :label_global_roles, only_if: ->(*) { User.current.admin? } From 10ad8179d13e427f55cbd65a4a1b8cb4a4b5c21b Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 24 Jan 2022 12:28:56 +0100 Subject: [PATCH 030/118] hide deletion button if global role is inherited from group --- app/models/member.rb | 4 ++++ .../principals/_assigned_global_role.html.erb | 2 +- spec/models/member_spec.rb | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/models/member.rb b/app/models/member.rb index bf7c3a5326..3b528ace34 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -70,6 +70,10 @@ class Member < ApplicationRecord member_roles.detect(&:inherited_from).nil? end + def deletable_role?(role) + member_roles.filter { _1.role_id == role.id }.none?(&:inherited_from) + end + def include?(principal) if user? self.principal == principal diff --git a/app/views/principals/_assigned_global_role.html.erb b/app/views/principals/_assigned_global_role.html.erb index a8db1612c7..0242128929 100644 --- a/app/views/principals/_assigned_global_role.html.erb +++ b/app/views/principals/_assigned_global_role.html.erb @@ -32,6 +32,6 @@ See COPYRIGHT and LICENSE files for more details. <%=h role %> - <%= global_member_role_deletion_link(member, role) %> + <%= global_member_role_deletion_link(member, role) if member.deletable_role?(role) %> diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index 00e230ccc7..b85bcf2cfc 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -62,4 +62,21 @@ describe Member, type: :model do end end end + + describe '#deletable_role?' do + it 'returns true if not inherited from a group' do + expect(member.deletable_role?(role)).to eq(true) + end + + it 'returns false if role is inherited' do + member + group = FactoryBot.create(:group, members: [user]) + FactoryBot.create(:member, project: project, principal: group, roles: [role]) + ::Groups::AddUsersService + .new(group, current_user: User.system, contract_class: EmptyContract) + .call(ids: [user.id]) + + expect(user.reload.memberships.map { _1.deletable_role?(role) }).to match_array([true, false]) + end + end end From 8ffc8723b9b8b507f2fe80d5b02a82eb0bfef3a9 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Thu, 27 Jan 2022 14:59:05 +0100 Subject: [PATCH 031/118] rubocop: add 'as' as appropriate prefix for RSpec/ContextWording --- .rubocop.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.rubocop.yml b/.rubocop.yml index 7a3b2c0d39..a2858c26b0 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -194,6 +194,7 @@ RSpec/NamedSubject: RSpec/ContextWording: Prefixes: + - as - when - with - without From 30efbe426db29f59f8a73476db8007dabd170404 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Thu, 27 Jan 2022 17:00:03 +0100 Subject: [PATCH 032/118] send emails when adding global role to a group Also refactor the logic to decide if a 'membership created' or 'membership updated' email should be sent --- app/workers/mails/member_created_job.rb | 16 +- app/workers/mails/member_job.rb | 22 +- app/workers/mails/member_roles_diff.rb | 73 ++++++ spec/workers/mails/member_created_job_spec.rb | 102 +++++++-- spec/workers/mails/member_roles_diff_spec.rb | 207 ++++++++++++++++++ spec/workers/mails/member_updated_job_spec.rb | 71 +++++- 6 files changed, 459 insertions(+), 32 deletions(-) create mode 100644 app/workers/mails/member_roles_diff.rb create mode 100644 spec/workers/mails/member_roles_diff_spec.rb diff --git a/app/workers/mails/member_created_job.rb b/app/workers/mails/member_created_job.rb index b523819138..e631ff9f35 100644 --- a/app/workers/mails/member_created_job.rb +++ b/app/workers/mails/member_created_job.rb @@ -32,19 +32,11 @@ class Mails::MemberCreatedJob < Mails::MemberJob alias_method :send_for_project_user, :send_added_project def send_for_group_user(current_user, user_member, group_member, message) - if new_roles_added?(user_member, group_member) - send_updated_project(current_user, user_member, message) - elsif all_roles_added?(user_member, group_member) + difference = Mails::MemberRolesDiff.new(user_member, group_member) + if difference.roles_created? send_added_project(current_user, user_member, message) + elsif difference.roles_updated? + send_updated_project(current_user, user_member, message) end end - - def new_roles_added?(user_member, group_member) - (group_member.member_roles.map(&:id) - user_member.member_roles.map(&:inherited_from)).length < - group_member.member_roles.length && user_member.member_roles.any? { |mr| mr.inherited_from.nil? } - end - - def all_roles_added?(user_member, group_member) - (user_member.member_roles.map(&:inherited_from) - group_member.member_roles.map(&:id)).empty? - end end diff --git a/app/workers/mails/member_job.rb b/app/workers/mails/member_job.rb index 163008a6b6..9286b205d9 100644 --- a/app/workers/mails/member_job.rb +++ b/app/workers/mails/member_job.rb @@ -32,14 +32,22 @@ class Mails::MemberJob < ApplicationJob def perform(current_user:, member:, message: nil) - if member.project.nil? - send_updated_global(current_user, member, message) - elsif member.principal.is_a?(Group) + if member.principal.is_a?(Group) every_group_user_member(member) do |user_member| - send_for_group_user(current_user, user_member, member, message) + next unless roles_changed?(user_member, member) + + if member.project.nil? + send_updated_global(current_user, user_member, message) + else + send_for_group_user(current_user, user_member, member, message) + end end elsif member.principal.is_a?(User) - send_for_project_user(current_user, member, message) + if member.project.nil? + send_updated_global(current_user, member, message) + else + send_for_project_user(current_user, member, message) + end end end @@ -95,4 +103,8 @@ class Mails::MemberJob < ApplicationJob .where(project_id: nil, user_id: user_id) .exists?("membership_#{setting}" => false) end + + def roles_changed?(user_member, group_member) + Mails::MemberRolesDiff.new(user_member, group_member).roles_changed? + end end diff --git a/app/workers/mails/member_roles_diff.rb b/app/workers/mails/member_roles_diff.rb new file mode 100644 index 0000000000..05f259531d --- /dev/null +++ b/app/workers/mails/member_roles_diff.rb @@ -0,0 +1,73 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2021 the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class Mails::MemberRolesDiff + attr_reader :user_member, :group_member + + def initialize(user_member, group_member) + raise ArgumentError unless user_member.project_id == group_member.project_id + + @user_member = user_member + @group_member = group_member + end + + def roles_created? + result == :roles_created + end + + def roles_updated? + result == :roles_updated + end + + def roles_changed? + result != :roles_unchanged + end + + def result + @result ||= + if user_previous_member_roles_ids.empty? + :roles_created + elsif (group_roles_ids - user_previous_member_roles_ids).any? + :roles_updated + else + :roles_unchanged + end + end + + private + + def user_previous_member_roles_ids + Set.new(user_member.member_roles + .reject { group_member.member_roles.map(&:id).include?(_1.inherited_from) } + .map(&:role_id).uniq) + end + + def group_roles_ids + Set.new(group_member.member_roles.map(&:role_id)) + end +end diff --git a/spec/workers/mails/member_created_job_spec.rb b/spec/workers/mails/member_created_job_spec.rb index 4005775e66..041a080df6 100644 --- a/spec/workers/mails/member_created_job_spec.rb +++ b/spec/workers/mails/member_created_job_spec.rb @@ -36,9 +36,9 @@ describe Mails::MemberCreatedJob, type: :model do context 'with a group membership' do let(:member) do build_stubbed(:member, - project: project, - principal: group, - member_roles: group_member_roles) + project: project, + principal: group, + member_roles: group_member_roles) end before do @@ -48,8 +48,8 @@ describe Mails::MemberCreatedJob, type: :model do context 'with the user not having had a membership before the group`s membership was added' do let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id)] + role: role, + inherited_from: group_member_roles.first.id)] end it 'sends mail' do @@ -64,8 +64,8 @@ describe Mails::MemberCreatedJob, type: :model do context 'with the user having had a membership with the same roles before the group`s membership was added' do let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: nil)] + role: role, + inherited_from: nil)] end it_behaves_like 'sends no mail' @@ -75,32 +75,106 @@ describe Mails::MemberCreatedJob, type: :model do from another group before the group`s membership was added' do let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id + 5)] + role: role, + inherited_from: group_member_roles.first.id + 5)] end it_behaves_like 'sends no mail' end - context 'with the user having had a membership before the group`s membership was added but now has additional roles' do + context 'with the user having had a membership before the group`s membership ' + + 'was added but now has additional roles' do let(:other_role) { build_stubbed(:role) } let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id), + role: role, + inherited_from: group_member_roles.first.id), build_stubbed(:member_role, - role: other_role, - inherited_from: nil)] + role: other_role, + inherited_from: nil)] end it 'sends mail' do run_job + expect(MemberMailer) + .not_to have_received(:added_project) expect(MemberMailer) .to have_received(:updated_project) .with(current_user, group_user_member, message) end end end + + context 'with a group global membership' do + let(:project) { nil } + let(:member) do + build_stubbed(:member, + project: project, + principal: group, + member_roles: group_member_roles) + end + + before do + group_user_member + end + + context 'with the user not having had a membership before the group`s membership was added' do + let(:group_user_member_roles) do + [build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id)] + end + + it 'sends mail' do + run_job + + expect(MemberMailer) + .to have_received(:updated_global) + .with(current_user, group_user_member, message) + end + end + + context 'with the user having had a membership with the same roles before the group`s membership was added' do + let(:group_user_member_roles) do + [build_stubbed(:member_role, + role: role, + inherited_from: nil)] + end + + it_behaves_like 'sends no mail' + end + + context 'with the user having had a membership with the same roles + from another group before the group`s membership was added' do + let(:group_user_member_roles) do + [build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id + 5)] + end + + it_behaves_like 'sends no mail' + end + + context 'with the user having had a membership before the group`s membership was added but now has additional roles' do + let(:other_role) { build_stubbed(:role) } + let(:group_user_member_roles) do + [build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id), + build_stubbed(:member_role, + role: other_role, + inherited_from: nil)] + end + + it 'sends mail' do + run_job + + expect(MemberMailer) + .to have_received(:updated_global) + .with(current_user, group_user_member, message) + end + end + end end end diff --git a/spec/workers/mails/member_roles_diff_spec.rb b/spec/workers/mails/member_roles_diff_spec.rb new file mode 100644 index 0000000000..bc2e7b4aee --- /dev/null +++ b/spec/workers/mails/member_roles_diff_spec.rb @@ -0,0 +1,207 @@ +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2021 the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require 'spec_helper' + +# rubocop:disable RSpec/MultipleMemoizedHelpers +describe Mails::MemberRolesDiff, type: :model do + let(:project) { FactoryBot.build_stubbed(:project) } + let(:group) { FactoryBot.build_stubbed(:group) } + let(:user) { FactoryBot.build_stubbed(:user) } + let(:role) { FactoryBot.build_stubbed(:role) } + let(:role_other) { FactoryBot.build_stubbed(:role) } + + let(:group_member_role) { FactoryBot.build_stubbed(:member_role, role: role) } + let(:group_member_role_other) { FactoryBot.build_stubbed(:member_role, role: role_other) } + let(:group_member_roles) { raise NotImplementedError('please set group_member_roles') } + let(:group_member) do + FactoryBot.build_stubbed(:member, principal: group, project: project, member_roles: group_member_roles) + end + + let(:user_member_role) do + FactoryBot.build_stubbed(:member_role, role: role) + end + let(:user_member_role_inherited) do + FactoryBot.build_stubbed(:member_role, role: role, inherited_from: group_member_role.id) + end + let(:user_member_role_other) do + FactoryBot.build_stubbed(:member_role, role: role_other) + end + let(:user_member_role_other_inherited) do + FactoryBot.build_stubbed(:member_role, role: role_other, inherited_from: group_member_role_other.id) + end + let(:user_member_roles) { raise NotImplementedError('please set user_member_roles') } + let(:user_member) do + FactoryBot.build_stubbed(:member, principal: user, project: project, member_roles: user_member_roles) + end + + subject(:difference) do + described_class.new(user_member, group_member) + end + + shared_examples 'roles created' do + it 'results in roles created' do + expect(difference.result).to eq(:roles_created) + end + end + + shared_examples 'roles updated' do + it 'results in roles updated' do + expect(difference.result).to eq(:roles_updated) + end + end + + shared_examples 'roles unchanged' do + it 'results in roles unchanged' do + expect(difference.result).to eq(:roles_unchanged) + end + end + + context 'when group has added all its roles to a user' do + let(:group_member_roles) { [group_member_role, group_member_role_other] } + let(:user_member_roles) do + [ + user_member_role_inherited, + user_member_role_other_inherited + ] + end + + include_examples 'roles created' + end + + context 'when group has added all its roles to a user who already had some preexisting other roles' do + let(:group_member_roles) { [group_member_role] } + let(:user_member_roles) do + [ + user_member_role_other, + user_member_role_inherited + ] + end + + include_examples 'roles updated' + end + + context 'when group has added a new role and an existing role to a user' do + let(:group_member_roles) { [group_member_role, group_member_role_other] } + let(:user_member_roles) do + [ + user_member_role, + user_member_role_inherited, + user_member_role_other_inherited + ] + end + + include_examples 'roles updated' + end + + context 'when group has added already existing roles to a user' do + let(:group_member_roles) { [group_member_role, group_member_role_other] } + let(:user_member_roles) do + [ + user_member_role, + user_member_role_other, + user_member_role_inherited, + user_member_role_other_inherited + ] + end + + include_examples 'roles unchanged' + end + + context 'when group did not add any roles' do + let(:group_member_roles) { [group_member_role, group_member_role_other] } + let(:user_member_roles) do + [ + user_member_role, + user_member_role_other + ] + end + + include_examples 'roles unchanged' + end + + context 'when the projects are different between members' do + let(:group_member) do + FactoryBot.build_stubbed( + :member, + principal: group, + project: FactoryBot.create(:project) + ) + end + let(:user_member) do + FactoryBot.build_stubbed( + :member, + principal: user, + project: FactoryBot.create(:project) + ) + end + + it 'raises ArgumentError' do + expect { difference.result }.to raise_error(ArgumentError) + end + end + + context 'with another group defined' do + let(:other_group_member_role) { FactoryBot.build_stubbed(:member_role, role: role) } + let(:other_group_member_role_other) { FactoryBot.build_stubbed(:member_role, role: role_other) } + let(:user_member_role_inherited_from_other_group) do + FactoryBot.build_stubbed(:member_role, role: role, inherited_from: other_group_member_role.id) + end + let(:user_member_role_other_inherited_from_other_group) do + FactoryBot.build_stubbed(:member_role, role: role_other, inherited_from: other_group_member_role_other.id) + end + + context 'when group has added to a user a new role and a role that already existed from another group membership' do + let(:group_member_roles) { [group_member_role, group_member_role_other] } + let(:user_member_roles) do + [ + user_member_role_inherited_from_other_group, + user_member_role_inherited, + user_member_role_other_inherited + ] + end + + include_examples 'roles updated' + end + + context 'when group has added to a user some roles that already existed from another group membership' do + let(:group_member_roles) { [group_member_role, group_member_role_other] } + let(:user_member_roles) do + [ + user_member_role_inherited_from_other_group, + user_member_role_other_inherited_from_other_group, + user_member_role_inherited, + user_member_role_other_inherited + ] + end + + include_examples 'roles unchanged' + end + end +end +# rubocop:enable RSpec/MultipleMemoizedHelpers diff --git a/spec/workers/mails/member_updated_job_spec.rb b/spec/workers/mails/member_updated_job_spec.rb index a49ff849f5..de04189c28 100644 --- a/spec/workers/mails/member_updated_job_spec.rb +++ b/spec/workers/mails/member_updated_job_spec.rb @@ -31,7 +31,7 @@ require_relative 'shared/member_job' describe Mails::MemberUpdatedJob, type: :model do include_examples 'member job' do - let(:user_project_mail_method) { :updated_project} + let(:user_project_mail_method) { :updated_project } context 'with a group membership' do let(:member) do @@ -100,5 +100,74 @@ describe Mails::MemberUpdatedJob, type: :model do it_behaves_like 'updated mail' end end + + context 'with a group global membership' do + let(:project) { nil } + let(:member) do + FactoryBot.build_stubbed(:member, + project: project, + principal: group, + member_roles: group_member_roles) + end + + shared_examples 'updated mail' do + it 'sends mail' do + run_job + + expect(MemberMailer) + .to have_received(:updated_global) + .with(current_user, group_user_member, message) + end + end + + before do + group_user_member + end + + context 'with the user not having had a membership before the group`s membership was added' do + let(:group_user_member_roles) do + [FactoryBot.build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id)] + end + + it_behaves_like 'updated mail' + end + + context 'with the user having had a membership with the same roles before the group`s membership was added' do + let(:group_user_member_roles) do + [FactoryBot.build_stubbed(:member_role, + role: role, + inherited_from: nil)] + end + + it_behaves_like 'sends no mail' + end + + context 'with the user having had a membership with the same roles + from another group before the group`s membership was added' do + let(:group_user_member_roles) do + [FactoryBot.build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id + 5)] + end + + it_behaves_like 'sends no mail' + end + + context 'with the user having had a membership before the group`s membership was added but now has additional roles' do + let(:other_role) { FactoryBot.build_stubbed(:role) } + let(:group_user_member_roles) do + [FactoryBot.build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id), + FactoryBot.build_stubbed(:member_role, + role: other_role, + inherited_from: nil)] + end + + it_behaves_like 'updated mail' + end + end end end From 8adcb742ba8e6df61a28532b17b99081ec03d356 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Fri, 28 Jan 2022 15:10:37 +0100 Subject: [PATCH 033/118] display membership emails in the language of the recipient --- app/mailers/member_mailer.rb | 4 ++-- spec/mailers/member_mailer_spec.rb | 33 ++++++++++++++++++------------ 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/app/mailers/member_mailer.rb b/app/mailers/member_mailer.rb index 47b3a23575..8e77c02dcd 100644 --- a/app/mailers/member_mailer.rb +++ b/app/mailers/member_mailer.rb @@ -78,8 +78,8 @@ class MemberMailer < ApplicationMailer end def send_mail(current_user, member, subject, message) - in_member_locale(member) do - User.execute_as(current_user) do + User.execute_as(current_user) do + in_member_locale(member) do message_id member, current_user @roles = member.roles diff --git a/spec/mailers/member_mailer_spec.rb b/spec/mailers/member_mailer_spec.rb index 154262b087..7e0d763f3c 100644 --- a/spec/mailers/member_mailer_spec.rb +++ b/spec/mailers/member_mailer_spec.rb @@ -101,7 +101,12 @@ describe MemberMailer, type: :mailer do shared_examples_for 'has the expected body' do let(:body) { subject.body.parts.detect { |part| part['Content-Type'].value == 'text/html' }.body.to_s } - + let(:i18n_params) do + { + project: project ? link_to_project(project, only_path: false) : nil, + user: link_to_user(current_user, only_path: false) + }.compact + end it 'highlights the roles received' do expected = <<~MSG @@ -116,17 +121,24 @@ describe MemberMailer, type: :mailer do .at_path('body/table/tr/td/ul') end + context 'when current user and principal have different locales' do + let(:principal) { FactoryBot.build_stubbed(:user, language: 'fr') } + let(:current_user) { FactoryBot.build_stubbed(:user, language: 'de') } + + it 'is in the locale of the recipient' do + OpenProject::LocaleHelper.with_locale_for(principal) do + i18n_params + end + expect(body).to include(I18n.t(:"#{expected_header}.without_message", locale: :fr, **i18n_params)) + end + end + context 'with a custom message' do let(:message) { "Some **styled** message" } it 'has the expected header' do - params = { - project: project ? link_to_project(project, only_path: false) : nil, - user: link_to_user(current_user, only_path: false) - }.compact - expect(body) - .to include(I18n.t(:"#{expected_header}.with_message", **params)) + .to include(I18n.t(:"#{expected_header}.with_message", **i18n_params)) end it 'includes the custom message' do @@ -138,13 +150,8 @@ describe MemberMailer, type: :mailer do context 'without a custom message' do it 'has the expected header' do - params = { - project: project ? link_to_project(project, only_path: false) : nil, - user: link_to_user(current_user, only_path: false) - }.compact - expect(body) - .to include(I18n.t(:"#{expected_header}.without_message", **params)) + .to include(I18n.t(:"#{expected_header}.without_message", **i18n_params)) end end end From 632e1f7ec38f45f46788ddd025ae0f5693af88ed Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Fri, 28 Jan 2022 16:36:10 +0100 Subject: [PATCH 034/118] Make rubocop happier Remove the 'FactoryBot.' --- app/workers/mails/member_job.rb | 41 ++++++++---- spec/controllers/groups_controller_spec.rb | 48 +++++++------- spec/mailers/member_mailer_spec.rb | 17 +++-- spec/models/member_spec.rb | 4 +- .../add_users_service_integration_spec.rb | 56 ++++++++-------- .../update_roles_service_integration_spec.rb | 28 ++++---- spec/workers/mails/member_roles_diff_spec.rb | 44 ++++++------- spec/workers/mails/member_updated_job_spec.rb | 66 +++++++++---------- 8 files changed, 158 insertions(+), 146 deletions(-) diff --git a/app/workers/mails/member_job.rb b/app/workers/mails/member_job.rb index 9286b205d9..d3e71eed8a 100644 --- a/app/workers/mails/member_job.rb +++ b/app/workers/mails/member_job.rb @@ -32,26 +32,39 @@ class Mails::MemberJob < ApplicationJob def perform(current_user:, member:, message: nil) - if member.principal.is_a?(Group) - every_group_user_member(member) do |user_member| - next unless roles_changed?(user_member, member) - - if member.project.nil? - send_updated_global(current_user, user_member, message) - else - send_for_group_user(current_user, user_member, member, message) - end - end - elsif member.principal.is_a?(User) + case member.principal + when Group + perform_for_group(current_user: current_user, member: member, message: message) + when User + perform_for_user(current_user: current_user, member: member, message: message) + end + end + + private + + def perform_for_group(current_user:, + member:, + message: nil) + every_group_user_member(member) do |user_member| + next unless roles_changed?(user_member, member) + if member.project.nil? - send_updated_global(current_user, member, message) + send_updated_global(current_user, user_member, message) else - send_for_project_user(current_user, member, message) + send_for_group_user(current_user, user_member, member, message) end end end - private + def perform_for_user(current_user:, + member:, + message: nil) + if member.project.nil? + send_updated_global(current_user, member, message) + else + send_for_project_user(current_user, member, message) + end + end def send_for_group_user(_current_user, _member, _group, _message) raise NotImplementedError, "subclass responsibility" diff --git a/spec/controllers/groups_controller_spec.rb b/spec/controllers/groups_controller_spec.rb index eb09ced949..98d3be46d4 100644 --- a/spec/controllers/groups_controller_spec.rb +++ b/spec/controllers/groups_controller_spec.rb @@ -41,39 +41,39 @@ describe GroupsController, type: :controller do shared_let(:admin) { create :admin } let(:current_user) { admin } - it 'should index' do + it 'indexes' do get :index expect(response).to be_successful expect(response).to render_template 'index' end - it 'should show' do + it 'shows' do get :show, params: { id: group.id } expect(response).to be_successful expect(response).to render_template 'show' end - it 'should new' do + it 'shows new' do get :new expect(response).to be_successful expect(response).to render_template 'new' end - it 'should create' do + it 'creates' do expect do post :create, params: { group: { lastname: 'New group' } } - end.to change { Group.count }.by(1) + end.to change(Group, :count).by(1) expect(response).to redirect_to groups_path end - it 'should edit' do + it 'edits' do get :edit, params: { id: group.id } expect(response).to be_successful expect(response).to render_template 'edit' end - it 'should update' do + it 'updates' do expect do put :update, params: { id: group.id, group: { lastname: 'new name' } } end.to change { group.reload.name }.to('new name') @@ -81,7 +81,7 @@ describe GroupsController, type: :controller do expect(response).to redirect_to groups_path end - it 'should destroy' do + it 'destroys' do perform_enqueued_jobs do delete :destroy, params: { id: group.id } end @@ -95,7 +95,7 @@ describe GroupsController, type: :controller do let(:user1) { create :user } let(:user2) { create :user } - it 'should add users' do + it 'adds users' do post :add_users, params: { id: group.id, user_ids: [user1.id, user2.id] } expect(group.reload.users.count).to eq 2 end @@ -106,7 +106,7 @@ describe GroupsController, type: :controller do let(:user2) { create :user } let(:group_members) { [user1] } - it 'should add users' do + it 'adds users' do post :add_users, params: { id: group.id, user_ids: [user2.id] } expect(group.reload.users.count).to eq 2 end @@ -116,9 +116,9 @@ describe GroupsController, type: :controller do render_views let!(:member_group) do - FactoryBot.create(:global_member, - principal: group, - roles: [FactoryBot.create(:global_role)]) + create(:global_member, + principal: group, + roles: [create(:global_role)]) end it 'displays edit memberships' do @@ -134,7 +134,7 @@ describe GroupsController, type: :controller do let(:role1) { create :role } let(:role2) { create :role } - it 'should create membership' do + it 'creates membership' do post :create_memberships, params: { id: group.id, membership: { project_id: project.id, role_ids: [role1.id, role2.id] } } @@ -145,12 +145,12 @@ describe GroupsController, type: :controller do context 'with an existing membership' do let!(:member_group) do create(:member, - project: project, - principal: group, - roles: [role1]) + project: project, + principal: group, + roles: [role1]) end - it 'should edit a membership' do + it 'edits a membership' do expect(group.members.count).to eq 1 expect(group.members.first.roles.count).to eq 1 @@ -178,34 +178,34 @@ describe GroupsController, type: :controller do let(:user) { create :user } let(:current_user) { user } - it 'should forbid index' do + it 'forbids index' do get :index expect(response).not_to be_successful expect(response.status).to eq 403 end - it 'should show' do + it 'shows' do get :show, params: { id: group.id } expect(response).to be_successful expect(response).to render_template 'show' end - it 'should forbid new' do + it 'forbids new' do get :new expect(response).not_to be_successful expect(response.status).to eq 403 end - it 'should forbid create' do + it 'forbids create' do expect do post :create, params: { group: { lastname: 'New group' } } - end.not_to change { Group.count } + end.not_to(change(Group, :count)) expect(response).not_to be_successful expect(response.status).to eq 403 end - it 'should forbid edit' do + it 'forbids edit' do get :edit, params: { id: group.id } expect(response).not_to be_successful diff --git a/spec/mailers/member_mailer_spec.rb b/spec/mailers/member_mailer_spec.rb index 7e0d763f3c..02785d5396 100644 --- a/spec/mailers/member_mailer_spec.rb +++ b/spec/mailers/member_mailer_spec.rb @@ -38,9 +38,9 @@ describe MemberMailer, type: :mailer do let(:current_user) { build_stubbed(:user) } let(:member) do build_stubbed(:member, - principal: principal, - project: project, - roles: roles) + principal: principal, + project: project, + roles: roles) end let(:principal) { build_stubbed(:user) } let(:project) { build_stubbed(:project) } @@ -122,8 +122,8 @@ describe MemberMailer, type: :mailer do end context 'when current user and principal have different locales' do - let(:principal) { FactoryBot.build_stubbed(:user, language: 'fr') } - let(:current_user) { FactoryBot.build_stubbed(:user, language: 'de') } + let(:principal) { build_stubbed(:user, language: 'fr') } + let(:current_user) { build_stubbed(:user, language: 'de') } it 'is in the locale of the recipient' do OpenProject::LocaleHelper.with_locale_for(principal) do @@ -148,7 +148,6 @@ describe MemberMailer, type: :mailer do end context 'without a custom message' do - it 'has the expected header' do expect(body) .to include(I18n.t(:"#{expected_header}.without_message", **i18n_params)) @@ -157,7 +156,7 @@ describe MemberMailer, type: :mailer do end describe '#added_project' do - subject { MemberMailer.added_project(current_user, member, message) } + subject { described_class.added_project(current_user, member, message) } it_behaves_like "sends a mail to the member's principal" it_behaves_like 'has a subject', :'mail_member_added_project.subject' @@ -172,7 +171,7 @@ describe MemberMailer, type: :mailer do end describe '#updated_project' do - subject { MemberMailer.updated_project(current_user, member, message) } + subject { described_class.updated_project(current_user, member, message) } it_behaves_like "sends a mail to the member's principal" it_behaves_like 'has a subject', :'mail_member_updated_project.subject' @@ -189,7 +188,7 @@ describe MemberMailer, type: :mailer do describe '#updated_global' do let(:project) { nil } - subject { MemberMailer.updated_global(current_user, member, message) } + subject { described_class.updated_global(current_user, member, message) } it_behaves_like "sends a mail to the member's principal" it_behaves_like 'has a subject', :'mail_member_updated_global.subject' diff --git a/spec/models/member_spec.rb b/spec/models/member_spec.rb index b85bcf2cfc..4a5bf40878 100644 --- a/spec/models/member_spec.rb +++ b/spec/models/member_spec.rb @@ -70,8 +70,8 @@ describe Member, type: :model do it 'returns false if role is inherited' do member - group = FactoryBot.create(:group, members: [user]) - FactoryBot.create(:member, project: project, principal: group, roles: [role]) + group = create(:group, members: [user]) + create(:member, project: project, principal: group, roles: [role]) ::Groups::AddUsersService .new(group, current_user: User.system, contract_class: EmptyContract) .call(ids: [user.id]) diff --git a/spec/services/groups/add_users_service_integration_spec.rb b/spec/services/groups/add_users_service_integration_spec.rb index 6eb9058a85..8fd816b640 100644 --- a/spec/services/groups/add_users_service_integration_spec.rb +++ b/spec/services/groups/add_users_service_integration_spec.rb @@ -37,8 +37,8 @@ describe Groups::AddUsersService, 'integration', type: :model do let!(:group) do create :group, - member_in_projects: projects, - member_through_role: role + member_in_projects: projects, + member_through_role: role end let(:user1) { create :user } @@ -109,9 +109,9 @@ describe Groups::AddUsersService, 'integration', type: :model do let(:previous_project) { projects.first } let!(:user_member) do create(:member, - project: previous_project, - roles: [role], - principal: user1) + project: previous_project, + roles: [role], + principal: user1) end it_behaves_like 'adds the users to the group and project' @@ -139,16 +139,16 @@ describe Groups::AddUsersService, 'integration', type: :model do let!(:group) do create :group do |g| create(:member, - project: project, - principal: g, - roles: roles) + project: project, + principal: g, + roles: roles) end end let!(:user_member) do create(:member, - project: project, - roles: [roles.first], - principal: user1) + project: project, + roles: [roles.first], + principal: user1) end it 'adds the users to the group and project' do @@ -179,9 +179,9 @@ describe Groups::AddUsersService, 'integration', type: :model do let(:previous_project) { projects.first } let!(:user_member) do create(:member, - project: previous_project, - roles: [other_role], - principal: user1) + project: previous_project, + roles: [other_role], + principal: user1) end it 'adds the users to the group and project' do @@ -210,11 +210,11 @@ describe Groups::AddUsersService, 'integration', type: :model do end context 'with global role' do - let(:role) { FactoryBot.create :global_role } + let(:role) { create :global_role } let!(:group) do - FactoryBot.create :group, - global_role: role, - global_permission: :add_project + create :group, + global_role: role, + global_permission: :add_project end it 'adds the users to the group and their membership to the global role' do @@ -228,20 +228,20 @@ describe Groups::AddUsersService, 'integration', type: :model do end context 'when one user already has a global role that the group would add' do - let(:global_roles) { FactoryBot.create_list(:global_role, 2) } + let(:global_roles) { create_list(:global_role, 2) } let!(:group) do - FactoryBot.create :group do |g| - FactoryBot.create(:member, - project: nil, - principal: g, - roles: global_roles) + create :group do |g| + create(:member, + project: nil, + principal: g, + roles: global_roles) end end let!(:user_membership) do - FactoryBot.create(:member, - project: nil, - roles: [global_roles.first], - principal: user1) + create(:member, + project: nil, + roles: [global_roles.first], + principal: user1) end it 'adds their membership to the global role' do diff --git a/spec/services/groups/update_roles_service_integration_spec.rb b/spec/services/groups/update_roles_service_integration_spec.rb index 2c6ab5860e..ec1c5a9c8f 100644 --- a/spec/services/groups/update_roles_service_integration_spec.rb +++ b/spec/services/groups/update_roles_service_integration_spec.rb @@ -38,11 +38,11 @@ describe Groups::UpdateRolesService, 'integration', type: :model do let!(:group) do create(:group, - members: users).tap do |group| + members: users).tap do |group| create(:member, - project: project, - principal: group, - roles: roles) + project: project, + principal: group, + roles: roles) ::Groups::AddUsersService .new(group, current_user: User.system, contract_class: EmptyContract) @@ -65,14 +65,14 @@ describe Groups::UpdateRolesService, 'integration', type: :model do shared_examples_for 'keeps timestamp' do it 'updated_at on member is unchanged' do expect { service_call } - .not_to change { Member.find_by(principal: user).updated_at } + .not_to(change { Member.find_by(principal: user).updated_at }) end end shared_examples_for 'updates timestamp' do it 'updated_at on member is changed' do expect { service_call } - .to change { Member.find_by(principal: user).updated_at } + .to(change { Member.find_by(principal: user).updated_at }) end end @@ -115,13 +115,13 @@ describe Groups::UpdateRolesService, 'integration', type: :model do end context 'with global membership' do - let(:role) { FactoryBot.create :global_role } + let(:role) { create :global_role } let!(:group) do - FactoryBot.create(:group, - members: users).tap do |group| - FactoryBot.create(:global_member, - principal: group, - roles: roles) + create(:group, + members: users).tap do |group| + create(:global_member, + principal: group, + roles: roles) ::Groups::AddUsersService .new(group, current_user: User.system, contract_class: EmptyContract) @@ -130,7 +130,7 @@ describe Groups::UpdateRolesService, 'integration', type: :model do end context 'when adding a global role' do - let(:added_role) { FactoryBot.create(:global_role) } + let(:added_role) { create(:global_role) } before do member.roles << added_role @@ -156,7 +156,7 @@ describe Groups::UpdateRolesService, 'integration', type: :model do end context 'when removing a global role' do - let(:roles) { [role, FactoryBot.create(:global_role)] } + let(:roles) { [role, create(:global_role)] } before do member.roles = [role] diff --git a/spec/workers/mails/member_roles_diff_spec.rb b/spec/workers/mails/member_roles_diff_spec.rb index bc2e7b4aee..7ddac74dad 100644 --- a/spec/workers/mails/member_roles_diff_spec.rb +++ b/spec/workers/mails/member_roles_diff_spec.rb @@ -30,34 +30,34 @@ require 'spec_helper' # rubocop:disable RSpec/MultipleMemoizedHelpers describe Mails::MemberRolesDiff, type: :model do - let(:project) { FactoryBot.build_stubbed(:project) } - let(:group) { FactoryBot.build_stubbed(:group) } - let(:user) { FactoryBot.build_stubbed(:user) } - let(:role) { FactoryBot.build_stubbed(:role) } - let(:role_other) { FactoryBot.build_stubbed(:role) } - - let(:group_member_role) { FactoryBot.build_stubbed(:member_role, role: role) } - let(:group_member_role_other) { FactoryBot.build_stubbed(:member_role, role: role_other) } + let(:project) { build_stubbed(:project) } + let(:group) { build_stubbed(:group) } + let(:user) { build_stubbed(:user) } + let(:role) { build_stubbed(:role) } + let(:role_other) { build_stubbed(:role) } + + let(:group_member_role) { build_stubbed(:member_role, role: role) } + let(:group_member_role_other) { build_stubbed(:member_role, role: role_other) } let(:group_member_roles) { raise NotImplementedError('please set group_member_roles') } let(:group_member) do - FactoryBot.build_stubbed(:member, principal: group, project: project, member_roles: group_member_roles) + build_stubbed(:member, principal: group, project: project, member_roles: group_member_roles) end let(:user_member_role) do - FactoryBot.build_stubbed(:member_role, role: role) + build_stubbed(:member_role, role: role) end let(:user_member_role_inherited) do - FactoryBot.build_stubbed(:member_role, role: role, inherited_from: group_member_role.id) + build_stubbed(:member_role, role: role, inherited_from: group_member_role.id) end let(:user_member_role_other) do - FactoryBot.build_stubbed(:member_role, role: role_other) + build_stubbed(:member_role, role: role_other) end let(:user_member_role_other_inherited) do - FactoryBot.build_stubbed(:member_role, role: role_other, inherited_from: group_member_role_other.id) + build_stubbed(:member_role, role: role_other, inherited_from: group_member_role_other.id) end let(:user_member_roles) { raise NotImplementedError('please set user_member_roles') } let(:user_member) do - FactoryBot.build_stubbed(:member, principal: user, project: project, member_roles: user_member_roles) + build_stubbed(:member, principal: user, project: project, member_roles: user_member_roles) end subject(:difference) do @@ -147,17 +147,17 @@ describe Mails::MemberRolesDiff, type: :model do context 'when the projects are different between members' do let(:group_member) do - FactoryBot.build_stubbed( + build_stubbed( :member, principal: group, - project: FactoryBot.create(:project) + project: create(:project) ) end let(:user_member) do - FactoryBot.build_stubbed( + build_stubbed( :member, principal: user, - project: FactoryBot.create(:project) + project: create(:project) ) end @@ -167,13 +167,13 @@ describe Mails::MemberRolesDiff, type: :model do end context 'with another group defined' do - let(:other_group_member_role) { FactoryBot.build_stubbed(:member_role, role: role) } - let(:other_group_member_role_other) { FactoryBot.build_stubbed(:member_role, role: role_other) } + let(:other_group_member_role) { build_stubbed(:member_role, role: role) } + let(:other_group_member_role_other) { build_stubbed(:member_role, role: role_other) } let(:user_member_role_inherited_from_other_group) do - FactoryBot.build_stubbed(:member_role, role: role, inherited_from: other_group_member_role.id) + build_stubbed(:member_role, role: role, inherited_from: other_group_member_role.id) end let(:user_member_role_other_inherited_from_other_group) do - FactoryBot.build_stubbed(:member_role, role: role_other, inherited_from: other_group_member_role_other.id) + build_stubbed(:member_role, role: role_other, inherited_from: other_group_member_role_other.id) end context 'when group has added to a user a new role and a role that already existed from another group membership' do diff --git a/spec/workers/mails/member_updated_job_spec.rb b/spec/workers/mails/member_updated_job_spec.rb index de04189c28..0e3d097f6a 100644 --- a/spec/workers/mails/member_updated_job_spec.rb +++ b/spec/workers/mails/member_updated_job_spec.rb @@ -36,9 +36,9 @@ describe Mails::MemberUpdatedJob, type: :model do context 'with a group membership' do let(:member) do build_stubbed(:member, - project: project, - principal: group, - member_roles: group_member_roles) + project: project, + principal: group, + member_roles: group_member_roles) end shared_examples 'updated mail' do @@ -58,8 +58,8 @@ describe Mails::MemberUpdatedJob, type: :model do context 'with the user not having had a membership before the group`s membership was added' do let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id)] + role: role, + inherited_from: group_member_roles.first.id)] end it_behaves_like 'updated mail' @@ -68,8 +68,8 @@ describe Mails::MemberUpdatedJob, type: :model do context 'with the user having had a membership with the same roles before the group`s membership was added' do let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: nil)] + role: role, + inherited_from: nil)] end it_behaves_like 'updated mail' @@ -79,8 +79,8 @@ describe Mails::MemberUpdatedJob, type: :model do from another group before the group`s membership was added' do let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id + 5)] + role: role, + inherited_from: group_member_roles.first.id + 5)] end it_behaves_like 'updated mail' @@ -90,11 +90,11 @@ describe Mails::MemberUpdatedJob, type: :model do let(:other_role) { build_stubbed(:role) } let(:group_user_member_roles) do [build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id), + role: role, + inherited_from: group_member_roles.first.id), build_stubbed(:member_role, - role: other_role, - inherited_from: nil)] + role: other_role, + inherited_from: nil)] end it_behaves_like 'updated mail' @@ -104,10 +104,10 @@ describe Mails::MemberUpdatedJob, type: :model do context 'with a group global membership' do let(:project) { nil } let(:member) do - FactoryBot.build_stubbed(:member, - project: project, - principal: group, - member_roles: group_member_roles) + build_stubbed(:member, + project: project, + principal: group, + member_roles: group_member_roles) end shared_examples 'updated mail' do @@ -126,9 +126,9 @@ describe Mails::MemberUpdatedJob, type: :model do context 'with the user not having had a membership before the group`s membership was added' do let(:group_user_member_roles) do - [FactoryBot.build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id)] + [build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id)] end it_behaves_like 'updated mail' @@ -136,9 +136,9 @@ describe Mails::MemberUpdatedJob, type: :model do context 'with the user having had a membership with the same roles before the group`s membership was added' do let(:group_user_member_roles) do - [FactoryBot.build_stubbed(:member_role, - role: role, - inherited_from: nil)] + [build_stubbed(:member_role, + role: role, + inherited_from: nil)] end it_behaves_like 'sends no mail' @@ -147,23 +147,23 @@ describe Mails::MemberUpdatedJob, type: :model do context 'with the user having had a membership with the same roles from another group before the group`s membership was added' do let(:group_user_member_roles) do - [FactoryBot.build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id + 5)] + [build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id + 5)] end it_behaves_like 'sends no mail' end context 'with the user having had a membership before the group`s membership was added but now has additional roles' do - let(:other_role) { FactoryBot.build_stubbed(:role) } + let(:other_role) { build_stubbed(:role) } let(:group_user_member_roles) do - [FactoryBot.build_stubbed(:member_role, - role: role, - inherited_from: group_member_roles.first.id), - FactoryBot.build_stubbed(:member_role, - role: other_role, - inherited_from: nil)] + [build_stubbed(:member_role, + role: role, + inherited_from: group_member_roles.first.id), + build_stubbed(:member_role, + role: other_role, + inherited_from: nil)] end it_behaves_like 'updated mail' From eea0240b5eb945d5996a91aa2792f4e60d062bd7 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 31 Jan 2022 11:18:53 +0100 Subject: [PATCH 035/118] fix test --- app/workers/mails/member_job.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/workers/mails/member_job.rb b/app/workers/mails/member_job.rb index d3e71eed8a..0b689608ba 100644 --- a/app/workers/mails/member_job.rb +++ b/app/workers/mails/member_job.rb @@ -46,9 +46,9 @@ class Mails::MemberJob < ApplicationJob member:, message: nil) every_group_user_member(member) do |user_member| - next unless roles_changed?(user_member, member) - if member.project.nil? + next unless roles_changed?(user_member, member) + send_updated_global(current_user, user_member, message) else send_for_group_user(current_user, user_member, member, message) From 58be27c97fc38dede99ee092ce190196f8772dc1 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 31 Jan 2022 17:37:49 +0100 Subject: [PATCH 036/118] add api memberships tests related to global role also adjust Member visibility so that a group without any members can be queried --- app/models/principals/scopes/visible.rb | 2 +- .../members/filters/principal_filter.rb | 2 +- spec/models/principals/scopes/visible_spec.rb | 8 + .../members/filters/principal_filter_spec.rb | 2 +- .../api/v3/membership_resources_spec.rb | 162 ++++++++++++++---- 5 files changed, 137 insertions(+), 39 deletions(-) diff --git a/app/models/principals/scopes/visible.rb b/app/models/principals/scopes/visible.rb index cc03492307..38263d0fe1 100644 --- a/app/models/principals/scopes/visible.rb +++ b/app/models/principals/scopes/visible.rb @@ -38,7 +38,7 @@ module Principals::Scopes class_methods do def visible(user = ::User.current) - if user.allowed_to_globally?(:manage_members) + if user.allowed_to_globally?(:manage_members) || user.allowed_to_globally?(:manage_user) all else in_visible_project_or_me(user) diff --git a/app/models/queries/members/filters/principal_filter.rb b/app/models/queries/members/filters/principal_filter.rb index 6065757888..e9a75e666a 100644 --- a/app/models/queries/members/filters/principal_filter.rb +++ b/app/models/queries/members/filters/principal_filter.rb @@ -35,7 +35,7 @@ class Queries::Members::Filters::PrincipalFilter < Queries::Members::Filters::Me @allowed_values ||= begin values = Principal .not_locked - .in_visible_project_or_me + .visible .map { |s| [s.name, s.id.to_s] } .sort diff --git a/spec/models/principals/scopes/visible_spec.rb b/spec/models/principals/scopes/visible_spec.rb index e53431b533..d22b42f092 100644 --- a/spec/models/principals/scopes/visible_spec.rb +++ b/spec/models/principals/scopes/visible_spec.rb @@ -57,6 +57,14 @@ describe Principals::Scopes::Visible, type: :model do end end + context 'when user has no manage_members permission, but has manage_user global permission' do + current_user { FactoryBot.create :user, global_permissions: %i[manage_user] } + + it 'sees all users' do + expect(subject).to match_array [current_user, other_project_user, global_user] + end + end + context 'when user has no permission' do current_user { create :user } diff --git a/spec/models/queries/members/filters/principal_filter_spec.rb b/spec/models/queries/members/filters/principal_filter_spec.rb index 0b1c5ca782..42fa98d0e6 100644 --- a/spec/models/queries/members/filters/principal_filter_spec.rb +++ b/spec/models/queries/members/filters/principal_filter_spec.rb @@ -45,7 +45,7 @@ describe Queries::Members::Filters::PrincipalFilter, type: :model do .and_return(principal_scope) allow(principal_scope) - .to receive(:in_visible_project_or_me) + .to receive(:visible) .and_return([user, group, current_user]) end diff --git a/spec/requests/api/v3/membership_resources_spec.rb b/spec/requests/api/v3/membership_resources_spec.rb index c81ca7cb56..6df6b20de1 100644 --- a/spec/requests/api/v3/membership_resources_spec.rb +++ b/spec/requests/api/v3/membership_resources_spec.rb @@ -42,9 +42,9 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do end let(:own_member) do create(:member, - roles: [create(:role, permissions: permissions)], - project: project, - user: current_user) + roles: [create(:role, permissions: permissions)], + project: project, + user: current_user) end let(:permissions) { %i[view_members manage_members] } let(:project) { create(:project) } @@ -53,17 +53,17 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do let(:other_user) { create(:user) } let(:other_member) do create(:member, - roles: [other_role], - principal: other_user, - project: project) + roles: [other_role], + principal: other_user, + project: project) end let(:invisible_member) do create(:member, - roles: [create(:role)]) + roles: [create(:role)]) end let(:global_member) do create(:global_member, - roles: [global_role]) + roles: [global_role]) end subject(:response) { last_response } @@ -87,6 +87,8 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do describe 'GET api/v3/memberships' do let(:members) { [own_member, other_member, invisible_member, global_member] } + let(:filters) { nil } + let(:path) { api_v3_paths.path_for(:memberships, filters: filters, sort_by: [%i(id asc)]) } before do members @@ -96,9 +98,6 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do get path end - let(:filters) { nil } - let(:path) { api_v3_paths.path_for(:memberships, filters: filters, sort_by: [%i(id asc)]) } - context 'without params' do it 'responds 200 OK' do expect(subject.status).to eq(200) @@ -183,9 +182,9 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do let(:group) { create(:group) } let(:group_member) do create(:member, - roles: [create(:role)], - project: project, - principal: group) + roles: [create(:role)], + project: project, + principal: group) end let(:members) { [own_member, group_member] } @@ -214,9 +213,9 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do end let(:placeholder_member) do create(:member, - roles: [create(:role)], - project: project, - principal: placeholder_user) + roles: [create(:role)], + project: project, + principal: placeholder_user) end let(:members) { [own_member, placeholder_member] } @@ -239,7 +238,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do end end - context 'filtering by user name' do + context 'when filtering by user name' do let(:filters) do [{ 'any_name_attribute' => { 'operator' => '~', @@ -258,14 +257,14 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do end end - context 'filtering by project' do + context 'when filtering by project' do let(:members) { [own_member, other_member, invisible_member, own_other_member] } let(:own_other_member) do create(:member, - roles: [create(:role, permissions: permissions)], - project: other_project, - user: current_user) + roles: [create(:role, permissions: permissions)], + project: other_project, + user: current_user) end let(:other_project) { create(:project) } @@ -288,13 +287,13 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do end end - context 'filtering by principal' do + context 'when filtering by principal' do let(:group) { create(:group) } let(:group_member) do create(:member, - roles: [create(:role)], - principal: group, - project: project) + roles: [create(:role)], + principal: group, + project: project) end let(:members) { [own_member, other_member, group_member, invisible_member] } @@ -318,6 +317,24 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do .to be_json_eql(group_member.id.to_json) .at_path('_embedded/elements/1/id') end + + context 'when principal is a group without any memberships' do + let(:members) { [own_member, other_member, invisible_member] } + let(:filters) do + [{ 'principal' => { + 'operator' => '=', + 'values' => [group.id.to_s] + } }] + end + + it 'returns empty members' do + expect(subject.status).to eq(200) + + expect(subject.body) + .to be_json_eql([]) + .at_path('_embedded/elements') + end + end end context 'with the outdated created_on sort by (renamed to created_at)' do @@ -363,6 +380,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do context 'without permissions' do let(:permissions) { [] } + it 'is empty' do expect(subject.body) .to be_json_eql('0') @@ -416,7 +434,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do end it 'creates the member' do - expect(Member.find_by(user_id: principal.id, project: project)) + expect(Member.find_by(principal: principal, project: project)) .to be_present end @@ -551,6 +569,33 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do .to be_empty end end + + context 'when creating global role permission as admin' do + let(:current_user) { admin } + let(:project) { nil } + let(:expected_role) { global_role } + let(:body) do + { + _links: { + principal: { + href: principal_path + }, + roles: [ + { + href: api_v3_paths.role(global_role.id) + } + ] + }, + _meta: { + notificationMessage: { + raw: custom_message + } + } + }.to_json + end + + it_behaves_like 'successful member creation' + end end context 'for a placeholder user' do @@ -738,7 +783,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do it 'returns 200 OK' do expect(subject.status) - .to eql(200) + .to be(200) end it 'returns the member' do @@ -758,7 +803,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do it 'returns 404 NOT FOUND' do expect(subject.status) - .to eql(404) + .to be(404) end end @@ -767,7 +812,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do it 'returns 404 NOT FOUND' do expect(subject.status) - .to eql(404) + .to be(404) end end end @@ -869,13 +914,19 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do end context 'with a group' do + # first user has no direct roles + # second user has direct role `another_role` + # both users belong to a group which has `other_role`, so this role is inherited by users + # when updating `group` role from `other_role` to `another_role` + # expecting to have first user role changed from `other_role` to `another_role` + # and second user role extended from `[other_role]` to `[other_role, another_role]` because has direct role let(:group) do create(:group, member_in_project: project, member_through_role: other_role, members: users) end let(:principal) { group } let(:users) { [create(:user), create(:user)] } let(:other_member) do - Member.find_by(principal: group).tap do |m| + Member.find_by(principal: group).tap do # Behaves as if the user had that role before the role's membership was created. # Because the user had the role independent of the group, it is not to be removed. user_member = Member.find_by(principal: users.first) @@ -967,6 +1018,45 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do .to be_empty end end + + context 'when updating global role permission as admin' do + let(:group) do + create(:group, global_role: other_role, members: users) + end + let(:current_user) { admin } + let(:project) { nil } + let(:other_role) { create(:global_role) } + let(:another_role) { create(:global_role) } + + it 'responds with 200' do + expect(last_response.status).to eq(200) + end + + it 'updates the member and all inherited members but does not update memberships users have already had' do + # other member is the group member + expect(other_member.reload.roles) + .to match_array [another_role] + + expect(other_member.updated_at > other_member_updated_at) + .to be_truthy + + last_user_member = Member.find_by(principal: users.last) + + expect(last_user_member.roles) + .to match_array [another_role] + + expect(last_user_member.updated_at > last_user_member_updated_at) + .to be_truthy + + first_user_member = Member.find_by(principal: users.first) + + expect(first_user_member.roles.uniq) + .to match_array [other_role, another_role] + + expect(first_user_member.updated_at) + .to eql first_user_member_updated_at + end + end end context 'if attempting to empty the roles' do @@ -980,7 +1070,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do it 'returns 422' do expect(last_response.status) - .to eql(422) + .to be(422) expect(last_response.body) .to be_json_eql("Roles need to be assigned.".to_json) @@ -1004,7 +1094,7 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do it 'returns 422' do expect(last_response.status) - .to eql(422) + .to be(422) expect(last_response.body) .to be_json_eql("Roles has an unassignable role.".to_json) @@ -1016,9 +1106,9 @@ describe 'API v3 memberships resource', type: :request, content_type: :json do let(:other_project) do create(:project).tap do |p| create(:member, - project: p, - roles: [create(:role, permissions: [:manage_members])], - user: current_user) + project: p, + roles: [create(:role, permissions: [:manage_members])], + user: current_user) end end From 8ad0c9c07067e0ac6c2883ffa0faff6ea2c341a0 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 31 Jan 2022 17:54:49 +0100 Subject: [PATCH 037/118] Make rubocop happy --- spec/models/principals/scopes/visible_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/principals/scopes/visible_spec.rb b/spec/models/principals/scopes/visible_spec.rb index d22b42f092..48b2c11821 100644 --- a/spec/models/principals/scopes/visible_spec.rb +++ b/spec/models/principals/scopes/visible_spec.rb @@ -58,7 +58,7 @@ describe Principals::Scopes::Visible, type: :model do end context 'when user has no manage_members permission, but has manage_user global permission' do - current_user { FactoryBot.create :user, global_permissions: %i[manage_user] } + current_user { create :user, global_permissions: %i[manage_user] } it 'sees all users' do expect(subject).to match_array [current_user, other_project_user, global_user] From 582c8110910ef8aaa7b4316d237b57b0236a739d Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 31 Jan 2022 18:25:22 +0100 Subject: [PATCH 038/118] fix bug: no more anonymous user when notifying of group membership removals before, the email sent on group membership removal/ deletion was from Anonymous user. Now it is from the real user having performed the action in the administration --- .../groups/concerns/membership_manipulation.rb | 7 ++++++- .../notifications/group_member_altered_job.rb | 14 ++++++++------ .../groups/add_users_service_integration_spec.rb | 3 ++- ...up_inherited_roles_service_integration_spec.rb | 6 ++++-- .../update_roles_service_integration_spec.rb | 3 ++- .../group_member_altered_job_spec.rb | 15 ++++++++++++++- 6 files changed, 36 insertions(+), 12 deletions(-) diff --git a/app/services/groups/concerns/membership_manipulation.rb b/app/services/groups/concerns/membership_manipulation.rb index 5450fd6d9c..7d24d9fe0d 100644 --- a/app/services/groups/concerns/membership_manipulation.rb +++ b/app/services/groups/concerns/membership_manipulation.rb @@ -78,7 +78,12 @@ module Groups::Concerns end def send_notifications(member_ids, message, send_notifications) - Notifications::GroupMemberAlteredJob.perform_later(member_ids, message, send_notifications) + Notifications::GroupMemberAlteredJob.perform_later( + User.current, + member_ids, + message, + send_notifications + ) end end end diff --git a/app/workers/notifications/group_member_altered_job.rb b/app/workers/notifications/group_member_altered_job.rb index 5bbead47c0..f57903a671 100644 --- a/app/workers/notifications/group_member_altered_job.rb +++ b/app/workers/notifications/group_member_altered_job.rb @@ -31,12 +31,14 @@ class Notifications::GroupMemberAlteredJob < ApplicationJob queue_with_priority :notification - def perform(members_ids, message, send_notifications) - each_member(members_ids) do |member| - OpenProject::Notifications.send(event_type(member), - member: member, - message: message, - send_notifications: send_notifications) + def perform(current_user, members_ids, message, send_notifications) + User.execute_as(current_user) do + each_member(members_ids) do |member| + OpenProject::Notifications.send(event_type(member), + member: member, + message: message, + send_notifications: send_notifications) + end end end diff --git a/spec/services/groups/add_users_service_integration_spec.rb b/spec/services/groups/add_users_service_integration_spec.rb index 8fd816b640..1afde48a18 100644 --- a/spec/services/groups/add_users_service_integration_spec.rb +++ b/spec/services/groups/add_users_service_integration_spec.rb @@ -76,7 +76,8 @@ describe Groups::AddUsersService, 'integration', type: :model do expect(Notifications::GroupMemberAlteredJob) .to have_received(:perform_later) - .with(a_collection_containing_exactly(*ids), + .with(current_user, + a_collection_containing_exactly(*ids), message, true) end diff --git a/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb b/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb index a1a25eeaec..e7d0cd5714 100644 --- a/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb +++ b/spec/services/groups/cleanup_inherited_roles_service_integration_spec.rb @@ -145,7 +145,8 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do expect(Notifications::GroupMemberAlteredJob) .to have_received(:perform_later) - .with([first_user_member.id], + .with(current_user, + [first_user_member.id], message, true) end @@ -187,7 +188,8 @@ describe Groups::CleanupInheritedRolesService, 'integration', type: :model do expect(Notifications::GroupMemberAlteredJob) .to have_received(:perform_later) - .with([first_user_member.id], + .with(current_user, + [first_user_member.id], message, true) end diff --git a/spec/services/groups/update_roles_service_integration_spec.rb b/spec/services/groups/update_roles_service_integration_spec.rb index ec1c5a9c8f..a6363b7f54 100644 --- a/spec/services/groups/update_roles_service_integration_spec.rb +++ b/spec/services/groups/update_roles_service_integration_spec.rb @@ -82,7 +82,8 @@ describe Groups::UpdateRolesService, 'integration', type: :model do expect(Notifications::GroupMemberAlteredJob) .to have_received(:perform_later) - .with(a_collection_containing_exactly(*Member.where(principal: user).pluck(:id)), + .with(current_user, + a_collection_containing_exactly(*Member.where(principal: user).pluck(:id)), message, true) end diff --git a/spec/workers/notifications/group_member_altered_job_spec.rb b/spec/workers/notifications/group_member_altered_job_spec.rb index e81128a60a..e869a06ce5 100644 --- a/spec/workers/notifications/group_member_altered_job_spec.rb +++ b/spec/workers/notifications/group_member_altered_job_spec.rb @@ -32,9 +32,10 @@ require 'spec_helper' describe Notifications::GroupMemberAlteredJob, type: :model do subject(:service_call) do - described_class.new.perform(members_ids, message, send_notification) + described_class.new.perform(current_user, members_ids, message, send_notification) end + let(:current_user) { build_stubbed(:user) } let(:time) { Time.now } let(:member1) do build_stubbed(:member, updated_at: time, created_at: time) @@ -72,4 +73,16 @@ describe Notifications::GroupMemberAlteredJob, type: :model do .to have_received(:send) .with(OpenProject::Events::MEMBER_UPDATED, member: member2, message: message, send_notifications: send_notification) end + + it 'propagates the given current user when sending notifications' do + notifications_called = false + allow(OpenProject::Notifications) + .to receive(:send) do |_args| + expect(User.current).to be(current_user) + notifications_called = true + end + + service_call + expect(notifications_called).to be(true) + end end From 6f5bb8f762254ba6ca2d994c9694d40166677988 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 31 Jan 2022 20:35:58 +0100 Subject: [PATCH 039/118] rewrite test in a better way --- .../workers/notifications/group_member_altered_job_spec.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/spec/workers/notifications/group_member_altered_job_spec.rb b/spec/workers/notifications/group_member_altered_job_spec.rb index e869a06ce5..4773cee0dd 100644 --- a/spec/workers/notifications/group_member_altered_job_spec.rb +++ b/spec/workers/notifications/group_member_altered_job_spec.rb @@ -75,14 +75,13 @@ describe Notifications::GroupMemberAlteredJob, type: :model do end it 'propagates the given current user when sending notifications' do - notifications_called = false + captured_current_user = nil allow(OpenProject::Notifications) .to receive(:send) do |_args| - expect(User.current).to be(current_user) - notifications_called = true + captured_current_user = User.current end service_call - expect(notifications_called).to be(true) + expect(captured_current_user).to be(current_user) end end From a78e5c569df999a2fa80f44c17b297fe46f92328 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 1 Feb 2022 03:09:12 +0000 Subject: [PATCH 040/118] update locales from crowdin [ci skip] --- config/locales/crowdin/it.yml | 6 +- config/locales/crowdin/js-lol.yml | 1906 ++++++++--------- config/locales/crowdin/ru.yml | 17 +- .../config/locales/crowdin/it.yml | 12 +- .../config/locales/crowdin/js-ru.yml | 6 +- .../config/locales/crowdin/ru.yml | 4 +- .../config/locales/crowdin/ru.yml | 2 +- 7 files changed, 977 insertions(+), 976 deletions(-) diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index c35923117e..73d1f17966 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -319,7 +319,7 @@ it: other: '%{count} macro-attività discendenti' bulk: could_not_be_saved: "Le seguenti macro-attività non possono essere salvate:" - none_could_be_saved: "None of the %{total} work packages could be updated." + none_could_be_saved: "Nessuna delle %{total} macro-attività può essere aggiornata." x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." selected_because_descendants: "While %{selected} work packages where selected, in total %{total} work packages are affected which includes descendants." descendant: "descendant of selected" @@ -2345,9 +2345,9 @@ it: setting_apiv3_cors_origins: "Origini di condivisione CORS (Cross-Origin Resource Sharing) API V3 consentite" setting_apiv3_cors_origins_text_html: > Se CORS è abilitato, queste sono le origini che possono accedere alle API di OpenProject.
Controlla la Documentazione sull'intestazione dell'origine per sapere come specificare i valori previsti. - setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_size: "Dimensione massima della pagina API" setting_apiv3_max_page_instructions_html: > - Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. + Imposta la dimensione massima della pagina con cui l'API risponderà. Non sarà possibile eseguire richieste API che restituiscono più valori su una singola pagina.
Attenzione: Si prega di modificare questo valore solo se sei sicuro del motivo per cui ne hai bisogno. La definizione di un valore elevato comporterà un impatto significativo sulle prestazioni, mentre un valore inferiore alle opzioni per pagina causerà errori nelle viste paginate. setting_apiv3_docs: "Documentazione" setting_apiv3_docs_enabled: "Abilita pagina di documenti" setting_apiv3_docs_enabled_instructions_html: > diff --git a/config/locales/crowdin/js-lol.yml b/config/locales/crowdin/js-lol.yml index 0f73d88b26..0afae5d9f5 100644 --- a/config/locales/crowdin/js-lol.yml +++ b/config/locales/crowdin/js-lol.yml @@ -22,1140 +22,1140 @@ lol: js: ajax: - hide: "crwdns664189:0crwdne664189:0" - loading: "crwdns664191:0crwdne664191:0" + hide: "crwdns666299:0crwdne666299:0" + loading: "crwdns666301:0crwdne666301:0" attachments: draggable_hint: | - crwdns664193:0crwdne664193:0 + crwdns666303:0crwdne666303:0 autocomplete_select: placeholder: - multi: "crwdns664195:0%{name}crwdne664195:0" - single: "crwdns664197:0%{name}crwdne664197:0" - remove: "crwdns664199:0%{name}crwdne664199:0" - active: "crwdns664201:0%{label}crwdnd664201:0%{name}crwdne664201:0" + multi: "crwdns666305:0%{name}crwdne666305:0" + single: "crwdns666307:0%{name}crwdne666307:0" + remove: "crwdns666309:0%{name}crwdne666309:0" + active: "crwdns666311:0%{label}crwdnd666311:0%{name}crwdne666311:0" backup: - attachments_disabled: crwdns664203:0crwdne664203:0 + attachments_disabled: crwdns666313:0crwdne666313:0 info: > - crwdns664205:0crwdne664205:0 + crwdns666315:0crwdne666315:0 note: > - crwdns664207:0crwdne664207:0 - last_backup: crwdns664209:0crwdne664209:0 - last_backup_from: crwdns664211:0crwdne664211:0 - title: crwdns664213:0crwdne664213:0 - options: crwdns664215:0crwdne664215:0 - include_attachments: crwdns664217:0crwdne664217:0 - download_backup: crwdns664219:0crwdne664219:0 - request_backup: crwdns664221:0crwdne664221:0 - close_popup_title: "crwdns664223:0crwdne664223:0" - close_filter_title: "crwdns664225:0crwdne664225:0" - close_form_title: "crwdns664227:0crwdne664227:0" - button_add_watcher: "crwdns664229:0crwdne664229:0" - button_add: "crwdns664231:0crwdne664231:0" - button_back: "crwdns664233:0crwdne664233:0" - button_back_to_list_view: "crwdns664235:0crwdne664235:0" - button_cancel: "crwdns664237:0crwdne664237:0" - button_close: "crwdns664239:0crwdne664239:0" - button_change_project: "crwdns664241:0crwdne664241:0" - button_check_all: "crwdns664243:0crwdne664243:0" - button_configure-form: "crwdns664245:0crwdne664245:0" - button_confirm: "crwdns664247:0crwdne664247:0" - button_continue: "crwdns664249:0crwdne664249:0" - button_copy: "crwdns664251:0crwdne664251:0" - button_custom-fields: "crwdns664253:0crwdne664253:0" - button_delete: "crwdns664255:0crwdne664255:0" - button_delete_watcher: "crwdns664257:0crwdne664257:0" - button_details_view: "crwdns664259:0crwdne664259:0" - button_duplicate: "crwdns664261:0crwdne664261:0" - button_edit: "crwdns664263:0crwdne664263:0" - button_filter: "crwdns664265:0crwdne664265:0" - button_collapse_all: "crwdns664267:0crwdne664267:0" - button_expand_all: "crwdns664269:0crwdne664269:0" - button_advanced_filter: "crwdns664271:0crwdne664271:0" - button_list_view: "crwdns664273:0crwdne664273:0" - button_show_view: "crwdns664275:0crwdne664275:0" - button_log_time: "crwdns664277:0crwdne664277:0" - button_more: "crwdns664279:0crwdne664279:0" - button_open_details: "crwdns664281:0crwdne664281:0" - button_close_details: "crwdns664283:0crwdne664283:0" - button_open_fullscreen: "crwdns664285:0crwdne664285:0" - button_show_cards: "crwdns664287:0crwdne664287:0" - button_show_list: "crwdns664289:0crwdne664289:0" - button_quote: "crwdns664291:0crwdne664291:0" - button_save: "crwdns664293:0crwdne664293:0" - button_settings: "crwdns664295:0crwdne664295:0" - button_uncheck_all: "crwdns664297:0crwdne664297:0" - button_update: "crwdns664299:0crwdne664299:0" - button_export-pdf: "crwdns664301:0crwdne664301:0" - button_export-atom: "crwdns664303:0crwdne664303:0" - button_create: "crwdns664305:0crwdne664305:0" + crwdns666317:0crwdne666317:0 + last_backup: crwdns666319:0crwdne666319:0 + last_backup_from: crwdns666321:0crwdne666321:0 + title: crwdns666323:0crwdne666323:0 + options: crwdns666325:0crwdne666325:0 + include_attachments: crwdns666327:0crwdne666327:0 + download_backup: crwdns666329:0crwdne666329:0 + request_backup: crwdns666331:0crwdne666331:0 + close_popup_title: "crwdns666333:0crwdne666333:0" + close_filter_title: "crwdns666335:0crwdne666335:0" + close_form_title: "crwdns666337:0crwdne666337:0" + button_add_watcher: "crwdns666339:0crwdne666339:0" + button_add: "crwdns666341:0crwdne666341:0" + button_back: "crwdns666343:0crwdne666343:0" + button_back_to_list_view: "crwdns666345:0crwdne666345:0" + button_cancel: "crwdns666347:0crwdne666347:0" + button_close: "crwdns666349:0crwdne666349:0" + button_change_project: "crwdns666351:0crwdne666351:0" + button_check_all: "crwdns666353:0crwdne666353:0" + button_configure-form: "crwdns666355:0crwdne666355:0" + button_confirm: "crwdns666357:0crwdne666357:0" + button_continue: "crwdns666359:0crwdne666359:0" + button_copy: "crwdns666361:0crwdne666361:0" + button_custom-fields: "crwdns666363:0crwdne666363:0" + button_delete: "crwdns666365:0crwdne666365:0" + button_delete_watcher: "crwdns666367:0crwdne666367:0" + button_details_view: "crwdns666369:0crwdne666369:0" + button_duplicate: "crwdns666371:0crwdne666371:0" + button_edit: "crwdns666373:0crwdne666373:0" + button_filter: "crwdns666375:0crwdne666375:0" + button_collapse_all: "crwdns666377:0crwdne666377:0" + button_expand_all: "crwdns666379:0crwdne666379:0" + button_advanced_filter: "crwdns666381:0crwdne666381:0" + button_list_view: "crwdns666383:0crwdne666383:0" + button_show_view: "crwdns666385:0crwdne666385:0" + button_log_time: "crwdns666387:0crwdne666387:0" + button_more: "crwdns666389:0crwdne666389:0" + button_open_details: "crwdns666391:0crwdne666391:0" + button_close_details: "crwdns666393:0crwdne666393:0" + button_open_fullscreen: "crwdns666395:0crwdne666395:0" + button_show_cards: "crwdns666397:0crwdne666397:0" + button_show_list: "crwdns666399:0crwdne666399:0" + button_quote: "crwdns666401:0crwdne666401:0" + button_save: "crwdns666403:0crwdne666403:0" + button_settings: "crwdns666405:0crwdne666405:0" + button_uncheck_all: "crwdns666407:0crwdne666407:0" + button_update: "crwdns666409:0crwdne666409:0" + button_export-pdf: "crwdns666411:0crwdne666411:0" + button_export-atom: "crwdns666413:0crwdne666413:0" + button_create: "crwdns666415:0crwdne666415:0" card: - add_new: 'crwdns664307:0crwdne664307:0' + add_new: 'crwdns666417:0crwdne666417:0' highlighting: - inline: 'crwdns664309:0crwdne664309:0' - entire_card_by: 'crwdns664311:0crwdne664311:0' - remove_from_list: 'crwdns664313:0crwdne664313:0' - caption_rate_history: "crwdns664315:0crwdne664315:0" + inline: 'crwdns666419:0crwdne666419:0' + entire_card_by: 'crwdns666421:0crwdne666421:0' + remove_from_list: 'crwdns666423:0crwdne666423:0' + caption_rate_history: "crwdns666425:0crwdne666425:0" clipboard: - browser_error: "crwdns664317:0crwdne664317:0" - copied_successful: "crwdns664319:0crwdne664319:0" + browser_error: "crwdns666427:0crwdne666427:0" + copied_successful: "crwdns666429:0crwdne666429:0" chart: - type: 'crwdns664321:0crwdne664321:0' - axis_criteria: 'crwdns664323:0crwdne664323:0' - modal_title: 'crwdns664325:0crwdne664325:0' + type: 'crwdns666431:0crwdne666431:0' + axis_criteria: 'crwdns666433:0crwdne666433:0' + modal_title: 'crwdns666435:0crwdne666435:0' types: - line: 'crwdns664327:0crwdne664327:0' - horizontal_bar: 'crwdns664329:0crwdne664329:0' - bar: 'crwdns664331:0crwdne664331:0' - pie: 'crwdns664333:0crwdne664333:0' - doughnut: 'crwdns664335:0crwdne664335:0' - radar: 'crwdns664337:0crwdne664337:0' - polar_area: 'crwdns664339:0crwdne664339:0' + line: 'crwdns666437:0crwdne666437:0' + horizontal_bar: 'crwdns666439:0crwdne666439:0' + bar: 'crwdns666441:0crwdne666441:0' + pie: 'crwdns666443:0crwdne666443:0' + doughnut: 'crwdns666445:0crwdne666445:0' + radar: 'crwdns666447:0crwdne666447:0' + polar_area: 'crwdns666449:0crwdne666449:0' tabs: - graph_settings: 'crwdns664341:0crwdne664341:0' - dataset: 'crwdns664343:0%{number}crwdne664343:0' + graph_settings: 'crwdns666451:0crwdne666451:0' + dataset: 'crwdns666453:0%{number}crwdne666453:0' errors: - could_not_load: 'crwdns664345:0crwdne664345:0' - description_available_columns: "crwdns664347:0crwdne664347:0" - description_current_position: "crwdns664349:0crwdne664349:0" - description_select_work_package: "crwdns664351:0%{id}crwdne664351:0" - description_selected_columns: "crwdns664353:0crwdne664353:0" - description_subwork_package: "crwdns664355:0%{id}crwdne664355:0" + could_not_load: 'crwdns666455:0crwdne666455:0' + description_available_columns: "crwdns666457:0crwdne666457:0" + description_current_position: "crwdns666459:0crwdne666459:0" + description_select_work_package: "crwdns666461:0%{id}crwdne666461:0" + description_selected_columns: "crwdns666463:0crwdne666463:0" + description_subwork_package: "crwdns666465:0%{id}crwdne666465:0" editor: - preview: 'crwdns664357:0crwdne664357:0' - source_code: 'crwdns664359:0crwdne664359:0' - error_saving_failed: 'crwdns664361:0%{error}crwdne664361:0' - ckeditor_error: 'crwdns664363:0crwdne664363:0' + preview: 'crwdns666467:0crwdne666467:0' + source_code: 'crwdns666469:0crwdne666469:0' + error_saving_failed: 'crwdns666471:0%{error}crwdne666471:0' + ckeditor_error: 'crwdns666473:0crwdne666473:0' mode: - manual: 'crwdns664365:0crwdne664365:0' - wysiwyg: 'crwdns664367:0crwdne664367:0' + manual: 'crwdns666475:0crwdne666475:0' + wysiwyg: 'crwdns666477:0crwdne666477:0' macro: - error: 'crwdns664369:0%{message}crwdne664369:0' + error: 'crwdns666479:0%{message}crwdne666479:0' attribute_reference: - macro_help_tooltip: 'crwdns664371:0crwdne664371:0' - not_found: 'crwdns664373:0crwdne664373:0' - invalid_attribute: "crwdns664375:0%{name}crwdne664375:0" + macro_help_tooltip: 'crwdns666481:0crwdne666481:0' + not_found: 'crwdns666483:0crwdne666483:0' + invalid_attribute: "crwdns666485:0%{name}crwdne666485:0" child_pages: - button: 'crwdns664377:0crwdne664377:0' - include_parent: 'crwdns664379:0crwdne664379:0' - text: 'crwdns664381:0[Placeholder]crwdne664381:0' - page: 'crwdns664383:0crwdne664383:0' - this_page: 'crwdns664385:0crwdne664385:0' + button: 'crwdns666487:0crwdne666487:0' + include_parent: 'crwdns666489:0crwdne666489:0' + text: 'crwdns666491:0[Placeholder]crwdne666491:0' + page: 'crwdns666493:0crwdne666493:0' + this_page: 'crwdns666495:0crwdne666495:0' hint: | - crwdns664387:0crwdne664387:0 + crwdns666497:0crwdne666497:0 code_block: - button: 'crwdns664389:0crwdne664389:0' - title: 'crwdns664391:0crwdne664391:0' - language: 'crwdns664393:0crwdne664393:0' - language_hint: 'crwdns664395:0crwdne664395:0' + button: 'crwdns666499:0crwdne666499:0' + title: 'crwdns666501:0crwdne666501:0' + language: 'crwdns666503:0crwdne666503:0' + language_hint: 'crwdns666505:0crwdne666505:0' dropdown: - macros: 'crwdns664397:0crwdne664397:0' - chose_macro: 'crwdns664399:0crwdne664399:0' - toc: 'crwdns664401:0crwdne664401:0' - toolbar_help: 'crwdns664403:0crwdne664403:0' + macros: 'crwdns666507:0crwdne666507:0' + chose_macro: 'crwdns666509:0crwdne666509:0' + toc: 'crwdns666511:0crwdne666511:0' + toolbar_help: 'crwdns666513:0crwdne666513:0' wiki_page_include: - button: 'crwdns664405:0crwdne664405:0' - text: 'crwdns664407:0[Placeholder]crwdne664407:0' - page: 'crwdns664409:0crwdne664409:0' - not_set: 'crwdns664411:0crwdne664411:0' + button: 'crwdns666515:0crwdne666515:0' + text: 'crwdns666517:0[Placeholder]crwdne666517:0' + page: 'crwdns666519:0crwdne666519:0' + not_set: 'crwdns666521:0crwdne666521:0' hint: | - crwdns664413:0crwdne664413:0 + crwdns666523:0crwdne666523:0 work_package_button: - button: 'crwdns664415:0crwdne664415:0' - type: 'crwdns664417:0crwdne664417:0' - button_style: 'crwdns664419:0crwdne664419:0' - button_style_hint: 'crwdns664421:0crwdne664421:0' - without_type: 'crwdns664423:0crwdne664423:0' - with_type: 'crwdns664425:0%{typename}crwdne664425:0' + button: 'crwdns666525:0crwdne666525:0' + type: 'crwdns666527:0crwdne666527:0' + button_style: 'crwdns666529:0crwdne666529:0' + button_style_hint: 'crwdns666531:0crwdne666531:0' + without_type: 'crwdns666533:0crwdne666533:0' + with_type: 'crwdns666535:0%{typename}crwdne666535:0' embedded_table: - button: 'crwdns664427:0crwdne664427:0' - text: 'crwdns664429:0[Placeholder]crwdne664429:0' + button: 'crwdns666537:0crwdne666537:0' + text: 'crwdns666539:0[Placeholder]crwdne666539:0' embedded_calendar: - text: 'crwdns664431:0[Placeholder]crwdne664431:0' + text: 'crwdns666541:0[Placeholder]crwdne666541:0' admin: type_form: - custom_field: 'crwdns664433:0crwdne664433:0' - inactive: 'crwdns664435:0crwdne664435:0' - drag_to_activate: "crwdns664437:0crwdne664437:0" - add_group: "crwdns664439:0crwdne664439:0" - add_table: "crwdns664441:0crwdne664441:0" - edit_query: 'crwdns664443:0crwdne664443:0' - new_group: 'crwdns664445:0crwdne664445:0' - reset_to_defaults: 'crwdns664447:0crwdne664447:0' + custom_field: 'crwdns666543:0crwdne666543:0' + inactive: 'crwdns666545:0crwdne666545:0' + drag_to_activate: "crwdns666547:0crwdne666547:0" + add_group: "crwdns666549:0crwdne666549:0" + add_table: "crwdns666551:0crwdne666551:0" + edit_query: 'crwdns666553:0crwdne666553:0' + new_group: 'crwdns666555:0crwdne666555:0' + reset_to_defaults: 'crwdns666557:0crwdne666557:0' enterprise: - text_reprieve_days_left: "crwdns664449:0%{days}crwdne664449:0" - text_expired: "crwdns664451:0crwdne664451:0" + text_reprieve_days_left: "crwdns666559:0%{days}crwdne666559:0" + text_expired: "crwdns666561:0crwdne666561:0" trial: - confirmation: "crwdns664453:0crwdne664453:0" + confirmation: "crwdns666563:0crwdne666563:0" confirmation_info: > - crwdns664455:0%{date}crwdnd664455:0%{email}crwdne664455:0 + crwdns666565:0%{date}crwdnd666565:0%{email}crwdne666565:0 form: general_consent: > - crwdns664457:0%{link_terms}crwdnd664457:0%{link_privacy}crwdne664457:0 - invalid_email: "crwdns664459:0crwdne664459:0" - label_company: "crwdns664461:0crwdne664461:0" - label_first_name: "crwdns664463:0crwdne664463:0" - label_last_name: "crwdns664465:0crwdne664465:0" - label_domain: "crwdns664467:0crwdne664467:0" - label_subscriber: "crwdns664469:0crwdne664469:0" - label_maximum_users: "crwdns664471:0crwdne664471:0" - label_starts_at: "crwdns664473:0crwdne664473:0" - label_expires_at: "crwdns664475:0crwdne664475:0" - receive_newsletter: crwdns664477:0%{link}crwdne664477:0 - taken_domain: crwdns664479:0crwdne664479:0 - taken_email: crwdns664481:0crwdne664481:0 - email_not_received: "crwdns664483:0crwdne664483:0" - try_another_email: "crwdns664485:0crwdne664485:0" - next_steps: "crwdns664487:0crwdne664487:0" - resend_link: "crwdns664489:0crwdne664489:0" - resend_success: "crwdns664491:0crwdne664491:0" - resend_warning: "crwdns664493:0crwdne664493:0" - session_timeout: "crwdns664495:0crwdne664495:0" - status_label: "crwdns664497:0crwdne664497:0" - status_confirmed: "crwdns664499:0crwdne664499:0" - status_waiting: "crwdns664501:0crwdne664501:0" - test_ee: "crwdns664503:0crwdne664503:0" - quick_overview: "crwdns664505:0crwdne664505:0" + crwdns666567:0%{link_terms}crwdnd666567:0%{link_privacy}crwdne666567:0 + invalid_email: "crwdns666569:0crwdne666569:0" + label_company: "crwdns666571:0crwdne666571:0" + label_first_name: "crwdns666573:0crwdne666573:0" + label_last_name: "crwdns666575:0crwdne666575:0" + label_domain: "crwdns666577:0crwdne666577:0" + label_subscriber: "crwdns666579:0crwdne666579:0" + label_maximum_users: "crwdns666581:0crwdne666581:0" + label_starts_at: "crwdns666583:0crwdne666583:0" + label_expires_at: "crwdns666585:0crwdne666585:0" + receive_newsletter: crwdns666587:0%{link}crwdne666587:0 + taken_domain: crwdns666589:0crwdne666589:0 + taken_email: crwdns666591:0crwdne666591:0 + email_not_received: "crwdns666593:0crwdne666593:0" + try_another_email: "crwdns666595:0crwdne666595:0" + next_steps: "crwdns666597:0crwdne666597:0" + resend_link: "crwdns666599:0crwdne666599:0" + resend_success: "crwdns666601:0crwdne666601:0" + resend_warning: "crwdns666603:0crwdne666603:0" + session_timeout: "crwdns666605:0crwdne666605:0" + status_label: "crwdns666607:0crwdne666607:0" + status_confirmed: "crwdns666609:0crwdne666609:0" + status_waiting: "crwdns666611:0crwdne666611:0" + test_ee: "crwdns666613:0crwdne666613:0" + quick_overview: "crwdns666615:0crwdne666615:0" upsale: - become_hero: "crwdns664507:0crwdne664507:0" + become_hero: "crwdns666617:0crwdne666617:0" benefits: - description: "crwdns664509:0crwdne664509:0" - high_security: "crwdns664511:0crwdne664511:0" - high_security_text: "crwdns664513:0crwdne664513:0" - installation: "crwdns664515:0crwdne664515:0" - installation_text: "crwdns664517:0crwdne664517:0" - premium_features: "crwdns664519:0crwdne664519:0" - premium_features_text: "crwdns664521:0crwdne664521:0" - professional_support: "crwdns664523:0crwdne664523:0" - professional_support_text: "crwdns664525:0crwdne664525:0" - button_start_trial: "crwdns664527:0crwdne664527:0" - button_book_now: "crwdns664529:0crwdne664529:0" + description: "crwdns666619:0crwdne666619:0" + high_security: "crwdns666621:0crwdne666621:0" + high_security_text: "crwdns666623:0crwdne666623:0" + installation: "crwdns666625:0crwdne666625:0" + installation_text: "crwdns666627:0crwdne666627:0" + premium_features: "crwdns666629:0crwdne666629:0" + premium_features_text: "crwdns666631:0crwdne666631:0" + professional_support: "crwdns666633:0crwdne666633:0" + professional_support_text: "crwdns666635:0crwdne666635:0" + button_start_trial: "crwdns666637:0crwdne666637:0" + button_book_now: "crwdns666639:0crwdne666639:0" confidence: > - crwdns664531:0crwdne664531:0 - link_quote: "crwdns664533:0crwdne664533:0" + crwdns666641:0crwdne666641:0 + link_quote: "crwdns666643:0crwdne666643:0" text: > - crwdns664535:0crwdne664535:0 - unlimited: "crwdns664537:0crwdne664537:0" - you_contribute: "crwdns664539:0crwdne664539:0" + crwdns666645:0crwdne666645:0 + unlimited: "crwdns666647:0crwdne666647:0" + you_contribute: "crwdns666649:0crwdne666649:0" custom_actions: date: - specific: 'crwdns664541:0crwdne664541:0' - current_date: 'crwdns664543:0crwdne664543:0' + specific: 'crwdns666651:0crwdne666651:0' + current_date: 'crwdns666653:0crwdne666653:0' error: - internal: "crwdns664545:0crwdne664545:0" - cannot_save_changes_with_message: "crwdns664547:0%{error}crwdne664547:0" - query_saving: "crwdns664549:0crwdne664549:0" - embedded_table_loading: "crwdns664551:0%{message}crwdne664551:0" - enumeration_activities: "crwdns664553:0crwdne664553:0" - enumeration_doc_categories: "crwdns664555:0crwdne664555:0" - enumeration_work_package_priorities: "crwdns664557:0crwdne664557:0" + internal: "crwdns666655:0crwdne666655:0" + cannot_save_changes_with_message: "crwdns666657:0%{error}crwdne666657:0" + query_saving: "crwdns666659:0crwdne666659:0" + embedded_table_loading: "crwdns666661:0%{message}crwdne666661:0" + enumeration_activities: "crwdns666663:0crwdne666663:0" + enumeration_doc_categories: "crwdns666665:0crwdne666665:0" + enumeration_work_package_priorities: "crwdns666667:0crwdne666667:0" filter: description: - text_open_filter: "crwdns664559:0crwdne664559:0" - text_close_filter: "crwdns664561:0crwdne664561:0" - noneElement: "crwdns664563:0crwdne664563:0" + text_open_filter: "crwdns666669:0crwdne666669:0" + text_close_filter: "crwdns666671:0crwdne666671:0" + noneElement: "crwdns666673:0crwdne666673:0" time_zone_converted: - two_values: "crwdns664565:0%{from}crwdnd664565:0%{to}crwdne664565:0" - only_start: "crwdns664567:0%{from}crwdne664567:0" - only_end: "crwdns664569:0%{to}crwdne664569:0" - value_spacer: "crwdns664571:0crwdne664571:0" + two_values: "crwdns666675:0%{from}crwdnd666675:0%{to}crwdne666675:0" + only_start: "crwdns666677:0%{from}crwdne666677:0" + only_end: "crwdns666679:0%{to}crwdne666679:0" + value_spacer: "crwdns666681:0crwdne666681:0" sorting: criteria: - one: "crwdns664573:0crwdne664573:0" - two: "crwdns664575:0crwdne664575:0" - three: "crwdns664577:0crwdne664577:0" - upsale_for_more: "crwdns664579:0crwdne664579:0" - upsale_link: 'crwdns664581:0crwdne664581:0' - general_text_no: "crwdns664583:0crwdne664583:0" - general_text_yes: "crwdns664585:0crwdne664585:0" - general_text_No: "crwdns664587:0crwdne664587:0" - general_text_Yes: "crwdns664589:0crwdne664589:0" + one: "crwdns666683:0crwdne666683:0" + two: "crwdns666685:0crwdne666685:0" + three: "crwdns666687:0crwdne666687:0" + upsale_for_more: "crwdns666689:0crwdne666689:0" + upsale_link: 'crwdns666691:0crwdne666691:0' + general_text_no: "crwdns666693:0crwdne666693:0" + general_text_yes: "crwdns666695:0crwdne666695:0" + general_text_No: "crwdns666697:0crwdne666697:0" + general_text_Yes: "crwdns666699:0crwdne666699:0" hal: error: - update_conflict_refresh: "crwdns664591:0crwdne664591:0" - edit_prohibited: "crwdns664593:0%{attribute}crwdne664593:0" + update_conflict_refresh: "crwdns666701:0crwdne666701:0" + edit_prohibited: "crwdns666703:0%{attribute}crwdne666703:0" format: - date: "crwdns664595:0%{attribute}crwdne664595:0" - general: "crwdns664597:0crwdne664597:0" + date: "crwdns666705:0%{attribute}crwdne666705:0" + general: "crwdns666707:0crwdne666707:0" homescreen: blocks: new_features: - text_new_features: "crwdns664599:0crwdne664599:0" - learn_about: "crwdns664601:0crwdne664601:0" + text_new_features: "crwdns666709:0crwdne666709:0" + learn_about: "crwdns666711:0crwdne666711:0" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': standard: - learn_about_link: crwdns664603:0crwdne664603:0 + learn_about_link: crwdns666713:0crwdne666713:0 new_features_html: > - crwdns664605:0%{list_styling_class}crwdne664605:0 + crwdns666715:0%{list_styling_class}crwdne666715:0 bim: - learn_about_link: crwdns664607:0crwdne664607:0 + learn_about_link: crwdns666717:0crwdne666717:0 new_features_html: > - crwdns664609:0%{list_styling_class}crwdne664609:0 - label_activate: "crwdns664611:0crwdne664611:0" - label_add_column_after: "crwdns664613:0crwdne664613:0" - label_add_column_before: "crwdns664615:0crwdne664615:0" - label_add_columns: "crwdns664617:0crwdne664617:0" - label_add_comment: "crwdns664619:0crwdne664619:0" - label_add_comment_title: "crwdns664621:0crwdne664621:0" - label_add_row_after: "crwdns664623:0crwdne664623:0" - label_add_row_before: "crwdns664625:0crwdne664625:0" - label_add_selected_columns: "crwdns664627:0crwdne664627:0" - label_added_by: "crwdns664629:0crwdne664629:0" - label_added_time_by: "crwdns664631:0%{authorLink}crwdnd664631:0%{author}crwdnd664631:0%{age}crwdne664631:0" - label_ago: "crwdns664633:0crwdne664633:0" - label_all: "crwdns664635:0crwdne664635:0" - label_all_work_packages: "crwdns664637:0crwdne664637:0" - label_and: "crwdns664639:0crwdne664639:0" - label_ascending: "crwdns664641:0crwdne664641:0" - label_author: "crwdns664643:0%{user}crwdne664643:0" - label_avatar: "crwdns664645:0crwdne664645:0" - label_between: "crwdns664647:0crwdne664647:0" - label_board: "crwdns664649:0crwdne664649:0" - label_board_locked: "crwdns664651:0crwdne664651:0" - label_board_plural: "crwdns664653:0crwdne664653:0" - label_board_sticky: "crwdns664655:0crwdne664655:0" - label_change: "crwdns664657:0crwdne664657:0" - label_create: "crwdns664659:0crwdne664659:0" - label_create_work_package: "crwdns664661:0crwdne664661:0" - label_created_by: "crwdns664663:0crwdne664663:0" - label_date: "crwdns664665:0crwdne664665:0" - label_date_with_format: "crwdns664667:0%{date_attribute}crwdnd664667:0%{format}crwdne664667:0" - label_deactivate: "crwdns664669:0crwdne664669:0" - label_descending: "crwdns664671:0crwdne664671:0" - label_description: "crwdns664673:0crwdne664673:0" - label_details: "crwdns664675:0crwdne664675:0" - label_display: "crwdns664677:0crwdne664677:0" - label_cancel_comment: "crwdns664679:0crwdne664679:0" - label_closed_work_packages: "crwdns664681:0crwdne664681:0" - label_collapse: "crwdns664683:0crwdne664683:0" - label_collapsed: "crwdns664685:0crwdne664685:0" - label_collapse_all: "crwdns664687:0crwdne664687:0" - label_comment: "crwdns664689:0crwdne664689:0" - label_committed_at: "crwdns664691:0%{committed_revision_link}crwdnd664691:0%{date}crwdne664691:0" - label_committed_link: "crwdns664693:0%{revision_identifier}crwdne664693:0" - label_contains: "crwdns664695:0crwdne664695:0" - label_created_on: "crwdns664697:0crwdne664697:0" - label_edit_comment: "crwdns664699:0crwdne664699:0" - label_edit_status: "crwdns664701:0crwdne664701:0" - label_email: "crwdns664703:0crwdne664703:0" - label_equals: "crwdns664705:0crwdne664705:0" - label_expand: "crwdns664707:0crwdne664707:0" - label_expanded: "crwdns664709:0crwdne664709:0" - label_expand_all: "crwdns664711:0crwdne664711:0" - label_expand_project_menu: "crwdns664713:0crwdne664713:0" - label_export: "crwdns664715:0crwdne664715:0" - label_export_preparing: "crwdns664717:0crwdne664717:0" - label_filename: "crwdns664719:0crwdne664719:0" - label_filesize: "crwdns664721:0crwdne664721:0" - label_general: "crwdns664723:0crwdne664723:0" - label_global_roles: "crwdns664725:0crwdne664725:0" - label_greater_or_equal: "crwdns664727:0crwdne664727:0" - label_group: 'crwdns664729:0crwdne664729:0' - label_group_by: "crwdns664731:0crwdne664731:0" - label_group_plural: "crwdns664733:0crwdne664733:0" - label_hide_attributes: "crwdns664735:0crwdne664735:0" - label_hide_column: "crwdns664737:0crwdne664737:0" - label_hide_project_menu: "crwdns664739:0crwdne664739:0" - label_in: "crwdns664741:0crwdne664741:0" - label_in_less_than: "crwdns664743:0crwdne664743:0" - label_in_more_than: "crwdns664745:0crwdne664745:0" - label_incoming_emails: "crwdns664747:0crwdne664747:0" - label_information_plural: "crwdns664749:0crwdne664749:0" - label_import: "crwdns664751:0crwdne664751:0" - label_latest_activity: "crwdns664753:0crwdne664753:0" - label_last_updated_on: "crwdns664755:0crwdne664755:0" - label_learn_more_link: "crwdns664757:0crwdne664757:0" - label_less_or_equal: "crwdns664759:0crwdne664759:0" - label_less_than_ago: "crwdns664761:0crwdne664761:0" - label_loading: "crwdns664763:0crwdne664763:0" - label_mail_notification: "crwdns664765:0crwdne664765:0" - label_me: "crwdns664767:0crwdne664767:0" - label_meeting_agenda: "crwdns664769:0crwdne664769:0" - label_meeting_minutes: "crwdns664771:0crwdne664771:0" - label_menu_collapse: "crwdns664773:0crwdne664773:0" - label_menu_expand: "crwdns664775:0crwdne664775:0" - label_more_than_ago: "crwdns664777:0crwdne664777:0" - label_next: "crwdns664779:0crwdne664779:0" - label_no_color: "crwdns664781:0crwdne664781:0" - label_no_data: "crwdns664783:0crwdne664783:0" - label_no_due_date: "crwdns664785:0crwdne664785:0" - label_no_start_date: "crwdns664787:0crwdne664787:0" - label_no_value: "crwdns664789:0crwdne664789:0" - label_none: "crwdns664791:0crwdne664791:0" - label_not_contains: "crwdns664793:0crwdne664793:0" - label_not_equals: "crwdns664795:0crwdne664795:0" - label_on: "crwdns664797:0crwdne664797:0" - label_open_menu: "crwdns664799:0crwdne664799:0" - label_open_context_menu: "crwdns664801:0crwdne664801:0" - label_open_work_packages: "crwdns664803:0crwdne664803:0" - label_password: "crwdns664805:0crwdne664805:0" - label_previous: "crwdns664807:0crwdne664807:0" - label_per_page: "crwdns664809:0crwdne664809:0" - label_please_wait: "crwdns664811:0crwdne664811:0" - label_project_plural: "crwdns664813:0crwdne664813:0" - label_visibility_settings: "crwdns664815:0crwdne664815:0" - label_quote_comment: "crwdns664817:0crwdne664817:0" - label_recent: "crwdns664819:0crwdne664819:0" - label_reset: "crwdns664821:0crwdne664821:0" - label_remove: "crwdns664823:0crwdne664823:0" - label_remove_column: "crwdns664825:0crwdne664825:0" - label_remove_columns: "crwdns664827:0crwdne664827:0" - label_remove_row: "crwdns664829:0crwdne664829:0" - label_report: "crwdns664831:0crwdne664831:0" - label_repository_plural: "crwdns664833:0crwdne664833:0" - label_save_as: "crwdns664835:0crwdne664835:0" - label_select_watcher: "crwdns664837:0crwdne664837:0" - label_selected_filter_list: "crwdns664839:0crwdne664839:0" - label_show_attributes: "crwdns664841:0crwdne664841:0" - label_show_in_menu: "crwdns664843:0crwdne664843:0" - label_sort_by: "crwdns664845:0crwdne664845:0" - label_sorted_by: "crwdns664847:0crwdne664847:0" - label_sort_higher: "crwdns664849:0crwdne664849:0" - label_sort_lower: "crwdns664851:0crwdne664851:0" - label_sorting: "crwdns664853:0crwdne664853:0" - label_spent_time: "crwdns664855:0crwdne664855:0" - label_star_query: "crwdns664857:0crwdne664857:0" - label_press_enter_to_save: "crwdns664859:0crwdne664859:0" - label_public_query: "crwdns664861:0crwdne664861:0" - label_sum: "crwdns664863:0crwdne664863:0" - label_sum_for: "crwdns664865:0crwdne664865:0" - label_total_sum: "crwdns664867:0crwdne664867:0" - label_subject: "crwdns664869:0crwdne664869:0" - label_this_week: "crwdns664871:0crwdne664871:0" - label_today: "crwdns664873:0crwdne664873:0" - label_time_entry_plural: "crwdns664875:0crwdne664875:0" - label_up: "crwdns664877:0crwdne664877:0" - label_user_plural: "crwdns664879:0crwdne664879:0" - label_activity_show_only_comments: "crwdns664881:0crwdne664881:0" - label_activity_show_all: "crwdns664883:0crwdne664883:0" - label_total_progress: "crwdns664885:0%{percent}crwdne664885:0" - label_total_amount: "crwdns664887:0%{amount}crwdne664887:0" - label_updated_on: "crwdns664889:0crwdne664889:0" - label_value_derived_from_children: "crwdns664891:0crwdne664891:0" - label_children_derived_duration: "crwdns664893:0crwdne664893:0" - label_warning: "crwdns664895:0crwdne664895:0" - label_work_package: "crwdns664897:0crwdne664897:0" - label_work_package_parent: "crwdns664899:0crwdne664899:0" - label_work_package_plural: "crwdns664901:0crwdne664901:0" - label_watch: "crwdns664903:0crwdne664903:0" - label_watch_work_package: "crwdns664905:0crwdne664905:0" - label_watcher_added_successfully: "crwdns664907:0crwdne664907:0" - label_watcher_deleted_successfully: "crwdns664909:0crwdne664909:0" - label_work_package_details_you_are_here: "crwdns664911:0%{tab}crwdnd664911:0%{type}crwdnd664911:0%{subject}crwdne664911:0" - label_unwatch: "crwdns664913:0crwdne664913:0" - label_unwatch_work_package: "crwdns664915:0crwdne664915:0" - label_uploaded_by: "crwdns664917:0crwdne664917:0" - label_default_queries: "crwdns664919:0crwdne664919:0" - label_starred_queries: "crwdns664921:0crwdne664921:0" - label_global_queries: "crwdns664923:0crwdne664923:0" - label_custom_queries: "crwdns664925:0crwdne664925:0" - label_create_new_query: "crwdns664927:0crwdne664927:0" - label_columns: "crwdns664929:0crwdne664929:0" - label_attachments: crwdns664931:0crwdne664931:0 - label_drop_files: crwdns664933:0crwdne664933:0 - label_drop_files_hint: crwdns664935:0crwdne664935:0 - label_drop_folders_hint: crwdns664937:0crwdne664937:0 - label_add_attachments: "crwdns664939:0crwdne664939:0" - label_formattable_attachment_hint: "crwdns664941:0crwdne664941:0" - label_remove_file: "crwdns664943:0%{fileName}crwdne664943:0" - label_remove_watcher: "crwdns664945:0%{name}crwdne664945:0" - label_remove_all_files: crwdns664947:0crwdne664947:0 - label_add_description: "crwdns664949:0%{file}crwdne664949:0" - label_upload_notification: "crwdns664951:0crwdne664951:0" - label_work_package_upload_notification: "crwdns664953:0%{id}crwdnd664953:0%{subject}crwdne664953:0" - label_wp_id_added_by: "crwdns664955:0%{id}crwdnd664955:0%{author}crwdne664955:0" - label_files_to_upload: "crwdns664957:0crwdne664957:0" - label_rejected_files: "crwdns664959:0crwdne664959:0" - label_rejected_files_reason: "crwdns664961:0%{maximumFilesize}crwdne664961:0" - label_wait: "crwdns664963:0crwdne664963:0" - label_upload_counter: "crwdns664965:0%{done}crwdnd664965:0%{count}crwdne664965:0" - label_validation_error: "crwdns664967:0crwdne664967:0" - label_version_plural: "crwdns664969:0crwdne664969:0" - label_view_has_changed: "crwdns664971:0crwdne664971:0" + crwdns666719:0%{list_styling_class}crwdne666719:0 + label_activate: "crwdns666721:0crwdne666721:0" + label_add_column_after: "crwdns666723:0crwdne666723:0" + label_add_column_before: "crwdns666725:0crwdne666725:0" + label_add_columns: "crwdns666727:0crwdne666727:0" + label_add_comment: "crwdns666729:0crwdne666729:0" + label_add_comment_title: "crwdns666731:0crwdne666731:0" + label_add_row_after: "crwdns666733:0crwdne666733:0" + label_add_row_before: "crwdns666735:0crwdne666735:0" + label_add_selected_columns: "crwdns666737:0crwdne666737:0" + label_added_by: "crwdns666739:0crwdne666739:0" + label_added_time_by: "crwdns666741:0%{authorLink}crwdnd666741:0%{author}crwdnd666741:0%{age}crwdne666741:0" + label_ago: "crwdns666743:0crwdne666743:0" + label_all: "crwdns666745:0crwdne666745:0" + label_all_work_packages: "crwdns666747:0crwdne666747:0" + label_and: "crwdns666749:0crwdne666749:0" + label_ascending: "crwdns666751:0crwdne666751:0" + label_author: "crwdns666753:0%{user}crwdne666753:0" + label_avatar: "crwdns666755:0crwdne666755:0" + label_between: "crwdns666757:0crwdne666757:0" + label_board: "crwdns666759:0crwdne666759:0" + label_board_locked: "crwdns666761:0crwdne666761:0" + label_board_plural: "crwdns666763:0crwdne666763:0" + label_board_sticky: "crwdns666765:0crwdne666765:0" + label_change: "crwdns666767:0crwdne666767:0" + label_create: "crwdns666769:0crwdne666769:0" + label_create_work_package: "crwdns666771:0crwdne666771:0" + label_created_by: "crwdns666773:0crwdne666773:0" + label_date: "crwdns666775:0crwdne666775:0" + label_date_with_format: "crwdns666777:0%{date_attribute}crwdnd666777:0%{format}crwdne666777:0" + label_deactivate: "crwdns666779:0crwdne666779:0" + label_descending: "crwdns666781:0crwdne666781:0" + label_description: "crwdns666783:0crwdne666783:0" + label_details: "crwdns666785:0crwdne666785:0" + label_display: "crwdns666787:0crwdne666787:0" + label_cancel_comment: "crwdns666789:0crwdne666789:0" + label_closed_work_packages: "crwdns666791:0crwdne666791:0" + label_collapse: "crwdns666793:0crwdne666793:0" + label_collapsed: "crwdns666795:0crwdne666795:0" + label_collapse_all: "crwdns666797:0crwdne666797:0" + label_comment: "crwdns666799:0crwdne666799:0" + label_committed_at: "crwdns666801:0%{committed_revision_link}crwdnd666801:0%{date}crwdne666801:0" + label_committed_link: "crwdns666803:0%{revision_identifier}crwdne666803:0" + label_contains: "crwdns666805:0crwdne666805:0" + label_created_on: "crwdns666807:0crwdne666807:0" + label_edit_comment: "crwdns666809:0crwdne666809:0" + label_edit_status: "crwdns666811:0crwdne666811:0" + label_email: "crwdns666813:0crwdne666813:0" + label_equals: "crwdns666815:0crwdne666815:0" + label_expand: "crwdns666817:0crwdne666817:0" + label_expanded: "crwdns666819:0crwdne666819:0" + label_expand_all: "crwdns666821:0crwdne666821:0" + label_expand_project_menu: "crwdns666823:0crwdne666823:0" + label_export: "crwdns666825:0crwdne666825:0" + label_export_preparing: "crwdns666827:0crwdne666827:0" + label_filename: "crwdns666829:0crwdne666829:0" + label_filesize: "crwdns666831:0crwdne666831:0" + label_general: "crwdns666833:0crwdne666833:0" + label_global_roles: "crwdns666835:0crwdne666835:0" + label_greater_or_equal: "crwdns666837:0crwdne666837:0" + label_group: 'crwdns666839:0crwdne666839:0' + label_group_by: "crwdns666841:0crwdne666841:0" + label_group_plural: "crwdns666843:0crwdne666843:0" + label_hide_attributes: "crwdns666845:0crwdne666845:0" + label_hide_column: "crwdns666847:0crwdne666847:0" + label_hide_project_menu: "crwdns666849:0crwdne666849:0" + label_in: "crwdns666851:0crwdne666851:0" + label_in_less_than: "crwdns666853:0crwdne666853:0" + label_in_more_than: "crwdns666855:0crwdne666855:0" + label_incoming_emails: "crwdns666857:0crwdne666857:0" + label_information_plural: "crwdns666859:0crwdne666859:0" + label_import: "crwdns666861:0crwdne666861:0" + label_latest_activity: "crwdns666863:0crwdne666863:0" + label_last_updated_on: "crwdns666865:0crwdne666865:0" + label_learn_more_link: "crwdns666867:0crwdne666867:0" + label_less_or_equal: "crwdns666869:0crwdne666869:0" + label_less_than_ago: "crwdns666871:0crwdne666871:0" + label_loading: "crwdns666873:0crwdne666873:0" + label_mail_notification: "crwdns666875:0crwdne666875:0" + label_me: "crwdns666877:0crwdne666877:0" + label_meeting_agenda: "crwdns666879:0crwdne666879:0" + label_meeting_minutes: "crwdns666881:0crwdne666881:0" + label_menu_collapse: "crwdns666883:0crwdne666883:0" + label_menu_expand: "crwdns666885:0crwdne666885:0" + label_more_than_ago: "crwdns666887:0crwdne666887:0" + label_next: "crwdns666889:0crwdne666889:0" + label_no_color: "crwdns666891:0crwdne666891:0" + label_no_data: "crwdns666893:0crwdne666893:0" + label_no_due_date: "crwdns666895:0crwdne666895:0" + label_no_start_date: "crwdns666897:0crwdne666897:0" + label_no_value: "crwdns666899:0crwdne666899:0" + label_none: "crwdns666901:0crwdne666901:0" + label_not_contains: "crwdns666903:0crwdne666903:0" + label_not_equals: "crwdns666905:0crwdne666905:0" + label_on: "crwdns666907:0crwdne666907:0" + label_open_menu: "crwdns666909:0crwdne666909:0" + label_open_context_menu: "crwdns666911:0crwdne666911:0" + label_open_work_packages: "crwdns666913:0crwdne666913:0" + label_password: "crwdns666915:0crwdne666915:0" + label_previous: "crwdns666917:0crwdne666917:0" + label_per_page: "crwdns666919:0crwdne666919:0" + label_please_wait: "crwdns666921:0crwdne666921:0" + label_project_plural: "crwdns666923:0crwdne666923:0" + label_visibility_settings: "crwdns666925:0crwdne666925:0" + label_quote_comment: "crwdns666927:0crwdne666927:0" + label_recent: "crwdns666929:0crwdne666929:0" + label_reset: "crwdns666931:0crwdne666931:0" + label_remove: "crwdns666933:0crwdne666933:0" + label_remove_column: "crwdns666935:0crwdne666935:0" + label_remove_columns: "crwdns666937:0crwdne666937:0" + label_remove_row: "crwdns666939:0crwdne666939:0" + label_report: "crwdns666941:0crwdne666941:0" + label_repository_plural: "crwdns666943:0crwdne666943:0" + label_save_as: "crwdns666945:0crwdne666945:0" + label_select_watcher: "crwdns666947:0crwdne666947:0" + label_selected_filter_list: "crwdns666949:0crwdne666949:0" + label_show_attributes: "crwdns666951:0crwdne666951:0" + label_show_in_menu: "crwdns666953:0crwdne666953:0" + label_sort_by: "crwdns666955:0crwdne666955:0" + label_sorted_by: "crwdns666957:0crwdne666957:0" + label_sort_higher: "crwdns666959:0crwdne666959:0" + label_sort_lower: "crwdns666961:0crwdne666961:0" + label_sorting: "crwdns666963:0crwdne666963:0" + label_spent_time: "crwdns666965:0crwdne666965:0" + label_star_query: "crwdns666967:0crwdne666967:0" + label_press_enter_to_save: "crwdns666969:0crwdne666969:0" + label_public_query: "crwdns666971:0crwdne666971:0" + label_sum: "crwdns666973:0crwdne666973:0" + label_sum_for: "crwdns666975:0crwdne666975:0" + label_total_sum: "crwdns666977:0crwdne666977:0" + label_subject: "crwdns666979:0crwdne666979:0" + label_this_week: "crwdns666981:0crwdne666981:0" + label_today: "crwdns666983:0crwdne666983:0" + label_time_entry_plural: "crwdns666985:0crwdne666985:0" + label_up: "crwdns666987:0crwdne666987:0" + label_user_plural: "crwdns666989:0crwdne666989:0" + label_activity_show_only_comments: "crwdns666991:0crwdne666991:0" + label_activity_show_all: "crwdns666993:0crwdne666993:0" + label_total_progress: "crwdns666995:0%{percent}crwdne666995:0" + label_total_amount: "crwdns666997:0%{amount}crwdne666997:0" + label_updated_on: "crwdns666999:0crwdne666999:0" + label_value_derived_from_children: "crwdns667001:0crwdne667001:0" + label_children_derived_duration: "crwdns667003:0crwdne667003:0" + label_warning: "crwdns667005:0crwdne667005:0" + label_work_package: "crwdns667007:0crwdne667007:0" + label_work_package_parent: "crwdns667009:0crwdne667009:0" + label_work_package_plural: "crwdns667011:0crwdne667011:0" + label_watch: "crwdns667013:0crwdne667013:0" + label_watch_work_package: "crwdns667015:0crwdne667015:0" + label_watcher_added_successfully: "crwdns667017:0crwdne667017:0" + label_watcher_deleted_successfully: "crwdns667019:0crwdne667019:0" + label_work_package_details_you_are_here: "crwdns667021:0%{tab}crwdnd667021:0%{type}crwdnd667021:0%{subject}crwdne667021:0" + label_unwatch: "crwdns667023:0crwdne667023:0" + label_unwatch_work_package: "crwdns667025:0crwdne667025:0" + label_uploaded_by: "crwdns667027:0crwdne667027:0" + label_default_queries: "crwdns667029:0crwdne667029:0" + label_starred_queries: "crwdns667031:0crwdne667031:0" + label_global_queries: "crwdns667033:0crwdne667033:0" + label_custom_queries: "crwdns667035:0crwdne667035:0" + label_create_new_query: "crwdns667037:0crwdne667037:0" + label_columns: "crwdns667039:0crwdne667039:0" + label_attachments: crwdns667041:0crwdne667041:0 + label_drop_files: crwdns667043:0crwdne667043:0 + label_drop_files_hint: crwdns667045:0crwdne667045:0 + label_drop_folders_hint: crwdns667047:0crwdne667047:0 + label_add_attachments: "crwdns667049:0crwdne667049:0" + label_formattable_attachment_hint: "crwdns667051:0crwdne667051:0" + label_remove_file: "crwdns667053:0%{fileName}crwdne667053:0" + label_remove_watcher: "crwdns667055:0%{name}crwdne667055:0" + label_remove_all_files: crwdns667057:0crwdne667057:0 + label_add_description: "crwdns667059:0%{file}crwdne667059:0" + label_upload_notification: "crwdns667061:0crwdne667061:0" + label_work_package_upload_notification: "crwdns667063:0%{id}crwdnd667063:0%{subject}crwdne667063:0" + label_wp_id_added_by: "crwdns667065:0%{id}crwdnd667065:0%{author}crwdne667065:0" + label_files_to_upload: "crwdns667067:0crwdne667067:0" + label_rejected_files: "crwdns667069:0crwdne667069:0" + label_rejected_files_reason: "crwdns667071:0%{maximumFilesize}crwdne667071:0" + label_wait: "crwdns667073:0crwdne667073:0" + label_upload_counter: "crwdns667075:0%{done}crwdnd667075:0%{count}crwdne667075:0" + label_validation_error: "crwdns667077:0crwdne667077:0" + label_version_plural: "crwdns667079:0crwdne667079:0" + label_view_has_changed: "crwdns667081:0crwdne667081:0" help_texts: - show_modal: 'crwdns664973:0crwdne664973:0' + show_modal: 'crwdns667083:0crwdne667083:0' onboarding: buttons: - skip: 'crwdns664975:0crwdne664975:0' - next: 'crwdns664977:0crwdne664977:0' - got_it: 'crwdns664979:0crwdne664979:0' + skip: 'crwdns667085:0crwdne667085:0' + next: 'crwdns667087:0crwdne667087:0' + got_it: 'crwdns667089:0crwdne667089:0' steps: - help_menu: 'crwdns664981:0crwdne664981:0' - members: 'crwdns664983:0crwdne664983:0' - project_selection: 'crwdns664985:0crwdne664985:0' - quick_add_button: 'crwdns664987:0crwdne664987:0' - sidebar_arrow: "crwdns664989:0crwdne664989:0" - welcome: 'crwdns664991:0crwdne664991:0' - wiki: 'crwdns664993:0crwdne664993:0' + help_menu: 'crwdns667091:0crwdne667091:0' + members: 'crwdns667093:0crwdne667093:0' + project_selection: 'crwdns667095:0crwdne667095:0' + quick_add_button: 'crwdns667097:0crwdne667097:0' + sidebar_arrow: "crwdns667099:0crwdne667099:0" + welcome: 'crwdns667101:0crwdne667101:0' + wiki: 'crwdns667103:0crwdne667103:0' backlogs: - overview: "crwdns664995:0crwdne664995:0" - sprints: "crwdns664997:0crwdne664997:0" - task_board_arrow: 'crwdns664999:0crwdne664999:0' - task_board_select: 'crwdns665001:0crwdne665001:0' - task_board: "crwdns665003:0crwdne665003:0" + overview: "crwdns667105:0crwdne667105:0" + sprints: "crwdns667107:0crwdne667107:0" + task_board_arrow: 'crwdns667109:0crwdne667109:0' + task_board_select: 'crwdns667111:0crwdne667111:0' + task_board: "crwdns667113:0crwdne667113:0" boards: - overview: 'crwdns665005:0crwdne665005:0' - lists: 'crwdns665007:0crwdne665007:0' - add: 'crwdns665009:0crwdne665009:0' - drag: 'crwdns665011:0crwdne665011:0' + overview: 'crwdns667115:0crwdne667115:0' + lists: 'crwdns667117:0crwdne667117:0' + add: 'crwdns667119:0crwdne667119:0' + drag: 'crwdns667121:0crwdne667121:0' wp: - toggler: "crwdns665013:0crwdne665013:0" - list: 'crwdns665015:0crwdne665015:0' - full_view: 'crwdns665017:0crwdne665017:0' - back_button: 'crwdns665019:0crwdne665019:0' - create_button: 'crwdns665021:0crwdne665021:0' - timeline_button: 'crwdns665023:0crwdne665023:0' - timeline: 'crwdns665025:0crwdne665025:0' + toggler: "crwdns667123:0crwdne667123:0" + list: 'crwdns667125:0crwdne667125:0' + full_view: 'crwdns667127:0crwdne667127:0' + back_button: 'crwdns667129:0crwdne667129:0' + create_button: 'crwdns667131:0crwdne667131:0' + timeline_button: 'crwdns667133:0crwdne667133:0' + timeline: 'crwdns667135:0crwdne667135:0' notifications: - title: "crwdns665027:0crwdne665027:0" - no_unread: "crwdns665029:0crwdne665029:0" + title: "crwdns667137:0crwdne667137:0" + no_unread: "crwdns667139:0crwdne667139:0" reasons: - mentioned: 'crwdns665031:0crwdne665031:0' - watched: 'crwdns665033:0crwdne665033:0' - assigned: 'crwdns665035:0crwdne665035:0' - responsible: 'crwdns665037:0crwdne665037:0' + mentioned: 'crwdns667141:0crwdne667141:0' + watched: 'crwdns667143:0crwdne667143:0' + assigned: 'crwdns667145:0crwdne667145:0' + responsible: 'crwdns667147:0crwdne667147:0' facets: - unread: 'crwdns665039:0crwdne665039:0' - all: 'crwdns665041:0crwdne665041:0' + unread: 'crwdns667149:0crwdne667149:0' + all: 'crwdns667151:0crwdne667151:0' center: and_more_users: - one: 'crwdns665043:1crwdne665043:1' - other: 'crwdns665043:5%{count}crwdne665043:5' + one: 'crwdns667153:1crwdne667153:1' + other: 'crwdns667153:5%{count}crwdne667153:5' no_results: - at_all: 'crwdns665045:0crwdne665045:0' - with_current_filter: 'crwdns665047:0crwdne665047:0' - mark_all_read: 'crwdns665049:0crwdne665049:0' - mark_as_read: 'crwdns665051:0crwdne665051:0' - text_update_date: "crwdns665053:0%{date}crwdne665053:0" - total_count_warning: "crwdns665055:0%{newest_count}crwdnd665055:0%{more_count}crwdne665055:0" + at_all: 'crwdns667155:0crwdne667155:0' + with_current_filter: 'crwdns667157:0crwdne667157:0' + mark_all_read: 'crwdns667159:0crwdne667159:0' + mark_as_read: 'crwdns667161:0crwdne667161:0' + text_update_date: "crwdns667163:0%{date}crwdne667163:0" + total_count_warning: "crwdns667165:0%{newest_count}crwdnd667165:0%{more_count}crwdne667165:0" empty_state: - no_notification: "crwdns665057:0crwdne665057:0" - no_notification_with_current_filter: "crwdns665059:0crwdne665059:0" - no_selection: "crwdns665061:0crwdne665061:0" + no_notification: "crwdns667167:0crwdne667167:0" + no_notification_with_current_filter: "crwdns667169:0crwdne667169:0" + no_selection: "crwdns667171:0crwdne667171:0" new_notifications: - message: 'crwdns665063:0crwdne665063:0' - link_text: 'crwdns665065:0crwdne665065:0' + message: 'crwdns667173:0crwdne667173:0' + link_text: 'crwdns667175:0crwdne667175:0' menu: - accountable: 'crwdns665067:0crwdne665067:0' - assigned: 'crwdns665069:0crwdne665069:0' - by_project: 'crwdns665071:0crwdne665071:0' - by_reason: 'crwdns665073:0crwdne665073:0' - inbox: 'crwdns665075:0crwdne665075:0' - mentioned: 'crwdns665077:0crwdne665077:0' - watching: 'crwdns665079:0crwdne665079:0' + accountable: 'crwdns667177:0crwdne667177:0' + assigned: 'crwdns667179:0crwdne667179:0' + by_project: 'crwdns667181:0crwdne667181:0' + by_reason: 'crwdns667183:0crwdne667183:0' + inbox: 'crwdns667185:0crwdne667185:0' + mentioned: 'crwdns667187:0crwdne667187:0' + watching: 'crwdns667189:0crwdne667189:0' settings: - change_notification_settings: 'crwdns665081:0%{url}crwdne665081:0' - title: "crwdns665083:0crwdne665083:0" - notify_me: "crwdns665085:0crwdne665085:0" + change_notification_settings: 'crwdns667191:0%{url}crwdne667191:0' + title: "crwdns667193:0crwdne667193:0" + notify_me: "crwdns667195:0crwdne667195:0" reasons: mentioned: - title: 'crwdns665087:0crwdne665087:0' - description: 'crwdns665089:0crwdne665089:0' + title: 'crwdns667197:0crwdne667197:0' + description: 'crwdns667199:0crwdne667199:0' involved: - title: 'crwdns665091:0crwdne665091:0' - description: 'crwdns665093:0crwdne665093:0' - watched: 'crwdns665095:0crwdne665095:0' - work_package_commented: 'crwdns665097:0crwdne665097:0' - work_package_created: 'crwdns665099:0crwdne665099:0' - work_package_processed: 'crwdns665101:0crwdne665101:0' - work_package_prioritized: 'crwdns665103:0crwdne665103:0' - work_package_scheduled: 'crwdns665105:0crwdne665105:0' + title: 'crwdns667201:0crwdne667201:0' + description: 'crwdns667203:0crwdne667203:0' + watched: 'crwdns667205:0crwdne667205:0' + work_package_commented: 'crwdns667207:0crwdne667207:0' + work_package_created: 'crwdns667209:0crwdne667209:0' + work_package_processed: 'crwdns667211:0crwdne667211:0' + work_package_prioritized: 'crwdns667213:0crwdne667213:0' + work_package_scheduled: 'crwdns667215:0crwdne667215:0' global: immediately: - title: 'crwdns665107:0crwdne665107:0' - description: 'crwdns665109:0crwdne665109:0' + title: 'crwdns667217:0crwdne667217:0' + description: 'crwdns667219:0crwdne667219:0' delayed: - title: 'crwdns665111:0crwdne665111:0' - description: 'crwdns665113:0crwdne665113:0' + title: 'crwdns667221:0crwdne667221:0' + description: 'crwdns667223:0crwdne667223:0' project_specific: - title: 'crwdns665115:0crwdne665115:0' - description: 'crwdns665117:0crwdne665117:0' - add: 'crwdns665119:0crwdne665119:0' - already_selected: 'crwdns665121:0crwdne665121:0' - remove: 'crwdns665123:0crwdne665123:0' + title: 'crwdns667225:0crwdne667225:0' + description: 'crwdns667227:0crwdne667227:0' + add: 'crwdns667229:0crwdne667229:0' + already_selected: 'crwdns667231:0crwdne667231:0' + remove: 'crwdns667233:0crwdne667233:0' password_confirmation: - field_description: 'crwdns665125:0crwdne665125:0' - title: 'crwdns665127:0crwdne665127:0' + field_description: 'crwdns667235:0crwdne667235:0' + title: 'crwdns667237:0crwdne667237:0' pagination: - no_other_page: "crwdns665129:0crwdne665129:0" + no_other_page: "crwdns667239:0crwdne667239:0" pages: - next: "crwdns665131:0crwdne665131:0" - previous: "crwdns665133:0crwdne665133:0" + next: "crwdns667241:0crwdne667241:0" + previous: "crwdns667243:0crwdne667243:0" placeholders: - default: 'crwdns665135:0crwdne665135:0' - subject: 'crwdns665137:0crwdne665137:0' - selection: 'crwdns665139:0crwdne665139:0' - relation_description: 'crwdns665141:0crwdne665141:0' + default: 'crwdns667245:0crwdne667245:0' + subject: 'crwdns667247:0crwdne667247:0' + selection: 'crwdns667249:0crwdne667249:0' + relation_description: 'crwdns667251:0crwdne667251:0' project: required_outside_context: > - crwdns665143:0crwdne665143:0 - context: 'crwdns665145:0crwdne665145:0' - work_package_belongs_to: 'crwdns665147:0%{projectname}crwdne665147:0' - click_to_switch_context: 'crwdns665149:0crwdne665149:0' - confirm_template_load: 'crwdns665151:0crwdne665151:0' - use_template: "crwdns665153:0crwdne665153:0" - no_template_selected: "crwdns665155:0crwdne665155:0" + crwdns667253:0crwdne667253:0 + context: 'crwdns667255:0crwdne667255:0' + work_package_belongs_to: 'crwdns667257:0%{projectname}crwdne667257:0' + click_to_switch_context: 'crwdns667259:0crwdne667259:0' + confirm_template_load: 'crwdns667261:0crwdne667261:0' + use_template: "crwdns667263:0crwdne667263:0" + no_template_selected: "crwdns667265:0crwdne667265:0" copy: - copy_options: "crwdns665157:0crwdne665157:0" + copy_options: "crwdns667267:0crwdne667267:0" autocompleter: - label: 'crwdns665159:0crwdne665159:0' + label: 'crwdns667269:0crwdne667269:0' reminders: settings: daily: - add_time: 'crwdns665161:0crwdne665161:0' - enable: 'crwdns665163:0crwdne665163:0' - explanation: 'crwdns665165:0%{no_time_zone}crwdne665165:0' - no_time_zone: 'crwdns665167:0crwdne665167:0' - time_label: 'crwdns665169:0%{counter}crwdne665169:0' - title: 'crwdns665171:0crwdne665171:0' + add_time: 'crwdns667271:0crwdne667271:0' + enable: 'crwdns667273:0crwdne667273:0' + explanation: 'crwdns667275:0%{no_time_zone}crwdne667275:0' + no_time_zone: 'crwdns667277:0crwdne667277:0' + time_label: 'crwdns667279:0%{counter}crwdne667279:0' + title: 'crwdns667281:0crwdne667281:0' workdays: - title: 'crwdns665173:0crwdne665173:0' + title: 'crwdns667283:0crwdne667283:0' immediate: - title: 'crwdns665175:0crwdne665175:0' - mentioned: 'crwdns665177:0crwdne665177:0' + title: 'crwdns667285:0crwdne667285:0' + mentioned: 'crwdns667287:0crwdne667287:0' alerts: - title: 'crwdns665179:0crwdne665179:0' + title: 'crwdns667289:0crwdne667289:0' explanation: > - crwdns665181:0crwdne665181:0 - news_added: 'crwdns665183:0crwdne665183:0' - news_commented: 'crwdns665185:0crwdne665185:0' - document_added: 'crwdns665187:0crwdne665187:0' - forum_messages: 'crwdns665189:0crwdne665189:0' - wiki_page_added: 'crwdns665191:0crwdne665191:0' - wiki_page_updated: 'crwdns665193:0crwdne665193:0' - membership_added: 'crwdns665195:0crwdne665195:0' - membership_updated: 'crwdns665197:0crwdne665197:0' - title: 'crwdns665199:0crwdne665199:0' + crwdns667291:0crwdne667291:0 + news_added: 'crwdns667293:0crwdne667293:0' + news_commented: 'crwdns667295:0crwdne667295:0' + document_added: 'crwdns667297:0crwdne667297:0' + forum_messages: 'crwdns667299:0crwdne667299:0' + wiki_page_added: 'crwdns667301:0crwdne667301:0' + wiki_page_updated: 'crwdns667303:0crwdne667303:0' + membership_added: 'crwdns667305:0crwdne667305:0' + membership_updated: 'crwdns667307:0crwdne667307:0' + title: 'crwdns667309:0crwdne667309:0' pause: - label: 'crwdns665201:0crwdne665201:0' - first_day: 'crwdns665203:0crwdne665203:0' - last_day: 'crwdns665205:0crwdne665205:0' - text_are_you_sure: "crwdns665207:0crwdne665207:0" - text_data_lost: "crwdns665209:0crwdne665209:0" + label: 'crwdns667311:0crwdne667311:0' + first_day: 'crwdns667313:0crwdne667313:0' + last_day: 'crwdns667315:0crwdne667315:0' + text_are_you_sure: "crwdns667317:0crwdne667317:0" + text_data_lost: "crwdns667319:0crwdne667319:0" types: attribute_groups: - error_duplicate_group_name: "crwdns665211:0%{group}crwdne665211:0" - error_no_table_configured: "crwdns665213:0%{group}crwdne665213:0" - reset_title: "crwdns665215:0crwdne665215:0" + error_duplicate_group_name: "crwdns667321:0%{group}crwdne667321:0" + error_no_table_configured: "crwdns667323:0%{group}crwdne667323:0" + reset_title: "crwdns667325:0crwdne667325:0" confirm_reset: > - crwdns665217:0crwdne665217:0 - upgrade_to_ee: "crwdns665219:0crwdne665219:0" - upgrade_to_ee_text: "crwdns665221:0crwdne665221:0" - more_information: "crwdns665223:0crwdne665223:0" - nevermind: "crwdns665225:0crwdne665225:0" + crwdns667327:0crwdne667327:0 + upgrade_to_ee: "crwdns667329:0crwdne667329:0" + upgrade_to_ee_text: "crwdns667331:0crwdne667331:0" + more_information: "crwdns667333:0crwdne667333:0" + nevermind: "crwdns667335:0crwdne667335:0" edit: - form_configuration: "crwdns665227:0crwdne665227:0" - projects: "crwdns665229:0crwdne665229:0" - settings: "crwdns665231:0crwdne665231:0" + form_configuration: "crwdns667337:0crwdne667337:0" + projects: "crwdns667339:0crwdne667339:0" + settings: "crwdns667341:0crwdne667341:0" time_entry: - project: 'crwdns665233:0crwdne665233:0' - work_package: 'crwdns665235:0crwdne665235:0' - work_package_required: 'crwdns665237:0crwdne665237:0' - activity: 'crwdns665239:0crwdne665239:0' - comment: 'crwdns665241:0crwdne665241:0' - duration: 'crwdns665243:0crwdne665243:0' - spent_on: 'crwdns665245:0crwdne665245:0' - hours: 'crwdns665247:0crwdne665247:0' - title: 'crwdns665249:0crwdne665249:0' + project: 'crwdns667343:0crwdne667343:0' + work_package: 'crwdns667345:0crwdne667345:0' + work_package_required: 'crwdns667347:0crwdne667347:0' + activity: 'crwdns667349:0crwdne667349:0' + comment: 'crwdns667351:0crwdne667351:0' + duration: 'crwdns667353:0crwdne667353:0' + spent_on: 'crwdns667355:0crwdne667355:0' + hours: 'crwdns667357:0crwdne667357:0' + title: 'crwdns667359:0crwdne667359:0' two_factor_authentication: - label_two_factor_authentication: 'crwdns665251:0crwdne665251:0' + label_two_factor_authentication: 'crwdns667361:0crwdne667361:0' watchers: - label_loading: crwdns665253:0crwdne665253:0 - label_error_loading: crwdns665255:0crwdne665255:0 - label_search_watchers: crwdns665257:0crwdne665257:0 - label_add: crwdns665259:0crwdne665259:0 - label_discard: crwdns665261:0crwdne665261:0 - typeahead_placeholder: crwdns665263:0crwdne665263:0 + label_loading: crwdns667363:0crwdne667363:0 + label_error_loading: crwdns667365:0crwdne667365:0 + label_search_watchers: crwdns667367:0crwdne667367:0 + label_add: crwdns667369:0crwdne667369:0 + label_discard: crwdns667371:0crwdne667371:0 + typeahead_placeholder: crwdns667373:0crwdne667373:0 relation_labels: - parent: "crwdns665265:0crwdne665265:0" - children: "crwdns665267:0crwdne665267:0" - relates: "crwdns665269:0crwdne665269:0" - duplicates: "crwdns665271:0crwdne665271:0" - duplicated: "crwdns665273:0crwdne665273:0" - blocks: "crwdns665275:0crwdne665275:0" - blocked: "crwdns665277:0crwdne665277:0" - precedes: "crwdns665279:0crwdne665279:0" - follows: "crwdns665281:0crwdne665281:0" - includes: "crwdns665283:0crwdne665283:0" - partof: "crwdns665285:0crwdne665285:0" - requires: "crwdns665287:0crwdne665287:0" - required: "crwdns665289:0crwdne665289:0" - relation_type: "crwdns665291:0crwdne665291:0" + parent: "crwdns667375:0crwdne667375:0" + children: "crwdns667377:0crwdne667377:0" + relates: "crwdns667379:0crwdne667379:0" + duplicates: "crwdns667381:0crwdne667381:0" + duplicated: "crwdns667383:0crwdne667383:0" + blocks: "crwdns667385:0crwdne667385:0" + blocked: "crwdns667387:0crwdne667387:0" + precedes: "crwdns667389:0crwdne667389:0" + follows: "crwdns667391:0crwdne667391:0" + includes: "crwdns667393:0crwdne667393:0" + partof: "crwdns667395:0crwdne667395:0" + requires: "crwdns667397:0crwdne667397:0" + required: "crwdns667399:0crwdne667399:0" + relation_type: "crwdns667401:0crwdne667401:0" relations_hierarchy: - parent_headline: "crwdns665293:0crwdne665293:0" - hierarchy_headline: "crwdns665295:0crwdne665295:0" - children_headline: "crwdns665297:0crwdne665297:0" + parent_headline: "crwdns667403:0crwdne667403:0" + hierarchy_headline: "crwdns667405:0crwdne667405:0" + children_headline: "crwdns667407:0crwdne667407:0" relation_buttons: - set_parent: "crwdns665299:0crwdne665299:0" - change_parent: "crwdns665301:0crwdne665301:0" - remove_parent: "crwdns665303:0crwdne665303:0" - hierarchy_indent: "crwdns665305:0crwdne665305:0" - hierarchy_outdent: "crwdns665307:0crwdne665307:0" - group_by_wp_type: "crwdns665309:0crwdne665309:0" - group_by_relation_type: "crwdns665311:0crwdne665311:0" - add_parent: "crwdns665313:0crwdne665313:0" - add_new_child: "crwdns665315:0crwdne665315:0" - create_new: "crwdns665317:0crwdne665317:0" - add_existing: "crwdns665319:0crwdne665319:0" - add_existing_child: "crwdns665321:0crwdne665321:0" - remove_child: "crwdns665323:0crwdne665323:0" - add_new_relation: "crwdns665325:0crwdne665325:0" - add_existing_relation: "crwdns665327:0crwdne665327:0" - update_description: "crwdns665329:0crwdne665329:0" - toggle_description: "crwdns665331:0crwdne665331:0" - update_relation: "crwdns665333:0crwdne665333:0" - add_follower: "crwdns665335:0crwdne665335:0" - add_predecessor: "crwdns665337:0crwdne665337:0" - remove: "crwdns665339:0crwdne665339:0" - save: "crwdns665341:0crwdne665341:0" - abort: "crwdns665343:0crwdne665343:0" + set_parent: "crwdns667409:0crwdne667409:0" + change_parent: "crwdns667411:0crwdne667411:0" + remove_parent: "crwdns667413:0crwdne667413:0" + hierarchy_indent: "crwdns667415:0crwdne667415:0" + hierarchy_outdent: "crwdns667417:0crwdne667417:0" + group_by_wp_type: "crwdns667419:0crwdne667419:0" + group_by_relation_type: "crwdns667421:0crwdne667421:0" + add_parent: "crwdns667423:0crwdne667423:0" + add_new_child: "crwdns667425:0crwdne667425:0" + create_new: "crwdns667427:0crwdne667427:0" + add_existing: "crwdns667429:0crwdne667429:0" + add_existing_child: "crwdns667431:0crwdne667431:0" + remove_child: "crwdns667433:0crwdne667433:0" + add_new_relation: "crwdns667435:0crwdne667435:0" + add_existing_relation: "crwdns667437:0crwdne667437:0" + update_description: "crwdns667439:0crwdne667439:0" + toggle_description: "crwdns667441:0crwdne667441:0" + update_relation: "crwdns667443:0crwdne667443:0" + add_follower: "crwdns667445:0crwdne667445:0" + add_predecessor: "crwdns667447:0crwdne667447:0" + remove: "crwdns667449:0crwdne667449:0" + save: "crwdns667451:0crwdne667451:0" + abort: "crwdns667453:0crwdne667453:0" relations_autocomplete: - placeholder: "crwdns665345:0crwdne665345:0" - parent_placeholder: "crwdns665347:0crwdne665347:0" + placeholder: "crwdns667455:0crwdne667455:0" + parent_placeholder: "crwdns667457:0crwdne667457:0" autocompleter: - placeholder: "crwdns665349:0crwdne665349:0" - notFoundText: "crwdns665351:0crwdne665351:0" - typeToSearchText: "crwdns665353:0crwdne665353:0" + placeholder: "crwdns667459:0crwdne667459:0" + notFoundText: "crwdns667461:0crwdne667461:0" + typeToSearchText: "crwdns667463:0crwdne667463:0" repositories: - select_tag: 'crwdns665355:0crwdne665355:0' - select_branch: 'crwdns665357:0crwdne665357:0' - field_value_enter_prompt: "crwdns665359:0%{field}crwdne665359:0" - project_menu_details: "crwdns665361:0crwdne665361:0" + select_tag: 'crwdns667465:0crwdne667465:0' + select_branch: 'crwdns667467:0crwdne667467:0' + field_value_enter_prompt: "crwdns667469:0%{field}crwdne667469:0" + project_menu_details: "crwdns667471:0crwdne667471:0" scheduling: - manual: 'crwdns665363:0crwdne665363:0' - automatic: 'crwdns665365:0crwdne665365:0' + manual: 'crwdns667473:0crwdne667473:0' + automatic: 'crwdns667475:0crwdne667475:0' sort: - sorted_asc: 'crwdns665367:0crwdne665367:0' - sorted_dsc: 'crwdns665369:0crwdne665369:0' - sorted_no: 'crwdns665371:0crwdne665371:0' - sorting_disabled: 'crwdns665373:0crwdne665373:0' - activate_asc: 'crwdns665375:0crwdne665375:0' - activate_dsc: 'crwdns665377:0crwdne665377:0' - activate_no: 'crwdns665379:0crwdne665379:0' - text_work_packages_destroy_confirmation: "crwdns665381:0crwdne665381:0" - text_query_destroy_confirmation: "crwdns665383:0crwdne665383:0" - text_attachment_destroy_confirmation: "crwdns665385:0crwdne665385:0" + sorted_asc: 'crwdns667477:0crwdne667477:0' + sorted_dsc: 'crwdns667479:0crwdne667479:0' + sorted_no: 'crwdns667481:0crwdne667481:0' + sorting_disabled: 'crwdns667483:0crwdne667483:0' + activate_asc: 'crwdns667485:0crwdne667485:0' + activate_dsc: 'crwdns667487:0crwdne667487:0' + activate_no: 'crwdns667489:0crwdne667489:0' + text_work_packages_destroy_confirmation: "crwdns667491:0crwdne667491:0" + text_query_destroy_confirmation: "crwdns667493:0crwdne667493:0" + text_attachment_destroy_confirmation: "crwdns667495:0crwdne667495:0" timelines: - quarter_label: 'crwdns665387:0%{quarter_number}crwdne665387:0' - gantt_chart: 'crwdns665389:0crwdne665389:0' + quarter_label: 'crwdns667497:0%{quarter_number}crwdne667497:0' + gantt_chart: 'crwdns667499:0crwdne667499:0' labels: - title: 'crwdns665391:0crwdne665391:0' - bar: 'crwdns665393:0crwdne665393:0' - left: 'crwdns665395:0crwdne665395:0' - right: 'crwdns665397:0crwdne665397:0' - farRight: 'crwdns665399:0crwdne665399:0' - showNone: 'crwdns665401:0crwdne665401:0' + title: 'crwdns667501:0crwdne667501:0' + bar: 'crwdns667503:0crwdne667503:0' + left: 'crwdns667505:0crwdne667505:0' + right: 'crwdns667507:0crwdne667507:0' + farRight: 'crwdns667509:0crwdne667509:0' + showNone: 'crwdns667511:0crwdne667511:0' description: > - crwdns665403:0crwdne665403:0 - button_activate: 'crwdns665405:0crwdne665405:0' - button_deactivate: 'crwdns665407:0crwdne665407:0' - cancel: crwdns665409:0crwdne665409:0 - change: "crwdns665411:0crwdne665411:0" - due_date: "crwdns665413:0crwdne665413:0" - empty: "crwdns665415:0crwdne665415:0" - error: "crwdns665417:0crwdne665417:0" + crwdns667513:0crwdne667513:0 + button_activate: 'crwdns667515:0crwdne667515:0' + button_deactivate: 'crwdns667517:0crwdne667517:0' + cancel: crwdns667519:0crwdne667519:0 + change: "crwdns667521:0crwdne667521:0" + due_date: "crwdns667523:0crwdne667523:0" + empty: "crwdns667525:0crwdne667525:0" + error: "crwdns667527:0crwdne667527:0" errors: - not_implemented: "crwdns665419:0crwdne665419:0" - report_comparison: "crwdns665421:0crwdne665421:0" - report_epicfail: "crwdns665423:0crwdne665423:0" - report_timeout: "crwdns665425:0crwdne665425:0" + not_implemented: "crwdns667529:0crwdne667529:0" + report_comparison: "crwdns667531:0crwdne667531:0" + report_epicfail: "crwdns667533:0crwdne667533:0" + report_timeout: "crwdns667535:0crwdne667535:0" filter: - grouping_other: "crwdns665427:0crwdne665427:0" - noneSelection: "crwdns665429:0crwdne665429:0" - name: "crwdns665431:0crwdne665431:0" - outline: "crwdns665433:0crwdne665433:0" + grouping_other: "crwdns667537:0crwdne667537:0" + noneSelection: "crwdns667539:0crwdne667539:0" + name: "crwdns667541:0crwdne667541:0" + outline: "crwdns667543:0crwdne667543:0" outlines: - aggregation: "crwdns665435:0crwdne665435:0" - level1: "crwdns665437:0crwdne665437:0" - level2: "crwdns665439:0crwdne665439:0" - level3: "crwdns665441:0crwdne665441:0" - level4: "crwdns665443:0crwdne665443:0" - level5: "crwdns665445:0crwdne665445:0" - all: "crwdns665447:0crwdne665447:0" - project_status: "crwdns665449:0crwdne665449:0" - really_close_dialog: "crwdns665451:0crwdne665451:0" - responsible: "crwdns665453:0crwdne665453:0" - save: crwdns665455:0crwdne665455:0 - start_date: "crwdns665457:0crwdne665457:0" - tooManyProjects: "crwdns665459:0%{count}crwdne665459:0" + aggregation: "crwdns667545:0crwdne667545:0" + level1: "crwdns667547:0crwdne667547:0" + level2: "crwdns667549:0crwdne667549:0" + level3: "crwdns667551:0crwdne667551:0" + level4: "crwdns667553:0crwdne667553:0" + level5: "crwdns667555:0crwdne667555:0" + all: "crwdns667557:0crwdne667557:0" + project_status: "crwdns667559:0crwdne667559:0" + really_close_dialog: "crwdns667561:0crwdne667561:0" + responsible: "crwdns667563:0crwdne667563:0" + save: crwdns667565:0crwdne667565:0 + start_date: "crwdns667567:0crwdne667567:0" + tooManyProjects: "crwdns667569:0%{count}crwdne667569:0" selection_mode: - notification: 'crwdns665461:0crwdne665461:0' + notification: 'crwdns667571:0crwdne667571:0' zoom: - in: "crwdns665463:0crwdne665463:0" - out: "crwdns665465:0crwdne665465:0" - auto: "crwdns665467:0crwdne665467:0" - days: "crwdns665469:0crwdne665469:0" - weeks: "crwdns665471:0crwdne665471:0" - months: "crwdns665473:0crwdne665473:0" - quarters: "crwdns665475:0crwdne665475:0" - years: "crwdns665477:0crwdne665477:0" - slider: "crwdns665479:0crwdne665479:0" + in: "crwdns667573:0crwdne667573:0" + out: "crwdns667575:0crwdne667575:0" + auto: "crwdns667577:0crwdne667577:0" + days: "crwdns667579:0crwdne667579:0" + weeks: "crwdns667581:0crwdne667581:0" + months: "crwdns667583:0crwdne667583:0" + quarters: "crwdns667585:0crwdne667585:0" + years: "crwdns667587:0crwdne667587:0" + slider: "crwdns667589:0crwdne667589:0" description: > - crwdns665481:0crwdne665481:0 + crwdns667591:0crwdne667591:0 tl_toolbar: - zooms: "crwdns665483:0crwdne665483:0" - outlines: "crwdns665485:0crwdne665485:0" + zooms: "crwdns667593:0crwdne667593:0" + outlines: "crwdns667595:0crwdne667595:0" upsale: - ee_only: 'crwdns665487:0crwdne665487:0' + ee_only: 'crwdns667597:0crwdne667597:0' wiki_formatting: - strong: "crwdns665489:0crwdne665489:0" - italic: "crwdns665491:0crwdne665491:0" - underline: "crwdns665493:0crwdne665493:0" - deleted: "crwdns665495:0crwdne665495:0" - code: "crwdns665497:0crwdne665497:0" - heading1: "crwdns665499:0crwdne665499:0" - heading2: "crwdns665501:0crwdne665501:0" - heading3: "crwdns665503:0crwdne665503:0" - unordered_list: "crwdns665505:0crwdne665505:0" - ordered_list: "crwdns665507:0crwdne665507:0" - quote: "crwdns665509:0crwdne665509:0" - unquote: "crwdns665511:0crwdne665511:0" - preformatted_text: "crwdns665513:0crwdne665513:0" - wiki_link: "crwdns665515:0crwdne665515:0" - image: "crwdns665517:0crwdne665517:0" + strong: "crwdns667599:0crwdne667599:0" + italic: "crwdns667601:0crwdne667601:0" + underline: "crwdns667603:0crwdne667603:0" + deleted: "crwdns667605:0crwdne667605:0" + code: "crwdns667607:0crwdne667607:0" + heading1: "crwdns667609:0crwdne667609:0" + heading2: "crwdns667611:0crwdne667611:0" + heading3: "crwdns667613:0crwdne667613:0" + unordered_list: "crwdns667615:0crwdne667615:0" + ordered_list: "crwdns667617:0crwdne667617:0" + quote: "crwdns667619:0crwdne667619:0" + unquote: "crwdns667621:0crwdne667621:0" + preformatted_text: "crwdns667623:0crwdne667623:0" + wiki_link: "crwdns667625:0crwdne667625:0" + image: "crwdns667627:0crwdne667627:0" work_packages: bulk_actions: - move: 'crwdns665519:0crwdne665519:0' - edit: 'crwdns665521:0crwdne665521:0' - copy: 'crwdns665523:0crwdne665523:0' - delete: 'crwdns665525:0crwdne665525:0' - button_clear: "crwdns665527:0crwdne665527:0" - comment_added: "crwdns665529:0crwdne665529:0" - comment_send_failed: "crwdns665531:0crwdne665531:0" - comment_updated: "crwdns665533:0crwdne665533:0" - confirm_edit_cancel: "crwdns665535:0crwdne665535:0" - description_filter: "crwdns665537:0crwdne665537:0" - description_enter_text: "crwdns665539:0crwdne665539:0" - description_options_hide: "crwdns665541:0crwdne665541:0" - description_options_show: "crwdns665543:0crwdne665543:0" - edit_attribute: "crwdns665545:0%{attribute}crwdne665545:0" - key_value: "crwdns665547:0%{key}crwdnd665547:0%{value}crwdne665547:0" - label_enable_multi_select: "crwdns665549:0crwdne665549:0" - label_disable_multi_select: "crwdns665551:0crwdne665551:0" - label_filter_add: "crwdns665553:0crwdne665553:0" - label_filter_by_text: "crwdns665555:0crwdne665555:0" - label_options: "crwdns665557:0crwdne665557:0" - label_column_multiselect: "crwdns665559:0crwdne665559:0" - message_error_during_bulk_delete: crwdns665561:0crwdne665561:0 - message_successful_bulk_delete: crwdns665563:0crwdne665563:0 - message_successful_show_in_fullscreen: "crwdns665565:0crwdne665565:0" - message_view_spent_time: "crwdns665567:0crwdne665567:0" - message_work_package_read_only: "crwdns665569:0crwdne665569:0" - message_work_package_status_blocked: "crwdns665571:0crwdne665571:0" - placeholder_filter_by_text: "crwdns665573:0crwdne665573:0" + move: 'crwdns667629:0crwdne667629:0' + edit: 'crwdns667631:0crwdne667631:0' + copy: 'crwdns667633:0crwdne667633:0' + delete: 'crwdns667635:0crwdne667635:0' + button_clear: "crwdns667637:0crwdne667637:0" + comment_added: "crwdns667639:0crwdne667639:0" + comment_send_failed: "crwdns667641:0crwdne667641:0" + comment_updated: "crwdns667643:0crwdne667643:0" + confirm_edit_cancel: "crwdns667645:0crwdne667645:0" + description_filter: "crwdns667647:0crwdne667647:0" + description_enter_text: "crwdns667649:0crwdne667649:0" + description_options_hide: "crwdns667651:0crwdne667651:0" + description_options_show: "crwdns667653:0crwdne667653:0" + edit_attribute: "crwdns667655:0%{attribute}crwdne667655:0" + key_value: "crwdns667657:0%{key}crwdnd667657:0%{value}crwdne667657:0" + label_enable_multi_select: "crwdns667659:0crwdne667659:0" + label_disable_multi_select: "crwdns667661:0crwdne667661:0" + label_filter_add: "crwdns667663:0crwdne667663:0" + label_filter_by_text: "crwdns667665:0crwdne667665:0" + label_options: "crwdns667667:0crwdne667667:0" + label_column_multiselect: "crwdns667669:0crwdne667669:0" + message_error_during_bulk_delete: crwdns667671:0crwdne667671:0 + message_successful_bulk_delete: crwdns667673:0crwdne667673:0 + message_successful_show_in_fullscreen: "crwdns667675:0crwdne667675:0" + message_view_spent_time: "crwdns667677:0crwdne667677:0" + message_work_package_read_only: "crwdns667679:0crwdne667679:0" + message_work_package_status_blocked: "crwdns667681:0crwdne667681:0" + placeholder_filter_by_text: "crwdns667683:0crwdne667683:0" inline_create: - title: 'crwdns665575:0crwdne665575:0' + title: 'crwdns667685:0crwdne667685:0' create: - title: 'crwdns665577:0crwdne665577:0' - header: 'crwdns665579:0%{type}crwdne665579:0' - header_no_type: 'crwdns665581:0crwdne665581:0' - header_with_parent: 'crwdns665583:0%{type}crwdnd665583:0%{parent_type}crwdnd665583:0%{id}crwdne665583:0' - button: 'crwdns665585:0crwdne665585:0' + title: 'crwdns667687:0crwdne667687:0' + header: 'crwdns667689:0%{type}crwdne667689:0' + header_no_type: 'crwdns667691:0crwdne667691:0' + header_with_parent: 'crwdns667693:0%{type}crwdnd667693:0%{parent_type}crwdnd667693:0%{id}crwdne667693:0' + button: 'crwdns667695:0crwdne667695:0' copy: - title: 'crwdns665587:0crwdne665587:0' + title: 'crwdns667697:0crwdne667697:0' hierarchy: - show: "crwdns665589:0crwdne665589:0" - hide: "crwdns665591:0crwdne665591:0" - toggle_button: 'crwdns665593:0crwdne665593:0' - leaf: 'crwdns665595:0%{level}crwdne665595:0' - children_collapsed: 'crwdns665597:0%{level}crwdne665597:0' - children_expanded: 'crwdns665599:0%{level}crwdne665599:0' + show: "crwdns667699:0crwdne667699:0" + hide: "crwdns667701:0crwdne667701:0" + toggle_button: 'crwdns667703:0crwdne667703:0' + leaf: 'crwdns667705:0%{level}crwdne667705:0' + children_collapsed: 'crwdns667707:0%{level}crwdne667707:0' + children_expanded: 'crwdns667709:0%{level}crwdne667709:0' faulty_query: - title: crwdns665601:0crwdne665601:0 - description: crwdns665603:0crwdne665603:0 + title: crwdns667711:0crwdne667711:0 + description: crwdns667713:0crwdne667713:0 no_results: - title: crwdns665605:0crwdne665605:0 - description: crwdns665607:0crwdne665607:0 - limited_results: crwdns665609:0%{count}crwdne665609:0 + title: crwdns667715:0crwdne667715:0 + description: crwdns667717:0crwdne667717:0 + limited_results: crwdns667719:0%{count}crwdne667719:0 property_groups: - details: "crwdns665611:0crwdne665611:0" - people: "crwdns665613:0crwdne665613:0" - estimatesAndTime: "crwdns665615:0crwdne665615:0" - other: "crwdns665617:0crwdne665617:0" + details: "crwdns667721:0crwdne667721:0" + people: "crwdns667723:0crwdne667723:0" + estimatesAndTime: "crwdns667725:0crwdne667725:0" + other: "crwdns667727:0crwdne667727:0" properties: - assignee: "crwdns665619:0crwdne665619:0" - author: "crwdns665621:0crwdne665621:0" - createdAt: "crwdns665623:0crwdne665623:0" - description: "crwdns665625:0crwdne665625:0" - date: "crwdns665627:0crwdne665627:0" - dueDate: "crwdns665629:0crwdne665629:0" - estimatedTime: "crwdns665631:0crwdne665631:0" - spentTime: "crwdns665633:0crwdne665633:0" - category: "crwdns665635:0crwdne665635:0" - percentageDone: "crwdns665637:0crwdne665637:0" - priority: "crwdns665639:0crwdne665639:0" - projectName: "crwdns665641:0crwdne665641:0" - responsible: "crwdns665643:0crwdne665643:0" - startDate: "crwdns665645:0crwdne665645:0" - status: "crwdns665647:0crwdne665647:0" - subject: "crwdns665649:0crwdne665649:0" - subproject: "crwdns665651:0crwdne665651:0" - title: "crwdns665653:0crwdne665653:0" - type: "crwdns665655:0crwdne665655:0" - updatedAt: "crwdns665657:0crwdne665657:0" - versionName: "crwdns665659:0crwdne665659:0" - version: "crwdns665661:0crwdne665661:0" + assignee: "crwdns667729:0crwdne667729:0" + author: "crwdns667731:0crwdne667731:0" + createdAt: "crwdns667733:0crwdne667733:0" + description: "crwdns667735:0crwdne667735:0" + date: "crwdns667737:0crwdne667737:0" + dueDate: "crwdns667739:0crwdne667739:0" + estimatedTime: "crwdns667741:0crwdne667741:0" + spentTime: "crwdns667743:0crwdne667743:0" + category: "crwdns667745:0crwdne667745:0" + percentageDone: "crwdns667747:0crwdne667747:0" + priority: "crwdns667749:0crwdne667749:0" + projectName: "crwdns667751:0crwdne667751:0" + responsible: "crwdns667753:0crwdne667753:0" + startDate: "crwdns667755:0crwdne667755:0" + status: "crwdns667757:0crwdne667757:0" + subject: "crwdns667759:0crwdne667759:0" + subproject: "crwdns667761:0crwdne667761:0" + title: "crwdns667763:0crwdne667763:0" + type: "crwdns667765:0crwdne667765:0" + updatedAt: "crwdns667767:0crwdne667767:0" + versionName: "crwdns667769:0crwdne667769:0" + version: "crwdns667771:0crwdne667771:0" default_queries: - latest_activity: "crwdns665663:0crwdne665663:0" - created_by_me: "crwdns665665:0crwdne665665:0" - assigned_to_me: "crwdns665667:0crwdne665667:0" - recently_created: "crwdns665669:0crwdne665669:0" - all_open: "crwdns665671:0crwdne665671:0" - summary: "crwdns665673:0crwdne665673:0" + latest_activity: "crwdns667773:0crwdne667773:0" + created_by_me: "crwdns667775:0crwdne667775:0" + assigned_to_me: "crwdns667777:0crwdne667777:0" + recently_created: "crwdns667779:0crwdne667779:0" + all_open: "crwdns667781:0crwdne667781:0" + summary: "crwdns667783:0crwdne667783:0" jump_marks: - pagination: "crwdns665675:0crwdne665675:0" - label_pagination: "crwdns665677:0crwdne665677:0" - content: "crwdns665679:0crwdne665679:0" - label_content: "crwdns665681:0crwdne665681:0" + pagination: "crwdns667785:0crwdne667785:0" + label_pagination: "crwdns667787:0crwdne667787:0" + content: "crwdns667789:0crwdne667789:0" + label_content: "crwdns667791:0crwdne667791:0" placeholders: - default: "crwdns665683:0crwdne665683:0" - date: "crwdns665685:0crwdne665685:0" - formattable: "crwdns665687:0%{name}crwdne665687:0" + default: "crwdns667793:0crwdne667793:0" + date: "crwdns667795:0crwdne667795:0" + formattable: "crwdns667797:0%{name}crwdne667797:0" query: - column_names: "crwdns665689:0crwdne665689:0" - group_by: "crwdns665691:0crwdne665691:0" - group: "crwdns665693:0crwdne665693:0" - group_by_disabled_by_hierarchy: "crwdns665695:0crwdne665695:0" - hierarchy_disabled_by_group_by: "crwdns665697:0%{column}crwdne665697:0" - sort_ascending: "crwdns665699:0crwdne665699:0" - sort_descending: "crwdns665701:0crwdne665701:0" - move_column_left: "crwdns665703:0crwdne665703:0" - move_column_right: "crwdns665705:0crwdne665705:0" - hide_column: "crwdns665707:0crwdne665707:0" - insert_columns: "crwdns665709:0crwdne665709:0" - filters: "crwdns665711:0crwdne665711:0" - display_sums: "crwdns665713:0crwdne665713:0" - confirm_edit_cancel: "crwdns665715:0crwdne665715:0" - click_to_edit_query_name: "crwdns665717:0crwdne665717:0" - rename_query_placeholder: "crwdns665719:0crwdne665719:0" - star_text: "crwdns665721:0crwdne665721:0" + column_names: "crwdns667799:0crwdne667799:0" + group_by: "crwdns667801:0crwdne667801:0" + group: "crwdns667803:0crwdne667803:0" + group_by_disabled_by_hierarchy: "crwdns667805:0crwdne667805:0" + hierarchy_disabled_by_group_by: "crwdns667807:0%{column}crwdne667807:0" + sort_ascending: "crwdns667809:0crwdne667809:0" + sort_descending: "crwdns667811:0crwdne667811:0" + move_column_left: "crwdns667813:0crwdne667813:0" + move_column_right: "crwdns667815:0crwdne667815:0" + hide_column: "crwdns667817:0crwdne667817:0" + insert_columns: "crwdns667819:0crwdne667819:0" + filters: "crwdns667821:0crwdne667821:0" + display_sums: "crwdns667823:0crwdne667823:0" + confirm_edit_cancel: "crwdns667825:0crwdne667825:0" + click_to_edit_query_name: "crwdns667827:0crwdne667827:0" + rename_query_placeholder: "crwdns667829:0crwdne667829:0" + star_text: "crwdns667831:0crwdne667831:0" public_text: > - crwdns665723:0crwdne665723:0 + crwdns667833:0crwdne667833:0 errors: - unretrievable_query: "crwdns665725:0crwdne665725:0" - not_found: "crwdns665727:0crwdne665727:0" - duplicate_query_title: "crwdns665729:0crwdne665729:0" - text_no_results: "crwdns665731:0crwdne665731:0" + unretrievable_query: "crwdns667835:0crwdne667835:0" + not_found: "crwdns667837:0crwdne667837:0" + duplicate_query_title: "crwdns667839:0crwdne667839:0" + text_no_results: "crwdns667841:0crwdne667841:0" scheduling: - is_parent: "crwdns665733:0crwdne665733:0" - is_switched_from_manual_to_automatic: "crwdns665735:0crwdne665735:0" + is_parent: "crwdns667843:0crwdne667843:0" + is_switched_from_manual_to_automatic: "crwdns667845:0crwdne667845:0" table: - configure_button: 'crwdns665737:0crwdne665737:0' - summary: "crwdns665739:0crwdne665739:0" - text_inline_edit: "crwdns665741:0crwdne665741:0" - text_sort_hint: "crwdns665743:0crwdne665743:0" - text_select_hint: "crwdns665745:0crwdne665745:0" + configure_button: 'crwdns667847:0crwdne667847:0' + summary: "crwdns667849:0crwdne667849:0" + text_inline_edit: "crwdns667851:0crwdne667851:0" + text_sort_hint: "crwdns667853:0crwdne667853:0" + text_select_hint: "crwdns667855:0crwdne667855:0" table_configuration: - button: 'crwdns665747:0crwdne665747:0' - choose_display_mode: 'crwdns665749:0crwdne665749:0' - modal_title: 'crwdns665751:0crwdne665751:0' - embedded_tab_disabled: "crwdns665753:0crwdne665753:0" - default: "crwdns665755:0crwdne665755:0" - display_settings: 'crwdns665757:0crwdne665757:0' - default_mode: "crwdns665759:0crwdne665759:0" - hierarchy_mode: "crwdns665761:0crwdne665761:0" - hierarchy_hint: "crwdns665763:0crwdne665763:0" - display_sums_hint: "crwdns665765:0crwdne665765:0" - show_timeline_hint: "crwdns665767:0crwdne665767:0" - highlighting: 'crwdns665769:0crwdne665769:0' + button: 'crwdns667857:0crwdne667857:0' + choose_display_mode: 'crwdns667859:0crwdne667859:0' + modal_title: 'crwdns667861:0crwdne667861:0' + embedded_tab_disabled: "crwdns667863:0crwdne667863:0" + default: "crwdns667865:0crwdne667865:0" + display_settings: 'crwdns667867:0crwdne667867:0' + default_mode: "crwdns667869:0crwdne667869:0" + hierarchy_mode: "crwdns667871:0crwdne667871:0" + hierarchy_hint: "crwdns667873:0crwdne667873:0" + display_sums_hint: "crwdns667875:0crwdne667875:0" + show_timeline_hint: "crwdns667877:0crwdne667877:0" + highlighting: 'crwdns667879:0crwdne667879:0' highlighting_mode: - description: "crwdns665771:0crwdne665771:0" - none: "crwdns665773:0crwdne665773:0" - inline: 'crwdns665775:0crwdne665775:0' - inline_all: 'crwdns665777:0crwdne665777:0' - entire_row_by: 'crwdns665779:0crwdne665779:0' - status: 'crwdns665781:0crwdne665781:0' - priority: 'crwdns665783:0crwdne665783:0' - type: 'crwdns665785:0crwdne665785:0' + description: "crwdns667881:0crwdne667881:0" + none: "crwdns667883:0crwdne667883:0" + inline: 'crwdns667885:0crwdne667885:0' + inline_all: 'crwdns667887:0crwdne667887:0' + entire_row_by: 'crwdns667889:0crwdne667889:0' + status: 'crwdns667891:0crwdne667891:0' + priority: 'crwdns667893:0crwdne667893:0' + type: 'crwdns667895:0crwdne667895:0' sorting_mode: - description: 'crwdns665787:0crwdne665787:0' - automatic: 'crwdns665789:0crwdne665789:0' - manually: 'crwdns665791:0crwdne665791:0' - warning: 'crwdns665793:0crwdne665793:0' - columns_help_text: "crwdns665795:0crwdne665795:0" + description: 'crwdns667897:0crwdne667897:0' + automatic: 'crwdns667899:0crwdne667899:0' + manually: 'crwdns667901:0crwdne667901:0' + warning: 'crwdns667903:0crwdne667903:0' + columns_help_text: "crwdns667905:0crwdne667905:0" upsale: - attribute_highlighting: 'crwdns665797:0crwdne665797:0' - relation_columns: 'crwdns665799:0crwdne665799:0' - check_out_link: 'crwdns665801:0crwdne665801:0' + attribute_highlighting: 'crwdns667907:0crwdne667907:0' + relation_columns: 'crwdns667909:0crwdne667909:0' + check_out_link: 'crwdns667911:0crwdne667911:0' relation_filters: - filter_work_packages_by_relation_type: 'crwdns665803:0crwdne665803:0' + filter_work_packages_by_relation_type: 'crwdns667913:0crwdne667913:0' tabs: - overview: crwdns665805:0crwdne665805:0 - activity: crwdns665807:0crwdne665807:0 - relations: crwdns665809:0crwdne665809:0 - watchers: crwdns665811:0crwdne665811:0 - attachments: crwdns665813:0crwdne665813:0 + overview: crwdns667915:0crwdne667915:0 + activity: crwdns667917:0crwdne667917:0 + relations: crwdns667919:0crwdne667919:0 + watchers: crwdns667921:0crwdne667921:0 + attachments: crwdns667923:0crwdne667923:0 time_relative: - days: "crwdns665815:0crwdne665815:0" - weeks: "crwdns665817:0crwdne665817:0" - months: "crwdns665819:0crwdne665819:0" + days: "crwdns667925:0crwdne667925:0" + weeks: "crwdns667927:0crwdne667927:0" + months: "crwdns667929:0crwdne667929:0" toolbar: settings: - configure_view: "crwdns665821:0crwdne665821:0" - columns: "crwdns665823:0crwdne665823:0" - sort_by: "crwdns665825:0crwdne665825:0" - group_by: "crwdns665827:0crwdne665827:0" - display_sums: "crwdns665829:0crwdne665829:0" - display_hierarchy: "crwdns665831:0crwdne665831:0" - hide_hierarchy: "crwdns665833:0crwdne665833:0" - hide_sums: "crwdns665835:0crwdne665835:0" - save: "crwdns665837:0crwdne665837:0" - save_as: "crwdns665839:0crwdne665839:0" - export: "crwdns665841:0crwdne665841:0" - visibility_settings: "crwdns665843:0crwdne665843:0" - page_settings: "crwdns665845:0crwdne665845:0" - delete: "crwdns665847:0crwdne665847:0" - filter: "crwdns665849:0crwdne665849:0" - unselected_title: "crwdns665851:0crwdne665851:0" - search_query_label: "crwdns665853:0crwdne665853:0" - search_query_title: "crwdns665855:0crwdne665855:0" - placeholder_query_title: "crwdns665857:0crwdne665857:0" + configure_view: "crwdns667931:0crwdne667931:0" + columns: "crwdns667933:0crwdne667933:0" + sort_by: "crwdns667935:0crwdne667935:0" + group_by: "crwdns667937:0crwdne667937:0" + display_sums: "crwdns667939:0crwdne667939:0" + display_hierarchy: "crwdns667941:0crwdne667941:0" + hide_hierarchy: "crwdns667943:0crwdne667943:0" + hide_sums: "crwdns667945:0crwdne667945:0" + save: "crwdns667947:0crwdne667947:0" + save_as: "crwdns667949:0crwdne667949:0" + export: "crwdns667951:0crwdne667951:0" + visibility_settings: "crwdns667953:0crwdne667953:0" + page_settings: "crwdns667955:0crwdne667955:0" + delete: "crwdns667957:0crwdne667957:0" + filter: "crwdns667959:0crwdne667959:0" + unselected_title: "crwdns667961:0crwdne667961:0" + search_query_label: "crwdns667963:0crwdne667963:0" + search_query_title: "crwdns667965:0crwdne667965:0" + placeholder_query_title: "crwdns667967:0crwdne667967:0" modals: - label_settings: "crwdns665859:0crwdne665859:0" - label_name: "crwdns665861:0crwdne665861:0" - label_delete_page: "crwdns665863:0crwdne665863:0" - button_apply: "crwdns665865:0crwdne665865:0" - button_save: "crwdns665867:0crwdne665867:0" - button_submit: "crwdns665869:0crwdne665869:0" - button_cancel: "crwdns665871:0crwdne665871:0" + label_settings: "crwdns667969:0crwdne667969:0" + label_name: "crwdns667971:0crwdne667971:0" + label_delete_page: "crwdns667973:0crwdne667973:0" + button_apply: "crwdns667975:0crwdne667975:0" + button_save: "crwdns667977:0crwdne667977:0" + button_submit: "crwdns667979:0crwdne667979:0" + button_cancel: "crwdns667981:0crwdne667981:0" form_submit: - title: 'crwdns665873:0crwdne665873:0' - text: 'crwdns665875:0crwdne665875:0' + title: 'crwdns667983:0crwdne667983:0' + text: 'crwdns667985:0crwdne667985:0' destroy_work_package: - title: "crwdns665877:0%{label}crwdne665877:0" - text: "crwdns665879:0%{label}crwdne665879:0" - has_children: "crwdns665881:0%{childUnits}crwdne665881:0" - confirm_deletion_children: "crwdns665883:0crwdne665883:0" - deletes_children: "crwdns665885:0crwdne665885:0" + title: "crwdns667987:0%{label}crwdne667987:0" + text: "crwdns667989:0%{label}crwdne667989:0" + has_children: "crwdns667991:0%{childUnits}crwdne667991:0" + confirm_deletion_children: "crwdns667993:0crwdne667993:0" + deletes_children: "crwdns667995:0crwdne667995:0" destroy_time_entry: - title: "crwdns665887:0crwdne665887:0" - text: "crwdns665889:0crwdne665889:0" - notice_no_results_to_display: "crwdns665891:0crwdne665891:0" - notice_successful_create: "crwdns665893:0crwdne665893:0" - notice_successful_delete: "crwdns665895:0crwdne665895:0" - notice_successful_update: "crwdns665897:0crwdne665897:0" - notice_job_started: "crwdns665899:0crwdne665899:0" - notice_bad_request: "crwdns665901:0crwdne665901:0" + title: "crwdns667997:0crwdne667997:0" + text: "crwdns667999:0crwdne667999:0" + notice_no_results_to_display: "crwdns668001:0crwdne668001:0" + notice_successful_create: "crwdns668003:0crwdne668003:0" + notice_successful_delete: "crwdns668005:0crwdne668005:0" + notice_successful_update: "crwdns668007:0crwdne668007:0" + notice_job_started: "crwdns668009:0crwdne668009:0" + notice_bad_request: "crwdns668011:0crwdne668011:0" relations: - empty: crwdns665903:0crwdne665903:0 - remove: crwdns665905:0crwdne665905:0 + empty: crwdns668013:0crwdne668013:0 + remove: crwdns668015:0crwdne668015:0 inplace: - button_edit: "crwdns665907:0%{attribute}crwdne665907:0" - button_save: "crwdns665909:0%{attribute}crwdne665909:0" - button_cancel: "crwdns665911:0%{attribute}crwdne665911:0" - button_save_all: "crwdns665913:0crwdne665913:0" - button_cancel_all: "crwdns665915:0crwdne665915:0" - link_formatting_help: "crwdns665917:0crwdne665917:0" - btn_preview_enable: "crwdns665919:0crwdne665919:0" - btn_preview_disable: "crwdns665921:0crwdne665921:0" - null_value_label: "crwdns665923:0crwdne665923:0" - clear_value_label: "crwdns665925:0crwdne665925:0" + button_edit: "crwdns668017:0%{attribute}crwdne668017:0" + button_save: "crwdns668019:0%{attribute}crwdne668019:0" + button_cancel: "crwdns668021:0%{attribute}crwdne668021:0" + button_save_all: "crwdns668023:0crwdne668023:0" + button_cancel_all: "crwdns668025:0crwdne668025:0" + link_formatting_help: "crwdns668027:0crwdne668027:0" + btn_preview_enable: "crwdns668029:0crwdne668029:0" + btn_preview_disable: "crwdns668031:0crwdne668031:0" + null_value_label: "crwdns668033:0crwdne668033:0" + clear_value_label: "crwdns668035:0crwdne668035:0" errors: - required: 'crwdns665927:0%{field}crwdne665927:0' - number: 'crwdns665929:0%{field}crwdne665929:0' - maxlength: 'crwdns665931:0%{field}crwdnd665931:0%{maxLength}crwdne665931:0' - minlength: 'crwdns665933:0%{field}crwdnd665933:0%{minLength}crwdne665933:0' - messages_on_field: 'crwdns665935:0%{messages}crwdne665935:0' - error_could_not_resolve_version_name: "crwdns665937:0crwdne665937:0" - error_could_not_resolve_user_name: "crwdns665939:0crwdne665939:0" - error_attachment_upload: "crwdns665941:0%{error}crwdne665941:0" - error_attachment_upload_permission: "crwdns665943:0crwdne665943:0" + required: 'crwdns668037:0%{field}crwdne668037:0' + number: 'crwdns668039:0%{field}crwdne668039:0' + maxlength: 'crwdns668041:0%{field}crwdnd668041:0%{maxLength}crwdne668041:0' + minlength: 'crwdns668043:0%{field}crwdnd668043:0%{minLength}crwdne668043:0' + messages_on_field: 'crwdns668045:0%{messages}crwdne668045:0' + error_could_not_resolve_version_name: "crwdns668047:0crwdne668047:0" + error_could_not_resolve_user_name: "crwdns668049:0crwdne668049:0" + error_attachment_upload: "crwdns668051:0%{error}crwdne668051:0" + error_attachment_upload_permission: "crwdns668053:0crwdne668053:0" units: workPackage: - one: "crwdns665945:1crwdne665945:1" - other: "crwdns665945:5crwdne665945:5" + one: "crwdns668055:1crwdne668055:1" + other: "crwdns668055:5crwdne668055:5" child_work_packages: - one: "crwdns665947:1crwdne665947:1" - other: "crwdns665947:5%{count}crwdne665947:5" + one: "crwdns668057:1crwdne668057:1" + other: "crwdns668057:5%{count}crwdne668057:5" hour: - one: "crwdns665949:0crwdne665949:0" - other: "crwdns665951:0%{count}crwdne665951:0" - zero: "crwdns665953:0crwdne665953:0" + one: "crwdns668059:0crwdne668059:0" + other: "crwdns668061:0%{count}crwdne668061:0" + zero: "crwdns668063:0crwdne668063:0" zen_mode: - button_activate: 'crwdns665955:0crwdne665955:0' - button_deactivate: 'crwdns665957:0crwdne665957:0' + button_activate: 'crwdns668065:0crwdne668065:0' + button_deactivate: 'crwdns668067:0crwdne668067:0' global_search: - all_projects: "crwdns665959:0crwdne665959:0" - search: "crwdns665961:0crwdne665961:0" - close_search: "crwdns665963:0crwdne665963:0" - current_project: "crwdns665965:0crwdne665965:0" - current_project_and_all_descendants: "crwdns665967:0crwdne665967:0" + all_projects: "crwdns668069:0crwdne668069:0" + search: "crwdns668071:0crwdne668071:0" + close_search: "crwdns668073:0crwdne668073:0" + current_project: "crwdns668075:0crwdne668075:0" + current_project_and_all_descendants: "crwdns668077:0crwdne668077:0" title: - all_projects: "crwdns665969:0crwdne665969:0" - project_and_subprojects: "crwdns665971:0crwdne665971:0" - search_for: "crwdns665973:0crwdne665973:0" + all_projects: "crwdns668079:0crwdne668079:0" + project_and_subprojects: "crwdns668081:0crwdne668081:0" + search_for: "crwdns668083:0crwdne668083:0" views: - card: 'crwdns665975:0crwdne665975:0' - list: 'crwdns665977:0crwdne665977:0' - timeline: 'crwdns665979:0crwdne665979:0' + card: 'crwdns668085:0crwdne668085:0' + list: 'crwdns668087:0crwdne668087:0' + timeline: 'crwdns668089:0crwdne668089:0' invite_user_modal: - back: 'crwdns665981:0crwdne665981:0' - invite: 'crwdns665983:0crwdne665983:0' + back: 'crwdns668091:0crwdne668091:0' + invite: 'crwdns668093:0crwdne668093:0' title: - invite: 'crwdns665985:0crwdne665985:0' - invite_to_project: 'crwdns665987:0%{type}crwdnd665987:0%{project}crwdne665987:0' - User: 'crwdns665989:0crwdne665989:0' - Group: 'crwdns665991:0crwdne665991:0' - PlaceholderUser: 'crwdns665993:0crwdne665993:0' - invite_principal_to_project: 'crwdns665995:0%{principal}crwdnd665995:0%{project}crwdne665995:0' + invite: 'crwdns668095:0crwdne668095:0' + invite_to_project: 'crwdns668097:0%{type}crwdnd668097:0%{project}crwdne668097:0' + User: 'crwdns668099:0crwdne668099:0' + Group: 'crwdns668101:0crwdne668101:0' + PlaceholderUser: 'crwdns668103:0crwdne668103:0' + invite_principal_to_project: 'crwdns668105:0%{principal}crwdnd668105:0%{project}crwdne668105:0' project: - label: 'crwdns665997:0crwdne665997:0' - required: 'crwdns665999:0crwdne665999:0' - lacking_permission: 'crwdns666001:0crwdne666001:0' - lacking_permission_info: 'crwdns666003:0crwdne666003:0' - next_button: 'crwdns666005:0crwdne666005:0' - no_results: 'crwdns666007:0crwdne666007:0' - no_invite_rights: 'crwdns666009:0crwdne666009:0' + label: 'crwdns668107:0crwdne668107:0' + required: 'crwdns668109:0crwdne668109:0' + lacking_permission: 'crwdns668111:0crwdne668111:0' + lacking_permission_info: 'crwdns668113:0crwdne668113:0' + next_button: 'crwdns668115:0crwdne668115:0' + no_results: 'crwdns668117:0crwdne668117:0' + no_invite_rights: 'crwdns668119:0crwdne668119:0' type: - required: 'crwdns666011:0crwdne666011:0' + required: 'crwdns668121:0crwdne668121:0' user: - title: 'crwdns666013:0crwdne666013:0' - description: 'crwdns666015:0crwdne666015:0' + title: 'crwdns668123:0crwdne668123:0' + description: 'crwdns668125:0crwdne668125:0' group: - title: 'crwdns666017:0crwdne666017:0' - description: 'crwdns666019:0crwdne666019:0' + title: 'crwdns668127:0crwdne668127:0' + description: 'crwdns668129:0crwdne668129:0' placeholder: - title: 'crwdns666021:0crwdne666021:0' - title_no_ee: 'crwdns666023:0crwdne666023:0' - description: 'crwdns666025:0crwdne666025:0' - description_no_ee: 'crwdns666027:0%{eeHref}crwdne666027:0' + title: 'crwdns668131:0crwdne668131:0' + title_no_ee: 'crwdns668133:0crwdne668133:0' + description: 'crwdns668135:0crwdne668135:0' + description_no_ee: 'crwdns668137:0%{eeHref}crwdne668137:0' principal: label: - name_or_email: 'crwdns666029:0crwdne666029:0' - name: 'crwdns666031:0crwdne666031:0' - already_member_message: 'crwdns666033:0%{project}crwdne666033:0' - no_results_user: 'crwdns666035:0crwdne666035:0' - invite_user: 'crwdns666037:0crwdne666037:0' - no_results_placeholder: 'crwdns666039:0crwdne666039:0' - create_new_placeholder: 'crwdns666041:0crwdne666041:0' - no_results_group: 'crwdns666043:0crwdne666043:0' - next_button: 'crwdns666045:0crwdne666045:0' + name_or_email: 'crwdns668139:0crwdne668139:0' + name: 'crwdns668141:0crwdne668141:0' + already_member_message: 'crwdns668143:0%{project}crwdne668143:0' + no_results_user: 'crwdns668145:0crwdne668145:0' + invite_user: 'crwdns668147:0crwdne668147:0' + no_results_placeholder: 'crwdns668149:0crwdne668149:0' + create_new_placeholder: 'crwdns668151:0crwdne668151:0' + no_results_group: 'crwdns668153:0crwdne668153:0' + next_button: 'crwdns668155:0crwdne668155:0' required: - user: 'crwdns666047:0crwdne666047:0' - placeholder: 'crwdns666049:0crwdne666049:0' - group: 'crwdns666051:0crwdne666051:0' + user: 'crwdns668157:0crwdne668157:0' + placeholder: 'crwdns668159:0crwdne668159:0' + group: 'crwdns668161:0crwdne668161:0' role: - label: 'crwdns666053:0%{project}crwdne666053:0' - no_roles_found: 'crwdns666055:0crwdne666055:0' - description: 'crwdns666057:0%{principal}crwdne666057:0' - required: 'crwdns666059:0crwdne666059:0' - next_button: 'crwdns666061:0crwdne666061:0' + label: 'crwdns668163:0%{project}crwdne668163:0' + no_roles_found: 'crwdns668165:0crwdne668165:0' + description: 'crwdns668167:0%{principal}crwdne668167:0' + required: 'crwdns668169:0crwdne668169:0' + next_button: 'crwdns668171:0crwdne668171:0' message: - label: 'crwdns666063:0crwdne666063:0' - description: 'crwdns666065:0%{principal}crwdne666065:0' - next_button: 'crwdns666067:0crwdne666067:0' + label: 'crwdns668173:0crwdne668173:0' + description: 'crwdns668175:0%{principal}crwdne668175:0' + next_button: 'crwdns668177:0crwdne668177:0' summary: - next_button: 'crwdns666069:0crwdne666069:0' + next_button: 'crwdns668179:0crwdne668179:0' success: - title: 'crwdns666071:0%{principal}crwdne666071:0' + title: 'crwdns668181:0%{principal}crwdne668181:0' description: - user: 'crwdns666073:0%{project}crwdne666073:0' - placeholder: 'crwdns666075:0%{project}crwdne666075:0' - group: 'crwdns666077:0%{project}crwdne666077:0' - next_button: 'crwdns666079:0crwdne666079:0' + user: 'crwdns668183:0%{project}crwdne668183:0' + placeholder: 'crwdns668185:0%{project}crwdne668185:0' + group: 'crwdns668187:0%{project}crwdne668187:0' + next_button: 'crwdns668189:0crwdne668189:0' forms: - submit_success_message: 'crwdns666081:0crwdne666081:0' - load_error_message: 'crwdns666083:0crwdne666083:0' - validation_error_message: 'crwdns666085:0crwdne666085:0' - advanced_settings: 'crwdns666087:0crwdne666087:0' + submit_success_message: 'crwdns668191:0crwdne668191:0' + load_error_message: 'crwdns668193:0crwdne668193:0' + validation_error_message: 'crwdns668195:0crwdne668195:0' + advanced_settings: 'crwdns668197:0crwdne668197:0' diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 14998c6fc4..d529192764 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -74,10 +74,10 @@ ru: book_now: 'Заказать сейчас' get_quote: 'Рассчитать стоимость' buttons: - upgrade: "Upgrade now" - contact: "Contact us for a demo" - enterprise_info_html: "is an Enterprise feature." - upgrade_info: "Please upgrade to a paid plan to activate and start using it in your team." + upgrade: "Обновить сейчас" + contact: "Свяжитесь с нами для опробирования" + enterprise_info_html: "является функцией корпоративной версии." + upgrade_info: "Пожалуйста, перейдите на платный тарифный план, чтобы активировать его и начать использовать в вашей команде." announcements: show_until: Показать до is_active: теперь отображается @@ -165,7 +165,7 @@ ru: edit: 'Редактировать пользовательское действие %{name}' execute: 'Выполнить %{name}' upsale: - title: 'Custom actions' + title: 'Настраиваемые действия' description: 'Пользовательские действия автоматизируют повседневную работу, объединяя отдельные шаги в одну кнопку.' custom_fields: text_add_new_custom_field: > @@ -264,7 +264,7 @@ ru: irreversible: "Это действие необратимо" confirmation: "Введите имя пользователя %{name} для подтверждения удаления." upsale: - title: Placeholder users + title: Пользователи-заполнители description: > Есть несколько сценариев, где вы хотите назначить работу людям, которые не являются участниками вашего проекта. Это может быть просто то, что вам все равно нужно нанять правильного человека для работы. Или вы просто не хотите дать этому человеку доступ к информации о проекте, но хотите отслеживать задачи, назначенные этому человеку. prioritiies: @@ -2382,9 +2382,10 @@ ru: setting_apiv3_cors_origins: "Разделение ресурсов (CORS) разрешено в API V3" setting_apiv3_cors_origins_text_html: > Если CORS включен, то это источники, которым разрешен доступ к OpenProject API.
Пожалуйста, проверьте документацию по происхождению о том, как указывать ожидаемые значения. - setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_size: "Максимальный размер страницы API" setting_apiv3_max_page_instructions_html: > - Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. + Установите максимальный размер страницы, который будет отвечать API. Невозможно выполнить API-запросы, возвращающие много значений на одной странице.
Предупреждение: Пожалуйста, измените это значение, только если вы уверены, зачем вам это нужно. Установка большого значения приведет к значительному снижению производительности, в то время как значение ниже, чем для параметров страницы, вызовет ошибки в представлениях с разбивкой на страницы. + setting_apiv3_docs: "Документация" setting_apiv3_docs_enabled: "Включить страницу с документами" setting_apiv3_docs_enabled_instructions_html: > diff --git a/modules/team_planner/config/locales/crowdin/it.yml b/modules/team_planner/config/locales/crowdin/it.yml index a1d07ac591..8defd7cbcd 100644 --- a/modules/team_planner/config/locales/crowdin/it.yml +++ b/modules/team_planner/config/locales/crowdin/it.yml @@ -1,10 +1,10 @@ #English strings go here it: - permission_view_team_planner: "View team planner" - permission_manage_team_planner: "Manage team planner" - project_module_team_planner_view: "Team planner" + permission_view_team_planner: "Visualizza il pianificatore di team" + permission_manage_team_planner: "Gestisci il pianificatore di team" + project_module_team_planner_view: "Pianificatore di team" team_planner: - label_team_planner: "Team planner" + label_team_planner: "Pianificatore di team" upsale: - title: "Team planner" - description: "Team planner gives you a complete overview what each of team member is working on, one week at a time. Move, stretch and shrink work packages visually, and even drag them from one assignee to another to organise workload. You can even create new work packages or add existing ones, all from within team planner!" + title: "Pianificatore di team" + description: "Il pianificatore di team ti offre una panoramica completa su ciò che ciascuno dei membri del team sta lavorando, una settimana alla volta. Spostare, allungare e ridurre le macro-attività in modo visivo, e anche trascinarle da un assegnatario a un altro per organizzare il carico di lavoro. È anche possibile creare nuove macro-attività o aggiungerne di esistenti, tutto dall'interno del team planner!" diff --git a/modules/team_planner/config/locales/crowdin/js-ru.yml b/modules/team_planner/config/locales/crowdin/js-ru.yml index 5688b67656..6efac32a54 100644 --- a/modules/team_planner/config/locales/crowdin/js-ru.yml +++ b/modules/team_planner/config/locales/crowdin/js-ru.yml @@ -2,7 +2,7 @@ ru: js: team_planner: - add_existing: 'Add existing' + add_existing: 'Добавить существующий' create_new: 'Создать нового планировщика' title: 'Командный планировщик' unsaved_title: 'Безымянный планировщик команды' @@ -12,5 +12,5 @@ ru: remove_assignee: 'Удалить ответственного' two_weeks: '2 недели' quick_add: - empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' - search_placeholder: 'Search...' + empty_state: 'Используйте поле поиска для поиска пакетов работ и перетаскивания их в планировщик для назначения их кому-либо и определения даты начала и окончания.' + search_placeholder: 'Поиск...' diff --git a/modules/team_planner/config/locales/crowdin/ru.yml b/modules/team_planner/config/locales/crowdin/ru.yml index da214fd3ee..4b1753a2d7 100644 --- a/modules/team_planner/config/locales/crowdin/ru.yml +++ b/modules/team_planner/config/locales/crowdin/ru.yml @@ -6,5 +6,5 @@ ru: team_planner: label_team_planner: "Командный планировщик" upsale: - title: "Team planner" - description: "Team planner gives you a complete overview what each of team member is working on, one week at a time. Move, stretch and shrink work packages visually, and even drag them from one assignee to another to organise workload. You can even create new work packages or add existing ones, all from within team planner!" + title: "Командный планировщик" + description: "Планировщик команд дает вам полный недельный обзор работ каждого из членов команды. Визуально перетаскивайте, растягивайте и сжимайте пакеты работ в том числе от одного получателя другому для организации рабочей нагрузки. Кроме этого в планировщике команд можете создать новые пакеты работ или добавлять существующие!" diff --git a/modules/two_factor_authentication/config/locales/crowdin/ru.yml b/modules/two_factor_authentication/config/locales/crowdin/ru.yml index f395563d5d..9b3eb782cc 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ru.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ru.yml @@ -72,7 +72,7 @@ ru: text_2fa_enabled: 'При каждом входе у пользователя будет запрашиваться токен ОП (одноразового пароля) с его устройства 2ФА по умолчанию.' text_2fa_disabled: "Пользователь не настроил устройство 2ФА на своей странице «Моя учетная запись»" upsale: - title: 'Two-factor authentication' + title: 'Двухфакторная аутентификация' description: 'Усильте ваш механизм внутренней или внешней аутентификации, используя второй фактор.' backup_codes: none_found: Для этой учетной записи резервных кодов нет. From 3e5f0eb935aeaebefd392d9306719d85631ed4dc Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 1 Feb 2022 03:12:12 +0000 Subject: [PATCH 041/118] update locales from crowdin [ci skip] --- config/locales/crowdin/it.yml | 6 +++--- config/locales/crowdin/ru.yml | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index a2e14e5971..45ee13c760 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -314,7 +314,7 @@ it: other: '%{count} macro-attività discendenti' bulk: could_not_be_saved: "Le seguenti macro-attività non possono essere salvate:" - none_could_be_saved: "None of the %{total} work packages could be updated." + none_could_be_saved: "Nessuna delle %{total} macro-attività può essere aggiornata." x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." selected_because_descendants: "While %{selected} work packages where selected, in total %{total} work packages are affected which includes descendants." descendant: "descendant of selected" @@ -2340,9 +2340,9 @@ it: setting_apiv3_cors_origins: "Origini di condivisione CORS (Cross-Origin Resource Sharing) API V3 consentite" setting_apiv3_cors_origins_text_html: > Se CORS è abilitato, queste sono le origini che possono accedere alle API di OpenProject.
Controlla la Documentazione sull'intestazione dell'origine per sapere come specificare i valori previsti. - setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_size: "Dimensione massima della pagina API" setting_apiv3_max_page_instructions_html: > - Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. + Imposta la dimensione massima della pagina con cui l'API risponderà. Non sarà possibile eseguire richieste API che restituiscono più valori su una singola pagina.
Attenzione: Si prega di modificare questo valore solo se sei sicuro del motivo per cui ne hai bisogno. La definizione di un valore elevato comporterà un impatto significativo sulle prestazioni, mentre un valore inferiore alle opzioni per pagina causerà errori nelle viste paginate. setting_apiv3_docs: "Documentazione" setting_apiv3_docs_enabled: "Abilita pagina di documenti" setting_apiv3_docs_enabled_instructions_html: > diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 9e2068423d..89e3448ee5 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -2377,9 +2377,10 @@ ru: setting_apiv3_cors_origins: "Разделение ресурсов (CORS) разрешено в API V3" setting_apiv3_cors_origins_text_html: > Если CORS включен, то это источники, которым разрешен доступ к OpenProject API.
Пожалуйста, проверьте документацию по происхождению о том, как указывать ожидаемые значения. - setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_size: "Максимальный размер страницы API" setting_apiv3_max_page_instructions_html: > - Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. + Установите максимальный размер страницы, который будет отвечать API. Невозможно выполнить API-запросы, возвращающие много значений на одной странице.
Предупреждение: Пожалуйста, измените это значение, только если вы уверены, зачем вам это нужно. Установка большого значения приведет к значительному снижению производительности, в то время как значение ниже, чем для параметров страницы, вызовет ошибки в представлениях с разбивкой на страницы. + setting_apiv3_docs: "Документация" setting_apiv3_docs_enabled: "Включить страницу с документами" setting_apiv3_docs_enabled_instructions_html: > From 3c36c7dec84af28f72470cb4495efb08f9f0bdba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 05:29:06 +0000 Subject: [PATCH 042/118] Bump sentry-ruby from 5.0.1 to 5.0.2 Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 5.0.1 to 5.0.2. - [Release notes](https://github.com/getsentry/sentry-ruby/releases) - [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-ruby/compare/5.0.1...5.0.2) --- updated-dependencies: - dependency-name: sentry-ruby dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b7b9b4f411..4b59c0662c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -881,10 +881,10 @@ GEM sentry-rails (5.0.1) railties (>= 5.0) sentry-ruby-core (~> 5.0.1) - sentry-ruby (5.0.1) + sentry-ruby (5.0.2) concurrent-ruby (~> 1.0, >= 1.0.2) - sentry-ruby-core (= 5.0.1) - sentry-ruby-core (5.0.1) + sentry-ruby-core (= 5.0.2) + sentry-ruby-core (5.0.2) concurrent-ruby shoulda-context (2.0.0) shoulda-matchers (5.1.0) From 9d175f9a90f01f286029731556fb5dca889b87e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Tue, 1 Feb 2022 10:13:43 +0100 Subject: [PATCH 043/118] Pass -1 pageSize to backend in template selection --- .../projects/components/new-project/new-project.component.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/features/projects/components/new-project/new-project.component.ts b/frontend/src/app/features/projects/components/new-project/new-project.component.ts index 0cb1c2645f..9cfd8c2416 100644 --- a/frontend/src/app/features/projects/components/new-project/new-project.component.ts +++ b/frontend/src/app/features/projects/components/new-project/new-project.component.ts @@ -54,7 +54,10 @@ export class NewProjectComponent extends UntilDestroyedMixin implements OnInit { this .apiV3Service .projects - .filtered(this.copyableTemplateFilter) + .filtered( + this.copyableTemplateFilter, + { pageSize: '-1' }, + ) .get() .pipe( map((response) => response.elements.map((el:HalResource) => ({ href: el.href, name: el.name }))), From bc6ec395716ab3fa3030d9f6cfd96e8cc18e2317 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Tue, 1 Feb 2022 11:26:36 +0100 Subject: [PATCH 044/118] add cbliard in the admins list for pullpreview --- .github/workflows/pullpreview.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pullpreview.yml b/.github/workflows/pullpreview.yml index c94de55fdf..4a92b6f952 100644 --- a/.github/workflows/pullpreview.yml +++ b/.github/workflows/pullpreview.yml @@ -28,7 +28,7 @@ jobs: cp ./docker/prod/Dockerfile ./Dockerfile - uses: pullpreview/action@v5 with: - admins: crohr,HDinger,machisuji,oliverguenther,ulferts,wielinde,b12f + admins: crohr,HDinger,machisuji,oliverguenther,ulferts,wielinde,b12f,cbliard always_on: dev compose_files: docker-compose.pullpreview.yml instance_type: medium_2_0 From d9bf8a5a6879d00f221c5c5197fe37b0aad6d70d Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Thu, 27 Jan 2022 12:21:14 +0100 Subject: [PATCH 045/118] Reduce width of resource column --- .../team-planner/planner/team-planner.component.html | 2 +- .../team-planner/planner/team-planner.component.ts | 2 +- frontend/src/global_styles/content/_principal.sass | 3 +++ .../features/team_planner_add_existing_work_packages_spec.rb | 4 ++-- .../spec/features/team_planner_error_handling_spec.rb | 2 +- .../spec/features/team_planner_user_interaction_spec.rb | 2 +- modules/team_planner/spec/support/pages/team_planner.rb | 2 +- 7 files changed, 10 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html index 16bb29959a..747082c791 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html @@ -35,7 +35,7 @@ > - +
+
+ + + +
+ + +
+ diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass index ac88b4d524..ccd9f32617 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass @@ -28,6 +28,9 @@ &_checked background-color: var(--table-row-highlighting-color) + &_disabled + opacity: 0.6 + &_horizontal height: 100% @@ -113,10 +116,20 @@ left: 0 border-radius: 2px 2px 0 0 - &--inline-buttons + &--card-actions + display: flex position: absolute top: 9px right: 0 + + &--card-action + background: white + z-index: 2 + + .op-wp-single-card_checked & + background-color: var(--table-row-highlighting-color) + + &--inline-buttons opacity: 0 background: white diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index ea6c68e20a..ef27e7e36e 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -48,6 +48,8 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen @Input() public additionalClasses = ''; + @Input() public disabledInfo = ''; + @Output() onRemove = new EventEmitter(); @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); @@ -111,6 +113,7 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen [`${base}_draggable`]: this.draggable, [`${base}_new`]: isNewResource(this.workPackage), [`${base}_shrink`]: this.shrinkOnMobile, + [`${base}_disabled`]: this.disabledInfo.length > 0, // eslint-disable-next-line @typescript-eslint/restrict-template-expressions [`${base}-${this.workPackage.id}`]: !!this.workPackage.id, [`${base}_${this.orientation}`]: true, diff --git a/modules/team_planner/config/locales/js-en.yml b/modules/team_planner/config/locales/js-en.yml index 6d6633e561..42eb384bb4 100644 --- a/modules/team_planner/config/locales/js-en.yml +++ b/modules/team_planner/config/locales/js-en.yml @@ -15,3 +15,7 @@ en: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' From d96d47d4fba9f9e57be316b5b59a5b82feca183f Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sat, 5 Feb 2022 03:09:50 +0000 Subject: [PATCH 088/118] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lol.yml | 1906 ++++++++++++++--------------- 1 file changed, 953 insertions(+), 953 deletions(-) diff --git a/config/locales/crowdin/js-lol.yml b/config/locales/crowdin/js-lol.yml index aeb33141bf..2c0110f684 100644 --- a/config/locales/crowdin/js-lol.yml +++ b/config/locales/crowdin/js-lol.yml @@ -22,1140 +22,1140 @@ lol: js: ajax: - hide: "crwdns701597:0crwdne701597:0" - loading: "crwdns701599:0crwdne701599:0" + hide: "crwdns704120:0crwdne704120:0" + loading: "crwdns704122:0crwdne704122:0" attachments: draggable_hint: | - crwdns701601:0crwdne701601:0 + crwdns704124:0crwdne704124:0 autocomplete_select: placeholder: - multi: "crwdns701603:0%{name}crwdne701603:0" - single: "crwdns701605:0%{name}crwdne701605:0" - remove: "crwdns701607:0%{name}crwdne701607:0" - active: "crwdns701609:0%{label}crwdnd701609:0%{name}crwdne701609:0" + multi: "crwdns704126:0%{name}crwdne704126:0" + single: "crwdns704128:0%{name}crwdne704128:0" + remove: "crwdns704130:0%{name}crwdne704130:0" + active: "crwdns704132:0%{label}crwdnd704132:0%{name}crwdne704132:0" backup: - attachments_disabled: crwdns701611:0crwdne701611:0 + attachments_disabled: crwdns704134:0crwdne704134:0 info: > - crwdns701613:0crwdne701613:0 + crwdns704136:0crwdne704136:0 note: > - crwdns701615:0crwdne701615:0 - last_backup: crwdns701617:0crwdne701617:0 - last_backup_from: crwdns701619:0crwdne701619:0 - title: crwdns701621:0crwdne701621:0 - options: crwdns701623:0crwdne701623:0 - include_attachments: crwdns701625:0crwdne701625:0 - download_backup: crwdns701627:0crwdne701627:0 - request_backup: crwdns701629:0crwdne701629:0 - close_popup_title: "crwdns701631:0crwdne701631:0" - close_filter_title: "crwdns701633:0crwdne701633:0" - close_form_title: "crwdns701635:0crwdne701635:0" - button_add_watcher: "crwdns701637:0crwdne701637:0" - button_add: "crwdns701639:0crwdne701639:0" - button_back: "crwdns701641:0crwdne701641:0" - button_back_to_list_view: "crwdns701643:0crwdne701643:0" - button_cancel: "crwdns701645:0crwdne701645:0" - button_close: "crwdns701647:0crwdne701647:0" - button_change_project: "crwdns701649:0crwdne701649:0" - button_check_all: "crwdns701651:0crwdne701651:0" - button_configure-form: "crwdns701653:0crwdne701653:0" - button_confirm: "crwdns701655:0crwdne701655:0" - button_continue: "crwdns701657:0crwdne701657:0" - button_copy: "crwdns701659:0crwdne701659:0" - button_custom-fields: "crwdns701661:0crwdne701661:0" - button_delete: "crwdns701663:0crwdne701663:0" - button_delete_watcher: "crwdns701665:0crwdne701665:0" - button_details_view: "crwdns701667:0crwdne701667:0" - button_duplicate: "crwdns701669:0crwdne701669:0" - button_edit: "crwdns701671:0crwdne701671:0" - button_filter: "crwdns701673:0crwdne701673:0" - button_collapse_all: "crwdns701675:0crwdne701675:0" - button_expand_all: "crwdns701677:0crwdne701677:0" - button_advanced_filter: "crwdns701679:0crwdne701679:0" - button_list_view: "crwdns701681:0crwdne701681:0" - button_show_view: "crwdns701683:0crwdne701683:0" - button_log_time: "crwdns701685:0crwdne701685:0" - button_more: "crwdns701687:0crwdne701687:0" - button_open_details: "crwdns701689:0crwdne701689:0" - button_close_details: "crwdns701691:0crwdne701691:0" - button_open_fullscreen: "crwdns701693:0crwdne701693:0" - button_show_cards: "crwdns701695:0crwdne701695:0" - button_show_list: "crwdns701697:0crwdne701697:0" - button_quote: "crwdns701699:0crwdne701699:0" - button_save: "crwdns701701:0crwdne701701:0" - button_settings: "crwdns701703:0crwdne701703:0" - button_uncheck_all: "crwdns701705:0crwdne701705:0" - button_update: "crwdns701707:0crwdne701707:0" - button_export-pdf: "crwdns701709:0crwdne701709:0" - button_export-atom: "crwdns701711:0crwdne701711:0" - button_create: "crwdns701713:0crwdne701713:0" + crwdns704138:0crwdne704138:0 + last_backup: crwdns704140:0crwdne704140:0 + last_backup_from: crwdns704142:0crwdne704142:0 + title: crwdns704144:0crwdne704144:0 + options: crwdns704146:0crwdne704146:0 + include_attachments: crwdns704148:0crwdne704148:0 + download_backup: crwdns704150:0crwdne704150:0 + request_backup: crwdns704152:0crwdne704152:0 + close_popup_title: "crwdns704154:0crwdne704154:0" + close_filter_title: "crwdns704156:0crwdne704156:0" + close_form_title: "crwdns704158:0crwdne704158:0" + button_add_watcher: "crwdns704160:0crwdne704160:0" + button_add: "crwdns704162:0crwdne704162:0" + button_back: "crwdns704164:0crwdne704164:0" + button_back_to_list_view: "crwdns704166:0crwdne704166:0" + button_cancel: "crwdns704168:0crwdne704168:0" + button_close: "crwdns704170:0crwdne704170:0" + button_change_project: "crwdns704172:0crwdne704172:0" + button_check_all: "crwdns704174:0crwdne704174:0" + button_configure-form: "crwdns704176:0crwdne704176:0" + button_confirm: "crwdns704178:0crwdne704178:0" + button_continue: "crwdns704180:0crwdne704180:0" + button_copy: "crwdns704182:0crwdne704182:0" + button_custom-fields: "crwdns704184:0crwdne704184:0" + button_delete: "crwdns704186:0crwdne704186:0" + button_delete_watcher: "crwdns704188:0crwdne704188:0" + button_details_view: "crwdns704190:0crwdne704190:0" + button_duplicate: "crwdns704192:0crwdne704192:0" + button_edit: "crwdns704194:0crwdne704194:0" + button_filter: "crwdns704196:0crwdne704196:0" + button_collapse_all: "crwdns704198:0crwdne704198:0" + button_expand_all: "crwdns704200:0crwdne704200:0" + button_advanced_filter: "crwdns704202:0crwdne704202:0" + button_list_view: "crwdns704204:0crwdne704204:0" + button_show_view: "crwdns704206:0crwdne704206:0" + button_log_time: "crwdns704208:0crwdne704208:0" + button_more: "crwdns704210:0crwdne704210:0" + button_open_details: "crwdns704212:0crwdne704212:0" + button_close_details: "crwdns704214:0crwdne704214:0" + button_open_fullscreen: "crwdns704216:0crwdne704216:0" + button_show_cards: "crwdns704218:0crwdne704218:0" + button_show_list: "crwdns704220:0crwdne704220:0" + button_quote: "crwdns704222:0crwdne704222:0" + button_save: "crwdns704224:0crwdne704224:0" + button_settings: "crwdns704226:0crwdne704226:0" + button_uncheck_all: "crwdns704228:0crwdne704228:0" + button_update: "crwdns704230:0crwdne704230:0" + button_export-pdf: "crwdns704232:0crwdne704232:0" + button_export-atom: "crwdns704234:0crwdne704234:0" + button_create: "crwdns704236:0crwdne704236:0" card: - add_new: 'crwdns701715:0crwdne701715:0' + add_new: 'crwdns704238:0crwdne704238:0' highlighting: - inline: 'crwdns701717:0crwdne701717:0' - entire_card_by: 'crwdns701719:0crwdne701719:0' - remove_from_list: 'crwdns701721:0crwdne701721:0' - caption_rate_history: "crwdns701723:0crwdne701723:0" + inline: 'crwdns704240:0crwdne704240:0' + entire_card_by: 'crwdns704242:0crwdne704242:0' + remove_from_list: 'crwdns704244:0crwdne704244:0' + caption_rate_history: "crwdns704246:0crwdne704246:0" clipboard: - browser_error: "crwdns701725:0crwdne701725:0" - copied_successful: "crwdns701727:0crwdne701727:0" + browser_error: "crwdns704248:0crwdne704248:0" + copied_successful: "crwdns704250:0crwdne704250:0" chart: - type: 'crwdns701729:0crwdne701729:0' - axis_criteria: 'crwdns701731:0crwdne701731:0' - modal_title: 'crwdns701733:0crwdne701733:0' + type: 'crwdns704252:0crwdne704252:0' + axis_criteria: 'crwdns704254:0crwdne704254:0' + modal_title: 'crwdns704256:0crwdne704256:0' types: - line: 'crwdns701735:0crwdne701735:0' - horizontal_bar: 'crwdns701737:0crwdne701737:0' - bar: 'crwdns701739:0crwdne701739:0' - pie: 'crwdns701741:0crwdne701741:0' - doughnut: 'crwdns701743:0crwdne701743:0' - radar: 'crwdns701745:0crwdne701745:0' - polar_area: 'crwdns701747:0crwdne701747:0' + line: 'crwdns704258:0crwdne704258:0' + horizontal_bar: 'crwdns704260:0crwdne704260:0' + bar: 'crwdns704262:0crwdne704262:0' + pie: 'crwdns704264:0crwdne704264:0' + doughnut: 'crwdns704266:0crwdne704266:0' + radar: 'crwdns704268:0crwdne704268:0' + polar_area: 'crwdns704270:0crwdne704270:0' tabs: - graph_settings: 'crwdns701749:0crwdne701749:0' - dataset: 'crwdns701751:0%{number}crwdne701751:0' + graph_settings: 'crwdns704272:0crwdne704272:0' + dataset: 'crwdns704274:0%{number}crwdne704274:0' errors: - could_not_load: 'crwdns701753:0crwdne701753:0' - description_available_columns: "crwdns701755:0crwdne701755:0" - description_current_position: "crwdns701757:0crwdne701757:0" - description_select_work_package: "crwdns701759:0%{id}crwdne701759:0" - description_selected_columns: "crwdns701761:0crwdne701761:0" - description_subwork_package: "crwdns701763:0%{id}crwdne701763:0" + could_not_load: 'crwdns704276:0crwdne704276:0' + description_available_columns: "crwdns704278:0crwdne704278:0" + description_current_position: "crwdns704280:0crwdne704280:0" + description_select_work_package: "crwdns704282:0%{id}crwdne704282:0" + description_selected_columns: "crwdns704284:0crwdne704284:0" + description_subwork_package: "crwdns704286:0%{id}crwdne704286:0" editor: - preview: 'crwdns701765:0crwdne701765:0' - source_code: 'crwdns701767:0crwdne701767:0' - error_saving_failed: 'crwdns701769:0%{error}crwdne701769:0' - ckeditor_error: 'crwdns701771:0crwdne701771:0' + preview: 'crwdns704288:0crwdne704288:0' + source_code: 'crwdns704290:0crwdne704290:0' + error_saving_failed: 'crwdns704292:0%{error}crwdne704292:0' + ckeditor_error: 'crwdns704294:0crwdne704294:0' mode: - manual: 'crwdns701773:0crwdne701773:0' - wysiwyg: 'crwdns701775:0crwdne701775:0' + manual: 'crwdns704296:0crwdne704296:0' + wysiwyg: 'crwdns704298:0crwdne704298:0' macro: - error: 'crwdns701777:0%{message}crwdne701777:0' + error: 'crwdns704300:0%{message}crwdne704300:0' attribute_reference: - macro_help_tooltip: 'crwdns701779:0crwdne701779:0' - not_found: 'crwdns701781:0crwdne701781:0' - invalid_attribute: "crwdns701783:0%{name}crwdne701783:0" + macro_help_tooltip: 'crwdns704302:0crwdne704302:0' + not_found: 'crwdns704304:0crwdne704304:0' + invalid_attribute: "crwdns704306:0%{name}crwdne704306:0" child_pages: - button: 'crwdns701785:0crwdne701785:0' - include_parent: 'crwdns701787:0crwdne701787:0' - text: 'crwdns701789:0[Placeholder]crwdne701789:0' - page: 'crwdns701791:0crwdne701791:0' - this_page: 'crwdns701793:0crwdne701793:0' + button: 'crwdns704308:0crwdne704308:0' + include_parent: 'crwdns704310:0crwdne704310:0' + text: 'crwdns704312:0[Placeholder]crwdne704312:0' + page: 'crwdns704314:0crwdne704314:0' + this_page: 'crwdns704316:0crwdne704316:0' hint: | - crwdns701795:0crwdne701795:0 + crwdns704318:0crwdne704318:0 code_block: - button: 'crwdns701797:0crwdne701797:0' - title: 'crwdns701799:0crwdne701799:0' - language: 'crwdns701801:0crwdne701801:0' - language_hint: 'crwdns701803:0crwdne701803:0' + button: 'crwdns704320:0crwdne704320:0' + title: 'crwdns704322:0crwdne704322:0' + language: 'crwdns704324:0crwdne704324:0' + language_hint: 'crwdns704326:0crwdne704326:0' dropdown: - macros: 'crwdns701805:0crwdne701805:0' - chose_macro: 'crwdns701807:0crwdne701807:0' - toc: 'crwdns701809:0crwdne701809:0' - toolbar_help: 'crwdns701811:0crwdne701811:0' + macros: 'crwdns704328:0crwdne704328:0' + chose_macro: 'crwdns704330:0crwdne704330:0' + toc: 'crwdns704332:0crwdne704332:0' + toolbar_help: 'crwdns704334:0crwdne704334:0' wiki_page_include: - button: 'crwdns701813:0crwdne701813:0' - text: 'crwdns701815:0[Placeholder]crwdne701815:0' - page: 'crwdns701817:0crwdne701817:0' - not_set: 'crwdns701819:0crwdne701819:0' + button: 'crwdns704336:0crwdne704336:0' + text: 'crwdns704338:0[Placeholder]crwdne704338:0' + page: 'crwdns704340:0crwdne704340:0' + not_set: 'crwdns704342:0crwdne704342:0' hint: | - crwdns701821:0crwdne701821:0 + crwdns704344:0crwdne704344:0 work_package_button: - button: 'crwdns701823:0crwdne701823:0' - type: 'crwdns701825:0crwdne701825:0' - button_style: 'crwdns701827:0crwdne701827:0' - button_style_hint: 'crwdns701829:0crwdne701829:0' - without_type: 'crwdns701831:0crwdne701831:0' - with_type: 'crwdns701833:0%{typename}crwdne701833:0' + button: 'crwdns704346:0crwdne704346:0' + type: 'crwdns704348:0crwdne704348:0' + button_style: 'crwdns704350:0crwdne704350:0' + button_style_hint: 'crwdns704352:0crwdne704352:0' + without_type: 'crwdns704354:0crwdne704354:0' + with_type: 'crwdns704356:0%{typename}crwdne704356:0' embedded_table: - button: 'crwdns701835:0crwdne701835:0' - text: 'crwdns701837:0[Placeholder]crwdne701837:0' + button: 'crwdns704358:0crwdne704358:0' + text: 'crwdns704360:0[Placeholder]crwdne704360:0' embedded_calendar: - text: 'crwdns701839:0[Placeholder]crwdne701839:0' + text: 'crwdns704362:0[Placeholder]crwdne704362:0' admin: type_form: - custom_field: 'crwdns701841:0crwdne701841:0' - inactive: 'crwdns701843:0crwdne701843:0' - drag_to_activate: "crwdns701845:0crwdne701845:0" - add_group: "crwdns701847:0crwdne701847:0" - add_table: "crwdns701849:0crwdne701849:0" - edit_query: 'crwdns701851:0crwdne701851:0' - new_group: 'crwdns701853:0crwdne701853:0' - reset_to_defaults: 'crwdns701855:0crwdne701855:0' + custom_field: 'crwdns704364:0crwdne704364:0' + inactive: 'crwdns704366:0crwdne704366:0' + drag_to_activate: "crwdns704368:0crwdne704368:0" + add_group: "crwdns704370:0crwdne704370:0" + add_table: "crwdns704372:0crwdne704372:0" + edit_query: 'crwdns704374:0crwdne704374:0' + new_group: 'crwdns704376:0crwdne704376:0' + reset_to_defaults: 'crwdns704378:0crwdne704378:0' enterprise: - text_reprieve_days_left: "crwdns701857:0%{days}crwdne701857:0" - text_expired: "crwdns701859:0crwdne701859:0" + text_reprieve_days_left: "crwdns704380:0%{days}crwdne704380:0" + text_expired: "crwdns704382:0crwdne704382:0" trial: - confirmation: "crwdns701861:0crwdne701861:0" + confirmation: "crwdns704384:0crwdne704384:0" confirmation_info: > - crwdns701863:0%{date}crwdnd701863:0%{email}crwdne701863:0 + crwdns704386:0%{date}crwdnd704386:0%{email}crwdne704386:0 form: general_consent: > - crwdns701865:0%{link_terms}crwdnd701865:0%{link_privacy}crwdne701865:0 - invalid_email: "crwdns701867:0crwdne701867:0" - label_company: "crwdns701869:0crwdne701869:0" - label_first_name: "crwdns701871:0crwdne701871:0" - label_last_name: "crwdns701873:0crwdne701873:0" - label_domain: "crwdns701875:0crwdne701875:0" - label_subscriber: "crwdns701877:0crwdne701877:0" - label_maximum_users: "crwdns701879:0crwdne701879:0" - label_starts_at: "crwdns701881:0crwdne701881:0" - label_expires_at: "crwdns701883:0crwdne701883:0" - receive_newsletter: crwdns701885:0%{link}crwdne701885:0 - taken_domain: crwdns701887:0crwdne701887:0 - taken_email: crwdns701889:0crwdne701889:0 - email_not_received: "crwdns701891:0crwdne701891:0" - try_another_email: "crwdns701893:0crwdne701893:0" - next_steps: "crwdns701895:0crwdne701895:0" - resend_link: "crwdns701897:0crwdne701897:0" - resend_success: "crwdns701899:0crwdne701899:0" - resend_warning: "crwdns701901:0crwdne701901:0" - session_timeout: "crwdns701903:0crwdne701903:0" - status_label: "crwdns701905:0crwdne701905:0" - status_confirmed: "crwdns701907:0crwdne701907:0" - status_waiting: "crwdns701909:0crwdne701909:0" - test_ee: "crwdns701911:0crwdne701911:0" - quick_overview: "crwdns701913:0crwdne701913:0" + crwdns704388:0%{link_terms}crwdnd704388:0%{link_privacy}crwdne704388:0 + invalid_email: "crwdns704390:0crwdne704390:0" + label_company: "crwdns704392:0crwdne704392:0" + label_first_name: "crwdns704394:0crwdne704394:0" + label_last_name: "crwdns704396:0crwdne704396:0" + label_domain: "crwdns704398:0crwdne704398:0" + label_subscriber: "crwdns704400:0crwdne704400:0" + label_maximum_users: "crwdns704402:0crwdne704402:0" + label_starts_at: "crwdns704404:0crwdne704404:0" + label_expires_at: "crwdns704406:0crwdne704406:0" + receive_newsletter: crwdns704408:0%{link}crwdne704408:0 + taken_domain: crwdns704410:0crwdne704410:0 + taken_email: crwdns704412:0crwdne704412:0 + email_not_received: "crwdns704414:0crwdne704414:0" + try_another_email: "crwdns704416:0crwdne704416:0" + next_steps: "crwdns704418:0crwdne704418:0" + resend_link: "crwdns704420:0crwdne704420:0" + resend_success: "crwdns704422:0crwdne704422:0" + resend_warning: "crwdns704424:0crwdne704424:0" + session_timeout: "crwdns704426:0crwdne704426:0" + status_label: "crwdns704428:0crwdne704428:0" + status_confirmed: "crwdns704430:0crwdne704430:0" + status_waiting: "crwdns704432:0crwdne704432:0" + test_ee: "crwdns704434:0crwdne704434:0" + quick_overview: "crwdns704436:0crwdne704436:0" upsale: - become_hero: "crwdns701915:0crwdne701915:0" + become_hero: "crwdns704438:0crwdne704438:0" benefits: - description: "crwdns701917:0crwdne701917:0" - high_security: "crwdns701919:0crwdne701919:0" - high_security_text: "crwdns701921:0crwdne701921:0" - installation: "crwdns701923:0crwdne701923:0" - installation_text: "crwdns701925:0crwdne701925:0" - premium_features: "crwdns701927:0crwdne701927:0" - premium_features_text: "crwdns701929:0crwdne701929:0" - professional_support: "crwdns701931:0crwdne701931:0" - professional_support_text: "crwdns701933:0crwdne701933:0" - button_start_trial: "crwdns701935:0crwdne701935:0" - button_book_now: "crwdns701937:0crwdne701937:0" + description: "crwdns704440:0crwdne704440:0" + high_security: "crwdns704442:0crwdne704442:0" + high_security_text: "crwdns704444:0crwdne704444:0" + installation: "crwdns704446:0crwdne704446:0" + installation_text: "crwdns704448:0crwdne704448:0" + premium_features: "crwdns704450:0crwdne704450:0" + premium_features_text: "crwdns704452:0crwdne704452:0" + professional_support: "crwdns704454:0crwdne704454:0" + professional_support_text: "crwdns704456:0crwdne704456:0" + button_start_trial: "crwdns704458:0crwdne704458:0" + button_book_now: "crwdns704460:0crwdne704460:0" confidence: > - crwdns701939:0crwdne701939:0 - link_quote: "crwdns701941:0crwdne701941:0" + crwdns704462:0crwdne704462:0 + link_quote: "crwdns704464:0crwdne704464:0" text: > - crwdns701943:0crwdne701943:0 - unlimited: "crwdns701945:0crwdne701945:0" - you_contribute: "crwdns701947:0crwdne701947:0" + crwdns704466:0crwdne704466:0 + unlimited: "crwdns704468:0crwdne704468:0" + you_contribute: "crwdns704470:0crwdne704470:0" custom_actions: date: - specific: 'crwdns701949:0crwdne701949:0' - current_date: 'crwdns701951:0crwdne701951:0' + specific: 'crwdns704472:0crwdne704472:0' + current_date: 'crwdns704474:0crwdne704474:0' error: - internal: "crwdns701953:0crwdne701953:0" - cannot_save_changes_with_message: "crwdns701955:0%{error}crwdne701955:0" - query_saving: "crwdns701957:0crwdne701957:0" - embedded_table_loading: "crwdns701959:0%{message}crwdne701959:0" - enumeration_activities: "crwdns701961:0crwdne701961:0" - enumeration_doc_categories: "crwdns701963:0crwdne701963:0" - enumeration_work_package_priorities: "crwdns701965:0crwdne701965:0" + internal: "crwdns704476:0crwdne704476:0" + cannot_save_changes_with_message: "crwdns704478:0%{error}crwdne704478:0" + query_saving: "crwdns704480:0crwdne704480:0" + embedded_table_loading: "crwdns704482:0%{message}crwdne704482:0" + enumeration_activities: "crwdns704484:0crwdne704484:0" + enumeration_doc_categories: "crwdns704486:0crwdne704486:0" + enumeration_work_package_priorities: "crwdns704488:0crwdne704488:0" filter: description: - text_open_filter: "crwdns701967:0crwdne701967:0" - text_close_filter: "crwdns701969:0crwdne701969:0" - noneElement: "crwdns701971:0crwdne701971:0" + text_open_filter: "crwdns704490:0crwdne704490:0" + text_close_filter: "crwdns704492:0crwdne704492:0" + noneElement: "crwdns704494:0crwdne704494:0" time_zone_converted: - two_values: "crwdns701973:0%{from}crwdnd701973:0%{to}crwdne701973:0" - only_start: "crwdns701975:0%{from}crwdne701975:0" - only_end: "crwdns701977:0%{to}crwdne701977:0" - value_spacer: "crwdns701979:0crwdne701979:0" + two_values: "crwdns704496:0%{from}crwdnd704496:0%{to}crwdne704496:0" + only_start: "crwdns704498:0%{from}crwdne704498:0" + only_end: "crwdns704500:0%{to}crwdne704500:0" + value_spacer: "crwdns704502:0crwdne704502:0" sorting: criteria: - one: "crwdns701981:0crwdne701981:0" - two: "crwdns701983:0crwdne701983:0" - three: "crwdns701985:0crwdne701985:0" - upsale_for_more: "crwdns701987:0crwdne701987:0" - upsale_link: 'crwdns701989:0crwdne701989:0' - general_text_no: "crwdns701991:0crwdne701991:0" - general_text_yes: "crwdns701993:0crwdne701993:0" - general_text_No: "crwdns701995:0crwdne701995:0" - general_text_Yes: "crwdns701997:0crwdne701997:0" + one: "crwdns704504:0crwdne704504:0" + two: "crwdns704506:0crwdne704506:0" + three: "crwdns704508:0crwdne704508:0" + upsale_for_more: "crwdns704510:0crwdne704510:0" + upsale_link: 'crwdns704512:0crwdne704512:0' + general_text_no: "crwdns704514:0crwdne704514:0" + general_text_yes: "crwdns704516:0crwdne704516:0" + general_text_No: "crwdns704518:0crwdne704518:0" + general_text_Yes: "crwdns704520:0crwdne704520:0" hal: error: - update_conflict_refresh: "crwdns701999:0crwdne701999:0" - edit_prohibited: "crwdns702001:0%{attribute}crwdne702001:0" + update_conflict_refresh: "crwdns704522:0crwdne704522:0" + edit_prohibited: "crwdns704524:0%{attribute}crwdne704524:0" format: - date: "crwdns702003:0%{attribute}crwdne702003:0" - general: "crwdns702005:0crwdne702005:0" + date: "crwdns704526:0%{attribute}crwdne704526:0" + general: "crwdns704528:0crwdne704528:0" homescreen: blocks: new_features: - text_new_features: "crwdns702007:0crwdne702007:0" - learn_about: "crwdns702009:0crwdne702009:0" + text_new_features: "crwdns704530:0crwdne704530:0" + learn_about: "crwdns704532:0crwdne704532:0" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': standard: - learn_about_link: crwdns702011:0crwdne702011:0 + learn_about_link: crwdns704534:0crwdne704534:0 new_features_html: > - crwdns702013:0%{list_styling_class}crwdne702013:0 + crwdns704536:0%{list_styling_class}crwdne704536:0 bim: - learn_about_link: crwdns702015:0crwdne702015:0 + learn_about_link: crwdns704538:0crwdne704538:0 new_features_html: > - crwdns702017:0%{list_styling_class}crwdne702017:0 - label_activate: "crwdns702019:0crwdne702019:0" - label_add_column_after: "crwdns702021:0crwdne702021:0" - label_add_column_before: "crwdns702023:0crwdne702023:0" - label_add_columns: "crwdns702025:0crwdne702025:0" - label_add_comment: "crwdns702027:0crwdne702027:0" - label_add_comment_title: "crwdns702029:0crwdne702029:0" - label_add_row_after: "crwdns702031:0crwdne702031:0" - label_add_row_before: "crwdns702033:0crwdne702033:0" - label_add_selected_columns: "crwdns702035:0crwdne702035:0" - label_added_by: "crwdns702037:0crwdne702037:0" - label_added_time_by: "crwdns702039:0%{authorLink}crwdnd702039:0%{author}crwdnd702039:0%{age}crwdne702039:0" - label_ago: "crwdns702041:0crwdne702041:0" - label_all: "crwdns702043:0crwdne702043:0" - label_all_work_packages: "crwdns702045:0crwdne702045:0" - label_and: "crwdns702047:0crwdne702047:0" - label_ascending: "crwdns702049:0crwdne702049:0" - label_author: "crwdns702051:0%{user}crwdne702051:0" - label_avatar: "crwdns702053:0crwdne702053:0" - label_between: "crwdns702055:0crwdne702055:0" - label_board: "crwdns702057:0crwdne702057:0" - label_board_locked: "crwdns702059:0crwdne702059:0" - label_board_plural: "crwdns702061:0crwdne702061:0" - label_board_sticky: "crwdns702063:0crwdne702063:0" - label_change: "crwdns702065:0crwdne702065:0" - label_create: "crwdns702067:0crwdne702067:0" - label_create_work_package: "crwdns702069:0crwdne702069:0" - label_created_by: "crwdns702071:0crwdne702071:0" - label_date: "crwdns702073:0crwdne702073:0" - label_date_with_format: "crwdns702075:0%{date_attribute}crwdnd702075:0%{format}crwdne702075:0" - label_deactivate: "crwdns702077:0crwdne702077:0" - label_descending: "crwdns702079:0crwdne702079:0" - label_description: "crwdns702081:0crwdne702081:0" - label_details: "crwdns702083:0crwdne702083:0" - label_display: "crwdns702085:0crwdne702085:0" - label_cancel_comment: "crwdns702087:0crwdne702087:0" - label_closed_work_packages: "crwdns702089:0crwdne702089:0" - label_collapse: "crwdns702091:0crwdne702091:0" - label_collapsed: "crwdns702093:0crwdne702093:0" - label_collapse_all: "crwdns702095:0crwdne702095:0" - label_comment: "crwdns702097:0crwdne702097:0" - label_committed_at: "crwdns702099:0%{committed_revision_link}crwdnd702099:0%{date}crwdne702099:0" - label_committed_link: "crwdns702101:0%{revision_identifier}crwdne702101:0" - label_contains: "crwdns702103:0crwdne702103:0" - label_created_on: "crwdns702105:0crwdne702105:0" - label_edit_comment: "crwdns702107:0crwdne702107:0" - label_edit_status: "crwdns702109:0crwdne702109:0" - label_email: "crwdns702111:0crwdne702111:0" - label_equals: "crwdns702113:0crwdne702113:0" - label_expand: "crwdns702115:0crwdne702115:0" - label_expanded: "crwdns702117:0crwdne702117:0" - label_expand_all: "crwdns702119:0crwdne702119:0" - label_expand_project_menu: "crwdns702121:0crwdne702121:0" - label_export: "crwdns702123:0crwdne702123:0" - label_export_preparing: "crwdns702125:0crwdne702125:0" - label_filename: "crwdns702127:0crwdne702127:0" - label_filesize: "crwdns702129:0crwdne702129:0" - label_general: "crwdns702131:0crwdne702131:0" - label_global_roles: "crwdns702133:0crwdne702133:0" - label_greater_or_equal: "crwdns702135:0crwdne702135:0" - label_group: 'crwdns702137:0crwdne702137:0' - label_group_by: "crwdns702139:0crwdne702139:0" - label_group_plural: "crwdns702141:0crwdne702141:0" - label_hide_attributes: "crwdns702143:0crwdne702143:0" - label_hide_column: "crwdns702145:0crwdne702145:0" - label_hide_project_menu: "crwdns702147:0crwdne702147:0" - label_in: "crwdns702149:0crwdne702149:0" - label_in_less_than: "crwdns702151:0crwdne702151:0" - label_in_more_than: "crwdns702153:0crwdne702153:0" - label_incoming_emails: "crwdns702155:0crwdne702155:0" - label_information_plural: "crwdns702157:0crwdne702157:0" - label_import: "crwdns702159:0crwdne702159:0" - label_latest_activity: "crwdns702161:0crwdne702161:0" - label_last_updated_on: "crwdns702163:0crwdne702163:0" - label_learn_more_link: "crwdns702165:0crwdne702165:0" - label_less_or_equal: "crwdns702167:0crwdne702167:0" - label_less_than_ago: "crwdns702169:0crwdne702169:0" - label_loading: "crwdns702171:0crwdne702171:0" - label_mail_notification: "crwdns702173:0crwdne702173:0" - label_me: "crwdns702175:0crwdne702175:0" - label_meeting_agenda: "crwdns702177:0crwdne702177:0" - label_meeting_minutes: "crwdns702179:0crwdne702179:0" - label_menu_collapse: "crwdns702181:0crwdne702181:0" - label_menu_expand: "crwdns702183:0crwdne702183:0" - label_more_than_ago: "crwdns702185:0crwdne702185:0" - label_next: "crwdns702187:0crwdne702187:0" - label_no_color: "crwdns702189:0crwdne702189:0" - label_no_data: "crwdns702191:0crwdne702191:0" - label_no_due_date: "crwdns702193:0crwdne702193:0" - label_no_start_date: "crwdns702195:0crwdne702195:0" - label_no_value: "crwdns702197:0crwdne702197:0" - label_none: "crwdns702199:0crwdne702199:0" - label_not_contains: "crwdns702201:0crwdne702201:0" - label_not_equals: "crwdns702203:0crwdne702203:0" - label_on: "crwdns702205:0crwdne702205:0" - label_open_menu: "crwdns702207:0crwdne702207:0" - label_open_context_menu: "crwdns702209:0crwdne702209:0" - label_open_work_packages: "crwdns702211:0crwdne702211:0" - label_password: "crwdns702213:0crwdne702213:0" - label_previous: "crwdns702215:0crwdne702215:0" - label_per_page: "crwdns702217:0crwdne702217:0" - label_please_wait: "crwdns702219:0crwdne702219:0" - label_project_plural: "crwdns702221:0crwdne702221:0" - label_visibility_settings: "crwdns702223:0crwdne702223:0" - label_quote_comment: "crwdns702225:0crwdne702225:0" - label_recent: "crwdns702227:0crwdne702227:0" - label_reset: "crwdns702229:0crwdne702229:0" - label_remove: "crwdns702231:0crwdne702231:0" - label_remove_column: "crwdns702233:0crwdne702233:0" - label_remove_columns: "crwdns702235:0crwdne702235:0" - label_remove_row: "crwdns702237:0crwdne702237:0" - label_report: "crwdns702239:0crwdne702239:0" - label_repository_plural: "crwdns702241:0crwdne702241:0" - label_save_as: "crwdns702243:0crwdne702243:0" - label_select_watcher: "crwdns702245:0crwdne702245:0" - label_selected_filter_list: "crwdns702247:0crwdne702247:0" - label_show_attributes: "crwdns702249:0crwdne702249:0" - label_show_in_menu: "crwdns702251:0crwdne702251:0" - label_sort_by: "crwdns702253:0crwdne702253:0" - label_sorted_by: "crwdns702255:0crwdne702255:0" - label_sort_higher: "crwdns702257:0crwdne702257:0" - label_sort_lower: "crwdns702259:0crwdne702259:0" - label_sorting: "crwdns702261:0crwdne702261:0" - label_spent_time: "crwdns702263:0crwdne702263:0" - label_star_query: "crwdns702265:0crwdne702265:0" - label_press_enter_to_save: "crwdns702267:0crwdne702267:0" - label_public_query: "crwdns702269:0crwdne702269:0" - label_sum: "crwdns702271:0crwdne702271:0" - label_sum_for: "crwdns702273:0crwdne702273:0" - label_total_sum: "crwdns702275:0crwdne702275:0" - label_subject: "crwdns702277:0crwdne702277:0" - label_this_week: "crwdns702279:0crwdne702279:0" - label_today: "crwdns702281:0crwdne702281:0" - label_time_entry_plural: "crwdns702283:0crwdne702283:0" - label_up: "crwdns702285:0crwdne702285:0" - label_user_plural: "crwdns702287:0crwdne702287:0" - label_activity_show_only_comments: "crwdns702289:0crwdne702289:0" - label_activity_show_all: "crwdns702291:0crwdne702291:0" - label_total_progress: "crwdns702293:0%{percent}crwdne702293:0" - label_total_amount: "crwdns702295:0%{amount}crwdne702295:0" - label_updated_on: "crwdns702297:0crwdne702297:0" - label_value_derived_from_children: "crwdns702299:0crwdne702299:0" - label_children_derived_duration: "crwdns702301:0crwdne702301:0" - label_warning: "crwdns702303:0crwdne702303:0" - label_work_package: "crwdns702305:0crwdne702305:0" - label_work_package_parent: "crwdns702307:0crwdne702307:0" - label_work_package_plural: "crwdns702309:0crwdne702309:0" - label_watch: "crwdns702311:0crwdne702311:0" - label_watch_work_package: "crwdns702313:0crwdne702313:0" - label_watcher_added_successfully: "crwdns702315:0crwdne702315:0" - label_watcher_deleted_successfully: "crwdns702317:0crwdne702317:0" - label_work_package_details_you_are_here: "crwdns702319:0%{tab}crwdnd702319:0%{type}crwdnd702319:0%{subject}crwdne702319:0" - label_unwatch: "crwdns702321:0crwdne702321:0" - label_unwatch_work_package: "crwdns702323:0crwdne702323:0" - label_uploaded_by: "crwdns702325:0crwdne702325:0" - label_default_queries: "crwdns702327:0crwdne702327:0" - label_starred_queries: "crwdns702329:0crwdne702329:0" - label_global_queries: "crwdns702331:0crwdne702331:0" - label_custom_queries: "crwdns702333:0crwdne702333:0" - label_create_new_query: "crwdns702335:0crwdne702335:0" - label_columns: "crwdns702337:0crwdne702337:0" - label_attachments: crwdns702339:0crwdne702339:0 - label_drop_files: crwdns702341:0crwdne702341:0 - label_drop_files_hint: crwdns702343:0crwdne702343:0 - label_drop_folders_hint: crwdns702345:0crwdne702345:0 - label_add_attachments: "crwdns702347:0crwdne702347:0" - label_formattable_attachment_hint: "crwdns702349:0crwdne702349:0" - label_remove_file: "crwdns702351:0%{fileName}crwdne702351:0" - label_remove_watcher: "crwdns702353:0%{name}crwdne702353:0" - label_remove_all_files: crwdns702355:0crwdne702355:0 - label_add_description: "crwdns702357:0%{file}crwdne702357:0" - label_upload_notification: "crwdns702359:0crwdne702359:0" - label_work_package_upload_notification: "crwdns702361:0%{id}crwdnd702361:0%{subject}crwdne702361:0" - label_wp_id_added_by: "crwdns702363:0%{id}crwdnd702363:0%{author}crwdne702363:0" - label_files_to_upload: "crwdns702365:0crwdne702365:0" - label_rejected_files: "crwdns702367:0crwdne702367:0" - label_rejected_files_reason: "crwdns702369:0%{maximumFilesize}crwdne702369:0" - label_wait: "crwdns702371:0crwdne702371:0" - label_upload_counter: "crwdns702373:0%{done}crwdnd702373:0%{count}crwdne702373:0" - label_validation_error: "crwdns702375:0crwdne702375:0" - label_version_plural: "crwdns702377:0crwdne702377:0" - label_view_has_changed: "crwdns702379:0crwdne702379:0" + crwdns704540:0%{list_styling_class}crwdne704540:0 + label_activate: "crwdns704542:0crwdne704542:0" + label_add_column_after: "crwdns704544:0crwdne704544:0" + label_add_column_before: "crwdns704546:0crwdne704546:0" + label_add_columns: "crwdns704548:0crwdne704548:0" + label_add_comment: "crwdns704550:0crwdne704550:0" + label_add_comment_title: "crwdns704552:0crwdne704552:0" + label_add_row_after: "crwdns704554:0crwdne704554:0" + label_add_row_before: "crwdns704556:0crwdne704556:0" + label_add_selected_columns: "crwdns704558:0crwdne704558:0" + label_added_by: "crwdns704560:0crwdne704560:0" + label_added_time_by: "crwdns704562:0%{authorLink}crwdnd704562:0%{author}crwdnd704562:0%{age}crwdne704562:0" + label_ago: "crwdns704564:0crwdne704564:0" + label_all: "crwdns704566:0crwdne704566:0" + label_all_work_packages: "crwdns704568:0crwdne704568:0" + label_and: "crwdns704570:0crwdne704570:0" + label_ascending: "crwdns704572:0crwdne704572:0" + label_author: "crwdns704574:0%{user}crwdne704574:0" + label_avatar: "crwdns704576:0crwdne704576:0" + label_between: "crwdns704578:0crwdne704578:0" + label_board: "crwdns704580:0crwdne704580:0" + label_board_locked: "crwdns704582:0crwdne704582:0" + label_board_plural: "crwdns704584:0crwdne704584:0" + label_board_sticky: "crwdns704586:0crwdne704586:0" + label_change: "crwdns704588:0crwdne704588:0" + label_create: "crwdns704590:0crwdne704590:0" + label_create_work_package: "crwdns704592:0crwdne704592:0" + label_created_by: "crwdns704594:0crwdne704594:0" + label_date: "crwdns704596:0crwdne704596:0" + label_date_with_format: "crwdns704598:0%{date_attribute}crwdnd704598:0%{format}crwdne704598:0" + label_deactivate: "crwdns704600:0crwdne704600:0" + label_descending: "crwdns704602:0crwdne704602:0" + label_description: "crwdns704604:0crwdne704604:0" + label_details: "crwdns704606:0crwdne704606:0" + label_display: "crwdns704608:0crwdne704608:0" + label_cancel_comment: "crwdns704610:0crwdne704610:0" + label_closed_work_packages: "crwdns704612:0crwdne704612:0" + label_collapse: "crwdns704614:0crwdne704614:0" + label_collapsed: "crwdns704616:0crwdne704616:0" + label_collapse_all: "crwdns704618:0crwdne704618:0" + label_comment: "crwdns704620:0crwdne704620:0" + label_committed_at: "crwdns704622:0%{committed_revision_link}crwdnd704622:0%{date}crwdne704622:0" + label_committed_link: "crwdns704624:0%{revision_identifier}crwdne704624:0" + label_contains: "crwdns704626:0crwdne704626:0" + label_created_on: "crwdns704628:0crwdne704628:0" + label_edit_comment: "crwdns704630:0crwdne704630:0" + label_edit_status: "crwdns704632:0crwdne704632:0" + label_email: "crwdns704634:0crwdne704634:0" + label_equals: "crwdns704636:0crwdne704636:0" + label_expand: "crwdns704638:0crwdne704638:0" + label_expanded: "crwdns704640:0crwdne704640:0" + label_expand_all: "crwdns704642:0crwdne704642:0" + label_expand_project_menu: "crwdns704644:0crwdne704644:0" + label_export: "crwdns704646:0crwdne704646:0" + label_export_preparing: "crwdns704648:0crwdne704648:0" + label_filename: "crwdns704650:0crwdne704650:0" + label_filesize: "crwdns704652:0crwdne704652:0" + label_general: "crwdns704654:0crwdne704654:0" + label_global_roles: "crwdns704656:0crwdne704656:0" + label_greater_or_equal: "crwdns704658:0crwdne704658:0" + label_group: 'crwdns704660:0crwdne704660:0' + label_group_by: "crwdns704662:0crwdne704662:0" + label_group_plural: "crwdns704664:0crwdne704664:0" + label_hide_attributes: "crwdns704666:0crwdne704666:0" + label_hide_column: "crwdns704668:0crwdne704668:0" + label_hide_project_menu: "crwdns704670:0crwdne704670:0" + label_in: "crwdns704672:0crwdne704672:0" + label_in_less_than: "crwdns704674:0crwdne704674:0" + label_in_more_than: "crwdns704676:0crwdne704676:0" + label_incoming_emails: "crwdns704678:0crwdne704678:0" + label_information_plural: "crwdns704680:0crwdne704680:0" + label_import: "crwdns704682:0crwdne704682:0" + label_latest_activity: "crwdns704684:0crwdne704684:0" + label_last_updated_on: "crwdns704686:0crwdne704686:0" + label_learn_more_link: "crwdns704688:0crwdne704688:0" + label_less_or_equal: "crwdns704690:0crwdne704690:0" + label_less_than_ago: "crwdns704692:0crwdne704692:0" + label_loading: "crwdns704694:0crwdne704694:0" + label_mail_notification: "crwdns704696:0crwdne704696:0" + label_me: "crwdns704698:0crwdne704698:0" + label_meeting_agenda: "crwdns704700:0crwdne704700:0" + label_meeting_minutes: "crwdns704702:0crwdne704702:0" + label_menu_collapse: "crwdns704704:0crwdne704704:0" + label_menu_expand: "crwdns704706:0crwdne704706:0" + label_more_than_ago: "crwdns704708:0crwdne704708:0" + label_next: "crwdns704710:0crwdne704710:0" + label_no_color: "crwdns704712:0crwdne704712:0" + label_no_data: "crwdns704714:0crwdne704714:0" + label_no_due_date: "crwdns704716:0crwdne704716:0" + label_no_start_date: "crwdns704718:0crwdne704718:0" + label_no_value: "crwdns704720:0crwdne704720:0" + label_none: "crwdns704722:0crwdne704722:0" + label_not_contains: "crwdns704724:0crwdne704724:0" + label_not_equals: "crwdns704726:0crwdne704726:0" + label_on: "crwdns704728:0crwdne704728:0" + label_open_menu: "crwdns704730:0crwdne704730:0" + label_open_context_menu: "crwdns704732:0crwdne704732:0" + label_open_work_packages: "crwdns704734:0crwdne704734:0" + label_password: "crwdns704736:0crwdne704736:0" + label_previous: "crwdns704738:0crwdne704738:0" + label_per_page: "crwdns704740:0crwdne704740:0" + label_please_wait: "crwdns704742:0crwdne704742:0" + label_project_plural: "crwdns704744:0crwdne704744:0" + label_visibility_settings: "crwdns704746:0crwdne704746:0" + label_quote_comment: "crwdns704748:0crwdne704748:0" + label_recent: "crwdns704750:0crwdne704750:0" + label_reset: "crwdns704752:0crwdne704752:0" + label_remove: "crwdns704754:0crwdne704754:0" + label_remove_column: "crwdns704756:0crwdne704756:0" + label_remove_columns: "crwdns704758:0crwdne704758:0" + label_remove_row: "crwdns704760:0crwdne704760:0" + label_report: "crwdns704762:0crwdne704762:0" + label_repository_plural: "crwdns704764:0crwdne704764:0" + label_save_as: "crwdns704766:0crwdne704766:0" + label_select_watcher: "crwdns704768:0crwdne704768:0" + label_selected_filter_list: "crwdns704770:0crwdne704770:0" + label_show_attributes: "crwdns704772:0crwdne704772:0" + label_show_in_menu: "crwdns704774:0crwdne704774:0" + label_sort_by: "crwdns704776:0crwdne704776:0" + label_sorted_by: "crwdns704778:0crwdne704778:0" + label_sort_higher: "crwdns704780:0crwdne704780:0" + label_sort_lower: "crwdns704782:0crwdne704782:0" + label_sorting: "crwdns704784:0crwdne704784:0" + label_spent_time: "crwdns704786:0crwdne704786:0" + label_star_query: "crwdns704788:0crwdne704788:0" + label_press_enter_to_save: "crwdns704790:0crwdne704790:0" + label_public_query: "crwdns704792:0crwdne704792:0" + label_sum: "crwdns704794:0crwdne704794:0" + label_sum_for: "crwdns704796:0crwdne704796:0" + label_total_sum: "crwdns704798:0crwdne704798:0" + label_subject: "crwdns704800:0crwdne704800:0" + label_this_week: "crwdns704802:0crwdne704802:0" + label_today: "crwdns704804:0crwdne704804:0" + label_time_entry_plural: "crwdns704806:0crwdne704806:0" + label_up: "crwdns704808:0crwdne704808:0" + label_user_plural: "crwdns704810:0crwdne704810:0" + label_activity_show_only_comments: "crwdns704812:0crwdne704812:0" + label_activity_show_all: "crwdns704814:0crwdne704814:0" + label_total_progress: "crwdns704816:0%{percent}crwdne704816:0" + label_total_amount: "crwdns704818:0%{amount}crwdne704818:0" + label_updated_on: "crwdns704820:0crwdne704820:0" + label_value_derived_from_children: "crwdns704822:0crwdne704822:0" + label_children_derived_duration: "crwdns704824:0crwdne704824:0" + label_warning: "crwdns704826:0crwdne704826:0" + label_work_package: "crwdns704828:0crwdne704828:0" + label_work_package_parent: "crwdns704830:0crwdne704830:0" + label_work_package_plural: "crwdns704832:0crwdne704832:0" + label_watch: "crwdns704834:0crwdne704834:0" + label_watch_work_package: "crwdns704836:0crwdne704836:0" + label_watcher_added_successfully: "crwdns704838:0crwdne704838:0" + label_watcher_deleted_successfully: "crwdns704840:0crwdne704840:0" + label_work_package_details_you_are_here: "crwdns704842:0%{tab}crwdnd704842:0%{type}crwdnd704842:0%{subject}crwdne704842:0" + label_unwatch: "crwdns704844:0crwdne704844:0" + label_unwatch_work_package: "crwdns704846:0crwdne704846:0" + label_uploaded_by: "crwdns704848:0crwdne704848:0" + label_default_queries: "crwdns704850:0crwdne704850:0" + label_starred_queries: "crwdns704852:0crwdne704852:0" + label_global_queries: "crwdns704854:0crwdne704854:0" + label_custom_queries: "crwdns704856:0crwdne704856:0" + label_create_new_query: "crwdns704858:0crwdne704858:0" + label_columns: "crwdns704860:0crwdne704860:0" + label_attachments: crwdns704862:0crwdne704862:0 + label_drop_files: crwdns704864:0crwdne704864:0 + label_drop_files_hint: crwdns704866:0crwdne704866:0 + label_drop_folders_hint: crwdns704868:0crwdne704868:0 + label_add_attachments: "crwdns704870:0crwdne704870:0" + label_formattable_attachment_hint: "crwdns704872:0crwdne704872:0" + label_remove_file: "crwdns704874:0%{fileName}crwdne704874:0" + label_remove_watcher: "crwdns704876:0%{name}crwdne704876:0" + label_remove_all_files: crwdns704878:0crwdne704878:0 + label_add_description: "crwdns704880:0%{file}crwdne704880:0" + label_upload_notification: "crwdns704882:0crwdne704882:0" + label_work_package_upload_notification: "crwdns704884:0%{id}crwdnd704884:0%{subject}crwdne704884:0" + label_wp_id_added_by: "crwdns704886:0%{id}crwdnd704886:0%{author}crwdne704886:0" + label_files_to_upload: "crwdns704888:0crwdne704888:0" + label_rejected_files: "crwdns704890:0crwdne704890:0" + label_rejected_files_reason: "crwdns704892:0%{maximumFilesize}crwdne704892:0" + label_wait: "crwdns704894:0crwdne704894:0" + label_upload_counter: "crwdns704896:0%{done}crwdnd704896:0%{count}crwdne704896:0" + label_validation_error: "crwdns704898:0crwdne704898:0" + label_version_plural: "crwdns704900:0crwdne704900:0" + label_view_has_changed: "crwdns704902:0crwdne704902:0" help_texts: - show_modal: 'crwdns702381:0crwdne702381:0' + show_modal: 'crwdns704904:0crwdne704904:0' onboarding: buttons: - skip: 'crwdns702383:0crwdne702383:0' - next: 'crwdns702385:0crwdne702385:0' - got_it: 'crwdns702387:0crwdne702387:0' + skip: 'crwdns704906:0crwdne704906:0' + next: 'crwdns704908:0crwdne704908:0' + got_it: 'crwdns704910:0crwdne704910:0' steps: - help_menu: 'crwdns702389:0crwdne702389:0' - members: 'crwdns702391:0crwdne702391:0' - project_selection: 'crwdns702393:0crwdne702393:0' - quick_add_button: 'crwdns702395:0crwdne702395:0' - sidebar_arrow: "crwdns702397:0crwdne702397:0" - welcome: 'crwdns702399:0crwdne702399:0' - wiki: 'crwdns702401:0crwdne702401:0' + help_menu: 'crwdns704912:0crwdne704912:0' + members: 'crwdns704914:0crwdne704914:0' + project_selection: 'crwdns704916:0crwdne704916:0' + quick_add_button: 'crwdns704918:0crwdne704918:0' + sidebar_arrow: "crwdns704920:0crwdne704920:0" + welcome: 'crwdns704922:0crwdne704922:0' + wiki: 'crwdns704924:0crwdne704924:0' backlogs: - overview: "crwdns702403:0crwdne702403:0" - sprints: "crwdns702405:0crwdne702405:0" - task_board_arrow: 'crwdns702407:0crwdne702407:0' - task_board_select: 'crwdns702409:0crwdne702409:0' - task_board: "crwdns702411:0crwdne702411:0" + overview: "crwdns704926:0crwdne704926:0" + sprints: "crwdns704928:0crwdne704928:0" + task_board_arrow: 'crwdns704930:0crwdne704930:0' + task_board_select: 'crwdns704932:0crwdne704932:0' + task_board: "crwdns704934:0crwdne704934:0" boards: - overview: 'crwdns702413:0crwdne702413:0' - lists: 'crwdns702415:0crwdne702415:0' - add: 'crwdns702417:0crwdne702417:0' - drag: 'crwdns702419:0crwdne702419:0' + overview: 'crwdns704936:0crwdne704936:0' + lists: 'crwdns704938:0crwdne704938:0' + add: 'crwdns704940:0crwdne704940:0' + drag: 'crwdns704942:0crwdne704942:0' wp: - toggler: "crwdns702421:0crwdne702421:0" - list: 'crwdns702423:0crwdne702423:0' - full_view: 'crwdns702425:0crwdne702425:0' - back_button: 'crwdns702427:0crwdne702427:0' - create_button: 'crwdns702429:0crwdne702429:0' - timeline_button: 'crwdns702431:0crwdne702431:0' - timeline: 'crwdns702433:0crwdne702433:0' + toggler: "crwdns704944:0crwdne704944:0" + list: 'crwdns704946:0crwdne704946:0' + full_view: 'crwdns704948:0crwdne704948:0' + back_button: 'crwdns704950:0crwdne704950:0' + create_button: 'crwdns704952:0crwdne704952:0' + timeline_button: 'crwdns704954:0crwdne704954:0' + timeline: 'crwdns704956:0crwdne704956:0' notifications: - title: "crwdns702435:0crwdne702435:0" - no_unread: "crwdns702437:0crwdne702437:0" + title: "crwdns704958:0crwdne704958:0" + no_unread: "crwdns704960:0crwdne704960:0" reasons: - mentioned: 'crwdns702439:0crwdne702439:0' - watched: 'crwdns702441:0crwdne702441:0' - assigned: 'crwdns702443:0crwdne702443:0' - responsible: 'crwdns702445:0crwdne702445:0' + mentioned: 'crwdns704962:0crwdne704962:0' + watched: 'crwdns704964:0crwdne704964:0' + assigned: 'crwdns704966:0crwdne704966:0' + responsible: 'crwdns704968:0crwdne704968:0' facets: - unread: 'crwdns702447:0crwdne702447:0' - all: 'crwdns702449:0crwdne702449:0' + unread: 'crwdns704970:0crwdne704970:0' + all: 'crwdns704972:0crwdne704972:0' center: and_more_users: - one: 'crwdns702451:1crwdne702451:1' - other: 'crwdns702451:5%{count}crwdne702451:5' + one: 'crwdns704974:1crwdne704974:1' + other: 'crwdns704974:5%{count}crwdne704974:5' no_results: - at_all: 'crwdns702453:0crwdne702453:0' - with_current_filter: 'crwdns702455:0crwdne702455:0' - mark_all_read: 'crwdns702457:0crwdne702457:0' - mark_as_read: 'crwdns702459:0crwdne702459:0' - text_update_date: "crwdns702461:0%{date}crwdne702461:0" - total_count_warning: "crwdns702463:0%{newest_count}crwdnd702463:0%{more_count}crwdne702463:0" + at_all: 'crwdns704976:0crwdne704976:0' + with_current_filter: 'crwdns704978:0crwdne704978:0' + mark_all_read: 'crwdns704980:0crwdne704980:0' + mark_as_read: 'crwdns704982:0crwdne704982:0' + text_update_date: "crwdns704984:0%{date}crwdne704984:0" + total_count_warning: "crwdns704986:0%{newest_count}crwdnd704986:0%{more_count}crwdne704986:0" empty_state: - no_notification: "crwdns702465:0crwdne702465:0" - no_notification_with_current_filter: "crwdns702467:0crwdne702467:0" - no_selection: "crwdns702469:0crwdne702469:0" + no_notification: "crwdns704988:0crwdne704988:0" + no_notification_with_current_filter: "crwdns704990:0crwdne704990:0" + no_selection: "crwdns704992:0crwdne704992:0" new_notifications: - message: 'crwdns702471:0crwdne702471:0' - link_text: 'crwdns702473:0crwdne702473:0' + message: 'crwdns704994:0crwdne704994:0' + link_text: 'crwdns704996:0crwdne704996:0' menu: - accountable: 'crwdns702475:0crwdne702475:0' - assigned: 'crwdns702477:0crwdne702477:0' - by_project: 'crwdns702479:0crwdne702479:0' - by_reason: 'crwdns702481:0crwdne702481:0' - inbox: 'crwdns702483:0crwdne702483:0' - mentioned: 'crwdns702485:0crwdne702485:0' - watching: 'crwdns702487:0crwdne702487:0' + accountable: 'crwdns704998:0crwdne704998:0' + assigned: 'crwdns705000:0crwdne705000:0' + by_project: 'crwdns705002:0crwdne705002:0' + by_reason: 'crwdns705004:0crwdne705004:0' + inbox: 'crwdns705006:0crwdne705006:0' + mentioned: 'crwdns705008:0crwdne705008:0' + watching: 'crwdns705010:0crwdne705010:0' settings: - change_notification_settings: 'crwdns702489:0%{url}crwdne702489:0' - title: "crwdns702491:0crwdne702491:0" - notify_me: "crwdns702493:0crwdne702493:0" + change_notification_settings: 'crwdns705012:0%{url}crwdne705012:0' + title: "crwdns705014:0crwdne705014:0" + notify_me: "crwdns705016:0crwdne705016:0" reasons: mentioned: - title: 'crwdns702495:0crwdne702495:0' - description: 'crwdns702497:0crwdne702497:0' + title: 'crwdns705018:0crwdne705018:0' + description: 'crwdns705020:0crwdne705020:0' involved: - title: 'crwdns702499:0crwdne702499:0' - description: 'crwdns702501:0crwdne702501:0' - watched: 'crwdns702503:0crwdne702503:0' - work_package_commented: 'crwdns702505:0crwdne702505:0' - work_package_created: 'crwdns702507:0crwdne702507:0' - work_package_processed: 'crwdns702509:0crwdne702509:0' - work_package_prioritized: 'crwdns702511:0crwdne702511:0' - work_package_scheduled: 'crwdns702513:0crwdne702513:0' + title: 'crwdns705022:0crwdne705022:0' + description: 'crwdns705024:0crwdne705024:0' + watched: 'crwdns705026:0crwdne705026:0' + work_package_commented: 'crwdns705028:0crwdne705028:0' + work_package_created: 'crwdns705030:0crwdne705030:0' + work_package_processed: 'crwdns705032:0crwdne705032:0' + work_package_prioritized: 'crwdns705034:0crwdne705034:0' + work_package_scheduled: 'crwdns705036:0crwdne705036:0' global: immediately: - title: 'crwdns702515:0crwdne702515:0' - description: 'crwdns702517:0crwdne702517:0' + title: 'crwdns705038:0crwdne705038:0' + description: 'crwdns705040:0crwdne705040:0' delayed: - title: 'crwdns702519:0crwdne702519:0' - description: 'crwdns702521:0crwdne702521:0' + title: 'crwdns705042:0crwdne705042:0' + description: 'crwdns705044:0crwdne705044:0' project_specific: - title: 'crwdns702523:0crwdne702523:0' - description: 'crwdns702525:0crwdne702525:0' - add: 'crwdns702527:0crwdne702527:0' - already_selected: 'crwdns702529:0crwdne702529:0' - remove: 'crwdns702531:0crwdne702531:0' + title: 'crwdns705046:0crwdne705046:0' + description: 'crwdns705048:0crwdne705048:0' + add: 'crwdns705050:0crwdne705050:0' + already_selected: 'crwdns705052:0crwdne705052:0' + remove: 'crwdns705054:0crwdne705054:0' password_confirmation: - field_description: 'crwdns702533:0crwdne702533:0' - title: 'crwdns702535:0crwdne702535:0' + field_description: 'crwdns705056:0crwdne705056:0' + title: 'crwdns705058:0crwdne705058:0' pagination: - no_other_page: "crwdns702537:0crwdne702537:0" + no_other_page: "crwdns705060:0crwdne705060:0" pages: - next: "crwdns702539:0crwdne702539:0" - previous: "crwdns702541:0crwdne702541:0" + next: "crwdns705062:0crwdne705062:0" + previous: "crwdns705064:0crwdne705064:0" placeholders: - default: 'crwdns702543:0crwdne702543:0' - subject: 'crwdns702545:0crwdne702545:0' - selection: 'crwdns702547:0crwdne702547:0' - relation_description: 'crwdns702549:0crwdne702549:0' + default: 'crwdns705066:0crwdne705066:0' + subject: 'crwdns705068:0crwdne705068:0' + selection: 'crwdns705070:0crwdne705070:0' + relation_description: 'crwdns705072:0crwdne705072:0' project: required_outside_context: > - crwdns702551:0crwdne702551:0 - context: 'crwdns702553:0crwdne702553:0' - work_package_belongs_to: 'crwdns702555:0%{projectname}crwdne702555:0' - click_to_switch_context: 'crwdns702557:0crwdne702557:0' - confirm_template_load: 'crwdns702559:0crwdne702559:0' - use_template: "crwdns702561:0crwdne702561:0" - no_template_selected: "crwdns702563:0crwdne702563:0" + crwdns705074:0crwdne705074:0 + context: 'crwdns705076:0crwdne705076:0' + work_package_belongs_to: 'crwdns705078:0%{projectname}crwdne705078:0' + click_to_switch_context: 'crwdns705080:0crwdne705080:0' + confirm_template_load: 'crwdns705082:0crwdne705082:0' + use_template: "crwdns705084:0crwdne705084:0" + no_template_selected: "crwdns705086:0crwdne705086:0" copy: - copy_options: "crwdns702565:0crwdne702565:0" + copy_options: "crwdns705088:0crwdne705088:0" autocompleter: - label: 'crwdns702567:0crwdne702567:0' + label: 'crwdns705090:0crwdne705090:0' reminders: settings: daily: - add_time: 'crwdns702569:0crwdne702569:0' - enable: 'crwdns702571:0crwdne702571:0' - explanation: 'crwdns702573:0%{no_time_zone}crwdne702573:0' - no_time_zone: 'crwdns702575:0crwdne702575:0' - time_label: 'crwdns702577:0%{counter}crwdne702577:0' - title: 'crwdns702579:0crwdne702579:0' + add_time: 'crwdns705092:0crwdne705092:0' + enable: 'crwdns705094:0crwdne705094:0' + explanation: 'crwdns705096:0%{no_time_zone}crwdne705096:0' + no_time_zone: 'crwdns705098:0crwdne705098:0' + time_label: 'crwdns705100:0%{counter}crwdne705100:0' + title: 'crwdns705102:0crwdne705102:0' workdays: - title: 'crwdns702581:0crwdne702581:0' + title: 'crwdns705104:0crwdne705104:0' immediate: - title: 'crwdns702583:0crwdne702583:0' - mentioned: 'crwdns702585:0crwdne702585:0' + title: 'crwdns705106:0crwdne705106:0' + mentioned: 'crwdns705108:0crwdne705108:0' alerts: - title: 'crwdns702587:0crwdne702587:0' + title: 'crwdns705110:0crwdne705110:0' explanation: > - crwdns702589:0crwdne702589:0 - news_added: 'crwdns702591:0crwdne702591:0' - news_commented: 'crwdns702593:0crwdne702593:0' - document_added: 'crwdns702595:0crwdne702595:0' - forum_messages: 'crwdns702597:0crwdne702597:0' - wiki_page_added: 'crwdns702599:0crwdne702599:0' - wiki_page_updated: 'crwdns702601:0crwdne702601:0' - membership_added: 'crwdns702603:0crwdne702603:0' - membership_updated: 'crwdns702605:0crwdne702605:0' - title: 'crwdns702607:0crwdne702607:0' + crwdns705112:0crwdne705112:0 + news_added: 'crwdns705114:0crwdne705114:0' + news_commented: 'crwdns705116:0crwdne705116:0' + document_added: 'crwdns705118:0crwdne705118:0' + forum_messages: 'crwdns705120:0crwdne705120:0' + wiki_page_added: 'crwdns705122:0crwdne705122:0' + wiki_page_updated: 'crwdns705124:0crwdne705124:0' + membership_added: 'crwdns705126:0crwdne705126:0' + membership_updated: 'crwdns705128:0crwdne705128:0' + title: 'crwdns705130:0crwdne705130:0' pause: - label: 'crwdns702609:0crwdne702609:0' - first_day: 'crwdns702611:0crwdne702611:0' - last_day: 'crwdns702613:0crwdne702613:0' - text_are_you_sure: "crwdns702615:0crwdne702615:0" - text_data_lost: "crwdns702617:0crwdne702617:0" + label: 'crwdns705132:0crwdne705132:0' + first_day: 'crwdns705134:0crwdne705134:0' + last_day: 'crwdns705136:0crwdne705136:0' + text_are_you_sure: "crwdns705138:0crwdne705138:0" + text_data_lost: "crwdns705140:0crwdne705140:0" types: attribute_groups: - error_duplicate_group_name: "crwdns702619:0%{group}crwdne702619:0" - error_no_table_configured: "crwdns702621:0%{group}crwdne702621:0" - reset_title: "crwdns702623:0crwdne702623:0" + error_duplicate_group_name: "crwdns705142:0%{group}crwdne705142:0" + error_no_table_configured: "crwdns705144:0%{group}crwdne705144:0" + reset_title: "crwdns705146:0crwdne705146:0" confirm_reset: > - crwdns702625:0crwdne702625:0 - upgrade_to_ee: "crwdns702627:0crwdne702627:0" - upgrade_to_ee_text: "crwdns702629:0crwdne702629:0" - more_information: "crwdns702631:0crwdne702631:0" - nevermind: "crwdns702633:0crwdne702633:0" + crwdns705148:0crwdne705148:0 + upgrade_to_ee: "crwdns705150:0crwdne705150:0" + upgrade_to_ee_text: "crwdns705152:0crwdne705152:0" + more_information: "crwdns705154:0crwdne705154:0" + nevermind: "crwdns705156:0crwdne705156:0" edit: - form_configuration: "crwdns702635:0crwdne702635:0" - projects: "crwdns702637:0crwdne702637:0" - settings: "crwdns702639:0crwdne702639:0" + form_configuration: "crwdns705158:0crwdne705158:0" + projects: "crwdns705160:0crwdne705160:0" + settings: "crwdns705162:0crwdne705162:0" time_entry: - project: 'crwdns702641:0crwdne702641:0' - work_package: 'crwdns702643:0crwdne702643:0' - work_package_required: 'crwdns702645:0crwdne702645:0' - activity: 'crwdns702647:0crwdne702647:0' - comment: 'crwdns702649:0crwdne702649:0' - duration: 'crwdns702651:0crwdne702651:0' - spent_on: 'crwdns702653:0crwdne702653:0' - hours: 'crwdns702655:0crwdne702655:0' - title: 'crwdns702657:0crwdne702657:0' + project: 'crwdns705164:0crwdne705164:0' + work_package: 'crwdns705166:0crwdne705166:0' + work_package_required: 'crwdns705168:0crwdne705168:0' + activity: 'crwdns705170:0crwdne705170:0' + comment: 'crwdns705172:0crwdne705172:0' + duration: 'crwdns705174:0crwdne705174:0' + spent_on: 'crwdns705176:0crwdne705176:0' + hours: 'crwdns705178:0crwdne705178:0' + title: 'crwdns705180:0crwdne705180:0' two_factor_authentication: - label_two_factor_authentication: 'crwdns702659:0crwdne702659:0' + label_two_factor_authentication: 'crwdns705182:0crwdne705182:0' watchers: - label_loading: crwdns702661:0crwdne702661:0 - label_error_loading: crwdns702663:0crwdne702663:0 - label_search_watchers: crwdns702665:0crwdne702665:0 - label_add: crwdns702667:0crwdne702667:0 - label_discard: crwdns702669:0crwdne702669:0 - typeahead_placeholder: crwdns702671:0crwdne702671:0 + label_loading: crwdns705184:0crwdne705184:0 + label_error_loading: crwdns705186:0crwdne705186:0 + label_search_watchers: crwdns705188:0crwdne705188:0 + label_add: crwdns705190:0crwdne705190:0 + label_discard: crwdns705192:0crwdne705192:0 + typeahead_placeholder: crwdns705194:0crwdne705194:0 relation_labels: - parent: "crwdns702673:0crwdne702673:0" - children: "crwdns702675:0crwdne702675:0" - relates: "crwdns702677:0crwdne702677:0" - duplicates: "crwdns702679:0crwdne702679:0" - duplicated: "crwdns702681:0crwdne702681:0" - blocks: "crwdns702683:0crwdne702683:0" - blocked: "crwdns702685:0crwdne702685:0" - precedes: "crwdns702687:0crwdne702687:0" - follows: "crwdns702689:0crwdne702689:0" - includes: "crwdns702691:0crwdne702691:0" - partof: "crwdns702693:0crwdne702693:0" - requires: "crwdns702695:0crwdne702695:0" - required: "crwdns702697:0crwdne702697:0" - relation_type: "crwdns702699:0crwdne702699:0" + parent: "crwdns705196:0crwdne705196:0" + children: "crwdns705198:0crwdne705198:0" + relates: "crwdns705200:0crwdne705200:0" + duplicates: "crwdns705202:0crwdne705202:0" + duplicated: "crwdns705204:0crwdne705204:0" + blocks: "crwdns705206:0crwdne705206:0" + blocked: "crwdns705208:0crwdne705208:0" + precedes: "crwdns705210:0crwdne705210:0" + follows: "crwdns705212:0crwdne705212:0" + includes: "crwdns705214:0crwdne705214:0" + partof: "crwdns705216:0crwdne705216:0" + requires: "crwdns705218:0crwdne705218:0" + required: "crwdns705220:0crwdne705220:0" + relation_type: "crwdns705222:0crwdne705222:0" relations_hierarchy: - parent_headline: "crwdns702701:0crwdne702701:0" - hierarchy_headline: "crwdns702703:0crwdne702703:0" - children_headline: "crwdns702705:0crwdne702705:0" + parent_headline: "crwdns705224:0crwdne705224:0" + hierarchy_headline: "crwdns705226:0crwdne705226:0" + children_headline: "crwdns705228:0crwdne705228:0" relation_buttons: - set_parent: "crwdns702707:0crwdne702707:0" - change_parent: "crwdns702709:0crwdne702709:0" - remove_parent: "crwdns702711:0crwdne702711:0" - hierarchy_indent: "crwdns702713:0crwdne702713:0" - hierarchy_outdent: "crwdns702715:0crwdne702715:0" - group_by_wp_type: "crwdns702717:0crwdne702717:0" - group_by_relation_type: "crwdns702719:0crwdne702719:0" - add_parent: "crwdns702721:0crwdne702721:0" - add_new_child: "crwdns702723:0crwdne702723:0" - create_new: "crwdns702725:0crwdne702725:0" - add_existing: "crwdns702727:0crwdne702727:0" - add_existing_child: "crwdns702729:0crwdne702729:0" - remove_child: "crwdns702731:0crwdne702731:0" - add_new_relation: "crwdns702733:0crwdne702733:0" - add_existing_relation: "crwdns702735:0crwdne702735:0" - update_description: "crwdns702737:0crwdne702737:0" - toggle_description: "crwdns702739:0crwdne702739:0" - update_relation: "crwdns702741:0crwdne702741:0" - add_follower: "crwdns702743:0crwdne702743:0" - add_predecessor: "crwdns702745:0crwdne702745:0" - remove: "crwdns702747:0crwdne702747:0" - save: "crwdns702749:0crwdne702749:0" - abort: "crwdns702751:0crwdne702751:0" + set_parent: "crwdns705230:0crwdne705230:0" + change_parent: "crwdns705232:0crwdne705232:0" + remove_parent: "crwdns705234:0crwdne705234:0" + hierarchy_indent: "crwdns705236:0crwdne705236:0" + hierarchy_outdent: "crwdns705238:0crwdne705238:0" + group_by_wp_type: "crwdns705240:0crwdne705240:0" + group_by_relation_type: "crwdns705242:0crwdne705242:0" + add_parent: "crwdns705244:0crwdne705244:0" + add_new_child: "crwdns705246:0crwdne705246:0" + create_new: "crwdns705248:0crwdne705248:0" + add_existing: "crwdns705250:0crwdne705250:0" + add_existing_child: "crwdns705252:0crwdne705252:0" + remove_child: "crwdns705254:0crwdne705254:0" + add_new_relation: "crwdns705256:0crwdne705256:0" + add_existing_relation: "crwdns705258:0crwdne705258:0" + update_description: "crwdns705260:0crwdne705260:0" + toggle_description: "crwdns705262:0crwdne705262:0" + update_relation: "crwdns705264:0crwdne705264:0" + add_follower: "crwdns705266:0crwdne705266:0" + add_predecessor: "crwdns705268:0crwdne705268:0" + remove: "crwdns705270:0crwdne705270:0" + save: "crwdns705272:0crwdne705272:0" + abort: "crwdns705274:0crwdne705274:0" relations_autocomplete: - placeholder: "crwdns702753:0crwdne702753:0" - parent_placeholder: "crwdns702755:0crwdne702755:0" + placeholder: "crwdns705276:0crwdne705276:0" + parent_placeholder: "crwdns705278:0crwdne705278:0" autocompleter: - placeholder: "crwdns702757:0crwdne702757:0" - notFoundText: "crwdns702759:0crwdne702759:0" - typeToSearchText: "crwdns702761:0crwdne702761:0" + placeholder: "crwdns705280:0crwdne705280:0" + notFoundText: "crwdns705282:0crwdne705282:0" + typeToSearchText: "crwdns705284:0crwdne705284:0" repositories: - select_tag: 'crwdns702763:0crwdne702763:0' - select_branch: 'crwdns702765:0crwdne702765:0' - field_value_enter_prompt: "crwdns702767:0%{field}crwdne702767:0" - project_menu_details: "crwdns702769:0crwdne702769:0" + select_tag: 'crwdns705286:0crwdne705286:0' + select_branch: 'crwdns705288:0crwdne705288:0' + field_value_enter_prompt: "crwdns705290:0%{field}crwdne705290:0" + project_menu_details: "crwdns705292:0crwdne705292:0" scheduling: - manual: 'crwdns702771:0crwdne702771:0' - automatic: 'crwdns702773:0crwdne702773:0' + manual: 'crwdns705294:0crwdne705294:0' + automatic: 'crwdns705296:0crwdne705296:0' sort: - sorted_asc: 'crwdns702775:0crwdne702775:0' - sorted_dsc: 'crwdns702777:0crwdne702777:0' - sorted_no: 'crwdns702779:0crwdne702779:0' - sorting_disabled: 'crwdns702781:0crwdne702781:0' - activate_asc: 'crwdns702783:0crwdne702783:0' - activate_dsc: 'crwdns702785:0crwdne702785:0' - activate_no: 'crwdns702787:0crwdne702787:0' - text_work_packages_destroy_confirmation: "crwdns702789:0crwdne702789:0" - text_query_destroy_confirmation: "crwdns702791:0crwdne702791:0" - text_attachment_destroy_confirmation: "crwdns702793:0crwdne702793:0" + sorted_asc: 'crwdns705298:0crwdne705298:0' + sorted_dsc: 'crwdns705300:0crwdne705300:0' + sorted_no: 'crwdns705302:0crwdne705302:0' + sorting_disabled: 'crwdns705304:0crwdne705304:0' + activate_asc: 'crwdns705306:0crwdne705306:0' + activate_dsc: 'crwdns705308:0crwdne705308:0' + activate_no: 'crwdns705310:0crwdne705310:0' + text_work_packages_destroy_confirmation: "crwdns705312:0crwdne705312:0" + text_query_destroy_confirmation: "crwdns705314:0crwdne705314:0" + text_attachment_destroy_confirmation: "crwdns705316:0crwdne705316:0" timelines: - quarter_label: 'crwdns702795:0%{quarter_number}crwdne702795:0' - gantt_chart: 'crwdns702797:0crwdne702797:0' + quarter_label: 'crwdns705318:0%{quarter_number}crwdne705318:0' + gantt_chart: 'crwdns705320:0crwdne705320:0' labels: - title: 'crwdns702799:0crwdne702799:0' - bar: 'crwdns702801:0crwdne702801:0' - left: 'crwdns702803:0crwdne702803:0' - right: 'crwdns702805:0crwdne702805:0' - farRight: 'crwdns702807:0crwdne702807:0' - showNone: 'crwdns702809:0crwdne702809:0' + title: 'crwdns705322:0crwdne705322:0' + bar: 'crwdns705324:0crwdne705324:0' + left: 'crwdns705326:0crwdne705326:0' + right: 'crwdns705328:0crwdne705328:0' + farRight: 'crwdns705330:0crwdne705330:0' + showNone: 'crwdns705332:0crwdne705332:0' description: > - crwdns702811:0crwdne702811:0 - button_activate: 'crwdns702813:0crwdne702813:0' - button_deactivate: 'crwdns702815:0crwdne702815:0' - cancel: crwdns702817:0crwdne702817:0 - change: "crwdns702819:0crwdne702819:0" - due_date: "crwdns702821:0crwdne702821:0" - empty: "crwdns702823:0crwdne702823:0" - error: "crwdns702825:0crwdne702825:0" + crwdns705334:0crwdne705334:0 + button_activate: 'crwdns705336:0crwdne705336:0' + button_deactivate: 'crwdns705338:0crwdne705338:0' + cancel: crwdns705340:0crwdne705340:0 + change: "crwdns705342:0crwdne705342:0" + due_date: "crwdns705344:0crwdne705344:0" + empty: "crwdns705346:0crwdne705346:0" + error: "crwdns705348:0crwdne705348:0" errors: - not_implemented: "crwdns702827:0crwdne702827:0" - report_comparison: "crwdns702829:0crwdne702829:0" - report_epicfail: "crwdns702831:0crwdne702831:0" - report_timeout: "crwdns702833:0crwdne702833:0" + not_implemented: "crwdns705350:0crwdne705350:0" + report_comparison: "crwdns705352:0crwdne705352:0" + report_epicfail: "crwdns705354:0crwdne705354:0" + report_timeout: "crwdns705356:0crwdne705356:0" filter: - grouping_other: "crwdns702835:0crwdne702835:0" - noneSelection: "crwdns702837:0crwdne702837:0" - name: "crwdns702839:0crwdne702839:0" - outline: "crwdns702841:0crwdne702841:0" + grouping_other: "crwdns705358:0crwdne705358:0" + noneSelection: "crwdns705360:0crwdne705360:0" + name: "crwdns705362:0crwdne705362:0" + outline: "crwdns705364:0crwdne705364:0" outlines: - aggregation: "crwdns702843:0crwdne702843:0" - level1: "crwdns702845:0crwdne702845:0" - level2: "crwdns702847:0crwdne702847:0" - level3: "crwdns702849:0crwdne702849:0" - level4: "crwdns702851:0crwdne702851:0" - level5: "crwdns702853:0crwdne702853:0" - all: "crwdns702855:0crwdne702855:0" - project_status: "crwdns702857:0crwdne702857:0" - really_close_dialog: "crwdns702859:0crwdne702859:0" - responsible: "crwdns702861:0crwdne702861:0" - save: crwdns702863:0crwdne702863:0 - start_date: "crwdns702865:0crwdne702865:0" - tooManyProjects: "crwdns702867:0%{count}crwdne702867:0" + aggregation: "crwdns705366:0crwdne705366:0" + level1: "crwdns705368:0crwdne705368:0" + level2: "crwdns705370:0crwdne705370:0" + level3: "crwdns705372:0crwdne705372:0" + level4: "crwdns705374:0crwdne705374:0" + level5: "crwdns705376:0crwdne705376:0" + all: "crwdns705378:0crwdne705378:0" + project_status: "crwdns705380:0crwdne705380:0" + really_close_dialog: "crwdns705382:0crwdne705382:0" + responsible: "crwdns705384:0crwdne705384:0" + save: crwdns705386:0crwdne705386:0 + start_date: "crwdns705388:0crwdne705388:0" + tooManyProjects: "crwdns705390:0%{count}crwdne705390:0" selection_mode: - notification: 'crwdns702869:0crwdne702869:0' + notification: 'crwdns705392:0crwdne705392:0' zoom: - in: "crwdns702871:0crwdne702871:0" - out: "crwdns702873:0crwdne702873:0" - auto: "crwdns702875:0crwdne702875:0" - days: "crwdns702877:0crwdne702877:0" - weeks: "crwdns702879:0crwdne702879:0" - months: "crwdns702881:0crwdne702881:0" - quarters: "crwdns702883:0crwdne702883:0" - years: "crwdns702885:0crwdne702885:0" - slider: "crwdns702887:0crwdne702887:0" + in: "crwdns705394:0crwdne705394:0" + out: "crwdns705396:0crwdne705396:0" + auto: "crwdns705398:0crwdne705398:0" + days: "crwdns705400:0crwdne705400:0" + weeks: "crwdns705402:0crwdne705402:0" + months: "crwdns705404:0crwdne705404:0" + quarters: "crwdns705406:0crwdne705406:0" + years: "crwdns705408:0crwdne705408:0" + slider: "crwdns705410:0crwdne705410:0" description: > - crwdns702889:0crwdne702889:0 + crwdns705412:0crwdne705412:0 tl_toolbar: - zooms: "crwdns702891:0crwdne702891:0" - outlines: "crwdns702893:0crwdne702893:0" + zooms: "crwdns705414:0crwdne705414:0" + outlines: "crwdns705416:0crwdne705416:0" upsale: - ee_only: 'crwdns702895:0crwdne702895:0' + ee_only: 'crwdns705418:0crwdne705418:0' wiki_formatting: - strong: "crwdns702897:0crwdne702897:0" - italic: "crwdns702899:0crwdne702899:0" - underline: "crwdns702901:0crwdne702901:0" - deleted: "crwdns702903:0crwdne702903:0" - code: "crwdns702905:0crwdne702905:0" - heading1: "crwdns702907:0crwdne702907:0" - heading2: "crwdns702909:0crwdne702909:0" - heading3: "crwdns702911:0crwdne702911:0" - unordered_list: "crwdns702913:0crwdne702913:0" - ordered_list: "crwdns702915:0crwdne702915:0" - quote: "crwdns702917:0crwdne702917:0" - unquote: "crwdns702919:0crwdne702919:0" - preformatted_text: "crwdns702921:0crwdne702921:0" - wiki_link: "crwdns702923:0crwdne702923:0" - image: "crwdns702925:0crwdne702925:0" + strong: "crwdns705420:0crwdne705420:0" + italic: "crwdns705422:0crwdne705422:0" + underline: "crwdns705424:0crwdne705424:0" + deleted: "crwdns705426:0crwdne705426:0" + code: "crwdns705428:0crwdne705428:0" + heading1: "crwdns705430:0crwdne705430:0" + heading2: "crwdns705432:0crwdne705432:0" + heading3: "crwdns705434:0crwdne705434:0" + unordered_list: "crwdns705436:0crwdne705436:0" + ordered_list: "crwdns705438:0crwdne705438:0" + quote: "crwdns705440:0crwdne705440:0" + unquote: "crwdns705442:0crwdne705442:0" + preformatted_text: "crwdns705444:0crwdne705444:0" + wiki_link: "crwdns705446:0crwdne705446:0" + image: "crwdns705448:0crwdne705448:0" work_packages: bulk_actions: - move: 'crwdns702927:0crwdne702927:0' - edit: 'crwdns702929:0crwdne702929:0' - copy: 'crwdns702931:0crwdne702931:0' - delete: 'crwdns702933:0crwdne702933:0' - button_clear: "crwdns702935:0crwdne702935:0" - comment_added: "crwdns702937:0crwdne702937:0" - comment_send_failed: "crwdns702939:0crwdne702939:0" - comment_updated: "crwdns702941:0crwdne702941:0" - confirm_edit_cancel: "crwdns702943:0crwdne702943:0" - description_filter: "crwdns702945:0crwdne702945:0" - description_enter_text: "crwdns702947:0crwdne702947:0" - description_options_hide: "crwdns702949:0crwdne702949:0" - description_options_show: "crwdns702951:0crwdne702951:0" - edit_attribute: "crwdns702953:0%{attribute}crwdne702953:0" - key_value: "crwdns702955:0%{key}crwdnd702955:0%{value}crwdne702955:0" - label_enable_multi_select: "crwdns702957:0crwdne702957:0" - label_disable_multi_select: "crwdns702959:0crwdne702959:0" - label_filter_add: "crwdns702961:0crwdne702961:0" - label_filter_by_text: "crwdns702963:0crwdne702963:0" - label_options: "crwdns702965:0crwdne702965:0" - label_column_multiselect: "crwdns702967:0crwdne702967:0" - message_error_during_bulk_delete: crwdns702969:0crwdne702969:0 - message_successful_bulk_delete: crwdns702971:0crwdne702971:0 - message_successful_show_in_fullscreen: "crwdns702973:0crwdne702973:0" - message_view_spent_time: "crwdns702975:0crwdne702975:0" - message_work_package_read_only: "crwdns702977:0crwdne702977:0" - message_work_package_status_blocked: "crwdns702979:0crwdne702979:0" - placeholder_filter_by_text: "crwdns702981:0crwdne702981:0" + move: 'crwdns705450:0crwdne705450:0' + edit: 'crwdns705452:0crwdne705452:0' + copy: 'crwdns705454:0crwdne705454:0' + delete: 'crwdns705456:0crwdne705456:0' + button_clear: "crwdns705458:0crwdne705458:0" + comment_added: "crwdns705460:0crwdne705460:0" + comment_send_failed: "crwdns705462:0crwdne705462:0" + comment_updated: "crwdns705464:0crwdne705464:0" + confirm_edit_cancel: "crwdns705466:0crwdne705466:0" + description_filter: "crwdns705468:0crwdne705468:0" + description_enter_text: "crwdns705470:0crwdne705470:0" + description_options_hide: "crwdns705472:0crwdne705472:0" + description_options_show: "crwdns705474:0crwdne705474:0" + edit_attribute: "crwdns705476:0%{attribute}crwdne705476:0" + key_value: "crwdns705478:0%{key}crwdnd705478:0%{value}crwdne705478:0" + label_enable_multi_select: "crwdns705480:0crwdne705480:0" + label_disable_multi_select: "crwdns705482:0crwdne705482:0" + label_filter_add: "crwdns705484:0crwdne705484:0" + label_filter_by_text: "crwdns705486:0crwdne705486:0" + label_options: "crwdns705488:0crwdne705488:0" + label_column_multiselect: "crwdns705490:0crwdne705490:0" + message_error_during_bulk_delete: crwdns705492:0crwdne705492:0 + message_successful_bulk_delete: crwdns705494:0crwdne705494:0 + message_successful_show_in_fullscreen: "crwdns705496:0crwdne705496:0" + message_view_spent_time: "crwdns705498:0crwdne705498:0" + message_work_package_read_only: "crwdns705500:0crwdne705500:0" + message_work_package_status_blocked: "crwdns705502:0crwdne705502:0" + placeholder_filter_by_text: "crwdns705504:0crwdne705504:0" inline_create: - title: 'crwdns702983:0crwdne702983:0' + title: 'crwdns705506:0crwdne705506:0' create: - title: 'crwdns702985:0crwdne702985:0' - header: 'crwdns702987:0%{type}crwdne702987:0' - header_no_type: 'crwdns702989:0crwdne702989:0' - header_with_parent: 'crwdns702991:0%{type}crwdnd702991:0%{parent_type}crwdnd702991:0%{id}crwdne702991:0' - button: 'crwdns702993:0crwdne702993:0' + title: 'crwdns705508:0crwdne705508:0' + header: 'crwdns705510:0%{type}crwdne705510:0' + header_no_type: 'crwdns705512:0crwdne705512:0' + header_with_parent: 'crwdns705514:0%{type}crwdnd705514:0%{parent_type}crwdnd705514:0%{id}crwdne705514:0' + button: 'crwdns705516:0crwdne705516:0' copy: - title: 'crwdns702995:0crwdne702995:0' + title: 'crwdns705518:0crwdne705518:0' hierarchy: - show: "crwdns702997:0crwdne702997:0" - hide: "crwdns702999:0crwdne702999:0" - toggle_button: 'crwdns703001:0crwdne703001:0' - leaf: 'crwdns703003:0%{level}crwdne703003:0' - children_collapsed: 'crwdns703005:0%{level}crwdne703005:0' - children_expanded: 'crwdns703007:0%{level}crwdne703007:0' + show: "crwdns705520:0crwdne705520:0" + hide: "crwdns705522:0crwdne705522:0" + toggle_button: 'crwdns705524:0crwdne705524:0' + leaf: 'crwdns705526:0%{level}crwdne705526:0' + children_collapsed: 'crwdns705528:0%{level}crwdne705528:0' + children_expanded: 'crwdns705530:0%{level}crwdne705530:0' faulty_query: - title: crwdns703009:0crwdne703009:0 - description: crwdns703011:0crwdne703011:0 + title: crwdns705532:0crwdne705532:0 + description: crwdns705534:0crwdne705534:0 no_results: - title: crwdns703013:0crwdne703013:0 - description: crwdns703015:0crwdne703015:0 - limited_results: crwdns703017:0%{count}crwdne703017:0 + title: crwdns705536:0crwdne705536:0 + description: crwdns705538:0crwdne705538:0 + limited_results: crwdns705540:0%{count}crwdne705540:0 property_groups: - details: "crwdns703019:0crwdne703019:0" - people: "crwdns703021:0crwdne703021:0" - estimatesAndTime: "crwdns703023:0crwdne703023:0" - other: "crwdns703025:0crwdne703025:0" + details: "crwdns705542:0crwdne705542:0" + people: "crwdns705544:0crwdne705544:0" + estimatesAndTime: "crwdns705546:0crwdne705546:0" + other: "crwdns705548:0crwdne705548:0" properties: - assignee: "crwdns703027:0crwdne703027:0" - author: "crwdns703029:0crwdne703029:0" - createdAt: "crwdns703031:0crwdne703031:0" - description: "crwdns703033:0crwdne703033:0" - date: "crwdns703035:0crwdne703035:0" - dueDate: "crwdns703037:0crwdne703037:0" - estimatedTime: "crwdns703039:0crwdne703039:0" - spentTime: "crwdns703041:0crwdne703041:0" - category: "crwdns703043:0crwdne703043:0" - percentageDone: "crwdns703045:0crwdne703045:0" - priority: "crwdns703047:0crwdne703047:0" - projectName: "crwdns703049:0crwdne703049:0" - responsible: "crwdns703051:0crwdne703051:0" - startDate: "crwdns703053:0crwdne703053:0" - status: "crwdns703055:0crwdne703055:0" - subject: "crwdns703057:0crwdne703057:0" - subproject: "crwdns703059:0crwdne703059:0" - title: "crwdns703061:0crwdne703061:0" - type: "crwdns703063:0crwdne703063:0" - updatedAt: "crwdns703065:0crwdne703065:0" - versionName: "crwdns703067:0crwdne703067:0" - version: "crwdns703069:0crwdne703069:0" + assignee: "crwdns705550:0crwdne705550:0" + author: "crwdns705552:0crwdne705552:0" + createdAt: "crwdns705554:0crwdne705554:0" + description: "crwdns705556:0crwdne705556:0" + date: "crwdns705558:0crwdne705558:0" + dueDate: "crwdns705560:0crwdne705560:0" + estimatedTime: "crwdns705562:0crwdne705562:0" + spentTime: "crwdns705564:0crwdne705564:0" + category: "crwdns705566:0crwdne705566:0" + percentageDone: "crwdns705568:0crwdne705568:0" + priority: "crwdns705570:0crwdne705570:0" + projectName: "crwdns705572:0crwdne705572:0" + responsible: "crwdns705574:0crwdne705574:0" + startDate: "crwdns705576:0crwdne705576:0" + status: "crwdns705578:0crwdne705578:0" + subject: "crwdns705580:0crwdne705580:0" + subproject: "crwdns705582:0crwdne705582:0" + title: "crwdns705584:0crwdne705584:0" + type: "crwdns705586:0crwdne705586:0" + updatedAt: "crwdns705588:0crwdne705588:0" + versionName: "crwdns705590:0crwdne705590:0" + version: "crwdns705592:0crwdne705592:0" default_queries: - latest_activity: "crwdns703071:0crwdne703071:0" - created_by_me: "crwdns703073:0crwdne703073:0" - assigned_to_me: "crwdns703075:0crwdne703075:0" - recently_created: "crwdns703077:0crwdne703077:0" - all_open: "crwdns703079:0crwdne703079:0" - summary: "crwdns703081:0crwdne703081:0" + latest_activity: "crwdns705594:0crwdne705594:0" + created_by_me: "crwdns705596:0crwdne705596:0" + assigned_to_me: "crwdns705598:0crwdne705598:0" + recently_created: "crwdns705600:0crwdne705600:0" + all_open: "crwdns705602:0crwdne705602:0" + summary: "crwdns705604:0crwdne705604:0" jump_marks: - pagination: "crwdns703083:0crwdne703083:0" - label_pagination: "crwdns703085:0crwdne703085:0" - content: "crwdns703087:0crwdne703087:0" - label_content: "crwdns703089:0crwdne703089:0" + pagination: "crwdns705606:0crwdne705606:0" + label_pagination: "crwdns705608:0crwdne705608:0" + content: "crwdns705610:0crwdne705610:0" + label_content: "crwdns705612:0crwdne705612:0" placeholders: - default: "crwdns703091:0crwdne703091:0" - date: "crwdns703093:0crwdne703093:0" - formattable: "crwdns703095:0%{name}crwdne703095:0" + default: "crwdns705614:0crwdne705614:0" + date: "crwdns705616:0crwdne705616:0" + formattable: "crwdns705618:0%{name}crwdne705618:0" query: - column_names: "crwdns703097:0crwdne703097:0" - group_by: "crwdns703099:0crwdne703099:0" - group: "crwdns703101:0crwdne703101:0" - group_by_disabled_by_hierarchy: "crwdns703103:0crwdne703103:0" - hierarchy_disabled_by_group_by: "crwdns703105:0%{column}crwdne703105:0" - sort_ascending: "crwdns703107:0crwdne703107:0" - sort_descending: "crwdns703109:0crwdne703109:0" - move_column_left: "crwdns703111:0crwdne703111:0" - move_column_right: "crwdns703113:0crwdne703113:0" - hide_column: "crwdns703115:0crwdne703115:0" - insert_columns: "crwdns703117:0crwdne703117:0" - filters: "crwdns703119:0crwdne703119:0" - display_sums: "crwdns703121:0crwdne703121:0" - confirm_edit_cancel: "crwdns703123:0crwdne703123:0" - click_to_edit_query_name: "crwdns703125:0crwdne703125:0" - rename_query_placeholder: "crwdns703127:0crwdne703127:0" - star_text: "crwdns703129:0crwdne703129:0" + column_names: "crwdns705620:0crwdne705620:0" + group_by: "crwdns705622:0crwdne705622:0" + group: "crwdns705624:0crwdne705624:0" + group_by_disabled_by_hierarchy: "crwdns705626:0crwdne705626:0" + hierarchy_disabled_by_group_by: "crwdns705628:0%{column}crwdne705628:0" + sort_ascending: "crwdns705630:0crwdne705630:0" + sort_descending: "crwdns705632:0crwdne705632:0" + move_column_left: "crwdns705634:0crwdne705634:0" + move_column_right: "crwdns705636:0crwdne705636:0" + hide_column: "crwdns705638:0crwdne705638:0" + insert_columns: "crwdns705640:0crwdne705640:0" + filters: "crwdns705642:0crwdne705642:0" + display_sums: "crwdns705644:0crwdne705644:0" + confirm_edit_cancel: "crwdns705646:0crwdne705646:0" + click_to_edit_query_name: "crwdns705648:0crwdne705648:0" + rename_query_placeholder: "crwdns705650:0crwdne705650:0" + star_text: "crwdns705652:0crwdne705652:0" public_text: > - crwdns703131:0crwdne703131:0 + crwdns705654:0crwdne705654:0 errors: - unretrievable_query: "crwdns703133:0crwdne703133:0" - not_found: "crwdns703135:0crwdne703135:0" - duplicate_query_title: "crwdns703137:0crwdne703137:0" - text_no_results: "crwdns703139:0crwdne703139:0" + unretrievable_query: "crwdns705656:0crwdne705656:0" + not_found: "crwdns705658:0crwdne705658:0" + duplicate_query_title: "crwdns705660:0crwdne705660:0" + text_no_results: "crwdns705662:0crwdne705662:0" scheduling: - is_parent: "crwdns703141:0crwdne703141:0" - is_switched_from_manual_to_automatic: "crwdns703143:0crwdne703143:0" + is_parent: "crwdns705664:0crwdne705664:0" + is_switched_from_manual_to_automatic: "crwdns705666:0crwdne705666:0" table: - configure_button: 'crwdns703145:0crwdne703145:0' - summary: "crwdns703147:0crwdne703147:0" - text_inline_edit: "crwdns703149:0crwdne703149:0" - text_sort_hint: "crwdns703151:0crwdne703151:0" - text_select_hint: "crwdns703153:0crwdne703153:0" + configure_button: 'crwdns705668:0crwdne705668:0' + summary: "crwdns705670:0crwdne705670:0" + text_inline_edit: "crwdns705672:0crwdne705672:0" + text_sort_hint: "crwdns705674:0crwdne705674:0" + text_select_hint: "crwdns705676:0crwdne705676:0" table_configuration: - button: 'crwdns703155:0crwdne703155:0' - choose_display_mode: 'crwdns703157:0crwdne703157:0' - modal_title: 'crwdns703159:0crwdne703159:0' - embedded_tab_disabled: "crwdns703161:0crwdne703161:0" - default: "crwdns703163:0crwdne703163:0" - display_settings: 'crwdns703165:0crwdne703165:0' - default_mode: "crwdns703167:0crwdne703167:0" - hierarchy_mode: "crwdns703169:0crwdne703169:0" - hierarchy_hint: "crwdns703171:0crwdne703171:0" - display_sums_hint: "crwdns703173:0crwdne703173:0" - show_timeline_hint: "crwdns703175:0crwdne703175:0" - highlighting: 'crwdns703177:0crwdne703177:0' + button: 'crwdns705678:0crwdne705678:0' + choose_display_mode: 'crwdns705680:0crwdne705680:0' + modal_title: 'crwdns705682:0crwdne705682:0' + embedded_tab_disabled: "crwdns705684:0crwdne705684:0" + default: "crwdns705686:0crwdne705686:0" + display_settings: 'crwdns705688:0crwdne705688:0' + default_mode: "crwdns705690:0crwdne705690:0" + hierarchy_mode: "crwdns705692:0crwdne705692:0" + hierarchy_hint: "crwdns705694:0crwdne705694:0" + display_sums_hint: "crwdns705696:0crwdne705696:0" + show_timeline_hint: "crwdns705698:0crwdne705698:0" + highlighting: 'crwdns705700:0crwdne705700:0' highlighting_mode: - description: "crwdns703179:0crwdne703179:0" - none: "crwdns703181:0crwdne703181:0" - inline: 'crwdns703183:0crwdne703183:0' - inline_all: 'crwdns703185:0crwdne703185:0' - entire_row_by: 'crwdns703187:0crwdne703187:0' - status: 'crwdns703189:0crwdne703189:0' - priority: 'crwdns703191:0crwdne703191:0' - type: 'crwdns703193:0crwdne703193:0' + description: "crwdns705702:0crwdne705702:0" + none: "crwdns705704:0crwdne705704:0" + inline: 'crwdns705706:0crwdne705706:0' + inline_all: 'crwdns705708:0crwdne705708:0' + entire_row_by: 'crwdns705710:0crwdne705710:0' + status: 'crwdns705712:0crwdne705712:0' + priority: 'crwdns705714:0crwdne705714:0' + type: 'crwdns705716:0crwdne705716:0' sorting_mode: - description: 'crwdns703195:0crwdne703195:0' - automatic: 'crwdns703197:0crwdne703197:0' - manually: 'crwdns703199:0crwdne703199:0' - warning: 'crwdns703201:0crwdne703201:0' - columns_help_text: "crwdns703203:0crwdne703203:0" + description: 'crwdns705718:0crwdne705718:0' + automatic: 'crwdns705720:0crwdne705720:0' + manually: 'crwdns705722:0crwdne705722:0' + warning: 'crwdns705724:0crwdne705724:0' + columns_help_text: "crwdns705726:0crwdne705726:0" upsale: - attribute_highlighting: 'crwdns703205:0crwdne703205:0' - relation_columns: 'crwdns703207:0crwdne703207:0' - check_out_link: 'crwdns703209:0crwdne703209:0' + attribute_highlighting: 'crwdns705728:0crwdne705728:0' + relation_columns: 'crwdns705730:0crwdne705730:0' + check_out_link: 'crwdns705732:0crwdne705732:0' relation_filters: - filter_work_packages_by_relation_type: 'crwdns703211:0crwdne703211:0' + filter_work_packages_by_relation_type: 'crwdns705734:0crwdne705734:0' tabs: - overview: crwdns703213:0crwdne703213:0 - activity: crwdns703215:0crwdne703215:0 - relations: crwdns703217:0crwdne703217:0 - watchers: crwdns703219:0crwdne703219:0 - attachments: crwdns703221:0crwdne703221:0 + overview: crwdns705736:0crwdne705736:0 + activity: crwdns705738:0crwdne705738:0 + relations: crwdns705740:0crwdne705740:0 + watchers: crwdns705742:0crwdne705742:0 + attachments: crwdns705744:0crwdne705744:0 time_relative: - days: "crwdns703223:0crwdne703223:0" - weeks: "crwdns703225:0crwdne703225:0" - months: "crwdns703227:0crwdne703227:0" + days: "crwdns705746:0crwdne705746:0" + weeks: "crwdns705748:0crwdne705748:0" + months: "crwdns705750:0crwdne705750:0" toolbar: settings: - configure_view: "crwdns703229:0crwdne703229:0" - columns: "crwdns703231:0crwdne703231:0" - sort_by: "crwdns703233:0crwdne703233:0" - group_by: "crwdns703235:0crwdne703235:0" - display_sums: "crwdns703237:0crwdne703237:0" - display_hierarchy: "crwdns703239:0crwdne703239:0" - hide_hierarchy: "crwdns703241:0crwdne703241:0" - hide_sums: "crwdns703243:0crwdne703243:0" - save: "crwdns703245:0crwdne703245:0" - save_as: "crwdns703247:0crwdne703247:0" - export: "crwdns703249:0crwdne703249:0" - visibility_settings: "crwdns703251:0crwdne703251:0" - page_settings: "crwdns703253:0crwdne703253:0" - delete: "crwdns703255:0crwdne703255:0" - filter: "crwdns703257:0crwdne703257:0" - unselected_title: "crwdns703259:0crwdne703259:0" - search_query_label: "crwdns703261:0crwdne703261:0" - search_query_title: "crwdns703263:0crwdne703263:0" - placeholder_query_title: "crwdns703265:0crwdne703265:0" + configure_view: "crwdns705752:0crwdne705752:0" + columns: "crwdns705754:0crwdne705754:0" + sort_by: "crwdns705756:0crwdne705756:0" + group_by: "crwdns705758:0crwdne705758:0" + display_sums: "crwdns705760:0crwdne705760:0" + display_hierarchy: "crwdns705762:0crwdne705762:0" + hide_hierarchy: "crwdns705764:0crwdne705764:0" + hide_sums: "crwdns705766:0crwdne705766:0" + save: "crwdns705768:0crwdne705768:0" + save_as: "crwdns705770:0crwdne705770:0" + export: "crwdns705772:0crwdne705772:0" + visibility_settings: "crwdns705774:0crwdne705774:0" + page_settings: "crwdns705776:0crwdne705776:0" + delete: "crwdns705778:0crwdne705778:0" + filter: "crwdns705780:0crwdne705780:0" + unselected_title: "crwdns705782:0crwdne705782:0" + search_query_label: "crwdns705784:0crwdne705784:0" + search_query_title: "crwdns705786:0crwdne705786:0" + placeholder_query_title: "crwdns705788:0crwdne705788:0" modals: - label_settings: "crwdns703267:0crwdne703267:0" - label_name: "crwdns703269:0crwdne703269:0" - label_delete_page: "crwdns703271:0crwdne703271:0" - button_apply: "crwdns703273:0crwdne703273:0" - button_save: "crwdns703275:0crwdne703275:0" - button_submit: "crwdns703277:0crwdne703277:0" - button_cancel: "crwdns703279:0crwdne703279:0" + label_settings: "crwdns705790:0crwdne705790:0" + label_name: "crwdns705792:0crwdne705792:0" + label_delete_page: "crwdns705794:0crwdne705794:0" + button_apply: "crwdns705796:0crwdne705796:0" + button_save: "crwdns705798:0crwdne705798:0" + button_submit: "crwdns705800:0crwdne705800:0" + button_cancel: "crwdns705802:0crwdne705802:0" form_submit: - title: 'crwdns703281:0crwdne703281:0' - text: 'crwdns703283:0crwdne703283:0' + title: 'crwdns705804:0crwdne705804:0' + text: 'crwdns705806:0crwdne705806:0' destroy_work_package: - title: "crwdns703285:0%{label}crwdne703285:0" - text: "crwdns703287:0%{label}crwdne703287:0" - has_children: "crwdns703289:0%{childUnits}crwdne703289:0" - confirm_deletion_children: "crwdns703291:0crwdne703291:0" - deletes_children: "crwdns703293:0crwdne703293:0" + title: "crwdns705808:0%{label}crwdne705808:0" + text: "crwdns705810:0%{label}crwdne705810:0" + has_children: "crwdns705812:0%{childUnits}crwdne705812:0" + confirm_deletion_children: "crwdns705814:0crwdne705814:0" + deletes_children: "crwdns705816:0crwdne705816:0" destroy_time_entry: - title: "crwdns703295:0crwdne703295:0" - text: "crwdns703297:0crwdne703297:0" - notice_no_results_to_display: "crwdns703299:0crwdne703299:0" - notice_successful_create: "crwdns703301:0crwdne703301:0" - notice_successful_delete: "crwdns703303:0crwdne703303:0" - notice_successful_update: "crwdns703305:0crwdne703305:0" - notice_job_started: "crwdns703307:0crwdne703307:0" - notice_bad_request: "crwdns703309:0crwdne703309:0" + title: "crwdns705818:0crwdne705818:0" + text: "crwdns705820:0crwdne705820:0" + notice_no_results_to_display: "crwdns705822:0crwdne705822:0" + notice_successful_create: "crwdns705824:0crwdne705824:0" + notice_successful_delete: "crwdns705826:0crwdne705826:0" + notice_successful_update: "crwdns705828:0crwdne705828:0" + notice_job_started: "crwdns705830:0crwdne705830:0" + notice_bad_request: "crwdns705832:0crwdne705832:0" relations: - empty: crwdns703311:0crwdne703311:0 - remove: crwdns703313:0crwdne703313:0 + empty: crwdns705834:0crwdne705834:0 + remove: crwdns705836:0crwdne705836:0 inplace: - button_edit: "crwdns703315:0%{attribute}crwdne703315:0" - button_save: "crwdns703317:0%{attribute}crwdne703317:0" - button_cancel: "crwdns703319:0%{attribute}crwdne703319:0" - button_save_all: "crwdns703321:0crwdne703321:0" - button_cancel_all: "crwdns703323:0crwdne703323:0" - link_formatting_help: "crwdns703325:0crwdne703325:0" - btn_preview_enable: "crwdns703327:0crwdne703327:0" - btn_preview_disable: "crwdns703329:0crwdne703329:0" - null_value_label: "crwdns703331:0crwdne703331:0" - clear_value_label: "crwdns703333:0crwdne703333:0" + button_edit: "crwdns705838:0%{attribute}crwdne705838:0" + button_save: "crwdns705840:0%{attribute}crwdne705840:0" + button_cancel: "crwdns705842:0%{attribute}crwdne705842:0" + button_save_all: "crwdns705844:0crwdne705844:0" + button_cancel_all: "crwdns705846:0crwdne705846:0" + link_formatting_help: "crwdns705848:0crwdne705848:0" + btn_preview_enable: "crwdns705850:0crwdne705850:0" + btn_preview_disable: "crwdns705852:0crwdne705852:0" + null_value_label: "crwdns705854:0crwdne705854:0" + clear_value_label: "crwdns705856:0crwdne705856:0" errors: - required: 'crwdns703335:0%{field}crwdne703335:0' - number: 'crwdns703337:0%{field}crwdne703337:0' - maxlength: 'crwdns703339:0%{field}crwdnd703339:0%{maxLength}crwdne703339:0' - minlength: 'crwdns703341:0%{field}crwdnd703341:0%{minLength}crwdne703341:0' - messages_on_field: 'crwdns703343:0%{messages}crwdne703343:0' - error_could_not_resolve_version_name: "crwdns703345:0crwdne703345:0" - error_could_not_resolve_user_name: "crwdns703347:0crwdne703347:0" - error_attachment_upload: "crwdns703349:0%{error}crwdne703349:0" - error_attachment_upload_permission: "crwdns703351:0crwdne703351:0" + required: 'crwdns705858:0%{field}crwdne705858:0' + number: 'crwdns705860:0%{field}crwdne705860:0' + maxlength: 'crwdns705862:0%{field}crwdnd705862:0%{maxLength}crwdne705862:0' + minlength: 'crwdns705864:0%{field}crwdnd705864:0%{minLength}crwdne705864:0' + messages_on_field: 'crwdns705866:0%{messages}crwdne705866:0' + error_could_not_resolve_version_name: "crwdns705868:0crwdne705868:0" + error_could_not_resolve_user_name: "crwdns705870:0crwdne705870:0" + error_attachment_upload: "crwdns705872:0%{error}crwdne705872:0" + error_attachment_upload_permission: "crwdns705874:0crwdne705874:0" units: workPackage: - one: "crwdns703353:1crwdne703353:1" - other: "crwdns703353:5crwdne703353:5" + one: "crwdns705876:1crwdne705876:1" + other: "crwdns705876:5crwdne705876:5" child_work_packages: - one: "crwdns703355:1crwdne703355:1" - other: "crwdns703355:5%{count}crwdne703355:5" + one: "crwdns705878:1crwdne705878:1" + other: "crwdns705878:5%{count}crwdne705878:5" hour: - one: "crwdns703357:0crwdne703357:0" - other: "crwdns703359:0%{count}crwdne703359:0" - zero: "crwdns703361:0crwdne703361:0" + one: "crwdns705880:0crwdne705880:0" + other: "crwdns705882:0%{count}crwdne705882:0" + zero: "crwdns705884:0crwdne705884:0" zen_mode: - button_activate: 'crwdns703363:0crwdne703363:0' - button_deactivate: 'crwdns703365:0crwdne703365:0' + button_activate: 'crwdns705886:0crwdne705886:0' + button_deactivate: 'crwdns705888:0crwdne705888:0' global_search: - all_projects: "crwdns703367:0crwdne703367:0" - search: "crwdns703369:0crwdne703369:0" - close_search: "crwdns703371:0crwdne703371:0" - current_project: "crwdns703373:0crwdne703373:0" - current_project_and_all_descendants: "crwdns703375:0crwdne703375:0" + all_projects: "crwdns705890:0crwdne705890:0" + search: "crwdns705892:0crwdne705892:0" + close_search: "crwdns705894:0crwdne705894:0" + current_project: "crwdns705896:0crwdne705896:0" + current_project_and_all_descendants: "crwdns705898:0crwdne705898:0" title: - all_projects: "crwdns703377:0crwdne703377:0" - project_and_subprojects: "crwdns703379:0crwdne703379:0" - search_for: "crwdns703381:0crwdne703381:0" + all_projects: "crwdns705900:0crwdne705900:0" + project_and_subprojects: "crwdns705902:0crwdne705902:0" + search_for: "crwdns705904:0crwdne705904:0" views: - card: 'crwdns703383:0crwdne703383:0' - list: 'crwdns703385:0crwdne703385:0' - timeline: 'crwdns703387:0crwdne703387:0' + card: 'crwdns705906:0crwdne705906:0' + list: 'crwdns705908:0crwdne705908:0' + timeline: 'crwdns705910:0crwdne705910:0' invite_user_modal: - back: 'crwdns703389:0crwdne703389:0' - invite: 'crwdns703391:0crwdne703391:0' + back: 'crwdns705912:0crwdne705912:0' + invite: 'crwdns705914:0crwdne705914:0' title: - invite: 'crwdns703393:0crwdne703393:0' - invite_to_project: 'crwdns703395:0%{type}crwdnd703395:0%{project}crwdne703395:0' - User: 'crwdns703397:0crwdne703397:0' - Group: 'crwdns703399:0crwdne703399:0' - PlaceholderUser: 'crwdns703401:0crwdne703401:0' - invite_principal_to_project: 'crwdns703403:0%{principal}crwdnd703403:0%{project}crwdne703403:0' + invite: 'crwdns705916:0crwdne705916:0' + invite_to_project: 'crwdns705918:0%{type}crwdnd705918:0%{project}crwdne705918:0' + User: 'crwdns705920:0crwdne705920:0' + Group: 'crwdns705922:0crwdne705922:0' + PlaceholderUser: 'crwdns705924:0crwdne705924:0' + invite_principal_to_project: 'crwdns705926:0%{principal}crwdnd705926:0%{project}crwdne705926:0' project: - label: 'crwdns703405:0crwdne703405:0' - required: 'crwdns703407:0crwdne703407:0' - lacking_permission: 'crwdns703409:0crwdne703409:0' - lacking_permission_info: 'crwdns703411:0crwdne703411:0' - next_button: 'crwdns703413:0crwdne703413:0' - no_results: 'crwdns703415:0crwdne703415:0' - no_invite_rights: 'crwdns703417:0crwdne703417:0' + label: 'crwdns705928:0crwdne705928:0' + required: 'crwdns705930:0crwdne705930:0' + lacking_permission: 'crwdns705932:0crwdne705932:0' + lacking_permission_info: 'crwdns705934:0crwdne705934:0' + next_button: 'crwdns705936:0crwdne705936:0' + no_results: 'crwdns705938:0crwdne705938:0' + no_invite_rights: 'crwdns705940:0crwdne705940:0' type: - required: 'crwdns703419:0crwdne703419:0' + required: 'crwdns705942:0crwdne705942:0' user: - title: 'crwdns703421:0crwdne703421:0' - description: 'crwdns703423:0crwdne703423:0' + title: 'crwdns705944:0crwdne705944:0' + description: 'crwdns705946:0crwdne705946:0' group: - title: 'crwdns703425:0crwdne703425:0' - description: 'crwdns703427:0crwdne703427:0' + title: 'crwdns705948:0crwdne705948:0' + description: 'crwdns705950:0crwdne705950:0' placeholder: - title: 'crwdns703429:0crwdne703429:0' - title_no_ee: 'crwdns703431:0crwdne703431:0' - description: 'crwdns703433:0crwdne703433:0' - description_no_ee: 'crwdns703435:0%{eeHref}crwdne703435:0' + title: 'crwdns705952:0crwdne705952:0' + title_no_ee: 'crwdns705954:0crwdne705954:0' + description: 'crwdns705956:0crwdne705956:0' + description_no_ee: 'crwdns705958:0%{eeHref}crwdne705958:0' principal: label: - name_or_email: 'crwdns703437:0crwdne703437:0' - name: 'crwdns703439:0crwdne703439:0' - already_member_message: 'crwdns703441:0%{project}crwdne703441:0' - no_results_user: 'crwdns703443:0crwdne703443:0' - invite_user: 'crwdns703445:0crwdne703445:0' - no_results_placeholder: 'crwdns703447:0crwdne703447:0' - create_new_placeholder: 'crwdns703449:0crwdne703449:0' - no_results_group: 'crwdns703451:0crwdne703451:0' - next_button: 'crwdns703453:0crwdne703453:0' + name_or_email: 'crwdns705960:0crwdne705960:0' + name: 'crwdns705962:0crwdne705962:0' + already_member_message: 'crwdns705964:0%{project}crwdne705964:0' + no_results_user: 'crwdns705966:0crwdne705966:0' + invite_user: 'crwdns705968:0crwdne705968:0' + no_results_placeholder: 'crwdns705970:0crwdne705970:0' + create_new_placeholder: 'crwdns705972:0crwdne705972:0' + no_results_group: 'crwdns705974:0crwdne705974:0' + next_button: 'crwdns705976:0crwdne705976:0' required: - user: 'crwdns703455:0crwdne703455:0' - placeholder: 'crwdns703457:0crwdne703457:0' - group: 'crwdns703459:0crwdne703459:0' + user: 'crwdns705978:0crwdne705978:0' + placeholder: 'crwdns705980:0crwdne705980:0' + group: 'crwdns705982:0crwdne705982:0' role: - label: 'crwdns703461:0%{project}crwdne703461:0' - no_roles_found: 'crwdns703463:0crwdne703463:0' - description: 'crwdns703465:0%{principal}crwdne703465:0' - required: 'crwdns703467:0crwdne703467:0' - next_button: 'crwdns703469:0crwdne703469:0' + label: 'crwdns705984:0%{project}crwdne705984:0' + no_roles_found: 'crwdns705986:0crwdne705986:0' + description: 'crwdns705988:0%{principal}crwdne705988:0' + required: 'crwdns705990:0crwdne705990:0' + next_button: 'crwdns705992:0crwdne705992:0' message: - label: 'crwdns703471:0crwdne703471:0' - description: 'crwdns703473:0%{principal}crwdne703473:0' - next_button: 'crwdns703475:0crwdne703475:0' + label: 'crwdns705994:0crwdne705994:0' + description: 'crwdns705996:0%{principal}crwdne705996:0' + next_button: 'crwdns705998:0crwdne705998:0' summary: - next_button: 'crwdns703477:0crwdne703477:0' + next_button: 'crwdns706000:0crwdne706000:0' success: - title: 'crwdns703479:0%{principal}crwdne703479:0' + title: 'crwdns706002:0%{principal}crwdne706002:0' description: - user: 'crwdns703481:0%{project}crwdne703481:0' - placeholder: 'crwdns703483:0%{project}crwdne703483:0' - group: 'crwdns703485:0%{project}crwdne703485:0' - next_button: 'crwdns703487:0crwdne703487:0' + user: 'crwdns706004:0%{project}crwdne706004:0' + placeholder: 'crwdns706006:0%{project}crwdne706006:0' + group: 'crwdns706008:0%{project}crwdne706008:0' + next_button: 'crwdns706010:0crwdne706010:0' forms: - submit_success_message: 'crwdns703489:0crwdne703489:0' - load_error_message: 'crwdns703491:0crwdne703491:0' - validation_error_message: 'crwdns703493:0crwdne703493:0' - advanced_settings: 'crwdns703495:0crwdne703495:0' + submit_success_message: 'crwdns706012:0crwdne706012:0' + load_error_message: 'crwdns706014:0crwdne706014:0' + validation_error_message: 'crwdns706016:0crwdne706016:0' + advanced_settings: 'crwdns706018:0crwdne706018:0' From 387170a43713f5016c6a4a8ff19e33397e96b991 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sun, 6 Feb 2022 03:04:44 +0000 Subject: [PATCH 089/118] update locales from crowdin [ci skip] --- config/locales/crowdin/cs.yml | 308 +-- config/locales/crowdin/js-cs.yml | 320 +-- config/locales/crowdin/js-lol.yml | 1906 ++++++++--------- modules/bim/config/locales/crowdin/cs.yml | 46 +- modules/bim/config/locales/crowdin/js-cs.yml | 8 +- .../boards/config/locales/crowdin/js-cs.yml | 14 +- modules/budgets/config/locales/crowdin/cs.yml | 4 +- .../calendar/config/locales/crowdin/js-cs.yml | 2 +- modules/grids/config/locales/crowdin/cs.yml | 2 +- .../grids/config/locales/crowdin/js-cs.yml | 24 +- .../config/locales/crowdin/js-cs.yml | 18 +- .../ldap_groups/config/locales/crowdin/cs.yml | 28 +- modules/meeting/config/locales/crowdin/cs.yml | 42 +- .../config/locales/crowdin/cs.yml | 14 +- .../overviews/config/locales/crowdin/cs.yml | 2 +- .../pdf_export/config/locales/crowdin/cs.yml | 30 +- .../recaptcha/config/locales/crowdin/cs.yml | 6 +- .../reporting/config/locales/crowdin/cs.yml | 46 +- .../config/locales/crowdin/cs.yml | 12 +- .../config/locales/crowdin/js-cs.yml | 20 +- .../config/locales/crowdin/cs.yml | 64 +- .../webhooks/config/locales/crowdin/cs.yml | 34 +- .../xls_export/config/locales/crowdin/cs.yml | 12 +- 23 files changed, 1481 insertions(+), 1481 deletions(-) diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 4707dbe7c6..f06723f9e7 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -63,20 +63,20 @@ cs: main-menu-bg-color: "Barva pozadí levého menu." theme_warning: Změna motivu přepíše váš vlastní styl. Vzhled pak bude ztracen. Jste si jisti, že chcete pokračovat? enterprise: - upgrade_to_ee: "Upgrade to the Enterprise Edition" + upgrade_to_ee: "Upgradovat na Enterprise Edition" add_token: "Nahrát podpůrný token Enterprise Edition" replace_token: "Nahradit aktuální podpůrný token" - order: "Order Enterprise on-premises Edition" + order: "Upgradovat na Enterprise Edition on premises" paste: "Vložte svůj podpůrný token Enterprise Edition" required_for_feature: "Tato funkce je dostupná pouze s aktivním podpůrným tokenem pro Enterprise Edition." enterprise_link: "Pro více informací klikněte zde." - start_trial: 'Start free trial' - book_now: 'Book now' - get_quote: 'Get a quote' + start_trial: 'Začít zkušební verzi' + book_now: 'Rezervujte nyní' + get_quote: 'Získat cenovou nabídku' buttons: - upgrade: "Upgrade now" - contact: "Contact us for a demo" - enterprise_info_html: "is an Enterprise feature." + upgrade: "Upgradovat nyní" + contact: "Kontaktujte nás pro demo" + enterprise_info_html: "je funkcí Enterprise." upgrade_info: "Please upgrade to a paid plan to activate and start using it in your team." announcements: show_until: Ukázat až do @@ -96,7 +96,7 @@ cs: background_jobs: status: error_requeue: "Job experienced an error but is retrying. The error was: %{message}" - cancelled_due_to: "Job was cancelled due to error: %{message}" + cancelled_due_to: "Úkol byl zrušen z důvodu chyby: %{message}" ldap_auth_sources: technical_warning_html: | Tento LDAP formulář vyžaduje technické znalosti nastavení LDAP / Active Directory. @@ -175,7 +175,7 @@ cs: enabled_in_project: 'Povoleno v projektu' contained_in_type: 'Obsahuje typ' confirm_destroy_option: "Smazáním možnosti smažete všechny výskyty (např. v pracovních balíčcích). Opravdu ji chcete odstranit?" - reorder_alphabetical: "Reorder values alphabetically" + reorder_alphabetical: "Změnit pořadí abecedně" reorder_confirmation: "Warning: The current order of available values will be lost. Continue?" tab: no_results_title_text: V současné době nejsou žádná vlastní pole. @@ -208,8 +208,8 @@ cs: completed: "Smazání projektu %{name} dokončeno" completed_text: "Požadavek na smazání projektu '%{name}' byl dokončen." index: - open_as_gantt: 'Open as Gantt view' - open_as_gantt_title: "Use this button to generate a Gantt view that filters work packages for the projects visible on this page." + open_as_gantt: 'Otevřít jako zobrazení Gantt' + open_as_gantt_title: "Použijte toto tlačítko pro generování Ganttova zobrazení, které filtruje pracovní balíčky pro projekty viditelné na této stránce." open_as_gantt_title_admin: "You can modify the view settings (such as selected work package types) in the administration under project settings." no_results_title_text: V současné době nejsou žádné projekty no_results_content_text: Vytvořit nový projekt @@ -236,7 +236,7 @@ cs: index: no_results_title_text: Momentálně nejsou žádní členové součástí tohoto projektu. no_results_content_text: Přidání člena do projektu - invite_by_mail: "Send invite to %{mail}" + invite_by_mail: "Poslat pozvánku do %{mail}" my: access_token: failed_to_reset_token: "Nepodařilo se obnovit přístupový token: %{error}" @@ -249,23 +249,23 @@ cs: no_results_content_text: Přidat příspěvek users: groups: - member_in_these_groups: 'This user is currently a member of the following groups:' - no_results_title_text: This user is currently not a member in any group. + member_in_these_groups: 'Tento uživatel je v současné době členem následujících skupin:' + no_results_title_text: Tento uživatel není v současné době členem žádné skupiny. memberships: no_results_title_text: Tento uživatel není v současné době členem projektu. placeholder_users: right_to_manage_members_missing: > You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. - delete_tooltip: "Delete placeholder user" + delete_tooltip: "Odstranit placeholder uživatele" deletion_info: - heading: "Delete placeholder user %{name}" + heading: "Odstranit zástupného uživatele %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. - irreversible: "This action is irreversible" + irreversible: "Tato akce je nevratná" confirmation: "Enter the placeholder user name %{name} to confirm the deletion." upsale: - title: Placeholder users + title: placeholder uživatel description: > There are multiple scenarios where you want to assign work to people that are not member of your project. It could simply be that you still need to hire the correct person for the job. Or you just don't want to give that person access to the project's information but still want track tasks assigned to that person. prioritiies: @@ -309,7 +309,7 @@ cs: overview: no_results_title_text: Momentálně zde nejsou žádné pracovní balíčky přiřazené k této verzi. wiki: - page_not_editable_index: The requested page does not (yet) exist. You have been redirected to the index of all wiki pages. + page_not_editable_index: Požadovaná stránka ještě neexistuje. Byli jste přesměrováni na index všech wiki stránek. no_results_title_text: V současné době neexistují žádné Wiki stránky. index: no_results_content_text: Přidat novou wiki stránku @@ -324,10 +324,10 @@ cs: other: '%{count} potomků pracovního balíčku' bulk: could_not_be_saved: "Následující pracovní balíčky nelze uložit:" - none_could_be_saved: "None of the %{total} work packages could be updated." - x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." + none_could_be_saved: "Žádný z %{total} pracovních balíčků nemohl být aktualizován." + x_out_of_y_could_be_saved: "%{failing} z pracovních balíčků %{total} nemohl být aktualizován, zatímco %{success} může." selected_because_descendants: "While %{selected} work packages where selected, in total %{total} work packages are affected which includes descendants." - descendant: "descendant of selected" + descendant: "potomek vybraného" move: no_common_statuses_exists: "Pro všechny vybrané pracovní balíčky není k dispozici žádný stav. Jejich stav nelze změnit." unsupported_for_multiple_projects: 'Hromadný přesun/kopírování není podporováno pro pracovní balíčky z více projektů' @@ -399,7 +399,7 @@ cs: attr_mail: "Email" base_dn: "Base DN" host: "Hostitel" - onthefly: "Automatic user creation" + onthefly: "Automatické vytváření uživatele" port: "Port" changeset: repository: "Repozitář" @@ -452,10 +452,10 @@ cs: types: "Typy" versions: "Verze" work_packages: "Pracovní balíčky" - templated: 'Template project' + templated: 'Projektová šablona' projects/status: code: 'Stav' - explanation: 'Status description' + explanation: 'Popis stavu' codes: on_track: 'On track' at_risk: 'At risk' @@ -524,7 +524,7 @@ cs: parent_work_package: "Rodič" priority: "Priorita" progress: "Průběh (%)" - schedule_manually: "Manual scheduling" + schedule_manually: "Manuální plánování" spent_hours: "Strávený čas" spent_time: "Strávený čas" subproject: "Dílčí projekt" @@ -551,12 +551,12 @@ cs: cant_link_a_work_package_with_a_descendant: "Pracovní balíček nemůže být propojen s jedním z jeho podúkolů." circular_dependency: "Tento vztah by vytvořil kruhovou závislost." confirmation: "neshoduje se s %{attribute}." - could_not_be_copied: "%{dependency} could not be (fully) copied." + could_not_be_copied: "%{dependency} nemůže být (zcela) zkopírován." does_not_exist: "neexistuje." - error_enterprise_only: "is only available in the OpenProject Enterprise Edition" - error_unauthorized: "may not be accessed." + error_enterprise_only: "je k dispozici pouze v OpenProject Enterprise Edition" + error_unauthorized: "není přístupný." error_readonly: "was attempted to be written but is not writable." - email: "is not a valid email address." + email: "není platná e-mailová adresa" empty: "nemůže být prázdné." even: "musí být sudé." exclusion: "vyhrazeno." @@ -573,8 +573,8 @@ cs: invalid_url: 'není platná adresa URL.' invalid_url_scheme: 'není podporovaný protokol (povoleny: %{allowed_schemes}).' less_than_or_equal_to: "musí být menší než nebo rovno %{count}." - not_available: "is not available due to a system configuration." - not_deletable: "cannot be deleted." + not_available: "není k dispozici kvůli konfiguraci systému." + not_deletable: "nelze odstranit" not_current_user: "není aktuální uživatel." not_a_date: "není platné datum." not_a_datetime: "není platný čas." @@ -589,7 +589,7 @@ cs: taken: "je již použito." too_long: "je příliš dlouhý (maximum je %{count} znaků)." too_short: "je příliš krátký (minimum je %{count} znaků)." - type_mismatch: "is not of type '%{type}'" + type_mismatch: "není typu '%{type}'" type_mismatch_nested: "is not of type '%{type}' at path '%{path}'" unchangeable: "nelze změnit." unknown_property: "is not a known property." @@ -637,7 +637,7 @@ cs: outside: 'je mimo mřížku.' end_before_start: 'konečná hodnota musí být větší než počáteční hodnota.' notifications: - at_least_one_channel: 'At least one channel for sending notifications needs to be specified.' + at_least_one_channel: 'Alespoň jeden kanál pro odesílání oznámení musí být specifikován.' attributes: read_ian: read_on_creation: 'cannot be set to true on notification creation.' @@ -649,7 +649,7 @@ cs: no_notification_reason: 'cannot be blank as mail digest is chosen as a channel.' notification_settings: only_one_global_setting: 'There must only be one global notification setting.' - email_alerts_global: 'The email notification settings can only be set globally.' + email_alerts_global: 'Nastavení e-mailových oznámení lze nastavit pouze globálně.' format: "%{message}" parse_schema_filter_params_service: attributes: @@ -658,7 +658,7 @@ cs: invalid_values: "Hodnota není platná." id_filter_required: "Je vyžadován filtr 'id'." project: - archived_ancestor: 'The project has an archived ancestor.' + archived_ancestor: 'Projekt má archivovaného předka.' foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.' attributes: types: @@ -688,7 +688,7 @@ cs: queries/filters/base: attributes: values: - inclusion: "filter has invalid values." + inclusion: "filtr má neplatné hodnoty." format: "%{message}" relation: typed_dag: @@ -717,13 +717,13 @@ cs: user_preference: attributes: pause_reminders: - invalid_range: "can only be a valid date range." + invalid_range: "může být pouze platný časový rozsah." daily_reminders: full_hour: "can only be configured to be delivered at a full hour." wiki_page: attributes: slug: - undeducible: "cannot be deduced from the title '%{title}'." + undeducible: "nelze odvodit z názvu '%{title}'." work_package: is_not_a_valid_target_for_time_entries: "Pracovní balíček #%{id} není platný cíl pro přeřazení časových záznamů." attributes: @@ -731,7 +731,7 @@ cs: not_start_date: "není v počátečním datu, i když je to nutné pro milníky." parent: cannot_be_milestone: "nemůže být milník." - cannot_be_self_assigned: "cannot be assigned to itself." + cannot_be_self_assigned: "nemůže být přiřazeno k sobě." cannot_be_in_another_project: "nemůže být v jiném projektu." not_a_valid_parent: "je neplatné." start_date: @@ -748,7 +748,7 @@ cs: does_not_exist: "Zadaná kategorie neexistuje." estimated_hours: only_values_greater_or_equal_zeroes_allowed: "musí být větší nebo rovno 0." - readonly_status: 'The work package is in a readonly status so its attributes cannot be changed.' + readonly_status: 'Pracovní balíček je ve stavu jen pro čtení, takže jeho atributy nelze změnit.' type: attributes: attribute_groups: @@ -760,9 +760,9 @@ cs: user: attributes: base: - user_limit_reached: "User limit reached. No more accounts can be created on the current plan." + user_limit_reached: "Byl dosažen limit uživatelů. V aktuálním plánu nelze vytvořit žádné další účty." password_confirmation: - confirmation: "Password confirmation does not match password." + confirmation: "Hesla se neshodují!" format: "%{message}" password: weak: "Musí obsahovat znaky z následujících tříd (alespoň %{min_count} z %{all_count}): %{rules}." @@ -814,11 +814,11 @@ cs: member: "Člen" news: "Novinky" notification: - one: "Notification" + one: "Oznámení" few: "Notifications" many: "Notifications" other: "Notifications" - placeholder_user: "Placeholder user" + placeholder_user: "placeholder uživatel" project: "Projekt" query: "Vlastní dotaz" role: @@ -860,9 +860,9 @@ cs: date: "Datum" default_columns: "Výchozí sloupce" description: "Popis" - derived_due_date: "Derived finish date" - derived_estimated_hours: "Derived estimated time" - derived_start_date: "Derived start date" + derived_due_date: "Derivované Datum ukončení " + derived_estimated_hours: "Derivované předpokládaný čas" + derived_start_date: "Derivované Datum zahájení " display_sums: "Zobrazit součty" due_date: "Datum dokončení" estimated_hours: "Odhadovaný čas" @@ -899,16 +899,16 @@ cs: version: "Verze" work_package: "Pracovní balíček" backup: - label_backup_token: "Backup token" - label_create_token: "Create backup token" - label_delete_token: "Delete backup token" - label_reset_token: "Reset backup token" - label_token_users: "The following users have active backup tokens" + label_backup_token: "Záložní token" + label_create_token: "Vytvořit záložní token" + label_delete_token: "Odstranit záložní token" + label_reset_token: "Resetovat záložní token" + label_token_users: "Následující uživatelé mají aktivní tokeny pro zálohy" reset_token: action_create: Vytvořit action_reset: Obnovit - heading_reset: "Reset backup token" - heading_create: "Create backup token" + heading_reset: "Resetovat záložní token" + heading_create: "Vytvořit záložní token" implications: > Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > @@ -916,15 +916,15 @@ cs: verification: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset - verification_word_create: create + verification_word_create: vytvořit warning: > When you create a new token you will only be allowed to request a backup after 24 hours. This is a safety measure. After that you can request a backup any time using that token. - text_token_deleted: Backup token deleted. Backups are now disabled. + text_token_deleted: Záložní token odstraněn. Zálohy jsou nyní zakázány. error: - invalid_token: Invalid or missing backup token - token_cooldown: The backup token will be valid in %{hours} hours. + invalid_token: Neplatný nebo chybí záložní token + token_cooldown: Záložní token bude platný za %{hours} hodin. backup_pending: There is already a backup pending. - limit_reached: You can only do %{limit} backups per day. + limit_reached: Můžete provádět pouze %{limit} záloh denně. button_add: "Přidat" button_add_comment: "Přidat komentář" button_add_member: Přidat člena @@ -1004,7 +1004,7 @@ cs: text_update_consent_time: Zaškrtněte toto políčko k vynucení nového souhlasu uživatele. Povolte v případě, že jste změnili právní aspekt souhlasu uvedeného výše. update_consent_last_time: "Poslední aktualizace souhlasu: %{update_time}" copy_project: - title: 'Copy project "%{source_project_name}"' + title: 'Kopírovat projekt "%{source_project_name}"' started: "Začalo kopírovat projekt \"%{source_project_name}\" do \"%{target_project_name}\". Budete informováni e-mailem, jakmile bude k dispozici \"%{target_project_name}\"." failed: "Nebylo možné zkopírovat projekt \"%{source_project_name}\"" failed_internal: "Kopírování se nezdařilo kvůli interní chybě." @@ -1012,9 +1012,9 @@ cs: errors: "Chyba" project_custom_fields: 'Vlastní pole projektu' x_objects_of_this_type: - zero: 'No objects of this type' - one: 'One object of this type' - other: '%{count} objects of this type' + zero: 'Žádné objekty tohoto typu' + one: 'Jeden objekt tohoto typu' + other: '%{count} objektů tohoto typu' text: failed: "Nebylo možné zkopírovat projekt \"%{source_project_name}\" do \"%{target_project_name}\"." succeeded: "Projekt \"%{source_project_name}\" zkopírován do \"%{target_project_name}\"." @@ -1235,7 +1235,7 @@ cs: add_groups: "Přidat nové skupiny atributů" rename_groups: "Přejmenovat skupiny atributů" project_filters: - description_html: "Filtering and sorting on custom fields is an enterprise edition feature." + description_html: "Filtrování a třídění vlastních polí je funkcí enterprise edice." enumeration_activities: "Time tracking activities" enumeration_work_package_priorities: "Priority pracovního balíčku" enumeration_reported_project_statuses: "Nahlášený stav projektu" @@ -1257,7 +1257,7 @@ cs: error_cookie_missing: 'OpenProject cookie chybí. Ujistěte se, že jsou soubory cookie povoleny, protože aplikace nebude správně fungovat.' error_custom_option_not_found: "Nastavení neexistuje." error_enterprise_activation_user_limit: "Váš účet nebyl aktivován (dosažen limit počtu uživatelů). Prosím obraťte se na správce pro získání přístupu." - error_enterprise_token_invalid_domain: "The Enterprise Edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." + error_enterprise_token_invalid_domain: "Enterprise Edition není aktivní. Doména Tvoje Enterprise tokenu (%{actual}) neodpovídá hostiteli systému (%{expected})." error_failed_to_delete_entry: 'Nepodařilo se odstranit tento záznam.' error_in_dependent: "Chyba při pokusu o změnu závislého objektu: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" error_invalid_selected_value: "Neplatná vybraná hodnota." @@ -1302,9 +1302,9 @@ cs: work_package_edit: 'Pracovní balíček upraven' work_package_note: 'Poznámka k pracovnímu balíčku přidána' export: - your_work_packages_export: "Your work packages export" - succeeded: "The export has completed successfully." - failed: "The export has failed: %{message}" + your_work_packages_export: "Export pracovních balíčků" + succeeded: "Export úspěšně dokončen." + failed: "Export selhal: %{message}" format: atom: "Atom" csv: "CSV" @@ -1359,19 +1359,19 @@ cs: image_conversion: imagemagick: 'Imagemagick' journals: - changes_retracted: "The changes were retracted." + changes_retracted: "Změny byly staženy." links: configuration_guide: 'Konfigurační manuál' - get_in_touch: "You have questions? Get in touch with us." + get_in_touch: "Máte otázky? Spojte se s námi." instructions_after_registration: "Můžete se přihlásit hned poté, co bude váš účet aktivovaný kliknutím na %{signin}." instructions_after_logout: "Můžete se znovu přihlásit kliknutím na tlačítko %{signin}." instructions_after_error: "Zkuste se znovu přihlásit kliknutím na %{signin}. Pokud chyba přetrvává, požádejte správce o pomoc." menus: admin: mail_notification: "E-mailová upozornění" - incoming_outgoing: "Incoming & Outgoing" + incoming_outgoing: "Příchozí a odchozí" quick_add: - label: "Open quick add menu" + label: "Otevřít nabídku rychlého přidání" my_account: access_tokens: no_results: @@ -1383,15 +1383,15 @@ cs: expiration: "Vyprší" indefinite_expiration: "Nikdy" notifications: - send_notifications: "Send notifications for this action" + send_notifications: "Odeslat oznámení pro tuto akci" work_packages: subject: - created: "The work package was created." - assigned: "You have been assigned to %{work_package}" - subscribed: "You subscribed to %{work_package}" - mentioned: "You have been mentioned in %{work_package}" - responsible: "You have become accountable for %{work_package}" - watched: "You are watching %{work_package}" + created: "Pracovní balíček byl vytvořen." + assigned: "Byli jste přiřazeni k %{work_package}" + subscribed: "Přihlásili jste k odběru %{work_package}" + mentioned: "Byli jste zmíněni v %{work_package}" + responsible: "Stali jste se odpovědnými za %{work_package}" + watched: "Sledujete %{work_package}" update_info_mail: body: > We are excited to announce the release of OpenProject 12.0. It's a major release that will hopefully significantly improve the way you use OpenProject. @@ -1406,9 +1406,9 @@ cs: Sincerely, The OpenProject team - body_header: 'Version 12.0 with Notification Center' + body_header: 'Verze 12.0 s oznamovacím centrem' body_subheader: 'Novinky' - subject: 'Important changes to notifications with the release of 12.0' + subject: 'Důležité změny oznámení s vydáním 12.0' label_accessibility: "Přístupnost" label_account: "Účet" label_active: "Aktivní" @@ -1458,7 +1458,7 @@ cs: label_available_project_versions: 'Dostupné verze' label_available_project_repositories: 'Dostupné repozitáře' label_api_documentation: "API dokumentace" - label_backup: "Backup" + label_backup: "Záloha" label_between: "mezi" label_blocked_by: "zablokoval" label_blocks: "bloky" @@ -1494,7 +1494,7 @@ cs: label_check_uncheck_all_in_column: "Zaškrtnout/Odznačit vše ve sloupci" label_check_uncheck_all_in_row: "Zaškrtnout/Odznačit vše v řádku" label_child_element: "Podřazený prvek" - label_chronological_order: "Oldest first" + label_chronological_order: "Od nejstarších" label_close_versions: "Zavřít dokončené verze" label_closed_work_packages: "uzavřeno" label_collapse: "Sbalit" @@ -1524,7 +1524,7 @@ cs: label_custom_field_plural: "Vlastní pole" label_custom_field_default_type: "Prázdný typ" label_custom_style: "Design" - label_database_version: "PostgreSQL version" + label_database_version: "Verze PostgreSQL" label_date: "Datum" label_date_and_time: "Datum a čas" label_date_from: "Od" @@ -1661,11 +1661,11 @@ cs: label_member_new: "Nový člen" label_member_all_admin: "(Všechny role z důvodu stavu správce)" label_member_plural: "Členové" - lable_membership_added: 'Member added' - lable_membership_updated: 'Member updated' + lable_membership_added: 'Člen přidán' + lable_membership_updated: 'Člen aktualizován' label_menu_badge: pre_alpha: 'pre-alpha' - alpha: 'alpha' + alpha: 'Alfa' beta: 'beta' label_menu_item_name: "Název položky menu" label_message: "Zpráva" @@ -1738,9 +1738,9 @@ cs: label_permissions: "Práva" label_permissions_report: "Přehled oprávnění" label_personalize_page: "Přizpůsobit tuto stránku" - label_placeholder_user: "Placeholder user" - label_placeholder_user_new: "New placeholder user" - label_placeholder_user_plural: "Placeholder users" + label_placeholder_user: "placeholder uživatel" + label_placeholder_user_new: "Nový placeholder uživatel" + label_placeholder_user_plural: "placeholder uživatelé" label_planning: "Plánování" label_please_login: "Přihlaste se prosím" label_plugins: "Pluginy" @@ -1800,7 +1800,7 @@ cs: label_required: 'vyžadováno' label_requires: 'vyžaduje' label_result_plural: "Výsledky" - label_reverse_chronological_order: "Newest first" + label_reverse_chronological_order: "Od nejnovějších" label_revision: "Revize" label_revision_id: "Revize %{value}" label_revision_plural: "Revize" @@ -1980,63 +1980,63 @@ cs: actions: 'Akce' digests: including_mention_singular: 'including a mention' - including_mention_plural: 'including %{number_mentioned} mentions' - unread_notification_singular: '1 unread notification' - unread_notification_plural: '%{number_unread} unread notifications' - you_have: 'You have' + including_mention_plural: 'včetně %{number_mentioned} zmínění' + unread_notification_singular: '1 nepřečtené oznámení' + unread_notification_plural: '%{number_unread} nepřečtených oznámení' + you_have: 'Máte' logo_alt_text: 'Logo' mention: - subject: "%{user_name} mentioned you in #%{id} - %{subject}" + subject: "%{user_name} vás zmínil v #%{id} - %{subject}" notification: - center: 'To notification center' - see_in_center: 'See comment in notification center' - settings: 'Change email settings' - salutation: 'Hey %{user}!' + center: 'Centrum oznámení' + see_in_center: 'Zobrazit komentář v oznamovacím centru' + settings: 'Změnit nastavení e-mailu' + salutation: 'Ahoj %{user}!' work_packages: - created_at: 'Created at %{timestamp} by %{user} ' - login_to_see_all: 'Log in to see all notifications.' - mentioned: 'You have been mentioned in a comment' - mentioned_by: '%{user} mentioned you in a comment' + created_at: 'Vytvořeno v %{timestamp} uživatelem %{user} ' + login_to_see_all: 'Přihlaste se pro zobrazení všech oznámení.' + mentioned: 'Byli jste zmíněni v komentáři' + mentioned_by: '%{user} vás zmínil v komentáři' more_to_see: - one: 'There is 1 more work package with notifications.' + one: 'Existuje ještě 1 pracovní balíček s oznámeními.' few: 'There are %{count} more work packages with notifications.' many: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' reason: - watched: 'Watched' - assigned: 'Assigned' + watched: 'Sledováno' + assigned: 'Přiřazen' responsible: 'Odpovědný' - mentioned: 'Mentioned' + mentioned: 'Zmíněné' subscribed: 'vše' prefix: 'Received because of the notification setting: %{reason}' - see_all: 'See all' - updated_at: 'Updated at %{timestamp} by %{user}' + see_all: 'Zobrazit vše' + updated_at: 'Aktualizováno v %{timestamp} uživatelem %{user}' mail_body_account_activation_request: "Nový uživatel (%{value}) byl zaregistrován. Účet čeká na Vaše schválení:" mail_body_account_information: "Informace o vašem účtu" mail_body_account_information_external: "Můžete použít váš %{value} účet pro přihlášení." mail_body_backup_ready: "Your requested backup is ready. You can download it here:" mail_body_backup_token_reset_admin_info: The backup token for user '%{user}' has been reset. - mail_body_backup_token_reset_user_info: Your backup token has been reset. - mail_body_backup_token_info: The previous token is no longer valid. + mail_body_backup_token_reset_user_info: Váš záložní token byl resetován. + mail_body_backup_token_info: Předchozí token již není platný. mail_body_backup_waiting_period: The new token will be enabled in %{hours} hours. mail_body_backup_token_warning: If this wasn't you, login to OpenProject immediately and reset it again. mail_body_lost_password: "Pro změnu vašeho hesla klikněte na následující odkaz:" - mail_body_register: "Welcome to OpenProject. Please activate your account by clicking on this link:" - mail_body_register_header_title: "Project member invitation email" - mail_body_register_user: "Dear %{name}, " + mail_body_register: "Vítejte v OpenProject. Aktivujte svůj účet kliknutím na tento odkaz:" + mail_body_register_header_title: "E-mail pozvánka člena projektu" + mail_body_register_user: "Vážený %{name}," mail_body_register_links_html: | Please feel free to browse our youtube channel (%{youtube_link}) where we provide a webinar (%{webinar_link}) and “Get started” videos (%{get_started_link}) to make your first steps in OpenProject as easy as possible.
If you have any further questions, consult our documentation (%{documentation_link}) or contact your administrator. - mail_body_register_closing: "Your OpenProject team" - mail_body_register_ending: "Stay connected! Kind regards," + mail_body_register_closing: "Váš OpenProject tým" + mail_body_register_ending: "Zůstaňte ve spojení! S pozdravem," mail_body_reminder: "%{count} pracovních balíčků, které máte přiřazeny, mají termín během následujících %{days} dnů:" mail_body_group_reminder: "%{count} pracovních balíčků, které jsou přiřazeny ke skupině \"%{group}\", má termín splatnosti během následujících %{days} dnů:" mail_body_wiki_content_added: "Wiki stránka '%{id}' byla přidána uživatelem %{author}." mail_body_wiki_content_updated: "Wiki stránka '%{id}' byla aktualizována uživatelem %{author}." mail_subject_account_activation_request: "Žádost o aktivaci účtu %{value}" - mail_subject_backup_ready: "Your backup is ready" + mail_subject_backup_ready: "Vaše záloha je připravena" mail_subject_backup_token_reset: "Backup token reset" mail_subject_lost_password: "Vaše heslo %{value}" mail_subject_register: "Aktivace vašeho účtu %{value}" @@ -2045,26 +2045,26 @@ cs: mail_subject_wiki_content_added: "'%{id}' wiki stránka byla přidána" mail_subject_wiki_content_updated: "'%{id}' wiki stránka byla aktualizována" mail_member_added_project: - subject: "%{project} - You have been added as a member" + subject: "%{project} - Byli jste přidáni jako člen" body: added_by: - without_message: "%{user} added you as a member to the project '%{project}'." + without_message: "%{user} tě přidal jako člena do projektu '%{project}'." with_message: "%{user} added you as a member to the project '%{project}' writing:" - roles: "You have the following roles:" + roles: "Máte následující role:" mail_member_updated_project: - subject: "%{project} - Your roles have been updated" + subject: "%{project} - Vaše role byly aktualizovány" body: updated_by: without_message: "%{user} updated the roles you have in the project '%{project}'." with_message: "%{user} updated the roles you have in the project '%{project}' writing:" - roles: "You now have the following roles:" + roles: "Nyní máte následující role:" mail_member_updated_global: - subject: "Your global permissions have been updated" + subject: "Vaše globální oprávnění byla aktualizována" body: updated_by: without_message: "%{user} updated the roles you have globally." with_message: "%{user} updated the roles you have globally writing:" - roles: "You now have the following roles:" + roles: "Nyní máte následující role:" mail_user_activation_limit_reached: subject: Dosažen limit aktivace uživatelů message: | @@ -2171,8 +2171,8 @@ cs: permission_add_work_packages: "Přidat pracovní balíčky" permission_add_messages: "Odesílat zprávy" permission_add_project: "Vytvořit projekt" - permission_manage_user: "Create and edit users" - permission_manage_placeholder_user: "Create, edit, and delete placeholder users" + permission_manage_user: "Vytvořit a upravit uživatele" + permission_manage_placeholder_user: "Vytvořit, upravit a odstranit placeholder uživatele" permission_add_subprojects: "Vytvořit podprojekty" permission_add_work_package_watchers: "Přidat sledující" permission_assign_versions: "Přiřadit verze" @@ -2212,7 +2212,7 @@ cs: permission_manage_project_activities: "Spravovat projektové aktivity" permission_manage_public_queries: "Spravovat veřejné dotazy" permission_manage_repository: "Správa repozitáře" - permission_manage_subtasks: "Manage work package hierarchies" + permission_manage_subtasks: "Spravovat hierarchie pracovních balíčků" permission_manage_versions: "Správovat verze" permission_manage_wiki: "Spravovat wiki" permission_manage_wiki_menu: "Spravovat wiki menu" @@ -2220,7 +2220,7 @@ cs: permission_protect_wiki_pages: "Ochrana stránky wiki" permission_rename_wiki_pages: "Přejmenovat stránky wiki" permission_save_queries: "Uložit pohled" - permission_select_custom_fields: "Select custom fields" + permission_select_custom_fields: "Vybrat vlastní pole" permission_select_project_modules: "Vyberte moduly projektu" permission_manage_types: "Vyberte typy" permission_view_changesets: "Zobrazit revize repozitáře v OpenProject" @@ -2249,13 +2249,13 @@ cs: title: Změnit identifikátor projektu template: copying: > - Your project is being created from the selected template project. You will be notified by mail as soon as the project is available. - use_template: 'Use template' - make_template: 'Set as template' - remove_from_templates: 'Remove from templates' + Váš projekt se vytváří z vybranéhé šablony. Budete upozorněni e-mailem, jakmile bude projekt k dispozici. + use_template: 'Použít šablonu' + make_template: 'Nastavit jako šablonu' + remove_from_templates: 'Odstranit ze šablon' archive: are_you_sure: "Opravdu chcete archivovat projekt '%{name}'?" - archived: "Archived" + archived: "Archivováno" project_module_activity: "Aktivita" project_module_forums: "Diskuse" project_module_work_package_tracking: "Sledování pracovních balíčků" @@ -2271,8 +2271,8 @@ cs: assigned_to_role: "Řešitelova role" member_of_group: "Řešitelova skupina" assignee_or_group: "Přiřazený nebo patřící skupině" - subproject_id: "Including Subproject" - only_subproject_id: "Only subproject" + subproject_id: "Včetně podprojektu" + only_subproject_id: "Pouze podprojekt" name_or_identifier: "Jméno nebo identifikátor" repositories: at_identifier: 'v %{identifier}' @@ -2373,19 +2373,19 @@ cs: username: "Uživatelské jméno repositáře" truncated: "Omlouváme se, museli jsme zredukovat tento adresář na %{limit} soubory. %{truncated} položek bylo ze seznamu vynecháno." named_repository: "%{vendor_name} repozitář" - update_settings_successful: "The settings have been successfully saved." + update_settings_successful: "Nastavení bylo úspěšně uloženo." url: "URL do repozitáře" warnings: cannot_annotate: "Tento soubor nelze přiřadit poznámce." scheduling: - activated: 'activated' - deactivated: 'deactivated' + activated: 'Aktivováno ' + deactivated: 'Deaktivováno' search_input_placeholder: "Hledat ..." - setting_apiv3_cors_enabled: "Enable CORS" + setting_apiv3_cors_enabled: "Povolit CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" setting_apiv3_cors_origins_text_html: > If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. - setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_size: "Maximální velikost stránky API" setting_apiv3_max_page_instructions_html: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. setting_apiv3_docs: "Dokumentace" @@ -2426,7 +2426,7 @@ cs: setting_consent_required: "Souhlas vyžadován" setting_consent_decline_mail: "Kontaktní e-mailová adresa pro souhlas" setting_cross_project_work_package_relations: "Povolit vztahy mezi projekty a pracovními balíčky" - setting_first_week_of_year: "First week in year contains" + setting_first_week_of_year: "První týden v roce obsahuje" setting_date_format: "Formát data" setting_default_language: "Výchozí jazyk" setting_default_projects_modules: "Výchozí zapnutné moduly pro nový projekt" @@ -2437,7 +2437,7 @@ cs: setting_emails_header: "Záhlaví emailů" setting_email_login: "Použít e-mail jako přihlášení" setting_enabled_scm: "Povolit SCM" - setting_enabled_projects_columns: "Visible in project list" + setting_enabled_projects_columns: "Viditelné v seznamu projektů" setting_notification_retention_period_days: "Notification retention period" setting_feeds_enabled: "Povolit kanály" setting_feeds_limit: "Limit obsahu kanálů" @@ -2469,7 +2469,7 @@ cs: setting_per_page_options: "Objektů na stránku" setting_plain_text_mail: "Prostý text (ne HTML)" setting_protocol: "Protokol" - setting_project_gantt_query: "Project portfolio Gantt view" + setting_project_gantt_query: "Gantt Zobrazení projektového portfolia" setting_project_gantt_query_text: "You can modify the query that is used to display Gantt chart from the project overview page." setting_security_badge_displayed: "Zobrazit bezpečnostní odznak" setting_registration_footer: "Zápatí registrace" @@ -2521,8 +2521,8 @@ cs: first_week_of_year_text: > Select the date of January that is contained in the first week of the year. This value together with first day of the week determines the total number of weeks in a year. projects: - section_new_projects: "Settings for new projects" - section_project_overview: "Settings for project overview list" + section_new_projects: "Nastavení pro nové projekty" + section_project_overview: "Nastavení přehledu seznamu projektu" user: default_preferences: "Výchozí předvolby" deletion: "Odstranění" @@ -2577,7 +2577,7 @@ cs: text_destroy_with_associated: "Existují další objekty, které jsou přiřazeny k pracovním balíčkům a které mají být odstraněny. Tyto objekty jsou následující typy:" text_destroy_what_to_do: "Co chcete udělat?" text_diff_truncated: "... Toto rozlišení bylo zkráceno, protože přesahuje maximální velikost, kterou lze zobrazit." - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server to enable them." + text_email_delivery_not_configured: "Doručení e-mailu není nakonfigurováno a oznámení jsou zakázána.\nNakonfigurujte váš SMTP server pro jejich povolení." text_enumeration_category_reassign_to: "Přiřadit je k této hodnotě:" text_enumeration_destroy_question: "%{count} objektů je přiřazeno k této hodnotě." text_file_repository_writable: "Do adresáře příloh lze zapisovat" @@ -2590,8 +2590,8 @@ cs: text_work_package_category_destroy_question: "Některé pracovní balíčky (%{count}) jsou přiřazeny k této kategorii. Co chcete udělat?" text_work_package_category_reassign_to: "Přiřadit pracovní balíčky k této kategorii" text_work_package_updated: "Pracovní balíček %{id} byl aktualizován uživatelem %{author}." - text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_changer}." - text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_changer}." + text_work_package_watcher_added: "Byli jste přidáni jako sledovatel do pracovního balíčku %{id} uživatelem %{watcher_changer}." + text_work_package_watcher_removed: "Byl jste odstraněn z pozorovatelů pracovního balíčku %{id} uživatelem %{watcher_changer}." text_work_packages_destroy_confirmation: "Jste si jisti, že chcete odstranit vybrané pracovní balíčky?" text_work_packages_ref_in_commit_messages: "Odkazování a opravování pracovních balíčků ve zprávách commitu" text_journal_added: "%{label} %{value} přidán" @@ -2907,10 +2907,10 @@ cs: code_403: "Nemáte oprávnění k přístupu k tomuto zdroji." code_404: "Požadovaný zdroj nebyl nalezen." code_409: "Zdroj nelze aktualizovat kvůli konfliktním změnám." - code_429: "Too many requests. Please try again later." + code_429: "Příliš mnoho dotazů, zkuste to znovu později" code_500: "Došlo k vnitřní chybě." not_found: - work_package: "The work package you are looking for cannot be found or has been deleted." + work_package: "Pracovní balíček, který hledáte, nebyl nalezen nebo byl odstraněn." expected: date: "RRRR-MM-DD (pouze ISO 8601 datum)" duration: "Doba trvání ISO 8601" @@ -3033,4 +3033,4 @@ cs: authorization_error: "Došlo k chybě autorizace." revoke_my_application_confirmation: "Opravdu chcete odstranit tuto aplikaci? Tato akce zruší %{token_count} aktivních aplikací." my_registered_applications: "Registrované OAuth aplikace" - you: you + you: vy diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index 92589e1922..f7845d99ff 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -39,13 +39,13 @@ cs: You can trigger a backup here. The process can take some time depending on the amount of data (especially attachments) you have. You will receive an email once it's ready. note: > A new backup will override any previous one. Only a limited number of backups per day can be requested. - last_backup: Last backup - last_backup_from: Last backup from - title: Backup OpenProject + last_backup: Poslední záloha + last_backup_from: Poslední záloha z + title: Zálohovat OpenProject options: Možnosti - include_attachments: Include attachments - download_backup: Download backup - request_backup: Request backup + include_attachments: Zahrnout přílohy + download_backup: Stáhnout zálohu + request_backup: Žádost o zálohu close_popup_title: "Zavřít okno" close_filter_title: "Zavřít filtr" close_form_title: "Zavřít formulář" @@ -97,7 +97,7 @@ cs: caption_rate_history: "Historie kurzů" clipboard: browser_error: "Váš prohlížeč nepodporuje, kopírování do schránky. Ručně zkopírujte vybraný text." - copied_successful: "Successfully copied to clipboard!" + copied_successful: "Úspěšně zkopírováno do schránky!" chart: type: 'Typ grafu' axis_criteria: 'Kritéria osy' @@ -124,7 +124,7 @@ cs: preview: 'Přepnout režim náhledu' source_code: 'Přepnout zdrojový mód Markdown' error_saving_failed: 'Uložení dokumentu se nezdařilo s následující chybou: %{error}' - ckeditor_error: 'An error occurred within CKEditor' + ckeditor_error: 'Došlo k chybě v CKEditoru' mode: manual: 'Přepněte do Markdown zdroje' wysiwyg: 'Přepnout na WYSIWYG Editor' @@ -132,8 +132,8 @@ cs: error: 'Cannot expand macro: %{message}' attribute_reference: macro_help_tooltip: 'This text segment is being dynamically rendered by a macro.' - not_found: 'Requested resource could not be found' - invalid_attribute: "The selected attribute '%{name}' does not exist." + not_found: 'Požadovaný zdroj nebyl nalezen.' + invalid_attribute: "Vybraný atribut '%{name}' neexistuje." child_pages: button: 'Odkazy na podřízené stránky' include_parent: 'Zahrnout rodiče' @@ -183,59 +183,59 @@ cs: new_group: 'Nová skupina' reset_to_defaults: 'Obnovit výchozí nastavení' enterprise: - text_reprieve_days_left: "%{days} days until end of grace period" - text_expired: "expired" + text_reprieve_days_left: "%{days} dní do konce doby odkladu" + text_expired: "vypršela platnost" trial: - confirmation: "Confirmation of email address" + confirmation: "Potvrzení e-mailové adresy" confirmation_info: > - We sent you an email on %{date} to %{email}. Please check your inbox and click the confirmation link provided to start your 14 days trial. + Poslali jsme Vám e-mail od %{date} do %{email}. Zkontrolujte prosím svou doručenou poštu a klikněte na odkaz pro potvrzení poskytnutý pro zahájení čtrnáctidenního zkušebního období. form: general_consent: > I agree with the terms of service and the privacy policy. - invalid_email: "Invalid email address" - label_company: "Company" + invalid_email: "Neplatná e-mailová adresa" + label_company: "Společnost" label_first_name: "Křestní jméno" label_last_name: "Příjmení" - label_domain: "Domain" + label_domain: "Doména" label_subscriber: "Odběratel" label_maximum_users: "Maximální počet aktivních uživatelů" - label_starts_at: "Starts at" + label_starts_at: "Začíná v" label_expires_at: "Vyprší za" receive_newsletter: I want to receive the OpenProject newsletter. taken_domain: There can only be one active trial per domain. - taken_email: Each user can only create one trial. - email_not_received: "You did not receive an email? You can resend the email with the link on the right." - try_another_email: "Or try it with another email address." - next_steps: "Next steps" - resend_link: "Resend" - resend_success: "Email has been resent. Please check your emails and click the confirmation link provided." - resend_warning: "Could not resend email." - session_timeout: "Your session timed out. Please try to reload the page or resend email." - status_label: "Status:" - status_confirmed: "confirmed" - status_waiting: "email sent - waiting for confirmation" - test_ee: "Test the Enterprise Edition 14 days for free" + taken_email: Každý uživatel může vytvořit pouze jednu zkušební verzi. + email_not_received: "Neobdrželi jste e-mail? Můžete znovu odeslat e-mail s odkazem vpravo." + try_another_email: "Nebo to zkuste s jinou e-mailovou adresou." + next_steps: "Další kroky" + resend_link: "Znovu odeslat" + resend_success: "E-mail byl znovu odeslán. Zkontrolujte své e-maily a klikněte na odkaz pro potvrzení." + resend_warning: "E-mail nelze znovu odeslat." + session_timeout: "Vypršel časový limit relace. Zkuste stránku znovu načíst nebo znovu odeslat e-mail." + status_label: "Stav:" + status_confirmed: "potvrzeno" + status_waiting: "e-mail odeslán - čeká na potvrzení" + test_ee: "Vyzkoušejte Enterprise Edition 14 dní zdarma" quick_overview: "Get a quick overview of project management and team collaboration with OpenProject Enterprise Edition." upsale: become_hero: "Staň se hrdinou!" benefits: - description: "What are the benefits of the Enterprise on-premises Edition?" - high_security: "Security features" + description: "Jaké jsou výhody Enterprise on-premises Edice?" + high_security: "Bezpečnostní prvky" high_security_text: "Single sign on (SAML, OpenID Connect, CAS), two-factor authentication and automatic sync of LDAP groups." - installation: "Installation support" + installation: "Instalační podpora" installation_text: "Experienced software engineers guide you through the complete installation and setup process in your own infrastructure." - premium_features: "Premium features" + premium_features: "Prémiové funkce" premium_features_text: "Agile boards, custom theme and logo, graphs, intelligent workflows with custom actions, full text search for work package attachments and multi-select custom fields." professional_support: "Profesionální podpora" professional_support_text: "Get reliable, high-touch support from senior support engineers with expert knowledge about running OpenProject in business-critical environments." - button_start_trial: "Start free trial" - button_book_now: "Book now" + button_start_trial: "Zahájit zkušební verzi zdarma" + button_book_now: "Rezervujte nyní" confidence: > We deliver the confidence of a tested and supported enterprise-class project management software - with Open Source and an open mind. - link_quote: "Get a quote" + link_quote: "Získat cenovou nabídku" text: > The OpenProject Enterprise Edition builds on top of the Community Edition. It includes premium features and professional support mainly aimed at organizations with more than 10 users that manage business critical projects with OpenProject. - unlimited: "Unlimited" + unlimited: "Bez omezení" you_contribute: "Developers need to pay their bills, too. With the Enterprise Edition, you substantially contribute to this Open Source community effort." custom_actions: date: @@ -281,7 +281,7 @@ cs: blocks: new_features: text_new_features: "Přečtěte si o nových funkcích a aktualizacích produktů." - learn_about: "Learn more about the new features" + learn_about: "Další informace o nových funkcích" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': @@ -328,7 +328,7 @@ cs: label_details: "Podrobnosti" label_display: "Zobrazit" label_cancel_comment: "Stornovat komentář" - label_closed_work_packages: "uzavřeno" + label_closed_work_packages: "closed" label_collapse: "Sbalit" label_collapsed: "sbalené" label_collapse_all: "Sbalit vše" @@ -389,7 +389,7 @@ cs: label_on: "zapnuto" label_open_menu: "Otevřít nabídku" label_open_context_menu: "Otevřít kontextovou nabídku" - label_open_work_packages: "otevřít" + label_open_work_packages: "open" label_password: "Heslo" label_previous: "Předchozí" label_per_page: "Na stránku:" @@ -397,7 +397,7 @@ cs: label_project_plural: "Projekty" label_visibility_settings: "Nastavení viditelnosti" label_quote_comment: "Citovat tento komentář" - label_recent: "Recent" + label_recent: "Nedávné" label_reset: "Obnovit" label_remove: "Odstranit" label_remove_column: "Odstranit sloupec" @@ -419,12 +419,12 @@ cs: label_star_query: "Zabráněno" label_press_enter_to_save: "Stiskněte Enter pro uložení." label_public_query: "Veřejné" - label_sum: "Sum" + label_sum: "Suma" label_sum_for: "Součet pro" - label_total_sum: "Total sum" + label_total_sum: "Celková SUMA" label_subject: "Předmět" label_this_week: "tento týden" - label_today: "Today" + label_today: "Dnes" label_time_entry_plural: "Strávený čas" label_up: "Nahoru" label_user_plural: "Uživatelé" @@ -437,7 +437,7 @@ cs: label_children_derived_duration: "Work package's children derived duration" label_warning: "Varování" label_work_package: "Pracovní balíček" - label_work_package_parent: "Parent work package" + label_work_package_parent: "Nadřazený pracovní balíček" label_work_package_plural: "Pracovní balíčky" label_watch: "Sledovat" label_watch_work_package: "Sledovat pracovní balíček" @@ -483,7 +483,7 @@ cs: got_it: 'Rozumím' steps: help_menu: 'The Help (?) menu provides additional help resources. Here you can find a user guide and helpful how-to videos and more.
Enjoy your work with OpenProject!' - members: 'Invite new members to join your project.' + members: 'Pozvěte nové členy , aby se připojili k vašemu projektu.' project_selection: 'Please click on one of the demo projects that we have prepared. Demo data is currently only available in English.
The general demo project suits best for classical project management, while the Scrum project is better for agile project management.' quick_add_button: 'Click on the plus (+) icon in the header navigation to create a new project or to invite coworkers.' sidebar_arrow: "Use the return arrow in the top left corner to return to the project’s main menu." @@ -505,19 +505,19 @@ cs: list: 'This work package overview provides a list of all the work in your project, such as tasks, milestones, phases, and more.
Work packages can be created and edited directly from this view. To access the details of a particular work package, simply double-click its row.' full_view: 'The work package details view provides all the relevant information pertaining to a given work package, such as its description, status, priority, activities, dependencies, and comments.' back_button: 'Use the return arrow in the top left corner to exit and return to the work package list.' - create_button: 'The + Create button will add a new work package to your project.' - timeline_button: 'You can activate the Gantt chart view to create a timeline for your project.' + create_button: 'Tlačítko Vytvořit přidá do vašeho projektu nový pracovní balíček.' + timeline_button: 'Můžete aktivovat Gantt graf pro vytvoření časové osy pro váš projekt.' timeline: 'Here you can edit your project plan, create new work packages, such as tasks, milestones, phases, and more, as well as add dependencies. All team members can see and update the latest plan at any time.' notifications: - title: "Notifications" - no_unread: "No unread notifications" + title: "Oznámení" + no_unread: "Žádná nepřečtená oznámení" reasons: - mentioned: 'mentioned' - watched: 'watched' - assigned: 'assigned' - responsible: 'accountable' + mentioned: 'zmíněn' + watched: 'sledován' + assigned: 'přiřazeno' + responsible: 'Odpovědný' facets: - unread: 'Unread' + unread: 'Nepřečtené' all: 'Vše' center: and_more_users: @@ -526,57 +526,57 @@ cs: many: 'and %{count} others' other: 'and %{count} others' no_results: - at_all: 'New notifications will appear here when there is activity that concerns you' - with_current_filter: 'There are no notifications in this view at the moment' - mark_all_read: 'Mark all as read' - mark_as_read: 'Mark as read' + at_all: 'Nová oznámení se zobrazí zde, když se objeví aktivita, která se vás týká' + with_current_filter: 'V současné době nejsou v tomto zobrazení žádná oznámení' + mark_all_read: 'Označit vše jako přečtené' + mark_as_read: 'Označit jako přečteno' text_update_date: "%{date} by" - total_count_warning: "Showing the %{newest_count} most recent notifications. %{more_count} more are not displayed." + total_count_warning: "Zobrazení posledních oznámení %{newest_count} . Nezobrazuje se ještě %{more_count}" empty_state: - no_notification: "Looks like you're all caught up." + no_notification: "Vypadá to, že jste všichno dohnali..." no_notification_with_current_filter: "Change of involvement or go back to the Inbox to view notifications" - no_selection: "Click on a notification to view all activity details." + no_selection: "Klikněte na oznámení pro zobrazení všech podrobností o aktivitě." new_notifications: - message: 'There are new notifications.' - link_text: 'Click here to load them' + message: 'Máte nová oznámení.' + link_text: 'Klikněte zde pro jejich načtení' menu: accountable: 'Odpovědný' - assigned: 'Assigned' - by_project: 'Unread by project' - by_reason: 'Involvement' + assigned: 'Přiřazeno' + by_project: 'Nepřečteno podle projektu' + by_reason: 'Zapojení' inbox: 'Inbox' - mentioned: '@mentioned' - watching: 'Watching' + mentioned: 'Zmíněn' + watching: 'Sledování' settings: - change_notification_settings: 'To view and change your notification settings, click here' - title: "Notification settings" - notify_me: "Notify me" + change_notification_settings: 'Chcete-li zobrazit a změnit nastavení oznámení, klikněte zde' + title: "Nastavení oznámení" + notify_me: "Upozornit mě" reasons: mentioned: - title: 'I am @mentioned' - description: 'Receive a notification every time someone mentions me anywhere' + title: 'Jsem @zmíněn' + description: 'Dostat upozornění, kdykoli mě někdo kdekoli zmíní' involved: - title: 'Assigned to me or accountable' - description: 'Receive notifications for all activities on work packages for which I am assignee or accountable' - watched: 'Updates on watched items' - work_package_commented: 'All new comments' - work_package_created: 'New work packages' - work_package_processed: 'All status changes' + title: 'Přiřazeno mně nebo odpovědně' + description: 'Přijímat oznámení pro všechny aktivity v pracovních balíčcích, pro které jsem pověřen nebo jsem zodpovědný' + watched: 'Aktualizace u sledovaných položek' + work_package_commented: 'Všechny nové komentáře' + work_package_created: 'Nový pracovní balíček' + work_package_processed: 'Všechny změny stavu' work_package_prioritized: 'All priority changes' - work_package_scheduled: 'All date changes' + work_package_scheduled: 'Všechny změny data' global: immediately: - title: 'Notify me immediately' - description: 'These settings apply to all projects. You can create project-specific exceptions below.' + title: 'Oznamovat mi okamžitě' + description: 'Tato nastavení platí pro všechny projekty. Níže můžete vytvořit specifické výjimky.' delayed: - title: 'Also notify me for' - description: 'Receive notifications for these activities on work packages in all projects:' + title: 'Upozornit také pro' + description: 'Přijímat oznámení pro tyto aktivity na pracovních balíčcích ve všech projektech:' project_specific: - title: 'Project-specific notification settings' + title: "Nastavení upozornění pro konkrétní projekt\n" description: 'These project-specific settings override default settings above' - add: 'Add setting for project' - already_selected: 'This project is already selected' - remove: 'Remove project settings' + add: 'Přidat nastavení projektu' + already_selected: 'Tento projekt je již vybrán' + remove: 'Odstranit nastavení projektu' password_confirmation: field_description: 'Pro potvrzení této změny je třeba zadat heslo k účtu.' title: 'Pro pokračování potvrďte vaše heslo' @@ -596,46 +596,46 @@ cs: context: 'Kontext projektu' work_package_belongs_to: 'Tento pracovní balíček náleží projektu %{projectname}.' click_to_switch_context: 'Otevřete tento pracovní balíček v tomto projektu.' - confirm_template_load: 'Switching the template will reload the page and you will lose all input to this form. Continue?' - use_template: "Use template" - no_template_selected: "(None)" + confirm_template_load: 'Přepnutí šablony znovu načte stránku a ztratíte všechny vstupy do tohoto formuláře. Pokračovat?' + use_template: "Použít šablonu" + no_template_selected: "(Žádné)" copy: - copy_options: "Copy options" + copy_options: "Možností kopírování" autocompleter: label: 'Automatické doplňování projektu' reminders: settings: daily: - add_time: 'Add time' - enable: 'Enable daily email reminders' - explanation: 'You will receive these reminders only for unread notifications and only at hours you specify. %{no_time_zone}' + add_time: 'Přidat čas' + enable: 'Povolit denní připomenutí e-mailem' + explanation: 'Tyto připomínky obdržíte pouze pro nepřečtená oznámení a pouze v hodinách, které zadáte. %{no_time_zone}' no_time_zone: 'Until you configure a time zone for your account, the times will be interpreted to be in UTC.' - time_label: 'Time %{counter}:' - title: 'Send me daily email reminders for unread notifications' + time_label: 'Čas %{counter}:' + title: 'Poslat mi denní připomenutí e-mailem pro nepřečtená oznámení' workdays: - title: 'Receive email reminders on these days' + title: 'Dostávat připomenutí e-mailem v těchto dnech' immediate: - title: 'Send me an email reminder' - mentioned: 'Immediately when someone @mentions me' + title: 'Pošlete mi připomenutí e-mailem' + mentioned: 'Okamžitě, když mě někdo @zmiňuje' alerts: title: 'Email alerts for other items (that are not work packages)' explanation: > Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications: news_added: 'Přidané novinky' - news_commented: 'Comment on a news item' - document_added: 'Documents added' - forum_messages: 'New forum messages' + news_commented: 'Komentář k novince' + document_added: 'Dokumenty přidány' + forum_messages: 'Nové zprávy o fóru' wiki_page_added: 'Přidána stránka wiki' wiki_page_updated: 'Wiki stránka aktualizována' - membership_added: 'Membership added' - membership_updated: 'Membership updated' - title: 'Email reminders' + membership_added: 'Členství přidáno' + membership_updated: 'Členství bylo aktualizováno' + title: 'Upozornění e-mailem' pause: - label: 'Temporarily pause daily email reminders' - first_day: 'First day' - last_day: 'Last day' + label: 'Dočasně pozastavit denní připomenutí e-mailem' + first_day: 'První den' + last_day: 'Poslední den' text_are_you_sure: "Jste si jisti?" - text_data_lost: "All entered data will be lost." + text_data_lost: "Všechna zadaná data budou ztracena." types: attribute_groups: error_duplicate_group_name: "Jméno %{group} je již použito. Jména skupin musí být jedinečná." @@ -643,18 +643,18 @@ cs: reset_title: "Vyčistit konfiguraci formuláře" confirm_reset: > Upozornění: Opravdu chcete resetovat konfiguraci formuláře? Tato akce obnoví atributy na jejich výchozí skupinu a zakáže VŠECHNY vlastní pole. - upgrade_to_ee: "Upgrade to Enterprise on-premises Edition" + upgrade_to_ee: "Upgradovat na Enterprise Edition" upgrade_to_ee_text: "Páni! Pokud potřebujete tuto funkci, jste super pro! Nevadili byste nám podpořit OpenSource vývojáře tím, že se stanete klientem Enterprise Edition?" more_information: "Více informací" nevermind: "Nevadí" edit: - form_configuration: "Form Configuration" + form_configuration: "Konfigurace formuláře" projects: "Projekty" settings: "Nastavení" time_entry: project: 'Projekt' work_package: 'Pracovní balíček' - work_package_required: 'Requires selecting a work package first.' + work_package_required: 'Vyžaduje nejprve výběr pracovního balíčku.' activity: 'Aktivita' comment: 'Komentář' duration: 'Doba trvání' @@ -662,7 +662,7 @@ cs: hours: 'Hodiny' title: 'Čas protokolu' two_factor_authentication: - label_two_factor_authentication: 'Two-factor authentication' + label_two_factor_authentication: 'Dvoufázové ověření' watchers: label_loading: načítám sledující... label_error_loading: Při načítání pozorovatelů došlo k chybě @@ -718,7 +718,7 @@ cs: parent_placeholder: "Vyberte nového rodiče nebo stiskněte úniku pro zrušení." autocompleter: placeholder: "Zadejte hledaný text" - notFoundText: "No items found" + notFoundText: "Nenalezeny žádné položky" typeToSearchText: "Zadejte hledaný text" repositories: select_tag: 'Vybrat štítek' @@ -726,8 +726,8 @@ cs: field_value_enter_prompt: "Zadejte hodnotu pro '%{field}'" project_menu_details: "Podrobnosti" scheduling: - manual: 'Manual scheduling' - automatic: 'Automatic scheduling' + manual: 'Manuální plánování' + automatic: 'Automatické plánování' sort: sorted_asc: 'Použito vzestupné řazení, ' sorted_dsc: 'Použité sestupně ' @@ -870,7 +870,7 @@ cs: no_results: title: Žádné pracovní balíčky k zobrazení. description: Buď nebyly vytvořeny nebo jsou všechny pracovní balíčky odfiltrovány. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. + limited_results: Pouze %{count} pracovních balíčků může být zobrazeno v ručním režimu třídění. Snížte výsledky filtrováním, nebo přepněte na automatické třídění. property_groups: details: "Podrobnosti" people: "Lidé" @@ -913,8 +913,8 @@ cs: label_content: "Klikněte zde pro přeskočení nabídky a přejděte na obsah" placeholders: default: "-" - date: "Select date" - formattable: "%{name}: Click to edit..." + date: "Vybrat datum" + formattable: "%{name}: Klikněte pro editaci..." query: column_names: "Sloupce" group_by: "Seskupit výsledky podle" @@ -941,8 +941,8 @@ cs: duplicate_query_title: "Název tohoto zobrazení již existuje. Chcete přesto změnit?" text_no_results: "Nebyly nalezeny žádné odpovídající zobrazení." scheduling: - is_parent: "The dates of this work package are automatically deduced from its children. Activate 'Manual scheduling' to set the dates." - is_switched_from_manual_to_automatic: "The dates of this work package may need to be recalculated after switching from manual to automatic scheduling due to relationships with other work packages." + is_parent: "Data tohoto pracovního balíčku jsou automaticky odvozena od jeho dětí. Aktivujte 'Manuální plánování' pro ručné nastavení dat." + is_switched_from_manual_to_automatic: "Data tohoto pracovního balíčku budou možná muset být přepočítána po přepnutí z manuálu na automatické plánování kvůli vztahům s ostatními pracovními balíčky." table: configure_button: 'Konfigurovat tabulku pracovních balíčků' summary: "Tabulka s řádky pracovního balíčku a atributy sloupců pracovního balíčku." @@ -982,7 +982,7 @@ cs: relation_columns: 'Potřebujete vidět vztahy v seznamu pracovních balíčků?' check_out_link: 'Podívejte se na Enterprise Edition.' relation_filters: - filter_work_packages_by_relation_type: 'Filter work packages by relation type' + filter_work_packages_by_relation_type: 'Filtrovat pracovní balíčky podle typu vztahu' tabs: overview: Přehled activity: Aktivita @@ -1032,13 +1032,13 @@ cs: confirm_deletion_children: "Jsem si vědom, že všechny potomky uvedených pracovních balíčků budou rekurzivně odstraněny." deletes_children: "Všechny podřízené pracovní balíčky a jejich potomci budou také rekurzivně odstraněny." destroy_time_entry: - title: "Confirm deletion of time entry" - text: "Are you sure you want to delete the following time entry?" + title: "Potvrdit odstranění záznamu času" + text: "Opravdu chcete odstranit následující časovou položku?" notice_no_results_to_display: "Žádné viditelné výsledky k zobrazení." notice_successful_create: "Úspěšné vytvoření." notice_successful_delete: "Úspěšné odstranění." notice_successful_update: "Úspěšná aktualizace." - notice_job_started: "job started." + notice_job_started: "Úloha byla zahájena" notice_bad_request: "Chybný požadavek." relations: empty: Neexistuje žádný vztah @@ -1098,24 +1098,24 @@ cs: timeline: 'Ganttův diagram' invite_user_modal: back: 'Zpět' - invite: 'Invite' + invite: 'Pozvat' title: invite: 'Pozvat uživatele' - invite_to_project: 'Invite %{type} to %{project}' - User: 'user' - Group: 'group' - PlaceholderUser: 'placeholder user' - invite_principal_to_project: 'Invite %{principal} to %{project}' + invite_to_project: 'Pozvat %{type} do %{project}' + User: 'uživatel' + Group: 'Skupina' + PlaceholderUser: 'placeholder uživatel' + invite_principal_to_project: 'Pozvat %{principal} do %{project}' project: label: 'Projekt' - required: 'Please select a project' + required: 'Vyberte projekt' lacking_permission: 'Please select a different project since you lack permissions to assign users to the currently selected.' - lacking_permission_info: 'You lack the permission to assign users to the project you are currently in. You need to select a different one.' + lacking_permission_info: 'Chybí vám oprávnění k přiřazení uživatelů k projektu, ve kterém se právě nacházíte. Musíte vybrat jiný.' next_button: 'Další' - no_results: 'No projects were found' - no_invite_rights: 'You are not allowed to invite members to this project' + no_results: 'Nebyly nalezeny žádné projekty' + no_invite_rights: 'Nejste oprávněni pozvat členy do tohoto projektu' type: - required: 'Please select the type to be invited' + required: 'Vyberte prosím typ, který chcete pozvat' user: title: 'Uživatel' description: 'Permissions based on the assigned role in the selected project' @@ -1123,46 +1123,46 @@ cs: title: 'Skupina' description: 'Permissions based on the assigned role in the selected project' placeholder: - title: 'Placeholder user' - title_no_ee: 'Placeholder user (Enterprise Edition only feature)' + title: 'placeholder uživatel' + title_no_ee: 'placeholder uživatel (pouze funkce Enterprise Edition)' description: 'Has no access to the project and no emails are sent out.' description_no_ee: 'Has no access to the project and no emails are sent out.
Check out the Enterprise Edition' principal: label: - name_or_email: 'Name or email address' + name_or_email: 'Jméno nebo e-mailová adresa' name: 'Jméno' - already_member_message: 'Already a member of %{project}' - no_results_user: 'No users were found' - invite_user: 'Invite:' - no_results_placeholder: 'No placeholders were found' - create_new_placeholder: 'Create new placeholder:' - no_results_group: 'No groups were found' + already_member_message: 'Už jsi členem %{project}' + no_results_user: 'Nebyli nalezeni žádní uživatelé' + invite_user: 'Pozvat' + no_results_placeholder: 'Nebyly nalezeny žádné placeholdery' + create_new_placeholder: 'Vytvořit nový placeholder' + no_results_group: 'Nebyly nalezeny žádné skupiny' next_button: 'Další' required: - user: 'Please select a user' - placeholder: 'Please select a placeholder' - group: 'Please select a group' + user: 'Vyberte prosím uživatele' + placeholder: 'Vyberte prosím placeholder' + group: 'Zvolte prosím skupinu.' role: - label: 'Role in %{project}' - no_roles_found: 'No roles were found' + label: 'Role v %{project}' + no_roles_found: 'Nebyly nalezeny žádné role.' description: 'This is the role that %{principal} will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. Learn more about roles and permissions. ' - required: 'Please select a role' + required: 'Vyberte prosím roli' next_button: 'Další' message: - label: 'Invitation message' + label: 'Pozvánka' description: 'We will send an email to %{principal}, to which you can add a personal message here. An explanation for the invitation could be useful, or perhaps a bit of information regarding the project to help them get started.' - next_button: 'Review invitation' + next_button: 'Zkontrolovat pozvánku' summary: next_button: 'Odeslat pozvánku' success: - title: '%{principal} was invited!' + title: '%{principal} byl pozván!' description: user: 'The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance.' placeholder: 'The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance.' group: 'The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance.' next_button: 'Pokračovat' forms: - submit_success_message: 'The form was successfully submitted' - load_error_message: 'There was an error loading the form' - validation_error_message: 'Please fix the errors present in the form' + submit_success_message: 'Formulář byl úspěšně odeslán' + load_error_message: 'Při načítání formuláře došlo k chybě' + validation_error_message: 'Opravte prosím chyby ve formuláři' advanced_settings: 'Pokročilá nastavení' diff --git a/config/locales/crowdin/js-lol.yml b/config/locales/crowdin/js-lol.yml index 2c0110f684..b6c0853962 100644 --- a/config/locales/crowdin/js-lol.yml +++ b/config/locales/crowdin/js-lol.yml @@ -22,1140 +22,1140 @@ lol: js: ajax: - hide: "crwdns704120:0crwdne704120:0" - loading: "crwdns704122:0crwdne704122:0" + hide: "crwdns706230:0crwdne706230:0" + loading: "crwdns706232:0crwdne706232:0" attachments: draggable_hint: | - crwdns704124:0crwdne704124:0 + crwdns706234:0crwdne706234:0 autocomplete_select: placeholder: - multi: "crwdns704126:0%{name}crwdne704126:0" - single: "crwdns704128:0%{name}crwdne704128:0" - remove: "crwdns704130:0%{name}crwdne704130:0" - active: "crwdns704132:0%{label}crwdnd704132:0%{name}crwdne704132:0" + multi: "crwdns706236:0%{name}crwdne706236:0" + single: "crwdns706238:0%{name}crwdne706238:0" + remove: "crwdns706240:0%{name}crwdne706240:0" + active: "crwdns706242:0%{label}crwdnd706242:0%{name}crwdne706242:0" backup: - attachments_disabled: crwdns704134:0crwdne704134:0 + attachments_disabled: crwdns706244:0crwdne706244:0 info: > - crwdns704136:0crwdne704136:0 + crwdns706246:0crwdne706246:0 note: > - crwdns704138:0crwdne704138:0 - last_backup: crwdns704140:0crwdne704140:0 - last_backup_from: crwdns704142:0crwdne704142:0 - title: crwdns704144:0crwdne704144:0 - options: crwdns704146:0crwdne704146:0 - include_attachments: crwdns704148:0crwdne704148:0 - download_backup: crwdns704150:0crwdne704150:0 - request_backup: crwdns704152:0crwdne704152:0 - close_popup_title: "crwdns704154:0crwdne704154:0" - close_filter_title: "crwdns704156:0crwdne704156:0" - close_form_title: "crwdns704158:0crwdne704158:0" - button_add_watcher: "crwdns704160:0crwdne704160:0" - button_add: "crwdns704162:0crwdne704162:0" - button_back: "crwdns704164:0crwdne704164:0" - button_back_to_list_view: "crwdns704166:0crwdne704166:0" - button_cancel: "crwdns704168:0crwdne704168:0" - button_close: "crwdns704170:0crwdne704170:0" - button_change_project: "crwdns704172:0crwdne704172:0" - button_check_all: "crwdns704174:0crwdne704174:0" - button_configure-form: "crwdns704176:0crwdne704176:0" - button_confirm: "crwdns704178:0crwdne704178:0" - button_continue: "crwdns704180:0crwdne704180:0" - button_copy: "crwdns704182:0crwdne704182:0" - button_custom-fields: "crwdns704184:0crwdne704184:0" - button_delete: "crwdns704186:0crwdne704186:0" - button_delete_watcher: "crwdns704188:0crwdne704188:0" - button_details_view: "crwdns704190:0crwdne704190:0" - button_duplicate: "crwdns704192:0crwdne704192:0" - button_edit: "crwdns704194:0crwdne704194:0" - button_filter: "crwdns704196:0crwdne704196:0" - button_collapse_all: "crwdns704198:0crwdne704198:0" - button_expand_all: "crwdns704200:0crwdne704200:0" - button_advanced_filter: "crwdns704202:0crwdne704202:0" - button_list_view: "crwdns704204:0crwdne704204:0" - button_show_view: "crwdns704206:0crwdne704206:0" - button_log_time: "crwdns704208:0crwdne704208:0" - button_more: "crwdns704210:0crwdne704210:0" - button_open_details: "crwdns704212:0crwdne704212:0" - button_close_details: "crwdns704214:0crwdne704214:0" - button_open_fullscreen: "crwdns704216:0crwdne704216:0" - button_show_cards: "crwdns704218:0crwdne704218:0" - button_show_list: "crwdns704220:0crwdne704220:0" - button_quote: "crwdns704222:0crwdne704222:0" - button_save: "crwdns704224:0crwdne704224:0" - button_settings: "crwdns704226:0crwdne704226:0" - button_uncheck_all: "crwdns704228:0crwdne704228:0" - button_update: "crwdns704230:0crwdne704230:0" - button_export-pdf: "crwdns704232:0crwdne704232:0" - button_export-atom: "crwdns704234:0crwdne704234:0" - button_create: "crwdns704236:0crwdne704236:0" + crwdns706248:0crwdne706248:0 + last_backup: crwdns706250:0crwdne706250:0 + last_backup_from: crwdns706252:0crwdne706252:0 + title: crwdns706254:0crwdne706254:0 + options: crwdns706256:0crwdne706256:0 + include_attachments: crwdns706258:0crwdne706258:0 + download_backup: crwdns706260:0crwdne706260:0 + request_backup: crwdns706262:0crwdne706262:0 + close_popup_title: "crwdns706264:0crwdne706264:0" + close_filter_title: "crwdns706266:0crwdne706266:0" + close_form_title: "crwdns706268:0crwdne706268:0" + button_add_watcher: "crwdns706270:0crwdne706270:0" + button_add: "crwdns706272:0crwdne706272:0" + button_back: "crwdns706274:0crwdne706274:0" + button_back_to_list_view: "crwdns706276:0crwdne706276:0" + button_cancel: "crwdns706278:0crwdne706278:0" + button_close: "crwdns706280:0crwdne706280:0" + button_change_project: "crwdns706282:0crwdne706282:0" + button_check_all: "crwdns706284:0crwdne706284:0" + button_configure-form: "crwdns706286:0crwdne706286:0" + button_confirm: "crwdns706288:0crwdne706288:0" + button_continue: "crwdns706290:0crwdne706290:0" + button_copy: "crwdns706292:0crwdne706292:0" + button_custom-fields: "crwdns706294:0crwdne706294:0" + button_delete: "crwdns706296:0crwdne706296:0" + button_delete_watcher: "crwdns706298:0crwdne706298:0" + button_details_view: "crwdns706300:0crwdne706300:0" + button_duplicate: "crwdns706302:0crwdne706302:0" + button_edit: "crwdns706304:0crwdne706304:0" + button_filter: "crwdns706306:0crwdne706306:0" + button_collapse_all: "crwdns706308:0crwdne706308:0" + button_expand_all: "crwdns706310:0crwdne706310:0" + button_advanced_filter: "crwdns706312:0crwdne706312:0" + button_list_view: "crwdns706314:0crwdne706314:0" + button_show_view: "crwdns706316:0crwdne706316:0" + button_log_time: "crwdns706318:0crwdne706318:0" + button_more: "crwdns706320:0crwdne706320:0" + button_open_details: "crwdns706322:0crwdne706322:0" + button_close_details: "crwdns706324:0crwdne706324:0" + button_open_fullscreen: "crwdns706326:0crwdne706326:0" + button_show_cards: "crwdns706328:0crwdne706328:0" + button_show_list: "crwdns706330:0crwdne706330:0" + button_quote: "crwdns706332:0crwdne706332:0" + button_save: "crwdns706334:0crwdne706334:0" + button_settings: "crwdns706336:0crwdne706336:0" + button_uncheck_all: "crwdns706338:0crwdne706338:0" + button_update: "crwdns706340:0crwdne706340:0" + button_export-pdf: "crwdns706342:0crwdne706342:0" + button_export-atom: "crwdns706344:0crwdne706344:0" + button_create: "crwdns706346:0crwdne706346:0" card: - add_new: 'crwdns704238:0crwdne704238:0' + add_new: 'crwdns706348:0crwdne706348:0' highlighting: - inline: 'crwdns704240:0crwdne704240:0' - entire_card_by: 'crwdns704242:0crwdne704242:0' - remove_from_list: 'crwdns704244:0crwdne704244:0' - caption_rate_history: "crwdns704246:0crwdne704246:0" + inline: 'crwdns706350:0crwdne706350:0' + entire_card_by: 'crwdns706352:0crwdne706352:0' + remove_from_list: 'crwdns706354:0crwdne706354:0' + caption_rate_history: "crwdns706356:0crwdne706356:0" clipboard: - browser_error: "crwdns704248:0crwdne704248:0" - copied_successful: "crwdns704250:0crwdne704250:0" + browser_error: "crwdns706358:0crwdne706358:0" + copied_successful: "crwdns706360:0crwdne706360:0" chart: - type: 'crwdns704252:0crwdne704252:0' - axis_criteria: 'crwdns704254:0crwdne704254:0' - modal_title: 'crwdns704256:0crwdne704256:0' + type: 'crwdns706362:0crwdne706362:0' + axis_criteria: 'crwdns706364:0crwdne706364:0' + modal_title: 'crwdns706366:0crwdne706366:0' types: - line: 'crwdns704258:0crwdne704258:0' - horizontal_bar: 'crwdns704260:0crwdne704260:0' - bar: 'crwdns704262:0crwdne704262:0' - pie: 'crwdns704264:0crwdne704264:0' - doughnut: 'crwdns704266:0crwdne704266:0' - radar: 'crwdns704268:0crwdne704268:0' - polar_area: 'crwdns704270:0crwdne704270:0' + line: 'crwdns706368:0crwdne706368:0' + horizontal_bar: 'crwdns706370:0crwdne706370:0' + bar: 'crwdns706372:0crwdne706372:0' + pie: 'crwdns706374:0crwdne706374:0' + doughnut: 'crwdns706376:0crwdne706376:0' + radar: 'crwdns706378:0crwdne706378:0' + polar_area: 'crwdns706380:0crwdne706380:0' tabs: - graph_settings: 'crwdns704272:0crwdne704272:0' - dataset: 'crwdns704274:0%{number}crwdne704274:0' + graph_settings: 'crwdns706382:0crwdne706382:0' + dataset: 'crwdns706384:0%{number}crwdne706384:0' errors: - could_not_load: 'crwdns704276:0crwdne704276:0' - description_available_columns: "crwdns704278:0crwdne704278:0" - description_current_position: "crwdns704280:0crwdne704280:0" - description_select_work_package: "crwdns704282:0%{id}crwdne704282:0" - description_selected_columns: "crwdns704284:0crwdne704284:0" - description_subwork_package: "crwdns704286:0%{id}crwdne704286:0" + could_not_load: 'crwdns706386:0crwdne706386:0' + description_available_columns: "crwdns706388:0crwdne706388:0" + description_current_position: "crwdns706390:0crwdne706390:0" + description_select_work_package: "crwdns706392:0%{id}crwdne706392:0" + description_selected_columns: "crwdns706394:0crwdne706394:0" + description_subwork_package: "crwdns706396:0%{id}crwdne706396:0" editor: - preview: 'crwdns704288:0crwdne704288:0' - source_code: 'crwdns704290:0crwdne704290:0' - error_saving_failed: 'crwdns704292:0%{error}crwdne704292:0' - ckeditor_error: 'crwdns704294:0crwdne704294:0' + preview: 'crwdns706398:0crwdne706398:0' + source_code: 'crwdns706400:0crwdne706400:0' + error_saving_failed: 'crwdns706402:0%{error}crwdne706402:0' + ckeditor_error: 'crwdns706404:0crwdne706404:0' mode: - manual: 'crwdns704296:0crwdne704296:0' - wysiwyg: 'crwdns704298:0crwdne704298:0' + manual: 'crwdns706406:0crwdne706406:0' + wysiwyg: 'crwdns706408:0crwdne706408:0' macro: - error: 'crwdns704300:0%{message}crwdne704300:0' + error: 'crwdns706410:0%{message}crwdne706410:0' attribute_reference: - macro_help_tooltip: 'crwdns704302:0crwdne704302:0' - not_found: 'crwdns704304:0crwdne704304:0' - invalid_attribute: "crwdns704306:0%{name}crwdne704306:0" + macro_help_tooltip: 'crwdns706412:0crwdne706412:0' + not_found: 'crwdns706414:0crwdne706414:0' + invalid_attribute: "crwdns706416:0%{name}crwdne706416:0" child_pages: - button: 'crwdns704308:0crwdne704308:0' - include_parent: 'crwdns704310:0crwdne704310:0' - text: 'crwdns704312:0[Placeholder]crwdne704312:0' - page: 'crwdns704314:0crwdne704314:0' - this_page: 'crwdns704316:0crwdne704316:0' + button: 'crwdns706418:0crwdne706418:0' + include_parent: 'crwdns706420:0crwdne706420:0' + text: 'crwdns706422:0[Placeholder]crwdne706422:0' + page: 'crwdns706424:0crwdne706424:0' + this_page: 'crwdns706426:0crwdne706426:0' hint: | - crwdns704318:0crwdne704318:0 + crwdns706428:0crwdne706428:0 code_block: - button: 'crwdns704320:0crwdne704320:0' - title: 'crwdns704322:0crwdne704322:0' - language: 'crwdns704324:0crwdne704324:0' - language_hint: 'crwdns704326:0crwdne704326:0' + button: 'crwdns706430:0crwdne706430:0' + title: 'crwdns706432:0crwdne706432:0' + language: 'crwdns706434:0crwdne706434:0' + language_hint: 'crwdns706436:0crwdne706436:0' dropdown: - macros: 'crwdns704328:0crwdne704328:0' - chose_macro: 'crwdns704330:0crwdne704330:0' - toc: 'crwdns704332:0crwdne704332:0' - toolbar_help: 'crwdns704334:0crwdne704334:0' + macros: 'crwdns706438:0crwdne706438:0' + chose_macro: 'crwdns706440:0crwdne706440:0' + toc: 'crwdns706442:0crwdne706442:0' + toolbar_help: 'crwdns706444:0crwdne706444:0' wiki_page_include: - button: 'crwdns704336:0crwdne704336:0' - text: 'crwdns704338:0[Placeholder]crwdne704338:0' - page: 'crwdns704340:0crwdne704340:0' - not_set: 'crwdns704342:0crwdne704342:0' + button: 'crwdns706446:0crwdne706446:0' + text: 'crwdns706448:0[Placeholder]crwdne706448:0' + page: 'crwdns706450:0crwdne706450:0' + not_set: 'crwdns706452:0crwdne706452:0' hint: | - crwdns704344:0crwdne704344:0 + crwdns706454:0crwdne706454:0 work_package_button: - button: 'crwdns704346:0crwdne704346:0' - type: 'crwdns704348:0crwdne704348:0' - button_style: 'crwdns704350:0crwdne704350:0' - button_style_hint: 'crwdns704352:0crwdne704352:0' - without_type: 'crwdns704354:0crwdne704354:0' - with_type: 'crwdns704356:0%{typename}crwdne704356:0' + button: 'crwdns706456:0crwdne706456:0' + type: 'crwdns706458:0crwdne706458:0' + button_style: 'crwdns706460:0crwdne706460:0' + button_style_hint: 'crwdns706462:0crwdne706462:0' + without_type: 'crwdns706464:0crwdne706464:0' + with_type: 'crwdns706466:0%{typename}crwdne706466:0' embedded_table: - button: 'crwdns704358:0crwdne704358:0' - text: 'crwdns704360:0[Placeholder]crwdne704360:0' + button: 'crwdns706468:0crwdne706468:0' + text: 'crwdns706470:0[Placeholder]crwdne706470:0' embedded_calendar: - text: 'crwdns704362:0[Placeholder]crwdne704362:0' + text: 'crwdns706472:0[Placeholder]crwdne706472:0' admin: type_form: - custom_field: 'crwdns704364:0crwdne704364:0' - inactive: 'crwdns704366:0crwdne704366:0' - drag_to_activate: "crwdns704368:0crwdne704368:0" - add_group: "crwdns704370:0crwdne704370:0" - add_table: "crwdns704372:0crwdne704372:0" - edit_query: 'crwdns704374:0crwdne704374:0' - new_group: 'crwdns704376:0crwdne704376:0' - reset_to_defaults: 'crwdns704378:0crwdne704378:0' + custom_field: 'crwdns706474:0crwdne706474:0' + inactive: 'crwdns706476:0crwdne706476:0' + drag_to_activate: "crwdns706478:0crwdne706478:0" + add_group: "crwdns706480:0crwdne706480:0" + add_table: "crwdns706482:0crwdne706482:0" + edit_query: 'crwdns706484:0crwdne706484:0' + new_group: 'crwdns706486:0crwdne706486:0' + reset_to_defaults: 'crwdns706488:0crwdne706488:0' enterprise: - text_reprieve_days_left: "crwdns704380:0%{days}crwdne704380:0" - text_expired: "crwdns704382:0crwdne704382:0" + text_reprieve_days_left: "crwdns706490:0%{days}crwdne706490:0" + text_expired: "crwdns706492:0crwdne706492:0" trial: - confirmation: "crwdns704384:0crwdne704384:0" + confirmation: "crwdns706494:0crwdne706494:0" confirmation_info: > - crwdns704386:0%{date}crwdnd704386:0%{email}crwdne704386:0 + crwdns706496:0%{date}crwdnd706496:0%{email}crwdne706496:0 form: general_consent: > - crwdns704388:0%{link_terms}crwdnd704388:0%{link_privacy}crwdne704388:0 - invalid_email: "crwdns704390:0crwdne704390:0" - label_company: "crwdns704392:0crwdne704392:0" - label_first_name: "crwdns704394:0crwdne704394:0" - label_last_name: "crwdns704396:0crwdne704396:0" - label_domain: "crwdns704398:0crwdne704398:0" - label_subscriber: "crwdns704400:0crwdne704400:0" - label_maximum_users: "crwdns704402:0crwdne704402:0" - label_starts_at: "crwdns704404:0crwdne704404:0" - label_expires_at: "crwdns704406:0crwdne704406:0" - receive_newsletter: crwdns704408:0%{link}crwdne704408:0 - taken_domain: crwdns704410:0crwdne704410:0 - taken_email: crwdns704412:0crwdne704412:0 - email_not_received: "crwdns704414:0crwdne704414:0" - try_another_email: "crwdns704416:0crwdne704416:0" - next_steps: "crwdns704418:0crwdne704418:0" - resend_link: "crwdns704420:0crwdne704420:0" - resend_success: "crwdns704422:0crwdne704422:0" - resend_warning: "crwdns704424:0crwdne704424:0" - session_timeout: "crwdns704426:0crwdne704426:0" - status_label: "crwdns704428:0crwdne704428:0" - status_confirmed: "crwdns704430:0crwdne704430:0" - status_waiting: "crwdns704432:0crwdne704432:0" - test_ee: "crwdns704434:0crwdne704434:0" - quick_overview: "crwdns704436:0crwdne704436:0" + crwdns706498:0%{link_terms}crwdnd706498:0%{link_privacy}crwdne706498:0 + invalid_email: "crwdns706500:0crwdne706500:0" + label_company: "crwdns706502:0crwdne706502:0" + label_first_name: "crwdns706504:0crwdne706504:0" + label_last_name: "crwdns706506:0crwdne706506:0" + label_domain: "crwdns706508:0crwdne706508:0" + label_subscriber: "crwdns706510:0crwdne706510:0" + label_maximum_users: "crwdns706512:0crwdne706512:0" + label_starts_at: "crwdns706514:0crwdne706514:0" + label_expires_at: "crwdns706516:0crwdne706516:0" + receive_newsletter: crwdns706518:0%{link}crwdne706518:0 + taken_domain: crwdns706520:0crwdne706520:0 + taken_email: crwdns706522:0crwdne706522:0 + email_not_received: "crwdns706524:0crwdne706524:0" + try_another_email: "crwdns706526:0crwdne706526:0" + next_steps: "crwdns706528:0crwdne706528:0" + resend_link: "crwdns706530:0crwdne706530:0" + resend_success: "crwdns706532:0crwdne706532:0" + resend_warning: "crwdns706534:0crwdne706534:0" + session_timeout: "crwdns706536:0crwdne706536:0" + status_label: "crwdns706538:0crwdne706538:0" + status_confirmed: "crwdns706540:0crwdne706540:0" + status_waiting: "crwdns706542:0crwdne706542:0" + test_ee: "crwdns706544:0crwdne706544:0" + quick_overview: "crwdns706546:0crwdne706546:0" upsale: - become_hero: "crwdns704438:0crwdne704438:0" + become_hero: "crwdns706548:0crwdne706548:0" benefits: - description: "crwdns704440:0crwdne704440:0" - high_security: "crwdns704442:0crwdne704442:0" - high_security_text: "crwdns704444:0crwdne704444:0" - installation: "crwdns704446:0crwdne704446:0" - installation_text: "crwdns704448:0crwdne704448:0" - premium_features: "crwdns704450:0crwdne704450:0" - premium_features_text: "crwdns704452:0crwdne704452:0" - professional_support: "crwdns704454:0crwdne704454:0" - professional_support_text: "crwdns704456:0crwdne704456:0" - button_start_trial: "crwdns704458:0crwdne704458:0" - button_book_now: "crwdns704460:0crwdne704460:0" + description: "crwdns706550:0crwdne706550:0" + high_security: "crwdns706552:0crwdne706552:0" + high_security_text: "crwdns706554:0crwdne706554:0" + installation: "crwdns706556:0crwdne706556:0" + installation_text: "crwdns706558:0crwdne706558:0" + premium_features: "crwdns706560:0crwdne706560:0" + premium_features_text: "crwdns706562:0crwdne706562:0" + professional_support: "crwdns706564:0crwdne706564:0" + professional_support_text: "crwdns706566:0crwdne706566:0" + button_start_trial: "crwdns706568:0crwdne706568:0" + button_book_now: "crwdns706570:0crwdne706570:0" confidence: > - crwdns704462:0crwdne704462:0 - link_quote: "crwdns704464:0crwdne704464:0" + crwdns706572:0crwdne706572:0 + link_quote: "crwdns706574:0crwdne706574:0" text: > - crwdns704466:0crwdne704466:0 - unlimited: "crwdns704468:0crwdne704468:0" - you_contribute: "crwdns704470:0crwdne704470:0" + crwdns706576:0crwdne706576:0 + unlimited: "crwdns706578:0crwdne706578:0" + you_contribute: "crwdns706580:0crwdne706580:0" custom_actions: date: - specific: 'crwdns704472:0crwdne704472:0' - current_date: 'crwdns704474:0crwdne704474:0' + specific: 'crwdns706582:0crwdne706582:0' + current_date: 'crwdns706584:0crwdne706584:0' error: - internal: "crwdns704476:0crwdne704476:0" - cannot_save_changes_with_message: "crwdns704478:0%{error}crwdne704478:0" - query_saving: "crwdns704480:0crwdne704480:0" - embedded_table_loading: "crwdns704482:0%{message}crwdne704482:0" - enumeration_activities: "crwdns704484:0crwdne704484:0" - enumeration_doc_categories: "crwdns704486:0crwdne704486:0" - enumeration_work_package_priorities: "crwdns704488:0crwdne704488:0" + internal: "crwdns706586:0crwdne706586:0" + cannot_save_changes_with_message: "crwdns706588:0%{error}crwdne706588:0" + query_saving: "crwdns706590:0crwdne706590:0" + embedded_table_loading: "crwdns706592:0%{message}crwdne706592:0" + enumeration_activities: "crwdns706594:0crwdne706594:0" + enumeration_doc_categories: "crwdns706596:0crwdne706596:0" + enumeration_work_package_priorities: "crwdns706598:0crwdne706598:0" filter: description: - text_open_filter: "crwdns704490:0crwdne704490:0" - text_close_filter: "crwdns704492:0crwdne704492:0" - noneElement: "crwdns704494:0crwdne704494:0" + text_open_filter: "crwdns706600:0crwdne706600:0" + text_close_filter: "crwdns706602:0crwdne706602:0" + noneElement: "crwdns706604:0crwdne706604:0" time_zone_converted: - two_values: "crwdns704496:0%{from}crwdnd704496:0%{to}crwdne704496:0" - only_start: "crwdns704498:0%{from}crwdne704498:0" - only_end: "crwdns704500:0%{to}crwdne704500:0" - value_spacer: "crwdns704502:0crwdne704502:0" + two_values: "crwdns706606:0%{from}crwdnd706606:0%{to}crwdne706606:0" + only_start: "crwdns706608:0%{from}crwdne706608:0" + only_end: "crwdns706610:0%{to}crwdne706610:0" + value_spacer: "crwdns706612:0crwdne706612:0" sorting: criteria: - one: "crwdns704504:0crwdne704504:0" - two: "crwdns704506:0crwdne704506:0" - three: "crwdns704508:0crwdne704508:0" - upsale_for_more: "crwdns704510:0crwdne704510:0" - upsale_link: 'crwdns704512:0crwdne704512:0' - general_text_no: "crwdns704514:0crwdne704514:0" - general_text_yes: "crwdns704516:0crwdne704516:0" - general_text_No: "crwdns704518:0crwdne704518:0" - general_text_Yes: "crwdns704520:0crwdne704520:0" + one: "crwdns706614:0crwdne706614:0" + two: "crwdns706616:0crwdne706616:0" + three: "crwdns706618:0crwdne706618:0" + upsale_for_more: "crwdns706620:0crwdne706620:0" + upsale_link: 'crwdns706622:0crwdne706622:0' + general_text_no: "crwdns706624:0crwdne706624:0" + general_text_yes: "crwdns706626:0crwdne706626:0" + general_text_No: "crwdns706628:0crwdne706628:0" + general_text_Yes: "crwdns706630:0crwdne706630:0" hal: error: - update_conflict_refresh: "crwdns704522:0crwdne704522:0" - edit_prohibited: "crwdns704524:0%{attribute}crwdne704524:0" + update_conflict_refresh: "crwdns706632:0crwdne706632:0" + edit_prohibited: "crwdns706634:0%{attribute}crwdne706634:0" format: - date: "crwdns704526:0%{attribute}crwdne704526:0" - general: "crwdns704528:0crwdne704528:0" + date: "crwdns706636:0%{attribute}crwdne706636:0" + general: "crwdns706638:0crwdne706638:0" homescreen: blocks: new_features: - text_new_features: "crwdns704530:0crwdne704530:0" - learn_about: "crwdns704532:0crwdne704532:0" + text_new_features: "crwdns706640:0crwdne706640:0" + learn_about: "crwdns706642:0crwdne706642:0" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': standard: - learn_about_link: crwdns704534:0crwdne704534:0 + learn_about_link: crwdns706644:0crwdne706644:0 new_features_html: > - crwdns704536:0%{list_styling_class}crwdne704536:0 + crwdns706646:0%{list_styling_class}crwdne706646:0 bim: - learn_about_link: crwdns704538:0crwdne704538:0 + learn_about_link: crwdns706648:0crwdne706648:0 new_features_html: > - crwdns704540:0%{list_styling_class}crwdne704540:0 - label_activate: "crwdns704542:0crwdne704542:0" - label_add_column_after: "crwdns704544:0crwdne704544:0" - label_add_column_before: "crwdns704546:0crwdne704546:0" - label_add_columns: "crwdns704548:0crwdne704548:0" - label_add_comment: "crwdns704550:0crwdne704550:0" - label_add_comment_title: "crwdns704552:0crwdne704552:0" - label_add_row_after: "crwdns704554:0crwdne704554:0" - label_add_row_before: "crwdns704556:0crwdne704556:0" - label_add_selected_columns: "crwdns704558:0crwdne704558:0" - label_added_by: "crwdns704560:0crwdne704560:0" - label_added_time_by: "crwdns704562:0%{authorLink}crwdnd704562:0%{author}crwdnd704562:0%{age}crwdne704562:0" - label_ago: "crwdns704564:0crwdne704564:0" - label_all: "crwdns704566:0crwdne704566:0" - label_all_work_packages: "crwdns704568:0crwdne704568:0" - label_and: "crwdns704570:0crwdne704570:0" - label_ascending: "crwdns704572:0crwdne704572:0" - label_author: "crwdns704574:0%{user}crwdne704574:0" - label_avatar: "crwdns704576:0crwdne704576:0" - label_between: "crwdns704578:0crwdne704578:0" - label_board: "crwdns704580:0crwdne704580:0" - label_board_locked: "crwdns704582:0crwdne704582:0" - label_board_plural: "crwdns704584:0crwdne704584:0" - label_board_sticky: "crwdns704586:0crwdne704586:0" - label_change: "crwdns704588:0crwdne704588:0" - label_create: "crwdns704590:0crwdne704590:0" - label_create_work_package: "crwdns704592:0crwdne704592:0" - label_created_by: "crwdns704594:0crwdne704594:0" - label_date: "crwdns704596:0crwdne704596:0" - label_date_with_format: "crwdns704598:0%{date_attribute}crwdnd704598:0%{format}crwdne704598:0" - label_deactivate: "crwdns704600:0crwdne704600:0" - label_descending: "crwdns704602:0crwdne704602:0" - label_description: "crwdns704604:0crwdne704604:0" - label_details: "crwdns704606:0crwdne704606:0" - label_display: "crwdns704608:0crwdne704608:0" - label_cancel_comment: "crwdns704610:0crwdne704610:0" - label_closed_work_packages: "crwdns704612:0crwdne704612:0" - label_collapse: "crwdns704614:0crwdne704614:0" - label_collapsed: "crwdns704616:0crwdne704616:0" - label_collapse_all: "crwdns704618:0crwdne704618:0" - label_comment: "crwdns704620:0crwdne704620:0" - label_committed_at: "crwdns704622:0%{committed_revision_link}crwdnd704622:0%{date}crwdne704622:0" - label_committed_link: "crwdns704624:0%{revision_identifier}crwdne704624:0" - label_contains: "crwdns704626:0crwdne704626:0" - label_created_on: "crwdns704628:0crwdne704628:0" - label_edit_comment: "crwdns704630:0crwdne704630:0" - label_edit_status: "crwdns704632:0crwdne704632:0" - label_email: "crwdns704634:0crwdne704634:0" - label_equals: "crwdns704636:0crwdne704636:0" - label_expand: "crwdns704638:0crwdne704638:0" - label_expanded: "crwdns704640:0crwdne704640:0" - label_expand_all: "crwdns704642:0crwdne704642:0" - label_expand_project_menu: "crwdns704644:0crwdne704644:0" - label_export: "crwdns704646:0crwdne704646:0" - label_export_preparing: "crwdns704648:0crwdne704648:0" - label_filename: "crwdns704650:0crwdne704650:0" - label_filesize: "crwdns704652:0crwdne704652:0" - label_general: "crwdns704654:0crwdne704654:0" - label_global_roles: "crwdns704656:0crwdne704656:0" - label_greater_or_equal: "crwdns704658:0crwdne704658:0" - label_group: 'crwdns704660:0crwdne704660:0' - label_group_by: "crwdns704662:0crwdne704662:0" - label_group_plural: "crwdns704664:0crwdne704664:0" - label_hide_attributes: "crwdns704666:0crwdne704666:0" - label_hide_column: "crwdns704668:0crwdne704668:0" - label_hide_project_menu: "crwdns704670:0crwdne704670:0" - label_in: "crwdns704672:0crwdne704672:0" - label_in_less_than: "crwdns704674:0crwdne704674:0" - label_in_more_than: "crwdns704676:0crwdne704676:0" - label_incoming_emails: "crwdns704678:0crwdne704678:0" - label_information_plural: "crwdns704680:0crwdne704680:0" - label_import: "crwdns704682:0crwdne704682:0" - label_latest_activity: "crwdns704684:0crwdne704684:0" - label_last_updated_on: "crwdns704686:0crwdne704686:0" - label_learn_more_link: "crwdns704688:0crwdne704688:0" - label_less_or_equal: "crwdns704690:0crwdne704690:0" - label_less_than_ago: "crwdns704692:0crwdne704692:0" - label_loading: "crwdns704694:0crwdne704694:0" - label_mail_notification: "crwdns704696:0crwdne704696:0" - label_me: "crwdns704698:0crwdne704698:0" - label_meeting_agenda: "crwdns704700:0crwdne704700:0" - label_meeting_minutes: "crwdns704702:0crwdne704702:0" - label_menu_collapse: "crwdns704704:0crwdne704704:0" - label_menu_expand: "crwdns704706:0crwdne704706:0" - label_more_than_ago: "crwdns704708:0crwdne704708:0" - label_next: "crwdns704710:0crwdne704710:0" - label_no_color: "crwdns704712:0crwdne704712:0" - label_no_data: "crwdns704714:0crwdne704714:0" - label_no_due_date: "crwdns704716:0crwdne704716:0" - label_no_start_date: "crwdns704718:0crwdne704718:0" - label_no_value: "crwdns704720:0crwdne704720:0" - label_none: "crwdns704722:0crwdne704722:0" - label_not_contains: "crwdns704724:0crwdne704724:0" - label_not_equals: "crwdns704726:0crwdne704726:0" - label_on: "crwdns704728:0crwdne704728:0" - label_open_menu: "crwdns704730:0crwdne704730:0" - label_open_context_menu: "crwdns704732:0crwdne704732:0" - label_open_work_packages: "crwdns704734:0crwdne704734:0" - label_password: "crwdns704736:0crwdne704736:0" - label_previous: "crwdns704738:0crwdne704738:0" - label_per_page: "crwdns704740:0crwdne704740:0" - label_please_wait: "crwdns704742:0crwdne704742:0" - label_project_plural: "crwdns704744:0crwdne704744:0" - label_visibility_settings: "crwdns704746:0crwdne704746:0" - label_quote_comment: "crwdns704748:0crwdne704748:0" - label_recent: "crwdns704750:0crwdne704750:0" - label_reset: "crwdns704752:0crwdne704752:0" - label_remove: "crwdns704754:0crwdne704754:0" - label_remove_column: "crwdns704756:0crwdne704756:0" - label_remove_columns: "crwdns704758:0crwdne704758:0" - label_remove_row: "crwdns704760:0crwdne704760:0" - label_report: "crwdns704762:0crwdne704762:0" - label_repository_plural: "crwdns704764:0crwdne704764:0" - label_save_as: "crwdns704766:0crwdne704766:0" - label_select_watcher: "crwdns704768:0crwdne704768:0" - label_selected_filter_list: "crwdns704770:0crwdne704770:0" - label_show_attributes: "crwdns704772:0crwdne704772:0" - label_show_in_menu: "crwdns704774:0crwdne704774:0" - label_sort_by: "crwdns704776:0crwdne704776:0" - label_sorted_by: "crwdns704778:0crwdne704778:0" - label_sort_higher: "crwdns704780:0crwdne704780:0" - label_sort_lower: "crwdns704782:0crwdne704782:0" - label_sorting: "crwdns704784:0crwdne704784:0" - label_spent_time: "crwdns704786:0crwdne704786:0" - label_star_query: "crwdns704788:0crwdne704788:0" - label_press_enter_to_save: "crwdns704790:0crwdne704790:0" - label_public_query: "crwdns704792:0crwdne704792:0" - label_sum: "crwdns704794:0crwdne704794:0" - label_sum_for: "crwdns704796:0crwdne704796:0" - label_total_sum: "crwdns704798:0crwdne704798:0" - label_subject: "crwdns704800:0crwdne704800:0" - label_this_week: "crwdns704802:0crwdne704802:0" - label_today: "crwdns704804:0crwdne704804:0" - label_time_entry_plural: "crwdns704806:0crwdne704806:0" - label_up: "crwdns704808:0crwdne704808:0" - label_user_plural: "crwdns704810:0crwdne704810:0" - label_activity_show_only_comments: "crwdns704812:0crwdne704812:0" - label_activity_show_all: "crwdns704814:0crwdne704814:0" - label_total_progress: "crwdns704816:0%{percent}crwdne704816:0" - label_total_amount: "crwdns704818:0%{amount}crwdne704818:0" - label_updated_on: "crwdns704820:0crwdne704820:0" - label_value_derived_from_children: "crwdns704822:0crwdne704822:0" - label_children_derived_duration: "crwdns704824:0crwdne704824:0" - label_warning: "crwdns704826:0crwdne704826:0" - label_work_package: "crwdns704828:0crwdne704828:0" - label_work_package_parent: "crwdns704830:0crwdne704830:0" - label_work_package_plural: "crwdns704832:0crwdne704832:0" - label_watch: "crwdns704834:0crwdne704834:0" - label_watch_work_package: "crwdns704836:0crwdne704836:0" - label_watcher_added_successfully: "crwdns704838:0crwdne704838:0" - label_watcher_deleted_successfully: "crwdns704840:0crwdne704840:0" - label_work_package_details_you_are_here: "crwdns704842:0%{tab}crwdnd704842:0%{type}crwdnd704842:0%{subject}crwdne704842:0" - label_unwatch: "crwdns704844:0crwdne704844:0" - label_unwatch_work_package: "crwdns704846:0crwdne704846:0" - label_uploaded_by: "crwdns704848:0crwdne704848:0" - label_default_queries: "crwdns704850:0crwdne704850:0" - label_starred_queries: "crwdns704852:0crwdne704852:0" - label_global_queries: "crwdns704854:0crwdne704854:0" - label_custom_queries: "crwdns704856:0crwdne704856:0" - label_create_new_query: "crwdns704858:0crwdne704858:0" - label_columns: "crwdns704860:0crwdne704860:0" - label_attachments: crwdns704862:0crwdne704862:0 - label_drop_files: crwdns704864:0crwdne704864:0 - label_drop_files_hint: crwdns704866:0crwdne704866:0 - label_drop_folders_hint: crwdns704868:0crwdne704868:0 - label_add_attachments: "crwdns704870:0crwdne704870:0" - label_formattable_attachment_hint: "crwdns704872:0crwdne704872:0" - label_remove_file: "crwdns704874:0%{fileName}crwdne704874:0" - label_remove_watcher: "crwdns704876:0%{name}crwdne704876:0" - label_remove_all_files: crwdns704878:0crwdne704878:0 - label_add_description: "crwdns704880:0%{file}crwdne704880:0" - label_upload_notification: "crwdns704882:0crwdne704882:0" - label_work_package_upload_notification: "crwdns704884:0%{id}crwdnd704884:0%{subject}crwdne704884:0" - label_wp_id_added_by: "crwdns704886:0%{id}crwdnd704886:0%{author}crwdne704886:0" - label_files_to_upload: "crwdns704888:0crwdne704888:0" - label_rejected_files: "crwdns704890:0crwdne704890:0" - label_rejected_files_reason: "crwdns704892:0%{maximumFilesize}crwdne704892:0" - label_wait: "crwdns704894:0crwdne704894:0" - label_upload_counter: "crwdns704896:0%{done}crwdnd704896:0%{count}crwdne704896:0" - label_validation_error: "crwdns704898:0crwdne704898:0" - label_version_plural: "crwdns704900:0crwdne704900:0" - label_view_has_changed: "crwdns704902:0crwdne704902:0" + crwdns706650:0%{list_styling_class}crwdne706650:0 + label_activate: "crwdns706652:0crwdne706652:0" + label_add_column_after: "crwdns706654:0crwdne706654:0" + label_add_column_before: "crwdns706656:0crwdne706656:0" + label_add_columns: "crwdns706658:0crwdne706658:0" + label_add_comment: "crwdns706660:0crwdne706660:0" + label_add_comment_title: "crwdns706662:0crwdne706662:0" + label_add_row_after: "crwdns706664:0crwdne706664:0" + label_add_row_before: "crwdns706666:0crwdne706666:0" + label_add_selected_columns: "crwdns706668:0crwdne706668:0" + label_added_by: "crwdns706670:0crwdne706670:0" + label_added_time_by: "crwdns706672:0%{authorLink}crwdnd706672:0%{author}crwdnd706672:0%{age}crwdne706672:0" + label_ago: "crwdns706674:0crwdne706674:0" + label_all: "crwdns706676:0crwdne706676:0" + label_all_work_packages: "crwdns706678:0crwdne706678:0" + label_and: "crwdns706680:0crwdne706680:0" + label_ascending: "crwdns706682:0crwdne706682:0" + label_author: "crwdns706684:0%{user}crwdne706684:0" + label_avatar: "crwdns706686:0crwdne706686:0" + label_between: "crwdns706688:0crwdne706688:0" + label_board: "crwdns706690:0crwdne706690:0" + label_board_locked: "crwdns706692:0crwdne706692:0" + label_board_plural: "crwdns706694:0crwdne706694:0" + label_board_sticky: "crwdns706696:0crwdne706696:0" + label_change: "crwdns706698:0crwdne706698:0" + label_create: "crwdns706700:0crwdne706700:0" + label_create_work_package: "crwdns706702:0crwdne706702:0" + label_created_by: "crwdns706704:0crwdne706704:0" + label_date: "crwdns706706:0crwdne706706:0" + label_date_with_format: "crwdns706708:0%{date_attribute}crwdnd706708:0%{format}crwdne706708:0" + label_deactivate: "crwdns706710:0crwdne706710:0" + label_descending: "crwdns706712:0crwdne706712:0" + label_description: "crwdns706714:0crwdne706714:0" + label_details: "crwdns706716:0crwdne706716:0" + label_display: "crwdns706718:0crwdne706718:0" + label_cancel_comment: "crwdns706720:0crwdne706720:0" + label_closed_work_packages: "crwdns706722:0crwdne706722:0" + label_collapse: "crwdns706724:0crwdne706724:0" + label_collapsed: "crwdns706726:0crwdne706726:0" + label_collapse_all: "crwdns706728:0crwdne706728:0" + label_comment: "crwdns706730:0crwdne706730:0" + label_committed_at: "crwdns706732:0%{committed_revision_link}crwdnd706732:0%{date}crwdne706732:0" + label_committed_link: "crwdns706734:0%{revision_identifier}crwdne706734:0" + label_contains: "crwdns706736:0crwdne706736:0" + label_created_on: "crwdns706738:0crwdne706738:0" + label_edit_comment: "crwdns706740:0crwdne706740:0" + label_edit_status: "crwdns706742:0crwdne706742:0" + label_email: "crwdns706744:0crwdne706744:0" + label_equals: "crwdns706746:0crwdne706746:0" + label_expand: "crwdns706748:0crwdne706748:0" + label_expanded: "crwdns706750:0crwdne706750:0" + label_expand_all: "crwdns706752:0crwdne706752:0" + label_expand_project_menu: "crwdns706754:0crwdne706754:0" + label_export: "crwdns706756:0crwdne706756:0" + label_export_preparing: "crwdns706758:0crwdne706758:0" + label_filename: "crwdns706760:0crwdne706760:0" + label_filesize: "crwdns706762:0crwdne706762:0" + label_general: "crwdns706764:0crwdne706764:0" + label_global_roles: "crwdns706766:0crwdne706766:0" + label_greater_or_equal: "crwdns706768:0crwdne706768:0" + label_group: 'crwdns706770:0crwdne706770:0' + label_group_by: "crwdns706772:0crwdne706772:0" + label_group_plural: "crwdns706774:0crwdne706774:0" + label_hide_attributes: "crwdns706776:0crwdne706776:0" + label_hide_column: "crwdns706778:0crwdne706778:0" + label_hide_project_menu: "crwdns706780:0crwdne706780:0" + label_in: "crwdns706782:0crwdne706782:0" + label_in_less_than: "crwdns706784:0crwdne706784:0" + label_in_more_than: "crwdns706786:0crwdne706786:0" + label_incoming_emails: "crwdns706788:0crwdne706788:0" + label_information_plural: "crwdns706790:0crwdne706790:0" + label_import: "crwdns706792:0crwdne706792:0" + label_latest_activity: "crwdns706794:0crwdne706794:0" + label_last_updated_on: "crwdns706796:0crwdne706796:0" + label_learn_more_link: "crwdns706798:0crwdne706798:0" + label_less_or_equal: "crwdns706800:0crwdne706800:0" + label_less_than_ago: "crwdns706802:0crwdne706802:0" + label_loading: "crwdns706804:0crwdne706804:0" + label_mail_notification: "crwdns706806:0crwdne706806:0" + label_me: "crwdns706808:0crwdne706808:0" + label_meeting_agenda: "crwdns706810:0crwdne706810:0" + label_meeting_minutes: "crwdns706812:0crwdne706812:0" + label_menu_collapse: "crwdns706814:0crwdne706814:0" + label_menu_expand: "crwdns706816:0crwdne706816:0" + label_more_than_ago: "crwdns706818:0crwdne706818:0" + label_next: "crwdns706820:0crwdne706820:0" + label_no_color: "crwdns706822:0crwdne706822:0" + label_no_data: "crwdns706824:0crwdne706824:0" + label_no_due_date: "crwdns706826:0crwdne706826:0" + label_no_start_date: "crwdns706828:0crwdne706828:0" + label_no_value: "crwdns706830:0crwdne706830:0" + label_none: "crwdns706832:0crwdne706832:0" + label_not_contains: "crwdns706834:0crwdne706834:0" + label_not_equals: "crwdns706836:0crwdne706836:0" + label_on: "crwdns706838:0crwdne706838:0" + label_open_menu: "crwdns706840:0crwdne706840:0" + label_open_context_menu: "crwdns706842:0crwdne706842:0" + label_open_work_packages: "crwdns706844:0crwdne706844:0" + label_password: "crwdns706846:0crwdne706846:0" + label_previous: "crwdns706848:0crwdne706848:0" + label_per_page: "crwdns706850:0crwdne706850:0" + label_please_wait: "crwdns706852:0crwdne706852:0" + label_project_plural: "crwdns706854:0crwdne706854:0" + label_visibility_settings: "crwdns706856:0crwdne706856:0" + label_quote_comment: "crwdns706858:0crwdne706858:0" + label_recent: "crwdns706860:0crwdne706860:0" + label_reset: "crwdns706862:0crwdne706862:0" + label_remove: "crwdns706864:0crwdne706864:0" + label_remove_column: "crwdns706866:0crwdne706866:0" + label_remove_columns: "crwdns706868:0crwdne706868:0" + label_remove_row: "crwdns706870:0crwdne706870:0" + label_report: "crwdns706872:0crwdne706872:0" + label_repository_plural: "crwdns706874:0crwdne706874:0" + label_save_as: "crwdns706876:0crwdne706876:0" + label_select_watcher: "crwdns706878:0crwdne706878:0" + label_selected_filter_list: "crwdns706880:0crwdne706880:0" + label_show_attributes: "crwdns706882:0crwdne706882:0" + label_show_in_menu: "crwdns706884:0crwdne706884:0" + label_sort_by: "crwdns706886:0crwdne706886:0" + label_sorted_by: "crwdns706888:0crwdne706888:0" + label_sort_higher: "crwdns706890:0crwdne706890:0" + label_sort_lower: "crwdns706892:0crwdne706892:0" + label_sorting: "crwdns706894:0crwdne706894:0" + label_spent_time: "crwdns706896:0crwdne706896:0" + label_star_query: "crwdns706898:0crwdne706898:0" + label_press_enter_to_save: "crwdns706900:0crwdne706900:0" + label_public_query: "crwdns706902:0crwdne706902:0" + label_sum: "crwdns706904:0crwdne706904:0" + label_sum_for: "crwdns706906:0crwdne706906:0" + label_total_sum: "crwdns706908:0crwdne706908:0" + label_subject: "crwdns706910:0crwdne706910:0" + label_this_week: "crwdns706912:0crwdne706912:0" + label_today: "crwdns706914:0crwdne706914:0" + label_time_entry_plural: "crwdns706916:0crwdne706916:0" + label_up: "crwdns706918:0crwdne706918:0" + label_user_plural: "crwdns706920:0crwdne706920:0" + label_activity_show_only_comments: "crwdns706922:0crwdne706922:0" + label_activity_show_all: "crwdns706924:0crwdne706924:0" + label_total_progress: "crwdns706926:0%{percent}crwdne706926:0" + label_total_amount: "crwdns706928:0%{amount}crwdne706928:0" + label_updated_on: "crwdns706930:0crwdne706930:0" + label_value_derived_from_children: "crwdns706932:0crwdne706932:0" + label_children_derived_duration: "crwdns706934:0crwdne706934:0" + label_warning: "crwdns706936:0crwdne706936:0" + label_work_package: "crwdns706938:0crwdne706938:0" + label_work_package_parent: "crwdns706940:0crwdne706940:0" + label_work_package_plural: "crwdns706942:0crwdne706942:0" + label_watch: "crwdns706944:0crwdne706944:0" + label_watch_work_package: "crwdns706946:0crwdne706946:0" + label_watcher_added_successfully: "crwdns706948:0crwdne706948:0" + label_watcher_deleted_successfully: "crwdns706950:0crwdne706950:0" + label_work_package_details_you_are_here: "crwdns706952:0%{tab}crwdnd706952:0%{type}crwdnd706952:0%{subject}crwdne706952:0" + label_unwatch: "crwdns706954:0crwdne706954:0" + label_unwatch_work_package: "crwdns706956:0crwdne706956:0" + label_uploaded_by: "crwdns706958:0crwdne706958:0" + label_default_queries: "crwdns706960:0crwdne706960:0" + label_starred_queries: "crwdns706962:0crwdne706962:0" + label_global_queries: "crwdns706964:0crwdne706964:0" + label_custom_queries: "crwdns706966:0crwdne706966:0" + label_create_new_query: "crwdns706968:0crwdne706968:0" + label_columns: "crwdns706970:0crwdne706970:0" + label_attachments: crwdns706972:0crwdne706972:0 + label_drop_files: crwdns706974:0crwdne706974:0 + label_drop_files_hint: crwdns706976:0crwdne706976:0 + label_drop_folders_hint: crwdns706978:0crwdne706978:0 + label_add_attachments: "crwdns706980:0crwdne706980:0" + label_formattable_attachment_hint: "crwdns706982:0crwdne706982:0" + label_remove_file: "crwdns706984:0%{fileName}crwdne706984:0" + label_remove_watcher: "crwdns706986:0%{name}crwdne706986:0" + label_remove_all_files: crwdns706988:0crwdne706988:0 + label_add_description: "crwdns706990:0%{file}crwdne706990:0" + label_upload_notification: "crwdns706992:0crwdne706992:0" + label_work_package_upload_notification: "crwdns706994:0%{id}crwdnd706994:0%{subject}crwdne706994:0" + label_wp_id_added_by: "crwdns706996:0%{id}crwdnd706996:0%{author}crwdne706996:0" + label_files_to_upload: "crwdns706998:0crwdne706998:0" + label_rejected_files: "crwdns707000:0crwdne707000:0" + label_rejected_files_reason: "crwdns707002:0%{maximumFilesize}crwdne707002:0" + label_wait: "crwdns707004:0crwdne707004:0" + label_upload_counter: "crwdns707006:0%{done}crwdnd707006:0%{count}crwdne707006:0" + label_validation_error: "crwdns707008:0crwdne707008:0" + label_version_plural: "crwdns707010:0crwdne707010:0" + label_view_has_changed: "crwdns707012:0crwdne707012:0" help_texts: - show_modal: 'crwdns704904:0crwdne704904:0' + show_modal: 'crwdns707014:0crwdne707014:0' onboarding: buttons: - skip: 'crwdns704906:0crwdne704906:0' - next: 'crwdns704908:0crwdne704908:0' - got_it: 'crwdns704910:0crwdne704910:0' + skip: 'crwdns707016:0crwdne707016:0' + next: 'crwdns707018:0crwdne707018:0' + got_it: 'crwdns707020:0crwdne707020:0' steps: - help_menu: 'crwdns704912:0crwdne704912:0' - members: 'crwdns704914:0crwdne704914:0' - project_selection: 'crwdns704916:0crwdne704916:0' - quick_add_button: 'crwdns704918:0crwdne704918:0' - sidebar_arrow: "crwdns704920:0crwdne704920:0" - welcome: 'crwdns704922:0crwdne704922:0' - wiki: 'crwdns704924:0crwdne704924:0' + help_menu: 'crwdns707022:0crwdne707022:0' + members: 'crwdns707024:0crwdne707024:0' + project_selection: 'crwdns707026:0crwdne707026:0' + quick_add_button: 'crwdns707028:0crwdne707028:0' + sidebar_arrow: "crwdns707030:0crwdne707030:0" + welcome: 'crwdns707032:0crwdne707032:0' + wiki: 'crwdns707034:0crwdne707034:0' backlogs: - overview: "crwdns704926:0crwdne704926:0" - sprints: "crwdns704928:0crwdne704928:0" - task_board_arrow: 'crwdns704930:0crwdne704930:0' - task_board_select: 'crwdns704932:0crwdne704932:0' - task_board: "crwdns704934:0crwdne704934:0" + overview: "crwdns707036:0crwdne707036:0" + sprints: "crwdns707038:0crwdne707038:0" + task_board_arrow: 'crwdns707040:0crwdne707040:0' + task_board_select: 'crwdns707042:0crwdne707042:0' + task_board: "crwdns707044:0crwdne707044:0" boards: - overview: 'crwdns704936:0crwdne704936:0' - lists: 'crwdns704938:0crwdne704938:0' - add: 'crwdns704940:0crwdne704940:0' - drag: 'crwdns704942:0crwdne704942:0' + overview: 'crwdns707046:0crwdne707046:0' + lists: 'crwdns707048:0crwdne707048:0' + add: 'crwdns707050:0crwdne707050:0' + drag: 'crwdns707052:0crwdne707052:0' wp: - toggler: "crwdns704944:0crwdne704944:0" - list: 'crwdns704946:0crwdne704946:0' - full_view: 'crwdns704948:0crwdne704948:0' - back_button: 'crwdns704950:0crwdne704950:0' - create_button: 'crwdns704952:0crwdne704952:0' - timeline_button: 'crwdns704954:0crwdne704954:0' - timeline: 'crwdns704956:0crwdne704956:0' + toggler: "crwdns707054:0crwdne707054:0" + list: 'crwdns707056:0crwdne707056:0' + full_view: 'crwdns707058:0crwdne707058:0' + back_button: 'crwdns707060:0crwdne707060:0' + create_button: 'crwdns707062:0crwdne707062:0' + timeline_button: 'crwdns707064:0crwdne707064:0' + timeline: 'crwdns707066:0crwdne707066:0' notifications: - title: "crwdns704958:0crwdne704958:0" - no_unread: "crwdns704960:0crwdne704960:0" + title: "crwdns707068:0crwdne707068:0" + no_unread: "crwdns707070:0crwdne707070:0" reasons: - mentioned: 'crwdns704962:0crwdne704962:0' - watched: 'crwdns704964:0crwdne704964:0' - assigned: 'crwdns704966:0crwdne704966:0' - responsible: 'crwdns704968:0crwdne704968:0' + mentioned: 'crwdns707072:0crwdne707072:0' + watched: 'crwdns707074:0crwdne707074:0' + assigned: 'crwdns707076:0crwdne707076:0' + responsible: 'crwdns707078:0crwdne707078:0' facets: - unread: 'crwdns704970:0crwdne704970:0' - all: 'crwdns704972:0crwdne704972:0' + unread: 'crwdns707080:0crwdne707080:0' + all: 'crwdns707082:0crwdne707082:0' center: and_more_users: - one: 'crwdns704974:1crwdne704974:1' - other: 'crwdns704974:5%{count}crwdne704974:5' + one: 'crwdns707084:1crwdne707084:1' + other: 'crwdns707084:5%{count}crwdne707084:5' no_results: - at_all: 'crwdns704976:0crwdne704976:0' - with_current_filter: 'crwdns704978:0crwdne704978:0' - mark_all_read: 'crwdns704980:0crwdne704980:0' - mark_as_read: 'crwdns704982:0crwdne704982:0' - text_update_date: "crwdns704984:0%{date}crwdne704984:0" - total_count_warning: "crwdns704986:0%{newest_count}crwdnd704986:0%{more_count}crwdne704986:0" + at_all: 'crwdns707086:0crwdne707086:0' + with_current_filter: 'crwdns707088:0crwdne707088:0' + mark_all_read: 'crwdns707090:0crwdne707090:0' + mark_as_read: 'crwdns707092:0crwdne707092:0' + text_update_date: "crwdns707094:0%{date}crwdne707094:0" + total_count_warning: "crwdns707096:0%{newest_count}crwdnd707096:0%{more_count}crwdne707096:0" empty_state: - no_notification: "crwdns704988:0crwdne704988:0" - no_notification_with_current_filter: "crwdns704990:0crwdne704990:0" - no_selection: "crwdns704992:0crwdne704992:0" + no_notification: "crwdns707098:0crwdne707098:0" + no_notification_with_current_filter: "crwdns707100:0crwdne707100:0" + no_selection: "crwdns707102:0crwdne707102:0" new_notifications: - message: 'crwdns704994:0crwdne704994:0' - link_text: 'crwdns704996:0crwdne704996:0' + message: 'crwdns707104:0crwdne707104:0' + link_text: 'crwdns707106:0crwdne707106:0' menu: - accountable: 'crwdns704998:0crwdne704998:0' - assigned: 'crwdns705000:0crwdne705000:0' - by_project: 'crwdns705002:0crwdne705002:0' - by_reason: 'crwdns705004:0crwdne705004:0' - inbox: 'crwdns705006:0crwdne705006:0' - mentioned: 'crwdns705008:0crwdne705008:0' - watching: 'crwdns705010:0crwdne705010:0' + accountable: 'crwdns707108:0crwdne707108:0' + assigned: 'crwdns707110:0crwdne707110:0' + by_project: 'crwdns707112:0crwdne707112:0' + by_reason: 'crwdns707114:0crwdne707114:0' + inbox: 'crwdns707116:0crwdne707116:0' + mentioned: 'crwdns707118:0crwdne707118:0' + watching: 'crwdns707120:0crwdne707120:0' settings: - change_notification_settings: 'crwdns705012:0%{url}crwdne705012:0' - title: "crwdns705014:0crwdne705014:0" - notify_me: "crwdns705016:0crwdne705016:0" + change_notification_settings: 'crwdns707122:0%{url}crwdne707122:0' + title: "crwdns707124:0crwdne707124:0" + notify_me: "crwdns707126:0crwdne707126:0" reasons: mentioned: - title: 'crwdns705018:0crwdne705018:0' - description: 'crwdns705020:0crwdne705020:0' + title: 'crwdns707128:0crwdne707128:0' + description: 'crwdns707130:0crwdne707130:0' involved: - title: 'crwdns705022:0crwdne705022:0' - description: 'crwdns705024:0crwdne705024:0' - watched: 'crwdns705026:0crwdne705026:0' - work_package_commented: 'crwdns705028:0crwdne705028:0' - work_package_created: 'crwdns705030:0crwdne705030:0' - work_package_processed: 'crwdns705032:0crwdne705032:0' - work_package_prioritized: 'crwdns705034:0crwdne705034:0' - work_package_scheduled: 'crwdns705036:0crwdne705036:0' + title: 'crwdns707132:0crwdne707132:0' + description: 'crwdns707134:0crwdne707134:0' + watched: 'crwdns707136:0crwdne707136:0' + work_package_commented: 'crwdns707138:0crwdne707138:0' + work_package_created: 'crwdns707140:0crwdne707140:0' + work_package_processed: 'crwdns707142:0crwdne707142:0' + work_package_prioritized: 'crwdns707144:0crwdne707144:0' + work_package_scheduled: 'crwdns707146:0crwdne707146:0' global: immediately: - title: 'crwdns705038:0crwdne705038:0' - description: 'crwdns705040:0crwdne705040:0' + title: 'crwdns707148:0crwdne707148:0' + description: 'crwdns707150:0crwdne707150:0' delayed: - title: 'crwdns705042:0crwdne705042:0' - description: 'crwdns705044:0crwdne705044:0' + title: 'crwdns707152:0crwdne707152:0' + description: 'crwdns707154:0crwdne707154:0' project_specific: - title: 'crwdns705046:0crwdne705046:0' - description: 'crwdns705048:0crwdne705048:0' - add: 'crwdns705050:0crwdne705050:0' - already_selected: 'crwdns705052:0crwdne705052:0' - remove: 'crwdns705054:0crwdne705054:0' + title: 'crwdns707156:0crwdne707156:0' + description: 'crwdns707158:0crwdne707158:0' + add: 'crwdns707160:0crwdne707160:0' + already_selected: 'crwdns707162:0crwdne707162:0' + remove: 'crwdns707164:0crwdne707164:0' password_confirmation: - field_description: 'crwdns705056:0crwdne705056:0' - title: 'crwdns705058:0crwdne705058:0' + field_description: 'crwdns707166:0crwdne707166:0' + title: 'crwdns707168:0crwdne707168:0' pagination: - no_other_page: "crwdns705060:0crwdne705060:0" + no_other_page: "crwdns707170:0crwdne707170:0" pages: - next: "crwdns705062:0crwdne705062:0" - previous: "crwdns705064:0crwdne705064:0" + next: "crwdns707172:0crwdne707172:0" + previous: "crwdns707174:0crwdne707174:0" placeholders: - default: 'crwdns705066:0crwdne705066:0' - subject: 'crwdns705068:0crwdne705068:0' - selection: 'crwdns705070:0crwdne705070:0' - relation_description: 'crwdns705072:0crwdne705072:0' + default: 'crwdns707176:0crwdne707176:0' + subject: 'crwdns707178:0crwdne707178:0' + selection: 'crwdns707180:0crwdne707180:0' + relation_description: 'crwdns707182:0crwdne707182:0' project: required_outside_context: > - crwdns705074:0crwdne705074:0 - context: 'crwdns705076:0crwdne705076:0' - work_package_belongs_to: 'crwdns705078:0%{projectname}crwdne705078:0' - click_to_switch_context: 'crwdns705080:0crwdne705080:0' - confirm_template_load: 'crwdns705082:0crwdne705082:0' - use_template: "crwdns705084:0crwdne705084:0" - no_template_selected: "crwdns705086:0crwdne705086:0" + crwdns707184:0crwdne707184:0 + context: 'crwdns707186:0crwdne707186:0' + work_package_belongs_to: 'crwdns707188:0%{projectname}crwdne707188:0' + click_to_switch_context: 'crwdns707190:0crwdne707190:0' + confirm_template_load: 'crwdns707192:0crwdne707192:0' + use_template: "crwdns707194:0crwdne707194:0" + no_template_selected: "crwdns707196:0crwdne707196:0" copy: - copy_options: "crwdns705088:0crwdne705088:0" + copy_options: "crwdns707198:0crwdne707198:0" autocompleter: - label: 'crwdns705090:0crwdne705090:0' + label: 'crwdns707200:0crwdne707200:0' reminders: settings: daily: - add_time: 'crwdns705092:0crwdne705092:0' - enable: 'crwdns705094:0crwdne705094:0' - explanation: 'crwdns705096:0%{no_time_zone}crwdne705096:0' - no_time_zone: 'crwdns705098:0crwdne705098:0' - time_label: 'crwdns705100:0%{counter}crwdne705100:0' - title: 'crwdns705102:0crwdne705102:0' + add_time: 'crwdns707202:0crwdne707202:0' + enable: 'crwdns707204:0crwdne707204:0' + explanation: 'crwdns707206:0%{no_time_zone}crwdne707206:0' + no_time_zone: 'crwdns707208:0crwdne707208:0' + time_label: 'crwdns707210:0%{counter}crwdne707210:0' + title: 'crwdns707212:0crwdne707212:0' workdays: - title: 'crwdns705104:0crwdne705104:0' + title: 'crwdns707214:0crwdne707214:0' immediate: - title: 'crwdns705106:0crwdne705106:0' - mentioned: 'crwdns705108:0crwdne705108:0' + title: 'crwdns707216:0crwdne707216:0' + mentioned: 'crwdns707218:0crwdne707218:0' alerts: - title: 'crwdns705110:0crwdne705110:0' + title: 'crwdns707220:0crwdne707220:0' explanation: > - crwdns705112:0crwdne705112:0 - news_added: 'crwdns705114:0crwdne705114:0' - news_commented: 'crwdns705116:0crwdne705116:0' - document_added: 'crwdns705118:0crwdne705118:0' - forum_messages: 'crwdns705120:0crwdne705120:0' - wiki_page_added: 'crwdns705122:0crwdne705122:0' - wiki_page_updated: 'crwdns705124:0crwdne705124:0' - membership_added: 'crwdns705126:0crwdne705126:0' - membership_updated: 'crwdns705128:0crwdne705128:0' - title: 'crwdns705130:0crwdne705130:0' + crwdns707222:0crwdne707222:0 + news_added: 'crwdns707224:0crwdne707224:0' + news_commented: 'crwdns707226:0crwdne707226:0' + document_added: 'crwdns707228:0crwdne707228:0' + forum_messages: 'crwdns707230:0crwdne707230:0' + wiki_page_added: 'crwdns707232:0crwdne707232:0' + wiki_page_updated: 'crwdns707234:0crwdne707234:0' + membership_added: 'crwdns707236:0crwdne707236:0' + membership_updated: 'crwdns707238:0crwdne707238:0' + title: 'crwdns707240:0crwdne707240:0' pause: - label: 'crwdns705132:0crwdne705132:0' - first_day: 'crwdns705134:0crwdne705134:0' - last_day: 'crwdns705136:0crwdne705136:0' - text_are_you_sure: "crwdns705138:0crwdne705138:0" - text_data_lost: "crwdns705140:0crwdne705140:0" + label: 'crwdns707242:0crwdne707242:0' + first_day: 'crwdns707244:0crwdne707244:0' + last_day: 'crwdns707246:0crwdne707246:0' + text_are_you_sure: "crwdns707248:0crwdne707248:0" + text_data_lost: "crwdns707250:0crwdne707250:0" types: attribute_groups: - error_duplicate_group_name: "crwdns705142:0%{group}crwdne705142:0" - error_no_table_configured: "crwdns705144:0%{group}crwdne705144:0" - reset_title: "crwdns705146:0crwdne705146:0" + error_duplicate_group_name: "crwdns707252:0%{group}crwdne707252:0" + error_no_table_configured: "crwdns707254:0%{group}crwdne707254:0" + reset_title: "crwdns707256:0crwdne707256:0" confirm_reset: > - crwdns705148:0crwdne705148:0 - upgrade_to_ee: "crwdns705150:0crwdne705150:0" - upgrade_to_ee_text: "crwdns705152:0crwdne705152:0" - more_information: "crwdns705154:0crwdne705154:0" - nevermind: "crwdns705156:0crwdne705156:0" + crwdns707258:0crwdne707258:0 + upgrade_to_ee: "crwdns707260:0crwdne707260:0" + upgrade_to_ee_text: "crwdns707262:0crwdne707262:0" + more_information: "crwdns707264:0crwdne707264:0" + nevermind: "crwdns707266:0crwdne707266:0" edit: - form_configuration: "crwdns705158:0crwdne705158:0" - projects: "crwdns705160:0crwdne705160:0" - settings: "crwdns705162:0crwdne705162:0" + form_configuration: "crwdns707268:0crwdne707268:0" + projects: "crwdns707270:0crwdne707270:0" + settings: "crwdns707272:0crwdne707272:0" time_entry: - project: 'crwdns705164:0crwdne705164:0' - work_package: 'crwdns705166:0crwdne705166:0' - work_package_required: 'crwdns705168:0crwdne705168:0' - activity: 'crwdns705170:0crwdne705170:0' - comment: 'crwdns705172:0crwdne705172:0' - duration: 'crwdns705174:0crwdne705174:0' - spent_on: 'crwdns705176:0crwdne705176:0' - hours: 'crwdns705178:0crwdne705178:0' - title: 'crwdns705180:0crwdne705180:0' + project: 'crwdns707274:0crwdne707274:0' + work_package: 'crwdns707276:0crwdne707276:0' + work_package_required: 'crwdns707278:0crwdne707278:0' + activity: 'crwdns707280:0crwdne707280:0' + comment: 'crwdns707282:0crwdne707282:0' + duration: 'crwdns707284:0crwdne707284:0' + spent_on: 'crwdns707286:0crwdne707286:0' + hours: 'crwdns707288:0crwdne707288:0' + title: 'crwdns707290:0crwdne707290:0' two_factor_authentication: - label_two_factor_authentication: 'crwdns705182:0crwdne705182:0' + label_two_factor_authentication: 'crwdns707292:0crwdne707292:0' watchers: - label_loading: crwdns705184:0crwdne705184:0 - label_error_loading: crwdns705186:0crwdne705186:0 - label_search_watchers: crwdns705188:0crwdne705188:0 - label_add: crwdns705190:0crwdne705190:0 - label_discard: crwdns705192:0crwdne705192:0 - typeahead_placeholder: crwdns705194:0crwdne705194:0 + label_loading: crwdns707294:0crwdne707294:0 + label_error_loading: crwdns707296:0crwdne707296:0 + label_search_watchers: crwdns707298:0crwdne707298:0 + label_add: crwdns707300:0crwdne707300:0 + label_discard: crwdns707302:0crwdne707302:0 + typeahead_placeholder: crwdns707304:0crwdne707304:0 relation_labels: - parent: "crwdns705196:0crwdne705196:0" - children: "crwdns705198:0crwdne705198:0" - relates: "crwdns705200:0crwdne705200:0" - duplicates: "crwdns705202:0crwdne705202:0" - duplicated: "crwdns705204:0crwdne705204:0" - blocks: "crwdns705206:0crwdne705206:0" - blocked: "crwdns705208:0crwdne705208:0" - precedes: "crwdns705210:0crwdne705210:0" - follows: "crwdns705212:0crwdne705212:0" - includes: "crwdns705214:0crwdne705214:0" - partof: "crwdns705216:0crwdne705216:0" - requires: "crwdns705218:0crwdne705218:0" - required: "crwdns705220:0crwdne705220:0" - relation_type: "crwdns705222:0crwdne705222:0" + parent: "crwdns707306:0crwdne707306:0" + children: "crwdns707308:0crwdne707308:0" + relates: "crwdns707310:0crwdne707310:0" + duplicates: "crwdns707312:0crwdne707312:0" + duplicated: "crwdns707314:0crwdne707314:0" + blocks: "crwdns707316:0crwdne707316:0" + blocked: "crwdns707318:0crwdne707318:0" + precedes: "crwdns707320:0crwdne707320:0" + follows: "crwdns707322:0crwdne707322:0" + includes: "crwdns707324:0crwdne707324:0" + partof: "crwdns707326:0crwdne707326:0" + requires: "crwdns707328:0crwdne707328:0" + required: "crwdns707330:0crwdne707330:0" + relation_type: "crwdns707332:0crwdne707332:0" relations_hierarchy: - parent_headline: "crwdns705224:0crwdne705224:0" - hierarchy_headline: "crwdns705226:0crwdne705226:0" - children_headline: "crwdns705228:0crwdne705228:0" + parent_headline: "crwdns707334:0crwdne707334:0" + hierarchy_headline: "crwdns707336:0crwdne707336:0" + children_headline: "crwdns707338:0crwdne707338:0" relation_buttons: - set_parent: "crwdns705230:0crwdne705230:0" - change_parent: "crwdns705232:0crwdne705232:0" - remove_parent: "crwdns705234:0crwdne705234:0" - hierarchy_indent: "crwdns705236:0crwdne705236:0" - hierarchy_outdent: "crwdns705238:0crwdne705238:0" - group_by_wp_type: "crwdns705240:0crwdne705240:0" - group_by_relation_type: "crwdns705242:0crwdne705242:0" - add_parent: "crwdns705244:0crwdne705244:0" - add_new_child: "crwdns705246:0crwdne705246:0" - create_new: "crwdns705248:0crwdne705248:0" - add_existing: "crwdns705250:0crwdne705250:0" - add_existing_child: "crwdns705252:0crwdne705252:0" - remove_child: "crwdns705254:0crwdne705254:0" - add_new_relation: "crwdns705256:0crwdne705256:0" - add_existing_relation: "crwdns705258:0crwdne705258:0" - update_description: "crwdns705260:0crwdne705260:0" - toggle_description: "crwdns705262:0crwdne705262:0" - update_relation: "crwdns705264:0crwdne705264:0" - add_follower: "crwdns705266:0crwdne705266:0" - add_predecessor: "crwdns705268:0crwdne705268:0" - remove: "crwdns705270:0crwdne705270:0" - save: "crwdns705272:0crwdne705272:0" - abort: "crwdns705274:0crwdne705274:0" + set_parent: "crwdns707340:0crwdne707340:0" + change_parent: "crwdns707342:0crwdne707342:0" + remove_parent: "crwdns707344:0crwdne707344:0" + hierarchy_indent: "crwdns707346:0crwdne707346:0" + hierarchy_outdent: "crwdns707348:0crwdne707348:0" + group_by_wp_type: "crwdns707350:0crwdne707350:0" + group_by_relation_type: "crwdns707352:0crwdne707352:0" + add_parent: "crwdns707354:0crwdne707354:0" + add_new_child: "crwdns707356:0crwdne707356:0" + create_new: "crwdns707358:0crwdne707358:0" + add_existing: "crwdns707360:0crwdne707360:0" + add_existing_child: "crwdns707362:0crwdne707362:0" + remove_child: "crwdns707364:0crwdne707364:0" + add_new_relation: "crwdns707366:0crwdne707366:0" + add_existing_relation: "crwdns707368:0crwdne707368:0" + update_description: "crwdns707370:0crwdne707370:0" + toggle_description: "crwdns707372:0crwdne707372:0" + update_relation: "crwdns707374:0crwdne707374:0" + add_follower: "crwdns707376:0crwdne707376:0" + add_predecessor: "crwdns707378:0crwdne707378:0" + remove: "crwdns707380:0crwdne707380:0" + save: "crwdns707382:0crwdne707382:0" + abort: "crwdns707384:0crwdne707384:0" relations_autocomplete: - placeholder: "crwdns705276:0crwdne705276:0" - parent_placeholder: "crwdns705278:0crwdne705278:0" + placeholder: "crwdns707386:0crwdne707386:0" + parent_placeholder: "crwdns707388:0crwdne707388:0" autocompleter: - placeholder: "crwdns705280:0crwdne705280:0" - notFoundText: "crwdns705282:0crwdne705282:0" - typeToSearchText: "crwdns705284:0crwdne705284:0" + placeholder: "crwdns707390:0crwdne707390:0" + notFoundText: "crwdns707392:0crwdne707392:0" + typeToSearchText: "crwdns707394:0crwdne707394:0" repositories: - select_tag: 'crwdns705286:0crwdne705286:0' - select_branch: 'crwdns705288:0crwdne705288:0' - field_value_enter_prompt: "crwdns705290:0%{field}crwdne705290:0" - project_menu_details: "crwdns705292:0crwdne705292:0" + select_tag: 'crwdns707396:0crwdne707396:0' + select_branch: 'crwdns707398:0crwdne707398:0' + field_value_enter_prompt: "crwdns707400:0%{field}crwdne707400:0" + project_menu_details: "crwdns707402:0crwdne707402:0" scheduling: - manual: 'crwdns705294:0crwdne705294:0' - automatic: 'crwdns705296:0crwdne705296:0' + manual: 'crwdns707404:0crwdne707404:0' + automatic: 'crwdns707406:0crwdne707406:0' sort: - sorted_asc: 'crwdns705298:0crwdne705298:0' - sorted_dsc: 'crwdns705300:0crwdne705300:0' - sorted_no: 'crwdns705302:0crwdne705302:0' - sorting_disabled: 'crwdns705304:0crwdne705304:0' - activate_asc: 'crwdns705306:0crwdne705306:0' - activate_dsc: 'crwdns705308:0crwdne705308:0' - activate_no: 'crwdns705310:0crwdne705310:0' - text_work_packages_destroy_confirmation: "crwdns705312:0crwdne705312:0" - text_query_destroy_confirmation: "crwdns705314:0crwdne705314:0" - text_attachment_destroy_confirmation: "crwdns705316:0crwdne705316:0" + sorted_asc: 'crwdns707408:0crwdne707408:0' + sorted_dsc: 'crwdns707410:0crwdne707410:0' + sorted_no: 'crwdns707412:0crwdne707412:0' + sorting_disabled: 'crwdns707414:0crwdne707414:0' + activate_asc: 'crwdns707416:0crwdne707416:0' + activate_dsc: 'crwdns707418:0crwdne707418:0' + activate_no: 'crwdns707420:0crwdne707420:0' + text_work_packages_destroy_confirmation: "crwdns707422:0crwdne707422:0" + text_query_destroy_confirmation: "crwdns707424:0crwdne707424:0" + text_attachment_destroy_confirmation: "crwdns707426:0crwdne707426:0" timelines: - quarter_label: 'crwdns705318:0%{quarter_number}crwdne705318:0' - gantt_chart: 'crwdns705320:0crwdne705320:0' + quarter_label: 'crwdns707428:0%{quarter_number}crwdne707428:0' + gantt_chart: 'crwdns707430:0crwdne707430:0' labels: - title: 'crwdns705322:0crwdne705322:0' - bar: 'crwdns705324:0crwdne705324:0' - left: 'crwdns705326:0crwdne705326:0' - right: 'crwdns705328:0crwdne705328:0' - farRight: 'crwdns705330:0crwdne705330:0' - showNone: 'crwdns705332:0crwdne705332:0' + title: 'crwdns707432:0crwdne707432:0' + bar: 'crwdns707434:0crwdne707434:0' + left: 'crwdns707436:0crwdne707436:0' + right: 'crwdns707438:0crwdne707438:0' + farRight: 'crwdns707440:0crwdne707440:0' + showNone: 'crwdns707442:0crwdne707442:0' description: > - crwdns705334:0crwdne705334:0 - button_activate: 'crwdns705336:0crwdne705336:0' - button_deactivate: 'crwdns705338:0crwdne705338:0' - cancel: crwdns705340:0crwdne705340:0 - change: "crwdns705342:0crwdne705342:0" - due_date: "crwdns705344:0crwdne705344:0" - empty: "crwdns705346:0crwdne705346:0" - error: "crwdns705348:0crwdne705348:0" + crwdns707444:0crwdne707444:0 + button_activate: 'crwdns707446:0crwdne707446:0' + button_deactivate: 'crwdns707448:0crwdne707448:0' + cancel: crwdns707450:0crwdne707450:0 + change: "crwdns707452:0crwdne707452:0" + due_date: "crwdns707454:0crwdne707454:0" + empty: "crwdns707456:0crwdne707456:0" + error: "crwdns707458:0crwdne707458:0" errors: - not_implemented: "crwdns705350:0crwdne705350:0" - report_comparison: "crwdns705352:0crwdne705352:0" - report_epicfail: "crwdns705354:0crwdne705354:0" - report_timeout: "crwdns705356:0crwdne705356:0" + not_implemented: "crwdns707460:0crwdne707460:0" + report_comparison: "crwdns707462:0crwdne707462:0" + report_epicfail: "crwdns707464:0crwdne707464:0" + report_timeout: "crwdns707466:0crwdne707466:0" filter: - grouping_other: "crwdns705358:0crwdne705358:0" - noneSelection: "crwdns705360:0crwdne705360:0" - name: "crwdns705362:0crwdne705362:0" - outline: "crwdns705364:0crwdne705364:0" + grouping_other: "crwdns707468:0crwdne707468:0" + noneSelection: "crwdns707470:0crwdne707470:0" + name: "crwdns707472:0crwdne707472:0" + outline: "crwdns707474:0crwdne707474:0" outlines: - aggregation: "crwdns705366:0crwdne705366:0" - level1: "crwdns705368:0crwdne705368:0" - level2: "crwdns705370:0crwdne705370:0" - level3: "crwdns705372:0crwdne705372:0" - level4: "crwdns705374:0crwdne705374:0" - level5: "crwdns705376:0crwdne705376:0" - all: "crwdns705378:0crwdne705378:0" - project_status: "crwdns705380:0crwdne705380:0" - really_close_dialog: "crwdns705382:0crwdne705382:0" - responsible: "crwdns705384:0crwdne705384:0" - save: crwdns705386:0crwdne705386:0 - start_date: "crwdns705388:0crwdne705388:0" - tooManyProjects: "crwdns705390:0%{count}crwdne705390:0" + aggregation: "crwdns707476:0crwdne707476:0" + level1: "crwdns707478:0crwdne707478:0" + level2: "crwdns707480:0crwdne707480:0" + level3: "crwdns707482:0crwdne707482:0" + level4: "crwdns707484:0crwdne707484:0" + level5: "crwdns707486:0crwdne707486:0" + all: "crwdns707488:0crwdne707488:0" + project_status: "crwdns707490:0crwdne707490:0" + really_close_dialog: "crwdns707492:0crwdne707492:0" + responsible: "crwdns707494:0crwdne707494:0" + save: crwdns707496:0crwdne707496:0 + start_date: "crwdns707498:0crwdne707498:0" + tooManyProjects: "crwdns707500:0%{count}crwdne707500:0" selection_mode: - notification: 'crwdns705392:0crwdne705392:0' + notification: 'crwdns707502:0crwdne707502:0' zoom: - in: "crwdns705394:0crwdne705394:0" - out: "crwdns705396:0crwdne705396:0" - auto: "crwdns705398:0crwdne705398:0" - days: "crwdns705400:0crwdne705400:0" - weeks: "crwdns705402:0crwdne705402:0" - months: "crwdns705404:0crwdne705404:0" - quarters: "crwdns705406:0crwdne705406:0" - years: "crwdns705408:0crwdne705408:0" - slider: "crwdns705410:0crwdne705410:0" + in: "crwdns707504:0crwdne707504:0" + out: "crwdns707506:0crwdne707506:0" + auto: "crwdns707508:0crwdne707508:0" + days: "crwdns707510:0crwdne707510:0" + weeks: "crwdns707512:0crwdne707512:0" + months: "crwdns707514:0crwdne707514:0" + quarters: "crwdns707516:0crwdne707516:0" + years: "crwdns707518:0crwdne707518:0" + slider: "crwdns707520:0crwdne707520:0" description: > - crwdns705412:0crwdne705412:0 + crwdns707522:0crwdne707522:0 tl_toolbar: - zooms: "crwdns705414:0crwdne705414:0" - outlines: "crwdns705416:0crwdne705416:0" + zooms: "crwdns707524:0crwdne707524:0" + outlines: "crwdns707526:0crwdne707526:0" upsale: - ee_only: 'crwdns705418:0crwdne705418:0' + ee_only: 'crwdns707528:0crwdne707528:0' wiki_formatting: - strong: "crwdns705420:0crwdne705420:0" - italic: "crwdns705422:0crwdne705422:0" - underline: "crwdns705424:0crwdne705424:0" - deleted: "crwdns705426:0crwdne705426:0" - code: "crwdns705428:0crwdne705428:0" - heading1: "crwdns705430:0crwdne705430:0" - heading2: "crwdns705432:0crwdne705432:0" - heading3: "crwdns705434:0crwdne705434:0" - unordered_list: "crwdns705436:0crwdne705436:0" - ordered_list: "crwdns705438:0crwdne705438:0" - quote: "crwdns705440:0crwdne705440:0" - unquote: "crwdns705442:0crwdne705442:0" - preformatted_text: "crwdns705444:0crwdne705444:0" - wiki_link: "crwdns705446:0crwdne705446:0" - image: "crwdns705448:0crwdne705448:0" + strong: "crwdns707530:0crwdne707530:0" + italic: "crwdns707532:0crwdne707532:0" + underline: "crwdns707534:0crwdne707534:0" + deleted: "crwdns707536:0crwdne707536:0" + code: "crwdns707538:0crwdne707538:0" + heading1: "crwdns707540:0crwdne707540:0" + heading2: "crwdns707542:0crwdne707542:0" + heading3: "crwdns707544:0crwdne707544:0" + unordered_list: "crwdns707546:0crwdne707546:0" + ordered_list: "crwdns707548:0crwdne707548:0" + quote: "crwdns707550:0crwdne707550:0" + unquote: "crwdns707552:0crwdne707552:0" + preformatted_text: "crwdns707554:0crwdne707554:0" + wiki_link: "crwdns707556:0crwdne707556:0" + image: "crwdns707558:0crwdne707558:0" work_packages: bulk_actions: - move: 'crwdns705450:0crwdne705450:0' - edit: 'crwdns705452:0crwdne705452:0' - copy: 'crwdns705454:0crwdne705454:0' - delete: 'crwdns705456:0crwdne705456:0' - button_clear: "crwdns705458:0crwdne705458:0" - comment_added: "crwdns705460:0crwdne705460:0" - comment_send_failed: "crwdns705462:0crwdne705462:0" - comment_updated: "crwdns705464:0crwdne705464:0" - confirm_edit_cancel: "crwdns705466:0crwdne705466:0" - description_filter: "crwdns705468:0crwdne705468:0" - description_enter_text: "crwdns705470:0crwdne705470:0" - description_options_hide: "crwdns705472:0crwdne705472:0" - description_options_show: "crwdns705474:0crwdne705474:0" - edit_attribute: "crwdns705476:0%{attribute}crwdne705476:0" - key_value: "crwdns705478:0%{key}crwdnd705478:0%{value}crwdne705478:0" - label_enable_multi_select: "crwdns705480:0crwdne705480:0" - label_disable_multi_select: "crwdns705482:0crwdne705482:0" - label_filter_add: "crwdns705484:0crwdne705484:0" - label_filter_by_text: "crwdns705486:0crwdne705486:0" - label_options: "crwdns705488:0crwdne705488:0" - label_column_multiselect: "crwdns705490:0crwdne705490:0" - message_error_during_bulk_delete: crwdns705492:0crwdne705492:0 - message_successful_bulk_delete: crwdns705494:0crwdne705494:0 - message_successful_show_in_fullscreen: "crwdns705496:0crwdne705496:0" - message_view_spent_time: "crwdns705498:0crwdne705498:0" - message_work_package_read_only: "crwdns705500:0crwdne705500:0" - message_work_package_status_blocked: "crwdns705502:0crwdne705502:0" - placeholder_filter_by_text: "crwdns705504:0crwdne705504:0" + move: 'crwdns707560:0crwdne707560:0' + edit: 'crwdns707562:0crwdne707562:0' + copy: 'crwdns707564:0crwdne707564:0' + delete: 'crwdns707566:0crwdne707566:0' + button_clear: "crwdns707568:0crwdne707568:0" + comment_added: "crwdns707570:0crwdne707570:0" + comment_send_failed: "crwdns707572:0crwdne707572:0" + comment_updated: "crwdns707574:0crwdne707574:0" + confirm_edit_cancel: "crwdns707576:0crwdne707576:0" + description_filter: "crwdns707578:0crwdne707578:0" + description_enter_text: "crwdns707580:0crwdne707580:0" + description_options_hide: "crwdns707582:0crwdne707582:0" + description_options_show: "crwdns707584:0crwdne707584:0" + edit_attribute: "crwdns707586:0%{attribute}crwdne707586:0" + key_value: "crwdns707588:0%{key}crwdnd707588:0%{value}crwdne707588:0" + label_enable_multi_select: "crwdns707590:0crwdne707590:0" + label_disable_multi_select: "crwdns707592:0crwdne707592:0" + label_filter_add: "crwdns707594:0crwdne707594:0" + label_filter_by_text: "crwdns707596:0crwdne707596:0" + label_options: "crwdns707598:0crwdne707598:0" + label_column_multiselect: "crwdns707600:0crwdne707600:0" + message_error_during_bulk_delete: crwdns707602:0crwdne707602:0 + message_successful_bulk_delete: crwdns707604:0crwdne707604:0 + message_successful_show_in_fullscreen: "crwdns707606:0crwdne707606:0" + message_view_spent_time: "crwdns707608:0crwdne707608:0" + message_work_package_read_only: "crwdns707610:0crwdne707610:0" + message_work_package_status_blocked: "crwdns707612:0crwdne707612:0" + placeholder_filter_by_text: "crwdns707614:0crwdne707614:0" inline_create: - title: 'crwdns705506:0crwdne705506:0' + title: 'crwdns707616:0crwdne707616:0' create: - title: 'crwdns705508:0crwdne705508:0' - header: 'crwdns705510:0%{type}crwdne705510:0' - header_no_type: 'crwdns705512:0crwdne705512:0' - header_with_parent: 'crwdns705514:0%{type}crwdnd705514:0%{parent_type}crwdnd705514:0%{id}crwdne705514:0' - button: 'crwdns705516:0crwdne705516:0' + title: 'crwdns707618:0crwdne707618:0' + header: 'crwdns707620:0%{type}crwdne707620:0' + header_no_type: 'crwdns707622:0crwdne707622:0' + header_with_parent: 'crwdns707624:0%{type}crwdnd707624:0%{parent_type}crwdnd707624:0%{id}crwdne707624:0' + button: 'crwdns707626:0crwdne707626:0' copy: - title: 'crwdns705518:0crwdne705518:0' + title: 'crwdns707628:0crwdne707628:0' hierarchy: - show: "crwdns705520:0crwdne705520:0" - hide: "crwdns705522:0crwdne705522:0" - toggle_button: 'crwdns705524:0crwdne705524:0' - leaf: 'crwdns705526:0%{level}crwdne705526:0' - children_collapsed: 'crwdns705528:0%{level}crwdne705528:0' - children_expanded: 'crwdns705530:0%{level}crwdne705530:0' + show: "crwdns707630:0crwdne707630:0" + hide: "crwdns707632:0crwdne707632:0" + toggle_button: 'crwdns707634:0crwdne707634:0' + leaf: 'crwdns707636:0%{level}crwdne707636:0' + children_collapsed: 'crwdns707638:0%{level}crwdne707638:0' + children_expanded: 'crwdns707640:0%{level}crwdne707640:0' faulty_query: - title: crwdns705532:0crwdne705532:0 - description: crwdns705534:0crwdne705534:0 + title: crwdns707642:0crwdne707642:0 + description: crwdns707644:0crwdne707644:0 no_results: - title: crwdns705536:0crwdne705536:0 - description: crwdns705538:0crwdne705538:0 - limited_results: crwdns705540:0%{count}crwdne705540:0 + title: crwdns707646:0crwdne707646:0 + description: crwdns707648:0crwdne707648:0 + limited_results: crwdns707650:0%{count}crwdne707650:0 property_groups: - details: "crwdns705542:0crwdne705542:0" - people: "crwdns705544:0crwdne705544:0" - estimatesAndTime: "crwdns705546:0crwdne705546:0" - other: "crwdns705548:0crwdne705548:0" + details: "crwdns707652:0crwdne707652:0" + people: "crwdns707654:0crwdne707654:0" + estimatesAndTime: "crwdns707656:0crwdne707656:0" + other: "crwdns707658:0crwdne707658:0" properties: - assignee: "crwdns705550:0crwdne705550:0" - author: "crwdns705552:0crwdne705552:0" - createdAt: "crwdns705554:0crwdne705554:0" - description: "crwdns705556:0crwdne705556:0" - date: "crwdns705558:0crwdne705558:0" - dueDate: "crwdns705560:0crwdne705560:0" - estimatedTime: "crwdns705562:0crwdne705562:0" - spentTime: "crwdns705564:0crwdne705564:0" - category: "crwdns705566:0crwdne705566:0" - percentageDone: "crwdns705568:0crwdne705568:0" - priority: "crwdns705570:0crwdne705570:0" - projectName: "crwdns705572:0crwdne705572:0" - responsible: "crwdns705574:0crwdne705574:0" - startDate: "crwdns705576:0crwdne705576:0" - status: "crwdns705578:0crwdne705578:0" - subject: "crwdns705580:0crwdne705580:0" - subproject: "crwdns705582:0crwdne705582:0" - title: "crwdns705584:0crwdne705584:0" - type: "crwdns705586:0crwdne705586:0" - updatedAt: "crwdns705588:0crwdne705588:0" - versionName: "crwdns705590:0crwdne705590:0" - version: "crwdns705592:0crwdne705592:0" + assignee: "crwdns707660:0crwdne707660:0" + author: "crwdns707662:0crwdne707662:0" + createdAt: "crwdns707664:0crwdne707664:0" + description: "crwdns707666:0crwdne707666:0" + date: "crwdns707668:0crwdne707668:0" + dueDate: "crwdns707670:0crwdne707670:0" + estimatedTime: "crwdns707672:0crwdne707672:0" + spentTime: "crwdns707674:0crwdne707674:0" + category: "crwdns707676:0crwdne707676:0" + percentageDone: "crwdns707678:0crwdne707678:0" + priority: "crwdns707680:0crwdne707680:0" + projectName: "crwdns707682:0crwdne707682:0" + responsible: "crwdns707684:0crwdne707684:0" + startDate: "crwdns707686:0crwdne707686:0" + status: "crwdns707688:0crwdne707688:0" + subject: "crwdns707690:0crwdne707690:0" + subproject: "crwdns707692:0crwdne707692:0" + title: "crwdns707694:0crwdne707694:0" + type: "crwdns707696:0crwdne707696:0" + updatedAt: "crwdns707698:0crwdne707698:0" + versionName: "crwdns707700:0crwdne707700:0" + version: "crwdns707702:0crwdne707702:0" default_queries: - latest_activity: "crwdns705594:0crwdne705594:0" - created_by_me: "crwdns705596:0crwdne705596:0" - assigned_to_me: "crwdns705598:0crwdne705598:0" - recently_created: "crwdns705600:0crwdne705600:0" - all_open: "crwdns705602:0crwdne705602:0" - summary: "crwdns705604:0crwdne705604:0" + latest_activity: "crwdns707704:0crwdne707704:0" + created_by_me: "crwdns707706:0crwdne707706:0" + assigned_to_me: "crwdns707708:0crwdne707708:0" + recently_created: "crwdns707710:0crwdne707710:0" + all_open: "crwdns707712:0crwdne707712:0" + summary: "crwdns707714:0crwdne707714:0" jump_marks: - pagination: "crwdns705606:0crwdne705606:0" - label_pagination: "crwdns705608:0crwdne705608:0" - content: "crwdns705610:0crwdne705610:0" - label_content: "crwdns705612:0crwdne705612:0" + pagination: "crwdns707716:0crwdne707716:0" + label_pagination: "crwdns707718:0crwdne707718:0" + content: "crwdns707720:0crwdne707720:0" + label_content: "crwdns707722:0crwdne707722:0" placeholders: - default: "crwdns705614:0crwdne705614:0" - date: "crwdns705616:0crwdne705616:0" - formattable: "crwdns705618:0%{name}crwdne705618:0" + default: "crwdns707724:0crwdne707724:0" + date: "crwdns707726:0crwdne707726:0" + formattable: "crwdns707728:0%{name}crwdne707728:0" query: - column_names: "crwdns705620:0crwdne705620:0" - group_by: "crwdns705622:0crwdne705622:0" - group: "crwdns705624:0crwdne705624:0" - group_by_disabled_by_hierarchy: "crwdns705626:0crwdne705626:0" - hierarchy_disabled_by_group_by: "crwdns705628:0%{column}crwdne705628:0" - sort_ascending: "crwdns705630:0crwdne705630:0" - sort_descending: "crwdns705632:0crwdne705632:0" - move_column_left: "crwdns705634:0crwdne705634:0" - move_column_right: "crwdns705636:0crwdne705636:0" - hide_column: "crwdns705638:0crwdne705638:0" - insert_columns: "crwdns705640:0crwdne705640:0" - filters: "crwdns705642:0crwdne705642:0" - display_sums: "crwdns705644:0crwdne705644:0" - confirm_edit_cancel: "crwdns705646:0crwdne705646:0" - click_to_edit_query_name: "crwdns705648:0crwdne705648:0" - rename_query_placeholder: "crwdns705650:0crwdne705650:0" - star_text: "crwdns705652:0crwdne705652:0" + column_names: "crwdns707730:0crwdne707730:0" + group_by: "crwdns707732:0crwdne707732:0" + group: "crwdns707734:0crwdne707734:0" + group_by_disabled_by_hierarchy: "crwdns707736:0crwdne707736:0" + hierarchy_disabled_by_group_by: "crwdns707738:0%{column}crwdne707738:0" + sort_ascending: "crwdns707740:0crwdne707740:0" + sort_descending: "crwdns707742:0crwdne707742:0" + move_column_left: "crwdns707744:0crwdne707744:0" + move_column_right: "crwdns707746:0crwdne707746:0" + hide_column: "crwdns707748:0crwdne707748:0" + insert_columns: "crwdns707750:0crwdne707750:0" + filters: "crwdns707752:0crwdne707752:0" + display_sums: "crwdns707754:0crwdne707754:0" + confirm_edit_cancel: "crwdns707756:0crwdne707756:0" + click_to_edit_query_name: "crwdns707758:0crwdne707758:0" + rename_query_placeholder: "crwdns707760:0crwdne707760:0" + star_text: "crwdns707762:0crwdne707762:0" public_text: > - crwdns705654:0crwdne705654:0 + crwdns707764:0crwdne707764:0 errors: - unretrievable_query: "crwdns705656:0crwdne705656:0" - not_found: "crwdns705658:0crwdne705658:0" - duplicate_query_title: "crwdns705660:0crwdne705660:0" - text_no_results: "crwdns705662:0crwdne705662:0" + unretrievable_query: "crwdns707766:0crwdne707766:0" + not_found: "crwdns707768:0crwdne707768:0" + duplicate_query_title: "crwdns707770:0crwdne707770:0" + text_no_results: "crwdns707772:0crwdne707772:0" scheduling: - is_parent: "crwdns705664:0crwdne705664:0" - is_switched_from_manual_to_automatic: "crwdns705666:0crwdne705666:0" + is_parent: "crwdns707774:0crwdne707774:0" + is_switched_from_manual_to_automatic: "crwdns707776:0crwdne707776:0" table: - configure_button: 'crwdns705668:0crwdne705668:0' - summary: "crwdns705670:0crwdne705670:0" - text_inline_edit: "crwdns705672:0crwdne705672:0" - text_sort_hint: "crwdns705674:0crwdne705674:0" - text_select_hint: "crwdns705676:0crwdne705676:0" + configure_button: 'crwdns707778:0crwdne707778:0' + summary: "crwdns707780:0crwdne707780:0" + text_inline_edit: "crwdns707782:0crwdne707782:0" + text_sort_hint: "crwdns707784:0crwdne707784:0" + text_select_hint: "crwdns707786:0crwdne707786:0" table_configuration: - button: 'crwdns705678:0crwdne705678:0' - choose_display_mode: 'crwdns705680:0crwdne705680:0' - modal_title: 'crwdns705682:0crwdne705682:0' - embedded_tab_disabled: "crwdns705684:0crwdne705684:0" - default: "crwdns705686:0crwdne705686:0" - display_settings: 'crwdns705688:0crwdne705688:0' - default_mode: "crwdns705690:0crwdne705690:0" - hierarchy_mode: "crwdns705692:0crwdne705692:0" - hierarchy_hint: "crwdns705694:0crwdne705694:0" - display_sums_hint: "crwdns705696:0crwdne705696:0" - show_timeline_hint: "crwdns705698:0crwdne705698:0" - highlighting: 'crwdns705700:0crwdne705700:0' + button: 'crwdns707788:0crwdne707788:0' + choose_display_mode: 'crwdns707790:0crwdne707790:0' + modal_title: 'crwdns707792:0crwdne707792:0' + embedded_tab_disabled: "crwdns707794:0crwdne707794:0" + default: "crwdns707796:0crwdne707796:0" + display_settings: 'crwdns707798:0crwdne707798:0' + default_mode: "crwdns707800:0crwdne707800:0" + hierarchy_mode: "crwdns707802:0crwdne707802:0" + hierarchy_hint: "crwdns707804:0crwdne707804:0" + display_sums_hint: "crwdns707806:0crwdne707806:0" + show_timeline_hint: "crwdns707808:0crwdne707808:0" + highlighting: 'crwdns707810:0crwdne707810:0' highlighting_mode: - description: "crwdns705702:0crwdne705702:0" - none: "crwdns705704:0crwdne705704:0" - inline: 'crwdns705706:0crwdne705706:0' - inline_all: 'crwdns705708:0crwdne705708:0' - entire_row_by: 'crwdns705710:0crwdne705710:0' - status: 'crwdns705712:0crwdne705712:0' - priority: 'crwdns705714:0crwdne705714:0' - type: 'crwdns705716:0crwdne705716:0' + description: "crwdns707812:0crwdne707812:0" + none: "crwdns707814:0crwdne707814:0" + inline: 'crwdns707816:0crwdne707816:0' + inline_all: 'crwdns707818:0crwdne707818:0' + entire_row_by: 'crwdns707820:0crwdne707820:0' + status: 'crwdns707822:0crwdne707822:0' + priority: 'crwdns707824:0crwdne707824:0' + type: 'crwdns707826:0crwdne707826:0' sorting_mode: - description: 'crwdns705718:0crwdne705718:0' - automatic: 'crwdns705720:0crwdne705720:0' - manually: 'crwdns705722:0crwdne705722:0' - warning: 'crwdns705724:0crwdne705724:0' - columns_help_text: "crwdns705726:0crwdne705726:0" + description: 'crwdns707828:0crwdne707828:0' + automatic: 'crwdns707830:0crwdne707830:0' + manually: 'crwdns707832:0crwdne707832:0' + warning: 'crwdns707834:0crwdne707834:0' + columns_help_text: "crwdns707836:0crwdne707836:0" upsale: - attribute_highlighting: 'crwdns705728:0crwdne705728:0' - relation_columns: 'crwdns705730:0crwdne705730:0' - check_out_link: 'crwdns705732:0crwdne705732:0' + attribute_highlighting: 'crwdns707838:0crwdne707838:0' + relation_columns: 'crwdns707840:0crwdne707840:0' + check_out_link: 'crwdns707842:0crwdne707842:0' relation_filters: - filter_work_packages_by_relation_type: 'crwdns705734:0crwdne705734:0' + filter_work_packages_by_relation_type: 'crwdns707844:0crwdne707844:0' tabs: - overview: crwdns705736:0crwdne705736:0 - activity: crwdns705738:0crwdne705738:0 - relations: crwdns705740:0crwdne705740:0 - watchers: crwdns705742:0crwdne705742:0 - attachments: crwdns705744:0crwdne705744:0 + overview: crwdns707846:0crwdne707846:0 + activity: crwdns707848:0crwdne707848:0 + relations: crwdns707850:0crwdne707850:0 + watchers: crwdns707852:0crwdne707852:0 + attachments: crwdns707854:0crwdne707854:0 time_relative: - days: "crwdns705746:0crwdne705746:0" - weeks: "crwdns705748:0crwdne705748:0" - months: "crwdns705750:0crwdne705750:0" + days: "crwdns707856:0crwdne707856:0" + weeks: "crwdns707858:0crwdne707858:0" + months: "crwdns707860:0crwdne707860:0" toolbar: settings: - configure_view: "crwdns705752:0crwdne705752:0" - columns: "crwdns705754:0crwdne705754:0" - sort_by: "crwdns705756:0crwdne705756:0" - group_by: "crwdns705758:0crwdne705758:0" - display_sums: "crwdns705760:0crwdne705760:0" - display_hierarchy: "crwdns705762:0crwdne705762:0" - hide_hierarchy: "crwdns705764:0crwdne705764:0" - hide_sums: "crwdns705766:0crwdne705766:0" - save: "crwdns705768:0crwdne705768:0" - save_as: "crwdns705770:0crwdne705770:0" - export: "crwdns705772:0crwdne705772:0" - visibility_settings: "crwdns705774:0crwdne705774:0" - page_settings: "crwdns705776:0crwdne705776:0" - delete: "crwdns705778:0crwdne705778:0" - filter: "crwdns705780:0crwdne705780:0" - unselected_title: "crwdns705782:0crwdne705782:0" - search_query_label: "crwdns705784:0crwdne705784:0" - search_query_title: "crwdns705786:0crwdne705786:0" - placeholder_query_title: "crwdns705788:0crwdne705788:0" + configure_view: "crwdns707862:0crwdne707862:0" + columns: "crwdns707864:0crwdne707864:0" + sort_by: "crwdns707866:0crwdne707866:0" + group_by: "crwdns707868:0crwdne707868:0" + display_sums: "crwdns707870:0crwdne707870:0" + display_hierarchy: "crwdns707872:0crwdne707872:0" + hide_hierarchy: "crwdns707874:0crwdne707874:0" + hide_sums: "crwdns707876:0crwdne707876:0" + save: "crwdns707878:0crwdne707878:0" + save_as: "crwdns707880:0crwdne707880:0" + export: "crwdns707882:0crwdne707882:0" + visibility_settings: "crwdns707884:0crwdne707884:0" + page_settings: "crwdns707886:0crwdne707886:0" + delete: "crwdns707888:0crwdne707888:0" + filter: "crwdns707890:0crwdne707890:0" + unselected_title: "crwdns707892:0crwdne707892:0" + search_query_label: "crwdns707894:0crwdne707894:0" + search_query_title: "crwdns707896:0crwdne707896:0" + placeholder_query_title: "crwdns707898:0crwdne707898:0" modals: - label_settings: "crwdns705790:0crwdne705790:0" - label_name: "crwdns705792:0crwdne705792:0" - label_delete_page: "crwdns705794:0crwdne705794:0" - button_apply: "crwdns705796:0crwdne705796:0" - button_save: "crwdns705798:0crwdne705798:0" - button_submit: "crwdns705800:0crwdne705800:0" - button_cancel: "crwdns705802:0crwdne705802:0" + label_settings: "crwdns707900:0crwdne707900:0" + label_name: "crwdns707902:0crwdne707902:0" + label_delete_page: "crwdns707904:0crwdne707904:0" + button_apply: "crwdns707906:0crwdne707906:0" + button_save: "crwdns707908:0crwdne707908:0" + button_submit: "crwdns707910:0crwdne707910:0" + button_cancel: "crwdns707912:0crwdne707912:0" form_submit: - title: 'crwdns705804:0crwdne705804:0' - text: 'crwdns705806:0crwdne705806:0' + title: 'crwdns707914:0crwdne707914:0' + text: 'crwdns707916:0crwdne707916:0' destroy_work_package: - title: "crwdns705808:0%{label}crwdne705808:0" - text: "crwdns705810:0%{label}crwdne705810:0" - has_children: "crwdns705812:0%{childUnits}crwdne705812:0" - confirm_deletion_children: "crwdns705814:0crwdne705814:0" - deletes_children: "crwdns705816:0crwdne705816:0" + title: "crwdns707918:0%{label}crwdne707918:0" + text: "crwdns707920:0%{label}crwdne707920:0" + has_children: "crwdns707922:0%{childUnits}crwdne707922:0" + confirm_deletion_children: "crwdns707924:0crwdne707924:0" + deletes_children: "crwdns707926:0crwdne707926:0" destroy_time_entry: - title: "crwdns705818:0crwdne705818:0" - text: "crwdns705820:0crwdne705820:0" - notice_no_results_to_display: "crwdns705822:0crwdne705822:0" - notice_successful_create: "crwdns705824:0crwdne705824:0" - notice_successful_delete: "crwdns705826:0crwdne705826:0" - notice_successful_update: "crwdns705828:0crwdne705828:0" - notice_job_started: "crwdns705830:0crwdne705830:0" - notice_bad_request: "crwdns705832:0crwdne705832:0" + title: "crwdns707928:0crwdne707928:0" + text: "crwdns707930:0crwdne707930:0" + notice_no_results_to_display: "crwdns707932:0crwdne707932:0" + notice_successful_create: "crwdns707934:0crwdne707934:0" + notice_successful_delete: "crwdns707936:0crwdne707936:0" + notice_successful_update: "crwdns707938:0crwdne707938:0" + notice_job_started: "crwdns707940:0crwdne707940:0" + notice_bad_request: "crwdns707942:0crwdne707942:0" relations: - empty: crwdns705834:0crwdne705834:0 - remove: crwdns705836:0crwdne705836:0 + empty: crwdns707944:0crwdne707944:0 + remove: crwdns707946:0crwdne707946:0 inplace: - button_edit: "crwdns705838:0%{attribute}crwdne705838:0" - button_save: "crwdns705840:0%{attribute}crwdne705840:0" - button_cancel: "crwdns705842:0%{attribute}crwdne705842:0" - button_save_all: "crwdns705844:0crwdne705844:0" - button_cancel_all: "crwdns705846:0crwdne705846:0" - link_formatting_help: "crwdns705848:0crwdne705848:0" - btn_preview_enable: "crwdns705850:0crwdne705850:0" - btn_preview_disable: "crwdns705852:0crwdne705852:0" - null_value_label: "crwdns705854:0crwdne705854:0" - clear_value_label: "crwdns705856:0crwdne705856:0" + button_edit: "crwdns707948:0%{attribute}crwdne707948:0" + button_save: "crwdns707950:0%{attribute}crwdne707950:0" + button_cancel: "crwdns707952:0%{attribute}crwdne707952:0" + button_save_all: "crwdns707954:0crwdne707954:0" + button_cancel_all: "crwdns707956:0crwdne707956:0" + link_formatting_help: "crwdns707958:0crwdne707958:0" + btn_preview_enable: "crwdns707960:0crwdne707960:0" + btn_preview_disable: "crwdns707962:0crwdne707962:0" + null_value_label: "crwdns707964:0crwdne707964:0" + clear_value_label: "crwdns707966:0crwdne707966:0" errors: - required: 'crwdns705858:0%{field}crwdne705858:0' - number: 'crwdns705860:0%{field}crwdne705860:0' - maxlength: 'crwdns705862:0%{field}crwdnd705862:0%{maxLength}crwdne705862:0' - minlength: 'crwdns705864:0%{field}crwdnd705864:0%{minLength}crwdne705864:0' - messages_on_field: 'crwdns705866:0%{messages}crwdne705866:0' - error_could_not_resolve_version_name: "crwdns705868:0crwdne705868:0" - error_could_not_resolve_user_name: "crwdns705870:0crwdne705870:0" - error_attachment_upload: "crwdns705872:0%{error}crwdne705872:0" - error_attachment_upload_permission: "crwdns705874:0crwdne705874:0" + required: 'crwdns707968:0%{field}crwdne707968:0' + number: 'crwdns707970:0%{field}crwdne707970:0' + maxlength: 'crwdns707972:0%{field}crwdnd707972:0%{maxLength}crwdne707972:0' + minlength: 'crwdns707974:0%{field}crwdnd707974:0%{minLength}crwdne707974:0' + messages_on_field: 'crwdns707976:0%{messages}crwdne707976:0' + error_could_not_resolve_version_name: "crwdns707978:0crwdne707978:0" + error_could_not_resolve_user_name: "crwdns707980:0crwdne707980:0" + error_attachment_upload: "crwdns707982:0%{error}crwdne707982:0" + error_attachment_upload_permission: "crwdns707984:0crwdne707984:0" units: workPackage: - one: "crwdns705876:1crwdne705876:1" - other: "crwdns705876:5crwdne705876:5" + one: "crwdns707986:1crwdne707986:1" + other: "crwdns707986:5crwdne707986:5" child_work_packages: - one: "crwdns705878:1crwdne705878:1" - other: "crwdns705878:5%{count}crwdne705878:5" + one: "crwdns707988:1crwdne707988:1" + other: "crwdns707988:5%{count}crwdne707988:5" hour: - one: "crwdns705880:0crwdne705880:0" - other: "crwdns705882:0%{count}crwdne705882:0" - zero: "crwdns705884:0crwdne705884:0" + one: "crwdns707990:0crwdne707990:0" + other: "crwdns707992:0%{count}crwdne707992:0" + zero: "crwdns707994:0crwdne707994:0" zen_mode: - button_activate: 'crwdns705886:0crwdne705886:0' - button_deactivate: 'crwdns705888:0crwdne705888:0' + button_activate: 'crwdns707996:0crwdne707996:0' + button_deactivate: 'crwdns707998:0crwdne707998:0' global_search: - all_projects: "crwdns705890:0crwdne705890:0" - search: "crwdns705892:0crwdne705892:0" - close_search: "crwdns705894:0crwdne705894:0" - current_project: "crwdns705896:0crwdne705896:0" - current_project_and_all_descendants: "crwdns705898:0crwdne705898:0" + all_projects: "crwdns708000:0crwdne708000:0" + search: "crwdns708002:0crwdne708002:0" + close_search: "crwdns708004:0crwdne708004:0" + current_project: "crwdns708006:0crwdne708006:0" + current_project_and_all_descendants: "crwdns708008:0crwdne708008:0" title: - all_projects: "crwdns705900:0crwdne705900:0" - project_and_subprojects: "crwdns705902:0crwdne705902:0" - search_for: "crwdns705904:0crwdne705904:0" + all_projects: "crwdns708010:0crwdne708010:0" + project_and_subprojects: "crwdns708012:0crwdne708012:0" + search_for: "crwdns708014:0crwdne708014:0" views: - card: 'crwdns705906:0crwdne705906:0' - list: 'crwdns705908:0crwdne705908:0' - timeline: 'crwdns705910:0crwdne705910:0' + card: 'crwdns708016:0crwdne708016:0' + list: 'crwdns708018:0crwdne708018:0' + timeline: 'crwdns708020:0crwdne708020:0' invite_user_modal: - back: 'crwdns705912:0crwdne705912:0' - invite: 'crwdns705914:0crwdne705914:0' + back: 'crwdns708022:0crwdne708022:0' + invite: 'crwdns708024:0crwdne708024:0' title: - invite: 'crwdns705916:0crwdne705916:0' - invite_to_project: 'crwdns705918:0%{type}crwdnd705918:0%{project}crwdne705918:0' - User: 'crwdns705920:0crwdne705920:0' - Group: 'crwdns705922:0crwdne705922:0' - PlaceholderUser: 'crwdns705924:0crwdne705924:0' - invite_principal_to_project: 'crwdns705926:0%{principal}crwdnd705926:0%{project}crwdne705926:0' + invite: 'crwdns708026:0crwdne708026:0' + invite_to_project: 'crwdns708028:0%{type}crwdnd708028:0%{project}crwdne708028:0' + User: 'crwdns708030:0crwdne708030:0' + Group: 'crwdns708032:0crwdne708032:0' + PlaceholderUser: 'crwdns708034:0crwdne708034:0' + invite_principal_to_project: 'crwdns708036:0%{principal}crwdnd708036:0%{project}crwdne708036:0' project: - label: 'crwdns705928:0crwdne705928:0' - required: 'crwdns705930:0crwdne705930:0' - lacking_permission: 'crwdns705932:0crwdne705932:0' - lacking_permission_info: 'crwdns705934:0crwdne705934:0' - next_button: 'crwdns705936:0crwdne705936:0' - no_results: 'crwdns705938:0crwdne705938:0' - no_invite_rights: 'crwdns705940:0crwdne705940:0' + label: 'crwdns708038:0crwdne708038:0' + required: 'crwdns708040:0crwdne708040:0' + lacking_permission: 'crwdns708042:0crwdne708042:0' + lacking_permission_info: 'crwdns708044:0crwdne708044:0' + next_button: 'crwdns708046:0crwdne708046:0' + no_results: 'crwdns708048:0crwdne708048:0' + no_invite_rights: 'crwdns708050:0crwdne708050:0' type: - required: 'crwdns705942:0crwdne705942:0' + required: 'crwdns708052:0crwdne708052:0' user: - title: 'crwdns705944:0crwdne705944:0' - description: 'crwdns705946:0crwdne705946:0' + title: 'crwdns708054:0crwdne708054:0' + description: 'crwdns708056:0crwdne708056:0' group: - title: 'crwdns705948:0crwdne705948:0' - description: 'crwdns705950:0crwdne705950:0' + title: 'crwdns708058:0crwdne708058:0' + description: 'crwdns708060:0crwdne708060:0' placeholder: - title: 'crwdns705952:0crwdne705952:0' - title_no_ee: 'crwdns705954:0crwdne705954:0' - description: 'crwdns705956:0crwdne705956:0' - description_no_ee: 'crwdns705958:0%{eeHref}crwdne705958:0' + title: 'crwdns708062:0crwdne708062:0' + title_no_ee: 'crwdns708064:0crwdne708064:0' + description: 'crwdns708066:0crwdne708066:0' + description_no_ee: 'crwdns708068:0%{eeHref}crwdne708068:0' principal: label: - name_or_email: 'crwdns705960:0crwdne705960:0' - name: 'crwdns705962:0crwdne705962:0' - already_member_message: 'crwdns705964:0%{project}crwdne705964:0' - no_results_user: 'crwdns705966:0crwdne705966:0' - invite_user: 'crwdns705968:0crwdne705968:0' - no_results_placeholder: 'crwdns705970:0crwdne705970:0' - create_new_placeholder: 'crwdns705972:0crwdne705972:0' - no_results_group: 'crwdns705974:0crwdne705974:0' - next_button: 'crwdns705976:0crwdne705976:0' + name_or_email: 'crwdns708070:0crwdne708070:0' + name: 'crwdns708072:0crwdne708072:0' + already_member_message: 'crwdns708074:0%{project}crwdne708074:0' + no_results_user: 'crwdns708076:0crwdne708076:0' + invite_user: 'crwdns708078:0crwdne708078:0' + no_results_placeholder: 'crwdns708080:0crwdne708080:0' + create_new_placeholder: 'crwdns708082:0crwdne708082:0' + no_results_group: 'crwdns708084:0crwdne708084:0' + next_button: 'crwdns708086:0crwdne708086:0' required: - user: 'crwdns705978:0crwdne705978:0' - placeholder: 'crwdns705980:0crwdne705980:0' - group: 'crwdns705982:0crwdne705982:0' + user: 'crwdns708088:0crwdne708088:0' + placeholder: 'crwdns708090:0crwdne708090:0' + group: 'crwdns708092:0crwdne708092:0' role: - label: 'crwdns705984:0%{project}crwdne705984:0' - no_roles_found: 'crwdns705986:0crwdne705986:0' - description: 'crwdns705988:0%{principal}crwdne705988:0' - required: 'crwdns705990:0crwdne705990:0' - next_button: 'crwdns705992:0crwdne705992:0' + label: 'crwdns708094:0%{project}crwdne708094:0' + no_roles_found: 'crwdns708096:0crwdne708096:0' + description: 'crwdns708098:0%{principal}crwdne708098:0' + required: 'crwdns708100:0crwdne708100:0' + next_button: 'crwdns708102:0crwdne708102:0' message: - label: 'crwdns705994:0crwdne705994:0' - description: 'crwdns705996:0%{principal}crwdne705996:0' - next_button: 'crwdns705998:0crwdne705998:0' + label: 'crwdns708104:0crwdne708104:0' + description: 'crwdns708106:0%{principal}crwdne708106:0' + next_button: 'crwdns708108:0crwdne708108:0' summary: - next_button: 'crwdns706000:0crwdne706000:0' + next_button: 'crwdns708110:0crwdne708110:0' success: - title: 'crwdns706002:0%{principal}crwdne706002:0' + title: 'crwdns708112:0%{principal}crwdne708112:0' description: - user: 'crwdns706004:0%{project}crwdne706004:0' - placeholder: 'crwdns706006:0%{project}crwdne706006:0' - group: 'crwdns706008:0%{project}crwdne706008:0' - next_button: 'crwdns706010:0crwdne706010:0' + user: 'crwdns708114:0%{project}crwdne708114:0' + placeholder: 'crwdns708116:0%{project}crwdne708116:0' + group: 'crwdns708118:0%{project}crwdne708118:0' + next_button: 'crwdns708120:0crwdne708120:0' forms: - submit_success_message: 'crwdns706012:0crwdne706012:0' - load_error_message: 'crwdns706014:0crwdne706014:0' - validation_error_message: 'crwdns706016:0crwdne706016:0' - advanced_settings: 'crwdns706018:0crwdne706018:0' + submit_success_message: 'crwdns708122:0crwdne708122:0' + load_error_message: 'crwdns708124:0crwdne708124:0' + validation_error_message: 'crwdns708126:0crwdne708126:0' + advanced_settings: 'crwdns708128:0crwdne708128:0' diff --git a/modules/bim/config/locales/crowdin/cs.yml b/modules/bim/config/locales/crowdin/cs.yml index 9a0b0cffc6..2dc57161cd 100644 --- a/modules/bim/config/locales/crowdin/cs.yml +++ b/modules/bim/config/locales/crowdin/cs.yml @@ -14,7 +14,7 @@ cs: exceptions: file_invalid: "Neplatný soubor BCF" x_bcf_issues: - zero: 'No BCF issues' + zero: 'Žádné problémy s BCF' one: 'Jeden problém s BCFF' other: '%{count} Problémy s BCF' bcf_xml: @@ -31,7 +31,7 @@ cs: num_issues_found: '%{x_bcf_issues} jsou obsaženy v BCF-XML souboru, jejich podrobnosti jsou uvedeny níže.' button_prepare: 'Připravit import' button_perform_import: 'Potvrdit import' - button_proceed: 'Proceed with import' + button_proceed: 'Pokračovat s importem' button_back_to_list: 'Zpět na seznam' no_permission_to_add_members: 'Nemáte dostatečná oprávnění, abyste je přidali jako členy do projektu.' contact_project_admin: 'Kontaktujte svého správce projektu, aby je přidal jako členy a začal tento import znovu.' @@ -67,7 +67,7 @@ cs: project_module_bim: "BCF" permission_view_linked_issues: "Zobrazit problémy s BCF" permission_manage_bcf: "Importovat a spravovat problémy s BCF." - permission_delete_bcf: "Delete BCF issues" + permission_delete_bcf: "Odstranit problémy BCF" oauth: scopes: bcf_v2_1: "Full access to the BCF v2.1 API" @@ -77,22 +77,22 @@ cs: bim/ifc_models/ifc_model: "Model IFC" attributes: bim/ifc_models/ifc_model: - ifc_attachment: "IFC file" - is_default: "Default model" - attachments: "IFC file" + ifc_attachment: "IFC soubor" + is_default: "Výchozí model" + attachments: "IFC soubor" errors: models: bim/ifc_models/ifc_model: attributes: base: - ifc_attachment_missing: "No ifc file attached." - invalid_ifc_file: "The provided file is not a valid IFC file." + ifc_attachment_missing: "Žádný soubor ifc není připojen." + invalid_ifc_file: "Zadaný soubor není platný IFC soubor." bim/bcf/viewpoint: bitmaps_not_writable: "bitmaps is not writable as it is not yet implemented." index_not_integer: "index is not an integer." invalid_clipping_planes: "clipping_planes is invalid." - invalid_components: "components is invalid." - invalid_lines: "lines is invalid." + invalid_components: "komponenty jsou neplatné." + invalid_lines: "řádky jsou neplatné." invalid_orthogonal_camera: "orthogonal_camera is invalid." invalid_perspective_camera: "perspective_camera is invalid." mismatching_guid: "The guid in the json_viewpoint does not match the model's guid." @@ -103,21 +103,21 @@ cs: bim/bcf/issue: uuid_already_taken: "Can't import this BCF issue as there already is another with the same GUID. Could it be that this BCF issue had already been imported into a different project?" ifc_models: - label_ifc_models: 'IFC models' - label_new_ifc_model: 'New IFC model' - label_show_defaults: 'Show defaults' - label_default_ifc_models: 'Default IFC models' - label_edit_defaults: 'Edit defaults' + label_ifc_models: 'IFC modely' + label_new_ifc_model: 'Nový model IFC' + label_show_defaults: 'Zobrazit výchozí hodnoty' + label_default_ifc_models: 'Výchozí IFC modely' + label_edit_defaults: 'Upravit výchozí hodnoty' no_defaults_warning: title: 'No IFC model was set as default for this project.' check_1: 'Check that you have uploaded at least one IFC model.' check_2: 'Check that at least one IFC model is set to "Default".' - no_results: "No IFC models have been uploaded in this project." + no_results: "V tomto projektu nebyly nahrány žádné IFC modely." conversion_status: - label: 'Processing?' - pending: 'Pending' - processing: 'Processing' - completed: 'Completed' + label: 'Zpracovávání?' + pending: 'Čeká na vyřízení' + processing: 'Zpracovávání...' + completed: 'Dokončeno' error: 'Chyba' processing_notice: processing_default: 'The following default IFC models are still being processed and are thus not available, yet:' @@ -125,9 +125,9 @@ cs: upload_successful: 'Upload succeeded. It will now get processed and will be ready to use in a couple of minutes.' conversion: missing_commands: "The following IFC converter commands are missing on this system: %{names}" - project_module_ifc_models: "IFC models" - permission_view_ifc_models: "View IFC models" - permission_manage_ifc_models: "Import and manage IFC models" + project_module_ifc_models: "IFC modely" + permission_view_ifc_models: "Zobrazit IFC modely" + permission_manage_ifc_models: "Importovat a spravovat IFC modely" extraction: available: ifc_convert: "IFC conversion pipeline available" diff --git a/modules/bim/config/locales/crowdin/js-cs.yml b/modules/bim/config/locales/crowdin/js-cs.yml index 165f2e00de..4abef370af 100644 --- a/modules/bim/config/locales/crowdin/js-cs.yml +++ b/modules/bim/config/locales/crowdin/js-cs.yml @@ -4,9 +4,9 @@ cs: bcf: label_bcf: 'BCF' import: 'Import' - import_bcf_xml_file: 'Import BCF XML file (BCF version 2.1)' + import_bcf_xml_file: 'Importovat soubor BCF XML (BCF verze 2.1)' export: 'Export' - export_bcf_xml_file: 'Export BCF XML file (BCF version 2.1)' + export_bcf_xml_file: 'Exportovat soubor BCF XML (BCF verze 2.1)' viewpoint: 'Viewpoint' add_viewpoint: 'Add viewpoint' show_viewpoint: 'Show viewpoint' @@ -16,10 +16,10 @@ cs: refresh_work_package: 'Aktualizovat pracovní balíček' ifc_models: empty_warning: "This project does not yet have any IFC models." - use_this_link_to_manage: "Use this link to upload and manage your IFC models" + use_this_link_to_manage: "Pomocí tohoto odkazu můžete nahrát a spravovat vaše IFC modely" keyboard_input_disabled: "Viewer does not have keyboard controls. Click on the viewer to give keyboard control to the viewer." models: - ifc_models: 'IFC models' + ifc_models: 'IFC modely' views: viewer: 'Viewer' split: 'Viewer and table' diff --git a/modules/boards/config/locales/crowdin/js-cs.yml b/modules/boards/config/locales/crowdin/js-cs.yml index 2864197cd5..5ea9097442 100644 --- a/modules/boards/config/locales/crowdin/js-cs.yml +++ b/modules/boards/config/locales/crowdin/js-cs.yml @@ -9,7 +9,7 @@ cs: teaser_text: 'Zlepšete své agilní řízení projektů s tímto flexibilním zobrazením Boardů. Vytvořte tolik desek, kolik chcete pro cokoliv, co chcete sledovat.' upgrade_to_ee_text: 'Board je funkce Enterprise. Proveďte upgrade na placený plán.' upgrade: 'Upgradovat nyní' - personal_demo: 'Contact us for a demo' + personal_demo: 'Kontaktujte nás pro demo' lists: delete: 'Odstranit seznam' version: @@ -24,7 +24,7 @@ cs: locked: 'Uzamčeno' closed: 'Uzavřený' new_board: 'Nová tabule' - add_list: 'Add list to board' + add_list: 'Přidat list na tabuli' add_card: 'Přidat kartu' error_attribute_not_writable: "Pracovní balíček nelze přesunout, do %{attribute} nelze zapisovat." error_loading_the_list: "Chyba při načítání seznamu: %{error_message}" @@ -35,9 +35,9 @@ cs: board_type: text: 'Typ tabule' free: 'basic' - select_board_type: 'Please choose the type of board you need.' + select_board_type: 'Vyberte prosím typ tabule, kterou potřebujete.' free_text: > - Start from scratch with a blank board. Manually add cards and columns to this board. + Začněte od začátku prázdnou tabulí ručním přidáváním karet a sloupců do této tabule. action: 'Akční tabule' action_by_attribute: 'Akční tabule (%{attribute})' action_text: > @@ -56,7 +56,7 @@ cs: assignee: Řešitel status: Stav version: verze - subproject: subproject + subproject: podprojekt subtasks: parent-child board_type_title: assignee: Řešitel @@ -64,7 +64,7 @@ cs: version: Verze subproject: Dílčí projekt subtasks: Parent-Child - basic: Basic + basic: Základní select_attribute: "Atribut akce" add_list_modal: labels: @@ -78,7 +78,7 @@ cs: There is currently no status available.
Either there are none or they have all already been added to the board. assignee: There isn't any member matched with your filter value.
- no_member: This project currently does not have any members that can be added.
+ no_member: Tento projekt v současné době nemá žádné členy, kteří by mohli být přidáni.
add_members: Add a new member to this project to select users again. configuration_modal: title: 'Konfigurovat tuto tabuli' diff --git a/modules/budgets/config/locales/crowdin/cs.yml b/modules/budgets/config/locales/crowdin/cs.yml index dfe97efb1f..e6ccd84326 100644 --- a/modules/budgets/config/locales/crowdin/cs.yml +++ b/modules/budgets/config/locales/crowdin/cs.yml @@ -69,5 +69,5 @@ cs: permission_view_budgets: "Zobrazit rozpočty" project_module_budgets: "Rozpočty" text_budget_reassign_to: "Reassign them to this budget:" - text_budget_delete: "Delete the budget from all work packages" - text_budget_destroy_assigned_wp: "There are %{count} work packages assigned to this budget. What do you want to do?" + text_budget_delete: "Odstranit rozpočet ze všech pracovních balíčků" + text_budget_destroy_assigned_wp: "K tomuto rozpočtu je přiřazeno %{count} pracovních balíčků. Co chcete udělat?" diff --git a/modules/calendar/config/locales/crowdin/js-cs.yml b/modules/calendar/config/locales/crowdin/js-cs.yml index 792f5e7d66..516c1f41a8 100644 --- a/modules/calendar/config/locales/crowdin/js-cs.yml +++ b/modules/calendar/config/locales/crowdin/js-cs.yml @@ -3,5 +3,5 @@ cs: js: calendar: title: 'Kalendář' - too_many: 'There are %{count} work packages in total, but only %{max} can be shown.' + too_many: 'Celkem je zde %{count} pracovních balíčků, ale pouze %{max} lze zobrazit.' unsaved_title: 'Nepojmenovaný kalendář' diff --git a/modules/grids/config/locales/crowdin/cs.yml b/modules/grids/config/locales/crowdin/cs.yml index e534aa35ee..63793c15d9 100644 --- a/modules/grids/config/locales/crowdin/cs.yml +++ b/modules/grids/config/locales/crowdin/cs.yml @@ -1,6 +1,6 @@ cs: grids: - label_widget_in_grid: "Widget contained in Grid %{grid_name}" + label_widget_in_grid: "Widget obsažený v mřížce %{grid_name}" activerecord: attributes: grids/grid: diff --git a/modules/grids/config/locales/crowdin/js-cs.yml b/modules/grids/config/locales/crowdin/js-cs.yml index 696b4cdda7..3686a677e3 100644 --- a/modules/grids/config/locales/crowdin/js-cs.yml +++ b/modules/grids/config/locales/crowdin/js-cs.yml @@ -6,7 +6,7 @@ cs: configure: 'Konfigurovat widget' upsale: text: "Some widgets, like the work package graph widget, are only available in the " - link: 'enterprise edition.' + link: 'Enterprise Edition.' widgets: custom_text: title: 'Vlastní text' @@ -15,32 +15,32 @@ cs: no_results: 'Zatím žádné dokumenty.' members: title: 'Členové' - no_results: 'No visible members.' + no_results: 'Žádní viditelní členové.' view_all_members: 'Zobrazit všechny členy' add: 'Člen' - too_many: 'Displaying %{count} of %{total} members.' + too_many: 'Zobrazuji %{count} z %{total} členů.' news: title: 'Novinky' at: 'v' no_results: 'Žádné novinky.' project_description: title: 'Popis projektu' - no_results: "No description has been written yet. One can be provided in the 'Project settings'." + no_results: "Zatím nebyl napsán žádný popis. Můžete ho uvést v \"Nastavení projektu\"." project_details: title: 'Detaily projektu' - no_results: 'No custom fields have been defined for projects.' + no_results: 'Pro projekty nebyla definována žádná vlastní pole.' project_status: title: 'Stav projektu' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' - not_set: 'Not set' + not_set: 'Nenastaveno' subprojects: title: 'Podprojekty' - no_results: 'No subprojects.' + no_results: 'Žádné podprojekty.' time_entries_current_user: - title: 'My spent time' - displayed_days: 'Days displayed in the widget:' + title: 'Můj strávený čas' + displayed_days: 'Dny zobrazené ve widgetu:' time_entries_list: title: 'Strávený čas (posledních 7 dní)' no_results: 'Žádné záznamy za posledních 7 dní.' @@ -53,11 +53,11 @@ cs: work_packages_watched: title: 'Mé sledované pracovní balíčky' work_packages_table: - title: 'Work packages table' + title: 'Tabulka pracovních balíčků' work_packages_graph: title: 'Work packages graph' work_packages_calendar: title: 'Kalendář' work_packages_overview: - title: 'Work packages overview' - placeholder: 'Click to edit ...' + title: 'Přehled pracovních balíčků' + placeholder: 'Kliekněte pro editaci' diff --git a/modules/job_status/config/locales/crowdin/js-cs.yml b/modules/job_status/config/locales/crowdin/js-cs.yml index 32257ce49d..0d4ea139f4 100644 --- a/modules/job_status/config/locales/crowdin/js-cs.yml +++ b/modules/job_status/config/locales/crowdin/js-cs.yml @@ -1,17 +1,17 @@ cs: js: job_status: - download_starts: 'The download should start automatically.' + download_starts: 'Stahování by mělo začít automaticky.' click_to_download: 'Klikněte zde na stažení' - title: 'Background job status' - redirect: 'You are being redirected.' + title: 'Stav úlohy na pozadí' + redirect: 'Jste přesměrováni.' redirect_link: 'Pro pokračování klikněte prosím zde.' - redirect_errors: 'Due to these errors, you will not be redirected automatically.' - errors: 'Some errors have occurred' + redirect_errors: 'Kvůli těmto chybám nebudete automaticky přesměrováni.' + errors: 'Došlo k několika chybám' generic_messages: - not_found: 'This job could not be found.' - in_queue: 'The job has been queued and will be processed shortly.' - in_process: 'The job is currently being processed.' + not_found: 'Tento úkol se nepodařilo najít.' + in_queue: 'Úkol byl zařazen do fronty a brzy bude zpracován.' + in_process: 'Tento úkol se v současné době zpracovává' error: 'Úlohu se nepodařilo dokončit.' - cancelled: 'The job has been cancelled due to an error.' + cancelled: 'úkol byl zrušen z důvodu chyby.' success: 'Operace proběhla úspěšně.' diff --git a/modules/ldap_groups/config/locales/crowdin/cs.yml b/modules/ldap_groups/config/locales/crowdin/cs.yml index 17dd775ae2..dc4dc41a59 100644 --- a/modules/ldap_groups/config/locales/crowdin/cs.yml +++ b/modules/ldap_groups/config/locales/crowdin/cs.yml @@ -4,24 +4,24 @@ cs: ldap_groups/synchronized_group: dn: 'DN' auth_source: 'Připojení LDAP' - sync_users: 'Sync users' + sync_users: 'Synchronizovat uživatele' ldap_groups/synchronized_filter: - filter_string: 'LDAP filter' + filter_string: 'LDAP filtr' auth_source: 'Připojení LDAP' group_name_attribute: "Group name attribute" - sync_users: 'Sync users' + sync_users: 'Synchronizovat uživatele' base_dn: "Search base DN" models: - ldap_groups/synchronized_group: 'Synchronized LDAP group' - ldap_groups/synchronized_filter: 'LDAP Group synchronization filter' + ldap_groups/synchronized_group: 'Synchronizovaná LDAP skupina' + ldap_groups/synchronized_filter: 'LDAP skupina synchronizační filtr' errors: models: ldap_groups/synchronized_filter: must_contain_base_dn: "Filter base DN must be contained within the LDAP connection's base DN" ldap_groups: - label_menu_item: 'LDAP group synchronization' + label_menu_item: 'Synchronizace skupiny LDAP' label_group_key: 'LDAP group filter key' - label_synchronize: 'Synchronize' + label_synchronize: 'Synchronizovat' settings: name_attribute: 'LDAP groups name attribute' name_attribute_text: 'The LDAP attribute used for naming the OpenProject group when created by a filter' @@ -36,8 +36,8 @@ cs: destroy: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." - removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + removed_groups: "Varování: Toto odstraní následující skupiny z OpenProject a odstraní je ze všech projektů!" + verification: "Zadejte název projektu %{name} pro potvrzení odstranění." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -45,7 +45,7 @@ cs: Enter the search base DN to use for this filter. It needs to be below the base DN of the selected LDAP connection. Leave this option empty to reuse the base DN of the connection synchronized_groups: - add_new: 'Add synchronized LDAP group' + add_new: 'Přidat synchronizovanou LDAP skupinu' destroy: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." @@ -57,10 +57,10 @@ cs:
Groups are synchronized hourly through a cron job. Please see our documentation on this topic. - no_results: 'No synchronized groups found.' - no_members: 'This group has no synchronized members yet.' - plural: 'Synchronized LDAP groups' - singular: 'Synchronized LDAP group' + no_results: 'Nebyly nalezeny žádné synchronizované skupiny.' + no_members: 'Tato skupina zatím nemá žádné synchronizované členy.' + plural: 'Synchronizované LDAP skupiny' + singular: 'Synchronizovaná LDAP skupina' form: auth_source_text: 'Select which LDAP connection should be used.' sync_users_text: > diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml index 4c9b69b500..ccb4986ea7 100644 --- a/modules/meeting/config/locales/crowdin/cs.yml +++ b/modules/meeting/config/locales/crowdin/cs.yml @@ -33,20 +33,20 @@ cs: start_time_hour: "Čas začátku" errors: messages: - invalid_time_format: "is not a valid time. Required format: HH:MM" + invalid_time_format: "není platný čas. Požadovaný formát: HH:MM" models: meeting_agenda: "Agenda" meeting_minutes: "Zápis" description_attended: "zúčastněn" description_invite: "pozván" events: - meeting: Meeting edited - meeting_agenda: Meeting agenda edited - meeting_agenda_closed: Meeting agenda closed - meeting_agenda_opened: Meeting agenda opened - meeting_minutes: Meeting minutes edited - meeting_minutes_created: Meeting minutes created - error_notification_with_errors: "Failed to send notification. The following recipients could not be notified: %{recipients}" + meeting: Schůzka upravena + meeting_agenda: Agenda schůzky upravena + meeting_agenda_closed: Agenda schůzky uzavřena + meeting_agenda_opened: Agenda schůzky otevřena + meeting_minutes: Zápis ze zasedání byl upraven + meeting_minutes_created: Zápisy ze zasedání byly vytvořeny + error_notification_with_errors: "Odeslání oznámení se nezdařilo. Následující příjemci nelze upozornit: %{recipients}" label_meeting: "Schůzka" label_meeting_plural: "Schůzky" label_meeting_new: "Nová schůzka" @@ -58,31 +58,31 @@ cs: label_meeting_agenda_close: "Uzavřete agendu pro vytvoření zápisu" label_meeting_date_time: "Datum/Čas" label_meeting_diff: "Rozdíl" - label_notify: "Send for review" - label_icalendar: "Send iCalendar" + label_notify: "Odeslat k posouzení" + label_icalendar: "Odeslat iCalendar" label_version: "Verze" label_time_zone: "Časové pásmo" label_start_date: "Datum zahájení" meeting: - copied: "Copied from Meeting #%{id}" - notice_successful_notification: "Notification sent successfully" - notice_timezone_missing: No time zone is set and %{zone} is assumed. To choose your time zone, please click here. - permission_create_meetings: "Create meetings" - permission_edit_meetings: "Edit meetings" - permission_delete_meetings: "Delete meetings" - permission_view_meetings: "View meetings" - permission_create_meeting_agendas: "Manage agendas" + copied: "Zkopírováno ze schůzky #%{id}" + notice_successful_notification: "Oznámení bylo úspěšně odesláno" + notice_timezone_missing: Není nastaveno žádné časové pásmo a předpokládá se %{zone} . Chcete-li vybrat časové pásmo, klikněte prosím zde. + permission_create_meetings: "Vytvořit schůzku\n" + permission_edit_meetings: "Upravit schůzku" + permission_delete_meetings: "Smazat schůzku" + permission_view_meetings: "Zobrazit schůzky" + permission_create_meeting_agendas: "Správa agend" permission_close_meeting_agendas: "Close agendas" permission_send_meeting_agendas_notification: "Send review notification for agendas" permission_create_meeting_minutes: "Manage minutes" permission_send_meeting_minutes_notification: "Send review notification for minutes" - permission_meetings_send_invite: "Invite users to meetings" + permission_meetings_send_invite: "Pozvat uživatele na schůzky" permission_send_meeting_agendas_icalendar: "Send meeting agenda as calendar entry" project_module_meetings: "Schůzky" - text_duration_in_hours: "Duration in hours" + text_duration_in_hours: "Doba trvání v hodinách" text_in_hours: "in hours" text_meeting_agenda_for_meeting: 'agenda for the meeting "%{meeting}"' - text_meeting_closing_are_you_sure: "Are you sure you want to close the meeting?" + text_meeting_closing_are_you_sure: "Opravdu chcete tuto schůzku zavřít?" text_meeting_agenda_open_are_you_sure: "This will overwrite all changes in the minutes! Do you want to continue?" text_meeting_minutes_for_meeting: 'minutes for the meeting "%{meeting}"' text_review_meeting_agenda: "%{author} has put the %{link} up for review." diff --git a/modules/openid_connect/config/locales/crowdin/cs.yml b/modules/openid_connect/config/locales/crowdin/cs.yml index 7f6d534d9b..78d528f5e2 100644 --- a/modules/openid_connect/config/locales/crowdin/cs.yml +++ b/modules/openid_connect/config/locales/crowdin/cs.yml @@ -5,15 +5,15 @@ cs: attributes: openid_connect/provider: name: Jméno - display_name: Display name + display_name: Zobrazovaný název identifier: Identifikátor secret: Secret scope: Rozsah openid_connect: - menu_title: OpenID providers + menu_title: Poskytovatelé OpenID providers: - label_add_new: Add a new OpenID provider - label_edit: Edit OpenID provider %{name} - no_results_table: No providers have been defined yet. - plural: OpenID providers - singular: OpenID provider + label_add_new: Přidat nového poskytovatele OpenID + label_edit: Upravit poskytovatele OpenID %{name} + no_results_table: Zatím nebyli definováni žádní poskytovatelé. + plural: Poskytovatelé OpenID + singular: Poskytovatel OpenID diff --git a/modules/overviews/config/locales/crowdin/cs.yml b/modules/overviews/config/locales/crowdin/cs.yml index 6db38b896d..85460336b8 100644 --- a/modules/overviews/config/locales/crowdin/cs.yml +++ b/modules/overviews/config/locales/crowdin/cs.yml @@ -1,4 +1,4 @@ cs: overviews: label: 'Přehled' - permission_manage_overview: 'Manage overview page' + permission_manage_overview: 'Správa přehledové stránky ' diff --git a/modules/pdf_export/config/locales/crowdin/cs.yml b/modules/pdf_export/config/locales/crowdin/cs.yml index b3431c1595..bd39fbbb98 100644 --- a/modules/pdf_export/config/locales/crowdin/cs.yml +++ b/modules/pdf_export/config/locales/crowdin/cs.yml @@ -20,32 +20,32 @@ #See COPYRIGHT and LICENSE files for more details. #++ cs: - error_can_not_delete_export_card_configuration: "This config cannot be deleted." - error_can_not_change_name_of_default_configuration: "The name of the default config cannot be changed." - label_backlogs_export_card_config_select: "Select export card configuration" + error_can_not_delete_export_card_configuration: "Tuto konfiguraci nelze odstranit." + error_can_not_change_name_of_default_configuration: "Název výchozí konfigurace nelze změnit." + label_backlogs_export_card_config_select: "Vyberte konfiguraci karty exportu " label_backlogs_export_card_export: "Export" label_export_card_configuration_new: "New Export Card Config" - label_export_card_configuration: "Export Card Config" - label_export_card_configuration_plural: "Export Card Configs" + label_export_card_configuration: "Konfigurace karty exportu " + label_export_card_configuration_plural: "Konfigurace karet exportu " label_export_card_activate: "Aktivovat" - label_export_card_deactivate: "De-activate" - notice_export_card_configuration_activated: "Config successfully activated" - notice_export_card_configuration_deactivated: "Config successfully de-activated" - error_can_not_activate_export_card_configuration: "This config cannot be activated" - error_can_not_deactivate_export_card_configuration: "This config cannot be de-activated" + label_export_card_deactivate: "De-aktivovat" + notice_export_card_configuration_activated: "Nastavení bylo úspěšně aktivováno" + notice_export_card_configuration_deactivated: "Konfigurace úspěšně deaktivována" + error_can_not_activate_export_card_configuration: "Tuto konfiguraci nelze aktivovat" + error_can_not_deactivate_export_card_configuration: "Tuto konfiguraci nelze deaktivovat" validation_error_required_keys_not_present: "Required key(s) not present:" - validation_error_yaml_is_badly_formed: "has no valid YAML format." + validation_error_yaml_is_badly_formed: "nemá platný formát YAML." validation_error_uknown_key: "Unknown key:" yaml_error: "YAML error:" help_link_rows_format: "Rows Formatting" export_config_per_page: "Na stránku" - export_config_page_size: "Page size" - export_config_orientation: "Orientation" + export_config_page_size: "Velikost stránky" + export_config_orientation: "Orientace" export_config_rows: "Řádky" activerecord: attributes: export_card_configuration: rows: "Řádky" per_page: "Na stránku" - page_size: "Page size" - orientation: "Orientation" + page_size: "Velikost stránky" + orientation: "Orientace" diff --git a/modules/recaptcha/config/locales/crowdin/cs.yml b/modules/recaptcha/config/locales/crowdin/cs.yml index 91cf1438f9..af12924b49 100644 --- a/modules/recaptcha/config/locales/crowdin/cs.yml +++ b/modules/recaptcha/config/locales/crowdin/cs.yml @@ -6,9 +6,9 @@ cs: verify_account: "Ověřte svůj účet" error_captcha: "Váš účet nemohl být ověřen. Kontaktujte prosím administrátora." settings: - website_key: 'Website key' - website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.' - secret_key: 'Secret key' + website_key: 'Klíč webové stránky' + website_key_text: 'Zadejte webový klíč vytvořený v reCAPTCHA admin konzoli pro tuto doménu.' + secret_key: 'Secret Key' secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.' type: 'Použít reCAPTCHA' type_disabled: 'Zakázat reCAPTCHA' diff --git a/modules/reporting/config/locales/crowdin/cs.yml b/modules/reporting/config/locales/crowdin/cs.yml index f8a2b2523b..ea7bc324e6 100644 --- a/modules/reporting/config/locales/crowdin/cs.yml +++ b/modules/reporting/config/locales/crowdin/cs.yml @@ -27,57 +27,57 @@ cs: label_cost_report_plural: "Výkazy nákladů" description_drill_down: "Zobrazit detaily" description_filter_selection: "Výběr" - description_multi_select: "Show multiselect" + description_multi_select: "Zobrazit multiselect" description_remove_filter: "Odstranit filtr" information_restricted_depending_on_permission: "Tato stránka může obsahovat omezené informace v závislosti na vašich oprávněních." label_click_to_edit: "Kliekněte pro editaci." label_closed: "uzavřeno" label_columns: "Sloupce" label_cost_entry_attributes: "Cost entry attributes" - label_days_ago: "during the last days" + label_days_ago: "za poslední dny" label_entry: "Cost entry" - label_filter_text: "Filter text" + label_filter_text: "Filtrovat text" label_filter_value: "Hodnota" label_filters: "Filtrovat" label_greater: ">" label_is_not_project_with_subprojects: "není (včetně podprojektů)" label_is_project_with_subprojects: "je (včetně podprojektů)" - label_work_package_attributes: "Work package attributes" + label_work_package_attributes: "Atributy pracovního balíčku" label_less: "<" - label_money: "Cash value" - label_month_reporting: "Month (Spent)" - label_new_report: "New cost report" + label_money: "Hotovostní hodnota" + label_month_reporting: "Měsíc (stráveno)" + label_new_report: "Nový výkaz nákladů" label_open: "otevřít" label_operator: "Operátor" - label_private_report_plural: "Private cost reports" + label_private_report_plural: "soukromý výkaz nákladů" label_progress_bar_explanation: "Generování sestavy..." - label_public_report_plural: "Public cost reports" - label_really_delete_question: "Are you sure you want to delete this report?" + label_public_report_plural: "veřejný výkaz nákladů" + label_really_delete_question: "Jste si jisti, že chcete odstranit tento report?" label_rows: "Řádky" - label_saving: "Saving ..." - label_spent_on_reporting: "Date (Spent)" - label_sum: "Sum" + label_saving: "Ukládání..." + label_spent_on_reporting: "Datum (stráveno)" + label_sum: "Suma" label_units: "Jednotky" - label_week_reporting: "Week (Spent)" - label_year_reporting: "Year (Spent)" + label_week_reporting: "Týden (stráveno)" + label_year_reporting: "Rok (stráveno)" label_count: "Počet" label_filter: "Filtr" label_filter_add: "Přidat filtr" label_filter_plural: "Filtry" label_group_by: "Seskupit podle" - label_group_by_add: "Add Group-by Attribute" - label_inactive: "«inactive»" + label_group_by_add: "Přidat skupinový atribut" + label_inactive: "„neaktivní“" label_no: "Ne" label_none: "(žádná data)" - label_no_reports: "There are no cost reports yet." + label_no_reports: "Zatím nejsou k dispozici žádné výkazy nákladů." label_report: "Hlášení" label_yes: "Ano" - load_query_question: "Report will have %{size} table cells and may take some time to render. Do you still want to try rendering it?" - permission_save_cost_reports: "Save public cost reports" - permission_save_private_cost_reports: "Save private cost reports" + load_query_question: "Report bude obsahovat %{size} buněk tabulky a může chvíli trvat, než se vykreslí. Chcete to přesto zkusit vykreslit?" + permission_save_cost_reports: "Uložit veřejné výkazy nákladů" + permission_save_private_cost_reports: "Uložit soukromé výkazy nákladů" project_module_reporting_module: "Výkazy nákladů" - text_costs_are_rounded_note: "Displayed values are rounded. All calculations are based on the non-rounded values." - toggle_multiselect: "activate/deactivate multiselect" + text_costs_are_rounded_note: "Zobrazené hodnoty jsou zaokrouhleny. Všechny výpočty jsou založeny na \nnezaokrouhlených hodnotách." + toggle_multiselect: "aktivovat/deaktivovat multiselect" units: "Jednotky" validation_failure_date: "není platné datum" validation_failure_integer: "není platné číslo" diff --git a/modules/team_planner/config/locales/crowdin/cs.yml b/modules/team_planner/config/locales/crowdin/cs.yml index d2bb2d0690..2ae560cfa7 100644 --- a/modules/team_planner/config/locales/crowdin/cs.yml +++ b/modules/team_planner/config/locales/crowdin/cs.yml @@ -1,10 +1,10 @@ #English strings go here cs: - permission_view_team_planner: "View team planner" - permission_manage_team_planner: "Manage team planner" - project_module_team_planner_view: "Team planner" + permission_view_team_planner: "Zobrazit plánovač týmu" + permission_manage_team_planner: "Spravovat plánovač týmu" + project_module_team_planner_view: "Týmový plánovač" team_planner: - label_team_planner: "Team planner" + label_team_planner: "Týmový plánovač" upsale: - title: "Team planner" - description: "Team planner gives you a complete overview what each of team member is working on, one week at a time. Move, stretch and shrink work packages visually, and even drag them from one assignee to another to organise workload. You can even create new work packages or add existing ones, all from within team planner!" + title: "Týmový plánovač" + description: "Plánovač týmu vám poskytne úplný přehled o tom, na čem pracuje každý člen týmu, jeden týden najednou. Vizuálně přesuňte, roztáhněte a zmenšte pracovní balíčky, a dokonce je přetáhněte od jednoho pověřeného pracovníka k druhému. Dokonce můžete vytvořit nové pracovní balíčky nebo přidat existující balíčky, vše z plánovače týmu!" diff --git a/modules/team_planner/config/locales/crowdin/js-cs.yml b/modules/team_planner/config/locales/crowdin/js-cs.yml index e31452fd40..fe3d99d5e2 100644 --- a/modules/team_planner/config/locales/crowdin/js-cs.yml +++ b/modules/team_planner/config/locales/crowdin/js-cs.yml @@ -2,15 +2,15 @@ cs: js: team_planner: - add_existing: 'Add existing' - create_new: 'Create new planner' - title: 'Team planner' - unsaved_title: 'Unnamed team planner' - label_assignee_plural: 'Assignees' + add_existing: 'Přidat existující' + create_new: 'Vytvořit nový plánovače' + title: 'Týmový plánovač' + unsaved_title: 'Nepojmenovaný plánovač týmu' + label_assignee_plural: 'Řešitelé' no_data: 'Add assignees to set up your team planner.' - add_assignee: 'Add assignee' - remove_assignee: 'Remove assignee' - two_weeks: '2 weeks' + add_assignee: 'Přidat řešitele' + remove_assignee: 'Odstranit řešitele' + two_weeks: '2 týdny' quick_add: - empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' - search_placeholder: 'Search...' + empty_state: 'Použijte vyhledávací pole pro nalezení pracovních balíčků a přetáhněte je do plánovače, aby někomu přiřadil a definoval datum začátku a konce.' + search_placeholder: 'Hledat...' diff --git a/modules/two_factor_authentication/config/locales/crowdin/cs.yml b/modules/two_factor_authentication/config/locales/crowdin/cs.yml index 7a512e57a2..39be6356c7 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/cs.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/cs.yml @@ -71,7 +71,7 @@ cs: text_2fa_enabled: 'Při každém přihlášení bude tento uživatel požádán, aby zadal jednorázové heslo z jeho výchozího 2FA zařízení.' text_2fa_disabled: "Uživatel si nenastavil 2FA zařízení prostřednictvím stránky 'Můj účet'" upsale: - title: 'Two-factor authentication' + title: 'Dvoufázové ověření' description: 'Strenghten your internal or external authentication mechanisms with a second factor.' backup_codes: none_found: Pro tento účet neexistují žádné záložní kódy. @@ -87,24 +87,24 @@ cs: keep_safe_warning: 'Either save them in your password manager, or print this page and put in a safe place.' regenerate_warning: 'Warning: If you have created backup codes before, they will be invalidated and will no longer work.' devices: - add_new: 'Add new 2FA device' - register: 'Register device' - confirm_default: 'Confirm changing default device' - confirm_device: 'Confirm device' - confirm_now: 'Not confirmed, click here to activate' - cannot_delete_default: 'Cannot delete default device' - make_default_are_you_sure: 'Are you sure you want to make this 2FA device your default?' - make_default_failed: 'Failed to update the default 2FA device.' - deletion_are_you_sure: 'Are you sure you want to delete this 2FA device?' - registration_complete: '2FA device registration complete!' + add_new: 'Přidat nové 2FA zařízení' + register: 'Registrovat zařízení' + confirm_default: 'Potvrdit změnu výchozího zařízení' + confirm_device: 'Potvrdit zařízení' + confirm_now: 'Nepotvrzeno, klikněte zde pro aktivaci' + cannot_delete_default: 'Nelze odstranit výchozí zařízení' + make_default_are_you_sure: 'Jste si jisti, že chcete nastavit toto 2FA zařízení?' + make_default_failed: 'Nepodařilo se aktualizovat výchozí 2FA zařízení.' + deletion_are_you_sure: 'Jste si jisti, že chcete odstranit toto 2FA zařízení?' + registration_complete: 'Registrace 2FA zařízení dokončena!' registration_failed_token_invalid: '2FA device registration failed, the token was invalid.' registration_failed_update: '2FA device registration failed, the token was valid but the device could not be updated.' - confirm_send_failed: 'Confirmation of your 2FA device failed.' - button_complete_registration: 'Complete 2FA registration' + confirm_send_failed: 'Potvrzení 2FA zařízení se nezdařilo.' + button_complete_registration: 'Dokončete 2FA registraci' text_confirm_to_complete_html: "Please complete the registration of your device %{identifier} by entering a one-time password from your default device." text_confirm_to_change_default_html: "Please confirm changing your default device to %{new_identifier} by entering a one-time password from your current default device." text_identifier: 'You can give the device a custom identifier using this field.' - failed_to_delete: 'Failed to delete 2FA device.' + failed_to_delete: 'Smazání 2FA zařízení se nezdařilo.' is_default_cannot_delete: 'The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting.' not_existing: 'No 2FA device has been registered for your account.' request_2fa: Please enter the code from your %{device_name} to verify your identity. @@ -125,11 +125,11 @@ cs: Register an application authenticator for use with OpenProject using the time-based one-time password authentication standard. Common examples are Google Authenticator or Authy. sms: - title: 'Use your mobile phone' - redacted_identifier: 'Mobile device (%{redacted_number})' + title: 'Použijte svůj mobilní telefon' + redacted_identifier: 'Mobilní zařízení (%{redacted_number})' request_2fa_identifier: '%{redacted_identifier}, we sent you an authentication code via %{delivery_channel}' description: | - Register your mobile phone number for delivery of OpenProject one-time passwords. + Zaregistrujte své mobilní telefonní číslo pro jednorázové doručení OpenProject hesel. sns: delivery_failed: 'SNS delivery failed:' message_bird: @@ -141,35 +141,35 @@ cs: totp: 'Ověřovací aplikace' sns: 'Amazon SNS' resdt: 'SMS Rest API' - mobile_transmit_notification: "A one-time password has been sent to your cell phone." - label_two_factor_authentication: 'Two-factor authentication' + mobile_transmit_notification: "Na váš mobilní telefon bylo odesláno jednorázové heslo." + label_two_factor_authentication: 'Dvoufázové ověření' forced_registration: required_to_add_device: 'An active security policy requires you to enable two-factor authentication. Please use the following form to register a device.' remember: active_session_notice: > Your account has an active remember cookie valid until %{expires_on}. This cookie allows you to log in without a second factor to your account until that time. other_active_session_notice: Your account has an active remember cookie on another session. - label: 'Remember' + label: 'Zapamatovat' clear_cookie: 'Click here to remove all remembered 2FA sessions.' cookie_removed: 'All remembered 2FA sessions have been removed.' dont_ask_again: "Create cookie to remember 2FA authentication on this client for %{days} days." - field_phone: "Cell phone" + field_phone: "Mobilní telefon" field_otp: "Jednorázové heslo" - notice_account_otp_invalid: "Invalid one-time password." - notice_account_otp_expired: "The one-time password you entered expired." + notice_account_otp_invalid: "Neplatné jednorázové heslo." + notice_account_otp_expired: "Zadané jednorázové heslo vypršelo." notice_developer_strategy_otp: "Developer strategy generated the following one-time password: %{token} (Channel: %{channel})" - notice_account_otp_send_failed: "Your one-time password could not be sent." - notice_account_has_no_phone: "No cell phone number is associated with your account." + notice_account_otp_send_failed: "Vaše jednorázové heslo nelze odeslat." + notice_account_has_no_phone: "S vaším účtem není přiřazeno žádné telefonní číslo." label_expiration_hint: "%{date} or on logout" label_actions: 'Akce' label_confirmed: 'Potvrzený' button_continue: 'Pokračovat' - button_make_default: 'Mark as default' - label_unverified_phone: "Cell phone not yet verified" - notice_phone_number_format: "Please enter the number in the following format: +XX XXXXXXXX." - text_otp_not_receive: "Other verification methods" - text_send_otp_again: "Resend one-time password by:" - button_resend_otp_form: "Resend" - button_otp_by_voice: "Voice call" + button_make_default: 'Označit jako výchozí' + label_unverified_phone: "Mobilní telefon ještě nebyl ověřen" + notice_phone_number_format: "Zadejte číslo v následujícím formátu: +XX XXXXXXXX." + text_otp_not_receive: "Jiné metody ověřování" + text_send_otp_again: "Znovu odeslat jednorázové heslo přes:" + button_resend_otp_form: "Znovu odeslat" + button_otp_by_voice: "Hovor" button_otp_by_sms: "SMS" label_otp_channel: "Delivery channel" diff --git a/modules/webhooks/config/locales/crowdin/cs.yml b/modules/webhooks/config/locales/crowdin/cs.yml index e98fe7a86d..a313d41238 100644 --- a/modules/webhooks/config/locales/crowdin/cs.yml +++ b/modules/webhooks/config/locales/crowdin/cs.yml @@ -9,51 +9,51 @@ cs: webhooks/log: event_name: 'Název události' url: 'Payload URL' - response_code: 'Response code' - response_body: 'Response' + response_code: 'Kód odpovědi' + response_body: 'Odpověď' models: - webhooks/outgoing_webhook: "Outgoing webhook" + webhooks/outgoing_webhook: "Odchozí webhook" webhooks: singular: Webhook - plural: Webhooks + plural: Webhooky resources: time_entry: name: "Vstup času" outgoing: - no_results_table: No webhooks have been defined yet. - label_add_new: Add new webhook - label_edit: Edit webhook + no_results_table: Zatím nebyly definovány žádné webhooky + label_add_new: Přidat nový webhook + label_edit: Upravit webhook label_event_resources: Event resources events: created: "Vytvořeno" updated: "Aktualizováno" status: - enabled: 'Webhook is enabled' - disabled: 'Webhook is disabled' + enabled: 'webhook je povolen' + disabled: 'webhook je zakázán' enabled_text: 'The webhook will emit payloads for the defined events below.' - disabled_text: 'Click the edit button to activate the webhook.' + disabled_text: 'Klikněte na tlačítko upravit pro aktivaci webhooku.' deliveries: no_results_table: No deliveries have been made for this webhook. title: 'Recent deliveries' - time: 'Delivery time' + time: 'Dodací doba' form: introduction: > Send a POST request to the payload URL below for any event in the project you're subscribed to. Payload will correspond to the APIv3 representation of the object being modified. - apiv3_doc_url: For more information, visit the API documentation + apiv3_doc_url: Pro více informací navštivte dokumentaci API description: - placeholder: 'Optional description for the webhook.' + placeholder: 'Volitelný popis webhooku.' enabled: description: > When checked, the webhook will trigger on the selected events. Uncheck to disable the webhook. events: - title: 'Enabled events' + title: 'Povolené události' project_ids: title: 'Povolit projekty' description: 'Select for which projects this webhook should be executed for.' - all: 'All projects' - selected: 'Selected projects only' + all: 'Všechny projekty' + selected: 'Pouze vybrané projekty' selected_project_ids: - title: 'Selected projects' + title: 'Vybrané projekty' secret: description: > If set, this secret value is used by OpenProject to sign the webhook payload. diff --git a/modules/xls_export/config/locales/crowdin/cs.yml b/modules/xls_export/config/locales/crowdin/cs.yml index 865493e2ff..885e43ae5f 100644 --- a/modules/xls_export/config/locales/crowdin/cs.yml +++ b/modules/xls_export/config/locales/crowdin/cs.yml @@ -1,13 +1,13 @@ cs: - export_to_excel: "Export XLS" - print_with_description: "Print preview with description" + export_to_excel: "Exportovat XLS" + print_with_description: "Tisk náhledu s popisem" sentence_separator_or: "nebo" - different_formats: Different formats + different_formats: Různé formáty export: format: xls: "XLS" xls_with_descriptions: "XLS s popisem" - xls_with_relations: "XLS with relations" + xls_with_relations: "XLS se vztahy" xls_export: - child_of: child of - parent_of: parent of + child_of: potomek + parent_of: rodič From 522eedd849bd78dc3fa0ce0543ab5fd1e525b567 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sun, 6 Feb 2022 03:07:08 +0000 Subject: [PATCH 090/118] update locales from crowdin [ci skip] --- config/locales/crowdin/cs.yml | 296 ++++++++-------- config/locales/crowdin/js-cs.yml | 322 +++++++++--------- modules/bim/config/locales/crowdin/cs.yml | 46 +-- modules/bim/config/locales/crowdin/js-cs.yml | 8 +- .../boards/config/locales/crowdin/js-cs.yml | 14 +- modules/budgets/config/locales/crowdin/cs.yml | 4 +- modules/grids/config/locales/crowdin/cs.yml | 2 +- .../grids/config/locales/crowdin/js-cs.yml | 24 +- .../config/locales/crowdin/js-cs.yml | 18 +- .../ldap_groups/config/locales/crowdin/cs.yml | 28 +- modules/meeting/config/locales/crowdin/cs.yml | 42 +-- .../config/locales/crowdin/cs.yml | 14 +- .../overviews/config/locales/crowdin/cs.yml | 2 +- .../pdf_export/config/locales/crowdin/cs.yml | 30 +- .../recaptcha/config/locales/crowdin/cs.yml | 6 +- .../reporting/config/locales/crowdin/cs.yml | 46 +-- .../config/locales/crowdin/cs.yml | 64 ++-- .../webhooks/config/locales/crowdin/cs.yml | 34 +- .../xls_export/config/locales/crowdin/cs.yml | 12 +- 19 files changed, 506 insertions(+), 506 deletions(-) diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index ca8b3f1b6a..00220bc6a1 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -63,16 +63,16 @@ cs: main-menu-bg-color: "Barva pozadí levého menu." theme_warning: Změna motivu přepíše váš vlastní styl. Vzhled pak bude ztracen. Jste si jisti, že chcete pokračovat? enterprise: - upgrade_to_ee: "Upgrade to the Enterprise Edition" + upgrade_to_ee: "Upgradovat na Enterprise Edition" add_token: "Nahrát podpůrný token Enterprise Edition" replace_token: "Nahradit aktuální podpůrný token" - order: "Order Enterprise on-premises Edition" + order: "Upgradovat na Enterprise Edition on premises" paste: "Vložte svůj podpůrný token Enterprise Edition" required_for_feature: "Tato funkce je dostupná pouze s aktivním podpůrným tokenem pro Enterprise Edition." enterprise_link: "Pro více informací klikněte zde." - start_trial: 'Start free trial' - book_now: 'Book now' - get_quote: 'Get a quote' + start_trial: 'Začít zkušební verzi' + book_now: 'Rezervujte nyní' + get_quote: 'Získat cenovou nabídku' announcements: show_until: Ukázat až do is_active: aktuálně zobrazené @@ -91,7 +91,7 @@ cs: background_jobs: status: error_requeue: "Job experienced an error but is retrying. The error was: %{message}" - cancelled_due_to: "Job was cancelled due to error: %{message}" + cancelled_due_to: "Úkol byl zrušen z důvodu chyby: %{message}" ldap_auth_sources: technical_warning_html: | Tento LDAP formulář vyžaduje technické znalosti nastavení LDAP / Active Directory. @@ -170,7 +170,7 @@ cs: enabled_in_project: 'Povoleno v projektu' contained_in_type: 'Obsahuje typ' confirm_destroy_option: "Smazáním možnosti smažete všechny výskyty (např. v pracovních balíčcích). Opravdu ji chcete odstranit?" - reorder_alphabetical: "Reorder values alphabetically" + reorder_alphabetical: "Změnit pořadí abecedně" reorder_confirmation: "Warning: The current order of available values will be lost. Continue?" tab: no_results_title_text: V současné době nejsou žádná vlastní pole. @@ -203,8 +203,8 @@ cs: completed: "Smazání projektu %{name} dokončeno" completed_text: "Požadavek na smazání projektu '%{name}' byl dokončen." index: - open_as_gantt: 'Open as Gantt view' - open_as_gantt_title: "Use this button to generate a Gantt view that filters work packages for the projects visible on this page." + open_as_gantt: 'Otevřít jako zobrazení Gantt' + open_as_gantt_title: "Použijte toto tlačítko pro generování Ganttova zobrazení, které filtruje pracovní balíčky pro projekty viditelné na této stránce." open_as_gantt_title_admin: "You can modify the view settings (such as selected work package types) in the administration under project settings." no_results_title_text: V současné době nejsou žádné projekty no_results_content_text: Vytvořit nový projekt @@ -231,7 +231,7 @@ cs: index: no_results_title_text: Momentálně nejsou žádní členové součástí tohoto projektu. no_results_content_text: Přidání člena do projektu - invite_by_mail: "Send invite to %{mail}" + invite_by_mail: "Poslat pozvánku do %{mail}" my: access_token: failed_to_reset_token: "Nepodařilo se obnovit přístupový token: %{error}" @@ -244,23 +244,23 @@ cs: no_results_content_text: Přidat příspěvek users: groups: - member_in_these_groups: 'This user is currently a member of the following groups:' - no_results_title_text: This user is currently not a member in any group. + member_in_these_groups: 'Tento uživatel je v současné době členem následujících skupin:' + no_results_title_text: Tento uživatel není v současné době členem žádné skupiny. memberships: no_results_title_text: Tento uživatel není v současné době členem projektu. placeholder_users: right_to_manage_members_missing: > You are not allowed to delete the placeholder user. You do not have the right to manage members for all projects that the placeholder user is a member of. - delete_tooltip: "Delete placeholder user" + delete_tooltip: "Odstranit placeholder uživatele" deletion_info: - heading: "Delete placeholder user %{name}" + heading: "Odstranit zástupného uživatele %{name}" data_consequences: > All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) will be reassigned to an account called "Deleted user". As the data of every deleted account is reassigned to this account it will not be possible to distinguish the data the user created from the data of another deleted account. - irreversible: "This action is irreversible" + irreversible: "Tato akce je nevratná" confirmation: "Enter the placeholder user name %{name} to confirm the deletion." upsale: - title: Assign work to people that are not members of the project. + title: Přiřadit práci lidem, kteří nejsou členy projektu. description: > There are multiple scenarios where you want to assign work to people that are not member of your project. It could simply be that you still need to hire the correct person for the job. Or you just don't want to give that person access to the project's information but still want track tasks assigned to that person. prioritiies: @@ -304,7 +304,7 @@ cs: overview: no_results_title_text: Momentálně zde nejsou žádné pracovní balíčky přiřazené k této verzi. wiki: - page_not_editable_index: The requested page does not (yet) exist. You have been redirected to the index of all wiki pages. + page_not_editable_index: Požadovaná stránka ještě neexistuje. Byli jste přesměrováni na index všech wiki stránek. no_results_title_text: V současné době neexistují žádné Wiki stránky. index: no_results_content_text: Přidat novou wiki stránku @@ -319,10 +319,10 @@ cs: other: '%{count} potomků pracovního balíčku' bulk: could_not_be_saved: "Následující pracovní balíčky nelze uložit:" - none_could_be_saved: "None of the %{total} work packages could be updated." - x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." + none_could_be_saved: "Žádný z %{total} pracovních balíčků nemohl být aktualizován." + x_out_of_y_could_be_saved: "%{failing} z pracovních balíčků %{total} nemohl být aktualizován, zatímco %{success} může." selected_because_descendants: "While %{selected} work packages where selected, in total %{total} work packages are affected which includes descendants." - descendant: "descendant of selected" + descendant: "potomek vybraného" move: no_common_statuses_exists: "Pro všechny vybrané pracovní balíčky není k dispozici žádný stav. Jejich stav nelze změnit." unsupported_for_multiple_projects: 'Hromadný přesun/kopírování není podporováno pro pracovní balíčky z více projektů' @@ -394,7 +394,7 @@ cs: attr_mail: "Email" base_dn: "Base DN" host: "Hostitel" - onthefly: "Automatic user creation" + onthefly: "Automatické vytváření uživatele" port: "Port" changeset: repository: "Repozitář" @@ -447,10 +447,10 @@ cs: types: "Typy" versions: "Verze" work_packages: "Pracovní balíčky" - templated: 'Template project' + templated: 'Projektová šablona' projects/status: code: 'Stav' - explanation: 'Status description' + explanation: 'Popis stavu' codes: on_track: 'On track' at_risk: 'At risk' @@ -519,7 +519,7 @@ cs: parent_work_package: "Rodič" priority: "Priorita" progress: "Průběh (%)" - schedule_manually: "Manual scheduling" + schedule_manually: "Manuální plánování" spent_hours: "Strávený čas" spent_time: "Strávený čas" subproject: "Dílčí projekt" @@ -546,12 +546,12 @@ cs: cant_link_a_work_package_with_a_descendant: "Pracovní balíček nemůže být propojen s jedním z jeho podúkolů." circular_dependency: "Tento vztah by vytvořil kruhovou závislost." confirmation: "neshoduje se s %{attribute}." - could_not_be_copied: "%{dependency} could not be (fully) copied." + could_not_be_copied: "%{dependency} nemůže být (zcela) zkopírován." does_not_exist: "neexistuje." - error_enterprise_only: "is only available in the OpenProject Enterprise Edition" - error_unauthorized: "may not be accessed." + error_enterprise_only: "je k dispozici pouze v OpenProject Enterprise Edition" + error_unauthorized: "není přístupný." error_readonly: "was attempted to be written but is not writable." - email: "is not a valid email address." + email: "není platná e-mailová adresa" empty: "nemůže být prázdné." even: "musí být sudé." exclusion: "vyhrazeno." @@ -568,8 +568,8 @@ cs: invalid_url: 'není platná adresa URL.' invalid_url_scheme: 'není podporovaný protokol (povoleny: %{allowed_schemes}).' less_than_or_equal_to: "musí být menší než nebo rovno %{count}." - not_available: "is not available due to a system configuration." - not_deletable: "cannot be deleted." + not_available: "není k dispozici kvůli konfiguraci systému." + not_deletable: "nelze odstranit" not_current_user: "není aktuální uživatel." not_a_date: "není platné datum." not_a_datetime: "není platný čas." @@ -584,7 +584,7 @@ cs: taken: "je již použito." too_long: "je příliš dlouhý (maximum je %{count} znaků)." too_short: "je příliš krátký (minimum je %{count} znaků)." - type_mismatch: "is not of type '%{type}'" + type_mismatch: "není typu '%{type}'" type_mismatch_nested: "is not of type '%{type}' at path '%{path}'" unchangeable: "nelze změnit." unknown_property: "is not a known property." @@ -632,7 +632,7 @@ cs: outside: 'je mimo mřížku.' end_before_start: 'konečná hodnota musí být větší než počáteční hodnota.' notifications: - at_least_one_channel: 'At least one channel for sending notifications needs to be specified.' + at_least_one_channel: 'Alespoň jeden kanál pro odesílání oznámení musí být specifikován.' attributes: read_ian: read_on_creation: 'cannot be set to true on notification creation.' @@ -644,7 +644,7 @@ cs: no_notification_reason: 'cannot be blank as mail digest is chosen as a channel.' notification_settings: only_one_global_setting: 'There must only be one global notification setting.' - email_alerts_global: 'The email notification settings can only be set globally.' + email_alerts_global: 'Nastavení e-mailových oznámení lze nastavit pouze globálně.' format: "%{message}" parse_schema_filter_params_service: attributes: @@ -653,7 +653,7 @@ cs: invalid_values: "Hodnota není platná." id_filter_required: "Je vyžadován filtr 'id'." project: - archived_ancestor: 'The project has an archived ancestor.' + archived_ancestor: 'Projekt má archivovaného předka.' foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.' attributes: types: @@ -683,7 +683,7 @@ cs: queries/filters/base: attributes: values: - inclusion: "filter has invalid values." + inclusion: "filtr má neplatné hodnoty." format: "%{message}" relation: typed_dag: @@ -712,13 +712,13 @@ cs: user_preference: attributes: pause_reminders: - invalid_range: "can only be a valid date range." + invalid_range: "může být pouze platný časový rozsah." daily_reminders: full_hour: "can only be configured to be delivered at a full hour." wiki_page: attributes: slug: - undeducible: "cannot be deduced from the title '%{title}'." + undeducible: "nelze odvodit z názvu '%{title}'." work_package: is_not_a_valid_target_for_time_entries: "Pracovní balíček #%{id} není platný cíl pro přeřazení časových záznamů." attributes: @@ -726,7 +726,7 @@ cs: not_start_date: "není v počátečním datu, i když je to nutné pro milníky." parent: cannot_be_milestone: "nemůže být milník." - cannot_be_self_assigned: "cannot be assigned to itself." + cannot_be_self_assigned: "nemůže být přiřazeno k sobě." cannot_be_in_another_project: "nemůže být v jiném projektu." not_a_valid_parent: "je neplatné." start_date: @@ -743,7 +743,7 @@ cs: does_not_exist: "Zadaná kategorie neexistuje." estimated_hours: only_values_greater_or_equal_zeroes_allowed: "musí být větší nebo rovno 0." - readonly_status: 'The work package is in a readonly status so its attributes cannot be changed.' + readonly_status: 'Pracovní balíček je ve stavu jen pro čtení, takže jeho atributy nelze změnit.' type: attributes: attribute_groups: @@ -755,9 +755,9 @@ cs: user: attributes: base: - user_limit_reached: "User limit reached. No more accounts can be created on the current plan." + user_limit_reached: "Byl dosažen limit uživatelů. V aktuálním plánu nelze vytvořit žádné další účty." password_confirmation: - confirmation: "Password confirmation does not match password." + confirmation: "Hesla se neshodují!" format: "%{message}" password: weak: "Musí obsahovat znaky z následujících tříd (alespoň %{min_count} z %{all_count}): %{rules}." @@ -813,7 +813,7 @@ cs: few: "Notifications" many: "Notifications" other: "Notifications" - placeholder_user: "Placeholder user" + placeholder_user: "placeholder uživatel" project: "Projekt" query: "Vlastní dotaz" role: @@ -855,9 +855,9 @@ cs: date: "Datum" default_columns: "Výchozí sloupce" description: "Popis" - derived_due_date: "Derived finish date" - derived_estimated_hours: "Derived estimated time" - derived_start_date: "Derived start date" + derived_due_date: "Derivované Datum ukončení " + derived_estimated_hours: "Derivované předpokládaný čas" + derived_start_date: "Derivované Datum zahájení " display_sums: "Zobrazit součty" due_date: "Datum dokončení" estimated_hours: "Odhadovaný čas" @@ -895,16 +895,16 @@ cs: version: "Verze" work_package: "Pracovní balíček" backup: - label_backup_token: "Backup token" - label_create_token: "Create backup token" - label_delete_token: "Delete backup token" - label_reset_token: "Reset backup token" - label_token_users: "The following users have active backup tokens" + label_backup_token: "Záložní token" + label_create_token: "Vytvořit záložní token" + label_delete_token: "Odstranit záložní token" + label_reset_token: "Resetovat záložní token" + label_token_users: "Následující uživatelé mají aktivní tokeny pro zálohy" reset_token: action_create: Vytvořit action_reset: Obnovit - heading_reset: "Reset backup token" - heading_create: "Create backup token" + heading_reset: "Resetovat záložní token" + heading_create: "Vytvořit záložní token" implications: > Enabling backups will allow any user with the required permissions and this backup token to download a backup containing all data of this OpenProject installation. This includes the data of all other users. info: > @@ -912,15 +912,15 @@ cs: verification: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset - verification_word_create: create + verification_word_create: vytvořit warning: > When you create a new token you will only be allowed to request a backup after 24 hours. This is a safety measure. After that you can request a backup any time using that token. - text_token_deleted: Backup token deleted. Backups are now disabled. + text_token_deleted: Záložní token odstraněn. Zálohy jsou nyní zakázány. error: - invalid_token: Invalid or missing backup token - token_cooldown: The backup token will be valid in %{hours} hours. + invalid_token: Neplatný nebo chybí záložní token + token_cooldown: Záložní token bude platný za %{hours} hodin. backup_pending: There is already a backup pending. - limit_reached: You can only do %{limit} backups per day. + limit_reached: Můžete provádět pouze %{limit} záloh denně. button_add: "Přidat" button_add_comment: "Přidat komentář" button_add_member: Přidat člena @@ -1000,7 +1000,7 @@ cs: text_update_consent_time: Zaškrtněte toto políčko k vynucení nového souhlasu uživatele. Povolte v případě, že jste změnili právní aspekt souhlasu uvedeného výše. update_consent_last_time: "Poslední aktualizace souhlasu: %{update_time}" copy_project: - title: 'Copy project "%{source_project_name}"' + title: 'Kopírovat projekt "%{source_project_name}"' started: "Začalo kopírovat projekt \"%{source_project_name}\" do \"%{target_project_name}\". Budete informováni e-mailem, jakmile bude k dispozici \"%{target_project_name}\"." failed: "Nebylo možné zkopírovat projekt \"%{source_project_name}\"" failed_internal: "Kopírování se nezdařilo kvůli interní chybě." @@ -1008,9 +1008,9 @@ cs: errors: "Chyba" project_custom_fields: 'Vlastní pole projektu' x_objects_of_this_type: - zero: 'No objects of this type' - one: 'One object of this type' - other: '%{count} objects of this type' + zero: 'Žádné objekty tohoto typu' + one: 'Jeden objekt tohoto typu' + other: '%{count} objektů tohoto typu' text: failed: "Nebylo možné zkopírovat projekt \"%{source_project_name}\" do \"%{target_project_name}\"." succeeded: "Projekt \"%{source_project_name}\" zkopírován do \"%{target_project_name}\"." @@ -1231,7 +1231,7 @@ cs: add_groups: "Přidat nové skupiny atributů" rename_groups: "Přejmenovat skupiny atributů" project_filters: - description_html: "Filtering and sorting on custom fields is an enterprise edition feature." + description_html: "Filtrování a třídění vlastních polí je funkcí enterprise edice." enumeration_activities: "Time tracking activities" enumeration_work_package_priorities: "Priority pracovního balíčku" enumeration_reported_project_statuses: "Nahlášený stav projektu" @@ -1253,7 +1253,7 @@ cs: error_cookie_missing: 'OpenProject cookie chybí. Ujistěte se, že jsou soubory cookie povoleny, protože aplikace nebude správně fungovat.' error_custom_option_not_found: "Nastavení neexistuje." error_enterprise_activation_user_limit: "Váš účet nebyl aktivován (dosažen limit počtu uživatelů). Prosím obraťte se na správce pro získání přístupu." - error_enterprise_token_invalid_domain: "The Enterprise Edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." + error_enterprise_token_invalid_domain: "Enterprise Edition není aktivní. Doména Tvoje Enterprise tokenu (%{actual}) neodpovídá hostiteli systému (%{expected})." error_failed_to_delete_entry: 'Nepodařilo se odstranit tento záznam.' error_in_dependent: "Chyba při pokusu o změnu závislého objektu: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" error_invalid_selected_value: "Neplatná vybraná hodnota." @@ -1298,9 +1298,9 @@ cs: work_package_edit: 'Pracovní balíček upraven' work_package_note: 'Poznámka k pracovnímu balíčku přidána' export: - your_work_packages_export: "Your work packages export" - succeeded: "The export has completed successfully." - failed: "The export has failed: %{message}" + your_work_packages_export: "Export pracovních balíčků" + succeeded: "Export úspěšně dokončen." + failed: "Export selhal: %{message}" format: atom: "Atom" csv: "CSV" @@ -1355,19 +1355,19 @@ cs: image_conversion: imagemagick: 'Imagemagick' journals: - changes_retracted: "The changes were retracted." + changes_retracted: "Změny byly staženy." links: configuration_guide: 'Konfigurační manuál' - get_in_touch: "You have questions? Get in touch with us." + get_in_touch: "Máte otázky? Spojte se s námi." instructions_after_registration: "Můžete se přihlásit hned poté, co bude váš účet aktivovaný kliknutím na %{signin}." instructions_after_logout: "Můžete se znovu přihlásit kliknutím na tlačítko %{signin}." instructions_after_error: "Zkuste se znovu přihlásit kliknutím na %{signin}. Pokud chyba přetrvává, požádejte správce o pomoc." menus: admin: mail_notification: "E-mailová upozornění" - incoming_outgoing: "Incoming & Outgoing" + incoming_outgoing: "Příchozí a odchozí" quick_add: - label: "Open quick add menu" + label: "Otevřít nabídku rychlého přidání" my_account: access_tokens: no_results: @@ -1379,15 +1379,15 @@ cs: expiration: "Vyprší" indefinite_expiration: "Nikdy" notifications: - send_notifications: "Send notifications for this action" + send_notifications: "Odeslat oznámení pro tuto akci" work_packages: subject: - created: "The work package was created." - assigned: "You have been assigned to %{work_package}" - subscribed: "You subscribed to %{work_package}" - mentioned: "You have been mentioned in %{work_package}" - responsible: "You have become accountable for %{work_package}" - watched: "You are watching %{work_package}" + created: "Pracovní balíček byl vytvořen." + assigned: "Byli jste přiřazeni k %{work_package}" + subscribed: "Přihlásili jste k odběru %{work_package}" + mentioned: "Byli jste zmíněni v %{work_package}" + responsible: "Stali jste se odpovědnými za %{work_package}" + watched: "Sledujete %{work_package}" update_info_mail: body: > We are excited to announce the release of OpenProject 12.0. It's a major release that will hopefully significantly improve the way you use OpenProject. @@ -1402,9 +1402,9 @@ cs: Sincerely, The OpenProject team - body_header: 'Version 12.0 with Notification Center' + body_header: 'Verze 12.0 s oznamovacím centrem' body_subheader: 'Novinky' - subject: 'Important changes to notifications with the release of 12.0' + subject: 'Důležité změny oznámení s vydáním 12.0' label_accessibility: "Přístupnost" label_account: "Účet" label_active: "Aktivní" @@ -1454,7 +1454,7 @@ cs: label_available_project_versions: 'Dostupné verze' label_available_project_repositories: 'Dostupné repozitáře' label_api_documentation: "API dokumentace" - label_backup: "Backup" + label_backup: "Záloha" label_between: "mezi" label_blocked_by: "zablokoval" label_blocks: "bloky" @@ -1490,7 +1490,7 @@ cs: label_check_uncheck_all_in_column: "Zaškrtnout/Odznačit vše ve sloupci" label_check_uncheck_all_in_row: "Zaškrtnout/Odznačit vše v řádku" label_child_element: "Podřazený prvek" - label_chronological_order: "Oldest first" + label_chronological_order: "Od nejstarších" label_close_versions: "Zavřít dokončené verze" label_closed_work_packages: "uzavřeno" label_collapse: "Sbalit" @@ -1520,7 +1520,7 @@ cs: label_custom_field_plural: "Vlastní pole" label_custom_field_default_type: "Prázdný typ" label_custom_style: "Design" - label_database_version: "PostgreSQL version" + label_database_version: "Verze PostgreSQL" label_date: "Datum" label_date_and_time: "Datum a čas" label_date_from: "Od" @@ -1657,8 +1657,8 @@ cs: label_member_new: "Nový člen" label_member_all_admin: "(Všechny role z důvodu stavu správce)" label_member_plural: "Členové" - lable_membership_added: 'Member added' - lable_membership_updated: 'Member updated' + lable_membership_added: 'Člen přidán' + lable_membership_updated: 'Člen aktualizován' label_menu_item_name: "Název položky menu" label_message: "Zpráva" label_message_last: "Poslední zpráva" @@ -1730,9 +1730,9 @@ cs: label_permissions: "Práva" label_permissions_report: "Přehled oprávnění" label_personalize_page: "Přizpůsobit tuto stránku" - label_placeholder_user: "Placeholder user" - label_placeholder_user_new: "New placeholder user" - label_placeholder_user_plural: "Placeholder users" + label_placeholder_user: "placeholder uživatel" + label_placeholder_user_new: "Nový placeholder uživatel" + label_placeholder_user_plural: "placeholder uživatelé" label_planning: "Plánování" label_please_login: "Přihlaste se prosím" label_plugins: "Pluginy" @@ -1793,7 +1793,7 @@ cs: label_required: 'vyžadováno' label_requires: 'vyžaduje' label_result_plural: "Výsledky" - label_reverse_chronological_order: "Newest first" + label_reverse_chronological_order: "Od nejnovějších" label_revision: "Revize" label_revision_id: "Revize %{value}" label_revision_plural: "Revize" @@ -1973,63 +1973,63 @@ cs: actions: 'Akce' digests: including_mention_singular: 'including a mention' - including_mention_plural: 'including %{number_mentioned} mentions' - unread_notification_singular: '1 unread notification' - unread_notification_plural: '%{number_unread} unread notifications' - you_have: 'You have' + including_mention_plural: 'včetně %{number_mentioned} zmínění' + unread_notification_singular: '1 nepřečtené oznámení' + unread_notification_plural: '%{number_unread} nepřečtených oznámení' + you_have: 'Máte' logo_alt_text: 'Logo' mention: - subject: "%{user_name} mentioned you in #%{id} - %{subject}" + subject: "%{user_name} vás zmínil v #%{id} - %{subject}" notification: - center: 'To notification center' - see_in_center: 'See comment in notification center' - settings: 'Change email settings' - salutation: 'Hey %{user}!' + center: 'Centrum oznámení' + see_in_center: 'Zobrazit komentář v oznamovacím centru' + settings: 'Změnit nastavení e-mailu' + salutation: 'Ahoj %{user}!' work_packages: - created_at: 'Created at %{timestamp} by %{user} ' - login_to_see_all: 'Log in to see all notifications.' - mentioned: 'You have been mentioned in a comment' - mentioned_by: '%{user} mentioned you in a comment' + created_at: 'Vytvořeno v %{timestamp} uživatelem %{user} ' + login_to_see_all: 'Přihlaste se pro zobrazení všech oznámení.' + mentioned: 'Byli jste zmíněni v komentáři' + mentioned_by: '%{user} vás zmínil v komentáři' more_to_see: one: 'There is 1 more work package with notifications.' few: 'There are %{count} more work packages with notifications.' many: 'There are %{count} more work packages with notifications.' other: 'There are %{count} more work packages with notifications.' reason: - watched: 'Watched' - assigned: 'Assigned' + watched: 'Sledováno' + assigned: 'Přiřazen' responsible: 'Odpovědný' - mentioned: 'Mentioned' + mentioned: 'Zmíněné' subscribed: 'vše' prefix: 'Received because of the notification setting: %{reason}' - see_all: 'See all' - updated_at: 'Updated at %{timestamp} by %{user}' + see_all: 'Zobrazit vše' + updated_at: 'Aktualizováno v %{timestamp} uživatelem %{user}' mail_body_account_activation_request: "Nový uživatel (%{value}) byl zaregistrován. Účet čeká na Vaše schválení:" mail_body_account_information: "Informace o vašem účtu" mail_body_account_information_external: "Můžete použít váš %{value} účet pro přihlášení." mail_body_backup_ready: "Your requested backup is ready. You can download it here:" mail_body_backup_token_reset_admin_info: The backup token for user '%{user}' has been reset. - mail_body_backup_token_reset_user_info: Your backup token has been reset. - mail_body_backup_token_info: The previous token is no longer valid. + mail_body_backup_token_reset_user_info: Váš záložní token byl resetován. + mail_body_backup_token_info: Předchozí token již není platný. mail_body_backup_waiting_period: The new token will be enabled in %{hours} hours. mail_body_backup_token_warning: If this wasn't you, login to OpenProject immediately and reset it again. mail_body_lost_password: "Pro změnu vašeho hesla klikněte na následující odkaz:" - mail_body_register: "Welcome to OpenProject. Please activate your account by clicking on this link:" - mail_body_register_header_title: "Project member invitation email" - mail_body_register_user: "Dear %{name}, " + mail_body_register: "Vítejte v OpenProject. Aktivujte svůj účet kliknutím na tento odkaz:" + mail_body_register_header_title: "E-mail pozvánka člena projektu" + mail_body_register_user: "Vážený %{name}," mail_body_register_links_html: | Please feel free to browse our youtube channel (%{youtube_link}) where we provide a webinar (%{webinar_link}) and “Get started” videos (%{get_started_link}) to make your first steps in OpenProject as easy as possible.
If you have any further questions, consult our documentation (%{documentation_link}) or contact your administrator. - mail_body_register_closing: "Your OpenProject team" - mail_body_register_ending: "Stay connected! Kind regards," + mail_body_register_closing: "Váš OpenProject tým" + mail_body_register_ending: "Zůstaňte ve spojení! S pozdravem," mail_body_reminder: "%{count} pracovních balíčků, které máte přiřazeny, mají termín během následujících %{days} dnů:" mail_body_group_reminder: "%{count} pracovních balíčků, které jsou přiřazeny ke skupině \"%{group}\", má termín splatnosti během následujících %{days} dnů:" mail_body_wiki_content_added: "Wiki stránka '%{id}' byla přidána uživatelem %{author}." mail_body_wiki_content_updated: "Wiki stránka '%{id}' byla aktualizována uživatelem %{author}." mail_subject_account_activation_request: "Žádost o aktivaci účtu %{value}" - mail_subject_backup_ready: "Your backup is ready" + mail_subject_backup_ready: "Vaše záloha je připravena" mail_subject_backup_token_reset: "Backup token reset" mail_subject_lost_password: "Vaše heslo %{value}" mail_subject_register: "Aktivace vašeho účtu %{value}" @@ -2038,26 +2038,26 @@ cs: mail_subject_wiki_content_added: "'%{id}' wiki stránka byla přidána" mail_subject_wiki_content_updated: "'%{id}' wiki stránka byla aktualizována" mail_member_added_project: - subject: "%{project} - You have been added as a member" + subject: "%{project} - Byli jste přidáni jako člen" body: added_by: - without_message: "%{user} added you as a member to the project '%{project}'." + without_message: "%{user} tě přidal jako člena do projektu '%{project}'." with_message: "%{user} added you as a member to the project '%{project}' writing:" - roles: "You have the following roles:" + roles: "Máte následující role:" mail_member_updated_project: - subject: "%{project} - Your roles have been updated" + subject: "%{project} - Vaše role byly aktualizovány" body: updated_by: without_message: "%{user} updated the roles you have in the project '%{project}'." with_message: "%{user} updated the roles you have in the project '%{project}' writing:" - roles: "You now have the following roles:" + roles: "Nyní máte následující role:" mail_member_updated_global: - subject: "Your global permissions have been updated" + subject: "Vaše globální oprávnění byla aktualizována" body: updated_by: without_message: "%{user} updated the roles you have globally." with_message: "%{user} updated the roles you have globally writing:" - roles: "You now have the following roles:" + roles: "Nyní máte následující role:" mail_user_activation_limit_reached: subject: Dosažen limit aktivace uživatelů message: | @@ -2164,8 +2164,8 @@ cs: permission_add_work_packages: "Přidat pracovní balíčky" permission_add_messages: "Odesílat zprávy" permission_add_project: "Vytvořit projekt" - permission_manage_user: "Create and edit users" - permission_manage_placeholder_user: "Create, edit, and delete placeholder users" + permission_manage_user: "Vytvořit a upravit uživatele" + permission_manage_placeholder_user: "Vytvořit, upravit a odstranit placeholder uživatele" permission_add_subprojects: "Vytvořit podprojekty" permission_add_work_package_watchers: "Přidat sledující" permission_assign_versions: "Přiřadit verze" @@ -2205,7 +2205,7 @@ cs: permission_manage_project_activities: "Spravovat projektové aktivity" permission_manage_public_queries: "Spravovat veřejné dotazy" permission_manage_repository: "Správa repozitáře" - permission_manage_subtasks: "Manage work package hierarchies" + permission_manage_subtasks: "Spravovat hierarchie pracovních balíčků" permission_manage_versions: "Správovat verze" permission_manage_wiki: "Spravovat wiki" permission_manage_wiki_menu: "Spravovat wiki menu" @@ -2213,7 +2213,7 @@ cs: permission_protect_wiki_pages: "Ochrana stránky wiki" permission_rename_wiki_pages: "Přejmenovat stránky wiki" permission_save_queries: "Uložit pohled" - permission_select_custom_fields: "Select custom fields" + permission_select_custom_fields: "Vybrat vlastní pole" permission_select_project_modules: "Vyberte moduly projektu" permission_manage_types: "Vyberte typy" permission_view_calendar: "Zobrazit kalendář" @@ -2243,13 +2243,13 @@ cs: title: Změnit identifikátor projektu template: copying: > - Your project is being created from the selected template project. You will be notified by mail as soon as the project is available. - use_template: 'Use template' - make_template: 'Set as template' - remove_from_templates: 'Remove from templates' + Váš projekt se vytváří z vybranéhé šablony. Budete upozorněni e-mailem, jakmile bude projekt k dispozici. + use_template: 'Použít šablonu' + make_template: 'Nastavit jako šablonu' + remove_from_templates: 'Odstranit ze šablon' archive: are_you_sure: "Opravdu chcete archivovat projekt '%{name}'?" - archived: "Archived" + archived: "Archivováno" project_module_activity: "Aktivita" project_module_forums: "Diskuse" project_module_calendar: "Kalendář" @@ -2266,8 +2266,8 @@ cs: assigned_to_role: "Řešitelova role" member_of_group: "Řešitelova skupina" assignee_or_group: "Přiřazený nebo patřící skupině" - subproject_id: "Including Subproject" - only_subproject_id: "Only subproject" + subproject_id: "Včetně podprojektu" + only_subproject_id: "Pouze podprojekt" name_or_identifier: "Jméno nebo identifikátor" repositories: at_identifier: 'v %{identifier}' @@ -2368,19 +2368,19 @@ cs: username: "Uživatelské jméno repositáře" truncated: "Omlouváme se, museli jsme zredukovat tento adresář na %{limit} soubory. %{truncated} položek bylo ze seznamu vynecháno." named_repository: "%{vendor_name} repozitář" - update_settings_successful: "The settings have been successfully saved." + update_settings_successful: "Nastavení bylo úspěšně uloženo." url: "URL do repozitáře" warnings: cannot_annotate: "Tento soubor nelze přiřadit poznámce." scheduling: - activated: 'activated' - deactivated: 'deactivated' + activated: 'Aktivováno ' + deactivated: 'Deaktivováno' search_input_placeholder: "Hledat ..." - setting_apiv3_cors_enabled: "Enable CORS" + setting_apiv3_cors_enabled: "Povolit CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" setting_apiv3_cors_origins_text_html: > If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. - setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_size: "Maximální velikost stránky API" setting_apiv3_max_page_instructions_html: > Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. setting_apiv3_docs: "Dokumentace" @@ -2421,7 +2421,7 @@ cs: setting_consent_required: "Souhlas vyžadován" setting_consent_decline_mail: "Kontaktní e-mailová adresa pro souhlas" setting_cross_project_work_package_relations: "Povolit vztahy mezi projekty a pracovními balíčky" - setting_first_week_of_year: "First week in year contains" + setting_first_week_of_year: "První týden v roce obsahuje" setting_date_format: "Formát data" setting_default_language: "Výchozí jazyk" setting_default_projects_modules: "Výchozí zapnutné moduly pro nový projekt" @@ -2432,7 +2432,7 @@ cs: setting_emails_header: "Záhlaví emailů" setting_email_login: "Použít e-mail jako přihlášení" setting_enabled_scm: "Povolit SCM" - setting_enabled_projects_columns: "Visible in project list" + setting_enabled_projects_columns: "Viditelné v seznamu projektů" setting_notification_retention_period_days: "Notification retention period" setting_feeds_enabled: "Povolit kanály" setting_feeds_limit: "Limit obsahu kanálů" @@ -2464,7 +2464,7 @@ cs: setting_per_page_options: "Objektů na stránku" setting_plain_text_mail: "Prostý text (ne HTML)" setting_protocol: "Protokol" - setting_project_gantt_query: "Project portfolio Gantt view" + setting_project_gantt_query: "Gantt Zobrazení projektového portfolia" setting_project_gantt_query_text: "You can modify the query that is used to display Gantt chart from the project overview page." setting_security_badge_displayed: "Zobrazit bezpečnostní odznak" setting_registration_footer: "Zápatí registrace" @@ -2516,8 +2516,8 @@ cs: first_week_of_year_text: > Select the date of January that is contained in the first week of the year. This value together with first day of the week determines the total number of weeks in a year. projects: - section_new_projects: "Settings for new projects" - section_project_overview: "Settings for project overview list" + section_new_projects: "Nastavení pro nové projekty" + section_project_overview: "Nastavení přehledu seznamu projektu" user: default_preferences: "Výchozí předvolby" deletion: "Odstranění" @@ -2572,7 +2572,7 @@ cs: text_destroy_with_associated: "Existují další objekty, které jsou přiřazeny k pracovním balíčkům a které mají být odstraněny. Tyto objekty jsou následující typy:" text_destroy_what_to_do: "Co chcete udělat?" text_diff_truncated: "... Toto rozlišení bylo zkráceno, protože přesahuje maximální velikost, kterou lze zobrazit." - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server to enable them." + text_email_delivery_not_configured: "Doručení e-mailu není nakonfigurováno a oznámení jsou zakázána.\nNakonfigurujte váš SMTP server pro jejich povolení." text_enumeration_category_reassign_to: "Přiřadit je k této hodnotě:" text_enumeration_destroy_question: "%{count} objektů je přiřazeno k této hodnotě." text_file_repository_writable: "Do adresáře příloh lze zapisovat" @@ -2585,8 +2585,8 @@ cs: text_work_package_category_destroy_question: "Některé pracovní balíčky (%{count}) jsou přiřazeny k této kategorii. Co chcete udělat?" text_work_package_category_reassign_to: "Přiřadit pracovní balíčky k této kategorii" text_work_package_updated: "Pracovní balíček %{id} byl aktualizován uživatelem %{author}." - text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_changer}." - text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_changer}." + text_work_package_watcher_added: "Byli jste přidáni jako sledovatel do pracovního balíčku %{id} uživatelem %{watcher_changer}." + text_work_package_watcher_removed: "Byl jste odstraněn z pozorovatelů pracovního balíčku %{id} uživatelem %{watcher_changer}." text_work_packages_destroy_confirmation: "Jste si jisti, že chcete odstranit vybrané pracovní balíčky?" text_work_packages_ref_in_commit_messages: "Odkazování a opravování pracovních balíčků ve zprávách commitu" text_journal_added: "%{label} %{value} přidán" @@ -2903,10 +2903,10 @@ cs: code_403: "Nemáte oprávnění k přístupu k tomuto zdroji." code_404: "Požadovaný zdroj nebyl nalezen." code_409: "Zdroj nelze aktualizovat kvůli konfliktním změnám." - code_429: "Too many requests. Please try again later." + code_429: "Příliš mnoho dotazů, zkuste to znovu později" code_500: "Došlo k vnitřní chybě." not_found: - work_package: "The work package you are looking for cannot be found or has been deleted." + work_package: "Pracovní balíček, který hledáte, nebyl nalezen nebo byl odstraněn." expected: date: "RRRR-MM-DD (pouze ISO 8601 datum)" duration: "Doba trvání ISO 8601" @@ -3028,4 +3028,4 @@ cs: authorization_error: "Došlo k chybě autorizace." revoke_my_application_confirmation: "Opravdu chcete odstranit tuto aplikaci? Tato akce zruší %{token_count} aktivních aplikací." my_registered_applications: "Registrované OAuth aplikace" - you: you + you: vy diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index 3236a9d3ba..e158c6b361 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -39,13 +39,13 @@ cs: You can trigger a backup here. The process can take some time depending on the amount of data (especially attachments) you have. You will receive an email once it's ready. note: > A new backup will override any previous one. Only a limited number of backups per day can be requested. - last_backup: Last backup - last_backup_from: Last backup from - title: Backup OpenProject + last_backup: Poslední záloha + last_backup_from: Poslední záloha z + title: Zálohovat OpenProject options: Možnosti - include_attachments: Include attachments - download_backup: Download backup - request_backup: Request backup + include_attachments: Zahrnout přílohy + download_backup: Stáhnout zálohu + request_backup: Žádost o zálohu close_popup_title: "Zavřít okno" close_filter_title: "Zavřít filtr" close_form_title: "Zavřít formulář" @@ -100,7 +100,7 @@ cs: caption_rate_history: "Historie kurzů" clipboard: browser_error: "Váš prohlížeč nepodporuje, kopírování do schránky. Ručně zkopírujte vybraný text." - copied_successful: "Successfully copied to clipboard!" + copied_successful: "Úspěšně zkopírováno do schránky!" chart: type: 'Typ grafu' axis_criteria: 'Kritéria osy' @@ -127,7 +127,7 @@ cs: preview: 'Přepnout režim náhledu' source_code: 'Přepnout zdrojový mód Markdown' error_saving_failed: 'Uložení dokumentu se nezdařilo s následující chybou: %{error}' - ckeditor_error: 'An error occurred within CKEditor' + ckeditor_error: 'Došlo k chybě v CKEditoru' mode: manual: 'Přepněte do Markdown zdroje' wysiwyg: 'Přepnout na WYSIWYG Editor' @@ -135,8 +135,8 @@ cs: error: 'Cannot expand macro: %{message}' attribute_reference: macro_help_tooltip: 'This text segment is being dynamically rendered by a macro.' - not_found: 'Requested resource could not be found' - invalid_attribute: "The selected attribute '%{name}' does not exist." + not_found: 'Požadovaný zdroj nebyl nalezen.' + invalid_attribute: "Vybraný atribut '%{name}' neexistuje." child_pages: button: 'Odkazy na podřízené stránky' include_parent: 'Zahrnout rodiče' @@ -186,59 +186,59 @@ cs: new_group: 'Nová skupina' reset_to_defaults: 'Obnovit výchozí nastavení' enterprise: - text_reprieve_days_left: "%{days} days until end of grace period" - text_expired: "expired" + text_reprieve_days_left: "%{days} dní do konce doby odkladu" + text_expired: "vypršela platnost" trial: - confirmation: "Confirmation of email address" + confirmation: "Potvrzení e-mailové adresy" confirmation_info: > - We sent you an email on %{date} to %{email}. Please check your inbox and click the confirmation link provided to start your 14 days trial. + Poslali jsme Vám e-mail od %{date} do %{email}. Zkontrolujte prosím svou doručenou poštu a klikněte na odkaz pro potvrzení poskytnutý pro zahájení čtrnáctidenního zkušebního období. form: general_consent: > I agree with the terms of service and the privacy policy. - invalid_email: "Invalid email address" - label_company: "Company" + invalid_email: "Neplatná e-mailová adresa" + label_company: "Společnost" label_first_name: "Křestní jméno" label_last_name: "Příjmení" - label_domain: "Domain" + label_domain: "Doména" label_subscriber: "Odběratel" label_maximum_users: "Maximální počet aktivních uživatelů" - label_starts_at: "Starts at" + label_starts_at: "Začíná v" label_expires_at: "Vyprší za" receive_newsletter: I want to receive the OpenProject newsletter. taken_domain: There can only be one active trial per domain. - taken_email: Each user can only create one trial. - email_not_received: "You did not receive an email? You can resend the email with the link on the right." - try_another_email: "Or try it with another email address." - next_steps: "Next steps" - resend_link: "Resend" - resend_success: "Email has been resent. Please check your emails and click the confirmation link provided." - resend_warning: "Could not resend email." - session_timeout: "Your session timed out. Please try to reload the page or resend email." - status_label: "Status:" - status_confirmed: "confirmed" - status_waiting: "email sent - waiting for confirmation" - test_ee: "Test the Enterprise Edition 14 days for free" + taken_email: Každý uživatel může vytvořit pouze jednu zkušební verzi. + email_not_received: "Neobdrželi jste e-mail? Můžete znovu odeslat e-mail s odkazem vpravo." + try_another_email: "Nebo to zkuste s jinou e-mailovou adresou." + next_steps: "Další kroky" + resend_link: "Znovu odeslat" + resend_success: "E-mail byl znovu odeslán. Zkontrolujte své e-maily a klikněte na odkaz pro potvrzení." + resend_warning: "E-mail nelze znovu odeslat." + session_timeout: "Vypršel časový limit relace. Zkuste stránku znovu načíst nebo znovu odeslat e-mail." + status_label: "Stav:" + status_confirmed: "potvrzeno" + status_waiting: "e-mail odeslán - čeká na potvrzení" + test_ee: "Vyzkoušejte Enterprise Edition 14 dní zdarma" quick_overview: "Get a quick overview of project management and team collaboration with OpenProject Enterprise Edition." upsale: become_hero: "Staň se hrdinou!" benefits: - description: "What are the benefits of the Enterprise on-premises Edition?" - high_security: "Security features" + description: "Jaké jsou výhody Enterprise on-premises Edice?" + high_security: "Bezpečnostní prvky" high_security_text: "Single sign on (SAML, OpenID Connect, CAS), two-factor authentication and automatic sync of LDAP groups." - installation: "Installation support" + installation: "Instalační podpora" installation_text: "Experienced software engineers guide you through the complete installation and setup process in your own infrastructure." - premium_features: "Premium features" + premium_features: "Prémiové funkce" premium_features_text: "Agile boards, custom theme and logo, graphs, intelligent workflows with custom actions, full text search for work package attachments and multi-select custom fields." professional_support: "Profesionální podpora" professional_support_text: "Get reliable, high-touch support from senior support engineers with expert knowledge about running OpenProject in business-critical environments." - button_start_trial: "Start free trial" - button_book_now: "Book now" + button_start_trial: "Zahájit zkušební verzi zdarma" + button_book_now: "Rezervujte nyní" confidence: > We deliver the confidence of a tested and supported enterprise-class project management software - with Open Source and an open mind. - link_quote: "Get a quote" + link_quote: "Získat cenovou nabídku" text: > The OpenProject Enterprise Edition builds on top of the Community Edition. It includes premium features and professional support mainly aimed at organizations with more than 10 users that manage business critical projects with OpenProject. - unlimited: "Unlimited" + unlimited: "Bez omezení" you_contribute: "Developers need to pay their bills, too. With the Enterprise Edition, you substantially contribute to this Open Source community effort." custom_actions: date: @@ -284,7 +284,7 @@ cs: blocks: new_features: text_new_features: "Přečtěte si o nových funkcích a aktualizacích produktů." - learn_about: "Learn more about the new features" + learn_about: "Další informace o nových funkcích" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': @@ -331,7 +331,7 @@ cs: label_details: "Podrobnosti" label_display: "Zobrazit" label_cancel_comment: "Stornovat komentář" - label_closed_work_packages: "uzavřeno" + label_closed_work_packages: "closed" label_collapse: "Sbalit" label_collapsed: "sbalené" label_collapse_all: "Sbalit vše" @@ -392,7 +392,7 @@ cs: label_on: "zapnuto" label_open_menu: "Otevřít nabídku" label_open_context_menu: "Otevřít kontextovou nabídku" - label_open_work_packages: "otevřít" + label_open_work_packages: "open" label_password: "Heslo" label_previous: "Předchozí" label_per_page: "Na stránku:" @@ -400,7 +400,7 @@ cs: label_project_plural: "Projekty" label_visibility_settings: "Nastavení viditelnosti" label_quote_comment: "Citovat tento komentář" - label_recent: "Recent" + label_recent: "Nedávné" label_reset: "Obnovit" label_remove: "Odstranit" label_remove_column: "Odstranit sloupec" @@ -422,12 +422,12 @@ cs: label_star_query: "Zabráněno" label_press_enter_to_save: "Stiskněte Enter pro uložení." label_public_query: "Veřejné" - label_sum: "Sum" + label_sum: "Suma" label_sum_for: "Součet pro" - label_total_sum: "Total sum" + label_total_sum: "Celková SUMA" label_subject: "Předmět" label_this_week: "tento týden" - label_today: "Today" + label_today: "Dnes" label_time_entry_plural: "Strávený čas" label_up: "Nahoru" label_user_plural: "Uživatelé" @@ -440,7 +440,7 @@ cs: label_children_derived_duration: "Work package's children derived duration" label_warning: "Varování" label_work_package: "Pracovní balíček" - label_work_package_parent: "Parent work package" + label_work_package_parent: "Nadřazený pracovní balíček" label_work_package_plural: "Pracovní balíčky" label_watch: "Sledovat" label_watch_work_package: "Sledovat pracovní balíček" @@ -485,7 +485,7 @@ cs: got_it: 'Rozumím' steps: help_menu: 'The Help (?) menu provides additional help resources. Here you can find a user guide and helpful how-to videos and more.
Enjoy your work with OpenProject!' - members: 'Invite new members to join your project.' + members: 'Pozvěte nové členy , aby se připojili k vašemu projektu.' project_selection: 'Please click on one of the demo projects that we have prepared. Demo data is currently only available in English.
The general demo project suits best for classical project management, while the Scrum project is better for agile project management.' quick_add_button: 'Click on the plus (+) icon in the header navigation to create a new project or to invite coworkers.' sidebar_arrow: "Use the return arrow in the top left corner to return to the project’s main menu." @@ -507,78 +507,78 @@ cs: list: 'This work package overview provides a list of all the work in your project, such as tasks, milestones, phases, and more.
Work packages can be created and edited directly from this view. To access the details of a particular work package, simply double-click its row.' full_view: 'The work package details view provides all the relevant information pertaining to a given work package, such as its description, status, priority, activities, dependencies, and comments.' back_button: 'Use the return arrow in the top left corner to exit and return to the work package list.' - create_button: 'The + Create button will add a new work package to your project.' - timeline_button: 'You can activate the Gantt chart view to create a timeline for your project.' + create_button: 'Tlačítko Vytvořit přidá do vašeho projektu nový pracovní balíček.' + timeline_button: 'Můžete aktivovat Gantt graf pro vytvoření časové osy pro váš projekt.' timeline: 'Here you can edit your project plan, create new work packages, such as tasks, milestones, phases, and more, as well as add dependencies. All team members can see and update the latest plan at any time.' notifications: - title: "Notifications" - no_unread: "No unread notifications" + title: "Oznámení" + no_unread: "Žádná nepřečtená oznámení" reasons: - mentioned: 'mentioned' - watched: 'watched' - assigned: 'assigned' - responsible: 'accountable' + mentioned: 'zmíněn' + watched: 'sledován' + assigned: 'přiřazeno' + responsible: 'Odpovědný' facets: - unread: 'Unread' + unread: 'Nepřečtené' all: 'Vše' center: and_more_users: - one: 'and 1 other' + one: 'a 1 další' few: 'and %{count} others' many: 'and %{count} others' other: 'and %{count} others' no_results: - at_all: 'New notifications will appear here when there is activity that concerns you' - with_current_filter: 'There are no notifications in this view at the moment' - mark_all_read: 'Mark all as read' - mark_as_read: 'Mark as read' + at_all: 'Nová oznámení se zobrazí zde, když se objeví aktivita, která se vás týká' + with_current_filter: 'V současné době nejsou v tomto zobrazení žádná oznámení' + mark_all_read: 'Označit vše jako přečtené' + mark_as_read: 'Označit jako přečteno' text_update_date: "%{date} by" - total_count_warning: "Showing the %{newest_count} most recent notifications. %{more_count} more are not displayed." + total_count_warning: "Zobrazení posledních oznámení %{newest_count} . Nezobrazuje se ještě %{more_count}" empty_state: - no_notification: "Looks like you're all caught up." + no_notification: "Vypadá to, že jste všichno dohnali..." no_notification_with_current_filter: "Change of involvement or go back to the Inbox to view notifications" - no_selection: "Click on a notification to view all activity details." + no_selection: "Klikněte na oznámení pro zobrazení všech podrobností o aktivitě." new_notifications: - message: 'There are new notifications.' - link_text: 'Click here to load them' + message: 'Máte nová oznámení.' + link_text: 'Klikněte zde pro jejich načtení' menu: accountable: 'Odpovědný' - assigned: 'Assigned' - by_project: 'Unread by project' - by_reason: 'Involvement' + assigned: 'Přiřazeno' + by_project: 'Nepřečteno podle projektu' + by_reason: 'Zapojení' inbox: 'Inbox' - mentioned: '@mentioned' - watching: 'Watching' + mentioned: 'Zmíněn' + watching: 'Sledování' settings: - change_notification_settings: 'To view and change your notification settings, click here' - title: "Notification settings" - notify_me: "Notify me" + change_notification_settings: 'Chcete-li zobrazit a změnit nastavení oznámení, klikněte zde' + title: "Nastavení oznámení" + notify_me: "Upozornit mě" reasons: mentioned: - title: 'I am @mentioned' - description: 'Receive a notification every time someone mentions me anywhere' + title: 'Jsem @zmíněn' + description: 'Dostat upozornění, kdykoli mě někdo kdekoli zmíní' involved: - title: 'Assigned to me or accountable' - description: 'Receive notifications for all activities on work packages for which I am assignee or accountable' - watched: 'Updates on watched items' - work_package_commented: 'All new comments' - work_package_created: 'New work packages' - work_package_processed: 'All status changes' + title: 'Přiřazeno mně nebo odpovědně' + description: 'Přijímat oznámení pro všechny aktivity v pracovních balíčcích, pro které jsem pověřen nebo jsem zodpovědný' + watched: 'Aktualizace u sledovaných položek' + work_package_commented: 'Všechny nové komentáře' + work_package_created: 'Nový pracovní balíček' + work_package_processed: 'Všechny změny stavu' work_package_prioritized: 'All priority changes' - work_package_scheduled: 'All date changes' + work_package_scheduled: 'Všechny změny data' global: immediately: - title: 'Notify me immediately' - description: 'These settings apply to all projects. You can create project-specific exceptions below.' + title: 'Oznamovat mi okamžitě' + description: 'Tato nastavení platí pro všechny projekty. Níže můžete vytvořit specifické výjimky.' delayed: - title: 'Also notify me for' - description: 'Receive notifications for these activities on work packages in all projects:' + title: 'Upozornit také pro' + description: 'Přijímat oznámení pro tyto aktivity na pracovních balíčcích ve všech projektech:' project_specific: - title: 'Project-specific notification settings' + title: "Nastavení upozornění pro konkrétní projekt\n" description: 'These project-specific settings override default settings above' - add: 'Add setting for project' - already_selected: 'This project is already selected' - remove: 'Remove project settings' + add: 'Přidat nastavení projektu' + already_selected: 'Tento projekt je již vybrán' + remove: 'Odstranit nastavení projektu' password_confirmation: field_description: 'Pro potvrzení této změny je třeba zadat heslo k účtu.' title: 'Pro pokračování potvrďte vaše heslo' @@ -598,46 +598,46 @@ cs: context: 'Kontext projektu' work_package_belongs_to: 'Tento pracovní balíček náleží projektu %{projectname}.' click_to_switch_context: 'Otevřete tento pracovní balíček v tomto projektu.' - confirm_template_load: 'Switching the template will reload the page and you will lose all input to this form. Continue?' - use_template: "Use template" - no_template_selected: "(None)" + confirm_template_load: 'Přepnutí šablony znovu načte stránku a ztratíte všechny vstupy do tohoto formuláře. Pokračovat?' + use_template: "Použít šablonu" + no_template_selected: "(Žádné)" copy: - copy_options: "Copy options" + copy_options: "Možností kopírování" autocompleter: label: 'Automatické doplňování projektu' reminders: settings: daily: - add_time: 'Add time' - enable: 'Enable daily email reminders' - explanation: 'You will receive these reminders only for unread notifications and only at hours you specify. %{no_time_zone}' + add_time: 'Přidat čas' + enable: 'Povolit denní připomenutí e-mailem' + explanation: 'Tyto připomínky obdržíte pouze pro nepřečtená oznámení a pouze v hodinách, které zadáte. %{no_time_zone}' no_time_zone: 'Until you configure a time zone for your account, the times will be interpreted to be in UTC.' - time_label: 'Time %{counter}:' - title: 'Send me daily email reminders for unread notifications' + time_label: 'Čas %{counter}:' + title: 'Poslat mi denní připomenutí e-mailem pro nepřečtená oznámení' workdays: - title: 'Receive email reminders on these days' + title: 'Dostávat připomenutí e-mailem v těchto dnech' immediate: - title: 'Send me an email reminder' - mentioned: 'Immediately when someone @mentions me' + title: 'Pošlete mi připomenutí e-mailem' + mentioned: 'Okamžitě, když mě někdo @zmiňuje' alerts: title: 'Email alerts for other items (that are not work packages)' explanation: > Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications: news_added: 'Přidané novinky' - news_commented: 'Comment on a news item' - document_added: 'Documents added' - forum_messages: 'New forum messages' + news_commented: 'Komentář k novince' + document_added: 'Dokumenty přidány' + forum_messages: 'Nové zprávy o fóru' wiki_page_added: 'Přidána stránka wiki' wiki_page_updated: 'Wiki stránka aktualizována' - membership_added: 'Membership added' - membership_updated: 'Membership updated' - title: 'Email reminders' + membership_added: 'Členství přidáno' + membership_updated: 'Členství bylo aktualizováno' + title: 'Upozornění e-mailem' pause: - label: 'Temporarily pause daily email reminders' - first_day: 'First day' - last_day: 'Last day' + label: 'Dočasně pozastavit denní připomenutí e-mailem' + first_day: 'První den' + last_day: 'Poslední den' text_are_you_sure: "Jste si jisti?" - text_data_lost: "All entered data will be lost." + text_data_lost: "Všechna zadaná data budou ztracena." types: attribute_groups: error_duplicate_group_name: "Jméno %{group} je již použito. Jména skupin musí být jedinečná." @@ -645,18 +645,18 @@ cs: reset_title: "Vyčistit konfiguraci formuláře" confirm_reset: > Upozornění: Opravdu chcete resetovat konfiguraci formuláře? Tato akce obnoví atributy na jejich výchozí skupinu a zakáže VŠECHNY vlastní pole. - upgrade_to_ee: "Upgrade to Enterprise on-premises Edition" + upgrade_to_ee: "Upgradovat na Enterprise Edition" upgrade_to_ee_text: "Páni! Pokud potřebujete tuto funkci, jste super pro! Nevadili byste nám podpořit OpenSource vývojáře tím, že se stanete klientem Enterprise Edition?" more_information: "Více informací" nevermind: "Nevadí" edit: - form_configuration: "Form Configuration" + form_configuration: "Konfigurace formuláře" projects: "Projekty" settings: "Nastavení" time_entry: project: 'Projekt' work_package: 'Pracovní balíček' - work_package_required: 'Requires selecting a work package first.' + work_package_required: 'Vyžaduje nejprve výběr pracovního balíčku.' activity: 'Aktivita' comment: 'Komentář' duration: 'Doba trvání' @@ -664,7 +664,7 @@ cs: hours: 'Hodiny' title: 'Čas protokolu' two_factor_authentication: - label_two_factor_authentication: 'Two-factor authentication' + label_two_factor_authentication: 'Dvoufázové ověření' watchers: label_loading: načítám sledující... label_error_loading: Při načítání pozorovatelů došlo k chybě @@ -720,7 +720,7 @@ cs: parent_placeholder: "Vyberte nového rodiče nebo stiskněte úniku pro zrušení." autocompleter: placeholder: "Zadejte hledaný text" - notFoundText: "No items found" + notFoundText: "Nenalezeny žádné položky" typeToSearchText: "Zadejte hledaný text" repositories: select_tag: 'Vybrat štítek' @@ -728,8 +728,8 @@ cs: field_value_enter_prompt: "Zadejte hodnotu pro '%{field}'" project_menu_details: "Podrobnosti" scheduling: - manual: 'Manual scheduling' - automatic: 'Automatic scheduling' + manual: 'Manuální plánování' + automatic: 'Automatické plánování' sort: sorted_asc: 'Použito vzestupné řazení, ' sorted_dsc: 'Použité sestupně ' @@ -872,7 +872,7 @@ cs: no_results: title: Žádné pracovní balíčky k zobrazení. description: Buď nebyly vytvořeny nebo jsou všechny pracovní balíčky odfiltrovány. - limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering, or switch to automatic sorting. + limited_results: Pouze %{count} pracovních balíčků může být zobrazeno v ručním režimu třídění. Snížte výsledky filtrováním, nebo přepněte na automatické třídění. property_groups: details: "Podrobnosti" people: "Lidé" @@ -915,8 +915,8 @@ cs: label_content: "Klikněte zde pro přeskočení nabídky a přejděte na obsah" placeholders: default: "-" - date: "Select date" - formattable: "%{name}: Click to edit..." + date: "Vybrat datum" + formattable: "%{name}: Klikněte pro editaci..." query: column_names: "Sloupce" group_by: "Seskupit výsledky podle" @@ -943,8 +943,8 @@ cs: duplicate_query_title: "Název tohoto zobrazení již existuje. Chcete přesto změnit?" text_no_results: "Nebyly nalezeny žádné odpovídající zobrazení." scheduling: - is_parent: "The dates of this work package are automatically deduced from its children. Activate 'Manual scheduling' to set the dates." - is_switched_from_manual_to_automatic: "The dates of this work package may need to be recalculated after switching from manual to automatic scheduling due to relationships with other work packages." + is_parent: "Data tohoto pracovního balíčku jsou automaticky odvozena od jeho dětí. Aktivujte 'Manuální plánování' pro ručné nastavení dat." + is_switched_from_manual_to_automatic: "Data tohoto pracovního balíčku budou možná muset být přepočítána po přepnutí z manuálu na automatické plánování kvůli vztahům s ostatními pracovními balíčky." table: configure_button: 'Konfigurovat tabulku pracovních balíčků' summary: "Tabulka s řádky pracovního balíčku a atributy sloupců pracovního balíčku." @@ -984,7 +984,7 @@ cs: relation_columns: 'Potřebujete vidět vztahy v seznamu pracovních balíčků?' check_out_link: 'Podívejte se na Enterprise Edition.' relation_filters: - filter_work_packages_by_relation_type: 'Filter work packages by relation type' + filter_work_packages_by_relation_type: 'Filtrovat pracovní balíčky podle typu vztahu' tabs: overview: Přehled activity: Aktivita @@ -1034,13 +1034,13 @@ cs: confirm_deletion_children: "Jsem si vědom, že všechny potomky uvedených pracovních balíčků budou rekurzivně odstraněny." deletes_children: "Všechny podřízené pracovní balíčky a jejich potomci budou také rekurzivně odstraněny." destroy_time_entry: - title: "Confirm deletion of time entry" - text: "Are you sure you want to delete the following time entry?" + title: "Potvrdit odstranění záznamu času" + text: "Opravdu chcete odstranit následující časovou položku?" notice_no_results_to_display: "Žádné viditelné výsledky k zobrazení." notice_successful_create: "Úspěšné vytvoření." notice_successful_delete: "Úspěšné odstranění." notice_successful_update: "Úspěšná aktualizace." - notice_job_started: "job started." + notice_job_started: "Úloha byla zahájena" notice_bad_request: "Chybný požadavek." relations: empty: Neexistuje žádný vztah @@ -1100,24 +1100,24 @@ cs: timeline: 'Ganttův diagram' invite_user_modal: back: 'Zpět' - invite: 'Invite' + invite: 'Pozvat' title: invite: 'Pozvat uživatele' - invite_to_project: 'Invite %{type} to %{project}' - User: 'user' - Group: 'group' - PlaceholderUser: 'placeholder user' - invite_principal_to_project: 'Invite %{principal} to %{project}' + invite_to_project: 'Pozvat %{type} do %{project}' + User: 'uživatel' + Group: 'Skupina' + PlaceholderUser: 'placeholder uživatel' + invite_principal_to_project: 'Pozvat %{principal} do %{project}' project: label: 'Projekt' - required: 'Please select a project' + required: 'Vyberte projekt' lacking_permission: 'Please select a different project since you lack permissions to assign users to the currently selected.' - lacking_permission_info: 'You lack the permission to assign users to the project you are currently in. You need to select a different one.' + lacking_permission_info: 'Chybí vám oprávnění k přiřazení uživatelů k projektu, ve kterém se právě nacházíte. Musíte vybrat jiný.' next_button: 'Další' - no_results: 'No projects were found' - no_invite_rights: 'You are not allowed to invite members to this project' + no_results: 'Nebyly nalezeny žádné projekty' + no_invite_rights: 'Nejste oprávněni pozvat členy do tohoto projektu' type: - required: 'Please select the type to be invited' + required: 'Vyberte prosím typ, který chcete pozvat' user: title: 'Uživatel' description: 'Permissions based on the assigned role in the selected project' @@ -1125,46 +1125,46 @@ cs: title: 'Skupina' description: 'Permissions based on the assigned role in the selected project' placeholder: - title: 'Placeholder user' - title_no_ee: 'Placeholder user (Enterprise Edition only feature)' + title: 'placeholder uživatel' + title_no_ee: 'placeholder uživatel (pouze funkce Enterprise Edition)' description: 'Has no access to the project and no emails are sent out.' description_no_ee: 'Has no access to the project and no emails are sent out.
Check out the Enterprise Edition' principal: label: - name_or_email: 'Name or email address' + name_or_email: 'Jméno nebo e-mailová adresa' name: 'Jméno' - already_member_message: 'Already a member of %{project}' - no_results_user: 'No users were found' - invite_user: 'Invite:' - no_results_placeholder: 'No placeholders were found' - create_new_placeholder: 'Create new placeholder:' - no_results_group: 'No groups were found' + already_member_message: 'Už jsi členem %{project}' + no_results_user: 'Nebyli nalezeni žádní uživatelé' + invite_user: 'Pozvat' + no_results_placeholder: 'Nebyly nalezeny žádné placeholdery' + create_new_placeholder: 'Vytvořit nový placeholder' + no_results_group: 'Nebyly nalezeny žádné skupiny' next_button: 'Další' required: - user: 'Please select a user' - placeholder: 'Please select a placeholder' - group: 'Please select a group' + user: 'Vyberte prosím uživatele' + placeholder: 'Vyberte prosím placeholder' + group: 'Zvolte prosím skupinu.' role: - label: 'Role in %{project}' - no_roles_found: 'No roles were found' + label: 'Role v %{project}' + no_roles_found: 'Nebyly nalezeny žádné role.' description: 'This is the role that %{principal} will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. Learn more about roles and permissions. ' - required: 'Please select a role' + required: 'Vyberte prosím roli' next_button: 'Další' message: - label: 'Invitation message' + label: 'Pozvánka' description: 'We will send an email to %{principal}, to which you can add a personal message here. An explanation for the invitation could be useful, or perhaps a bit of information regarding the project to help them get started.' - next_button: 'Review invitation' + next_button: 'Zkontrolovat pozvánku' summary: next_button: 'Odeslat pozvánku' success: - title: '%{principal} was invited!' + title: '%{principal} byl pozván!' description: user: 'The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance.' placeholder: 'The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance.' group: 'The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance.' next_button: 'Pokračovat' forms: - submit_success_message: 'The form was successfully submitted' - load_error_message: 'There was an error loading the form' - validation_error_message: 'Please fix the errors present in the form' + submit_success_message: 'Formulář byl úspěšně odeslán' + load_error_message: 'Při načítání formuláře došlo k chybě' + validation_error_message: 'Opravte prosím chyby ve formuláři' advanced_settings: 'Pokročilá nastavení' diff --git a/modules/bim/config/locales/crowdin/cs.yml b/modules/bim/config/locales/crowdin/cs.yml index 9a0b0cffc6..2dc57161cd 100644 --- a/modules/bim/config/locales/crowdin/cs.yml +++ b/modules/bim/config/locales/crowdin/cs.yml @@ -14,7 +14,7 @@ cs: exceptions: file_invalid: "Neplatný soubor BCF" x_bcf_issues: - zero: 'No BCF issues' + zero: 'Žádné problémy s BCF' one: 'Jeden problém s BCFF' other: '%{count} Problémy s BCF' bcf_xml: @@ -31,7 +31,7 @@ cs: num_issues_found: '%{x_bcf_issues} jsou obsaženy v BCF-XML souboru, jejich podrobnosti jsou uvedeny níže.' button_prepare: 'Připravit import' button_perform_import: 'Potvrdit import' - button_proceed: 'Proceed with import' + button_proceed: 'Pokračovat s importem' button_back_to_list: 'Zpět na seznam' no_permission_to_add_members: 'Nemáte dostatečná oprávnění, abyste je přidali jako členy do projektu.' contact_project_admin: 'Kontaktujte svého správce projektu, aby je přidal jako členy a začal tento import znovu.' @@ -67,7 +67,7 @@ cs: project_module_bim: "BCF" permission_view_linked_issues: "Zobrazit problémy s BCF" permission_manage_bcf: "Importovat a spravovat problémy s BCF." - permission_delete_bcf: "Delete BCF issues" + permission_delete_bcf: "Odstranit problémy BCF" oauth: scopes: bcf_v2_1: "Full access to the BCF v2.1 API" @@ -77,22 +77,22 @@ cs: bim/ifc_models/ifc_model: "Model IFC" attributes: bim/ifc_models/ifc_model: - ifc_attachment: "IFC file" - is_default: "Default model" - attachments: "IFC file" + ifc_attachment: "IFC soubor" + is_default: "Výchozí model" + attachments: "IFC soubor" errors: models: bim/ifc_models/ifc_model: attributes: base: - ifc_attachment_missing: "No ifc file attached." - invalid_ifc_file: "The provided file is not a valid IFC file." + ifc_attachment_missing: "Žádný soubor ifc není připojen." + invalid_ifc_file: "Zadaný soubor není platný IFC soubor." bim/bcf/viewpoint: bitmaps_not_writable: "bitmaps is not writable as it is not yet implemented." index_not_integer: "index is not an integer." invalid_clipping_planes: "clipping_planes is invalid." - invalid_components: "components is invalid." - invalid_lines: "lines is invalid." + invalid_components: "komponenty jsou neplatné." + invalid_lines: "řádky jsou neplatné." invalid_orthogonal_camera: "orthogonal_camera is invalid." invalid_perspective_camera: "perspective_camera is invalid." mismatching_guid: "The guid in the json_viewpoint does not match the model's guid." @@ -103,21 +103,21 @@ cs: bim/bcf/issue: uuid_already_taken: "Can't import this BCF issue as there already is another with the same GUID. Could it be that this BCF issue had already been imported into a different project?" ifc_models: - label_ifc_models: 'IFC models' - label_new_ifc_model: 'New IFC model' - label_show_defaults: 'Show defaults' - label_default_ifc_models: 'Default IFC models' - label_edit_defaults: 'Edit defaults' + label_ifc_models: 'IFC modely' + label_new_ifc_model: 'Nový model IFC' + label_show_defaults: 'Zobrazit výchozí hodnoty' + label_default_ifc_models: 'Výchozí IFC modely' + label_edit_defaults: 'Upravit výchozí hodnoty' no_defaults_warning: title: 'No IFC model was set as default for this project.' check_1: 'Check that you have uploaded at least one IFC model.' check_2: 'Check that at least one IFC model is set to "Default".' - no_results: "No IFC models have been uploaded in this project." + no_results: "V tomto projektu nebyly nahrány žádné IFC modely." conversion_status: - label: 'Processing?' - pending: 'Pending' - processing: 'Processing' - completed: 'Completed' + label: 'Zpracovávání?' + pending: 'Čeká na vyřízení' + processing: 'Zpracovávání...' + completed: 'Dokončeno' error: 'Chyba' processing_notice: processing_default: 'The following default IFC models are still being processed and are thus not available, yet:' @@ -125,9 +125,9 @@ cs: upload_successful: 'Upload succeeded. It will now get processed and will be ready to use in a couple of minutes.' conversion: missing_commands: "The following IFC converter commands are missing on this system: %{names}" - project_module_ifc_models: "IFC models" - permission_view_ifc_models: "View IFC models" - permission_manage_ifc_models: "Import and manage IFC models" + project_module_ifc_models: "IFC modely" + permission_view_ifc_models: "Zobrazit IFC modely" + permission_manage_ifc_models: "Importovat a spravovat IFC modely" extraction: available: ifc_convert: "IFC conversion pipeline available" diff --git a/modules/bim/config/locales/crowdin/js-cs.yml b/modules/bim/config/locales/crowdin/js-cs.yml index 165f2e00de..4abef370af 100644 --- a/modules/bim/config/locales/crowdin/js-cs.yml +++ b/modules/bim/config/locales/crowdin/js-cs.yml @@ -4,9 +4,9 @@ cs: bcf: label_bcf: 'BCF' import: 'Import' - import_bcf_xml_file: 'Import BCF XML file (BCF version 2.1)' + import_bcf_xml_file: 'Importovat soubor BCF XML (BCF verze 2.1)' export: 'Export' - export_bcf_xml_file: 'Export BCF XML file (BCF version 2.1)' + export_bcf_xml_file: 'Exportovat soubor BCF XML (BCF verze 2.1)' viewpoint: 'Viewpoint' add_viewpoint: 'Add viewpoint' show_viewpoint: 'Show viewpoint' @@ -16,10 +16,10 @@ cs: refresh_work_package: 'Aktualizovat pracovní balíček' ifc_models: empty_warning: "This project does not yet have any IFC models." - use_this_link_to_manage: "Use this link to upload and manage your IFC models" + use_this_link_to_manage: "Pomocí tohoto odkazu můžete nahrát a spravovat vaše IFC modely" keyboard_input_disabled: "Viewer does not have keyboard controls. Click on the viewer to give keyboard control to the viewer." models: - ifc_models: 'IFC models' + ifc_models: 'IFC modely' views: viewer: 'Viewer' split: 'Viewer and table' diff --git a/modules/boards/config/locales/crowdin/js-cs.yml b/modules/boards/config/locales/crowdin/js-cs.yml index 2864197cd5..5ea9097442 100644 --- a/modules/boards/config/locales/crowdin/js-cs.yml +++ b/modules/boards/config/locales/crowdin/js-cs.yml @@ -9,7 +9,7 @@ cs: teaser_text: 'Zlepšete své agilní řízení projektů s tímto flexibilním zobrazením Boardů. Vytvořte tolik desek, kolik chcete pro cokoliv, co chcete sledovat.' upgrade_to_ee_text: 'Board je funkce Enterprise. Proveďte upgrade na placený plán.' upgrade: 'Upgradovat nyní' - personal_demo: 'Contact us for a demo' + personal_demo: 'Kontaktujte nás pro demo' lists: delete: 'Odstranit seznam' version: @@ -24,7 +24,7 @@ cs: locked: 'Uzamčeno' closed: 'Uzavřený' new_board: 'Nová tabule' - add_list: 'Add list to board' + add_list: 'Přidat list na tabuli' add_card: 'Přidat kartu' error_attribute_not_writable: "Pracovní balíček nelze přesunout, do %{attribute} nelze zapisovat." error_loading_the_list: "Chyba při načítání seznamu: %{error_message}" @@ -35,9 +35,9 @@ cs: board_type: text: 'Typ tabule' free: 'basic' - select_board_type: 'Please choose the type of board you need.' + select_board_type: 'Vyberte prosím typ tabule, kterou potřebujete.' free_text: > - Start from scratch with a blank board. Manually add cards and columns to this board. + Začněte od začátku prázdnou tabulí ručním přidáváním karet a sloupců do této tabule. action: 'Akční tabule' action_by_attribute: 'Akční tabule (%{attribute})' action_text: > @@ -56,7 +56,7 @@ cs: assignee: Řešitel status: Stav version: verze - subproject: subproject + subproject: podprojekt subtasks: parent-child board_type_title: assignee: Řešitel @@ -64,7 +64,7 @@ cs: version: Verze subproject: Dílčí projekt subtasks: Parent-Child - basic: Basic + basic: Základní select_attribute: "Atribut akce" add_list_modal: labels: @@ -78,7 +78,7 @@ cs: There is currently no status available.
Either there are none or they have all already been added to the board. assignee: There isn't any member matched with your filter value.
- no_member: This project currently does not have any members that can be added.
+ no_member: Tento projekt v současné době nemá žádné členy, kteří by mohli být přidáni.
add_members: Add a new member to this project to select users again. configuration_modal: title: 'Konfigurovat tuto tabuli' diff --git a/modules/budgets/config/locales/crowdin/cs.yml b/modules/budgets/config/locales/crowdin/cs.yml index dfe97efb1f..e6ccd84326 100644 --- a/modules/budgets/config/locales/crowdin/cs.yml +++ b/modules/budgets/config/locales/crowdin/cs.yml @@ -69,5 +69,5 @@ cs: permission_view_budgets: "Zobrazit rozpočty" project_module_budgets: "Rozpočty" text_budget_reassign_to: "Reassign them to this budget:" - text_budget_delete: "Delete the budget from all work packages" - text_budget_destroy_assigned_wp: "There are %{count} work packages assigned to this budget. What do you want to do?" + text_budget_delete: "Odstranit rozpočet ze všech pracovních balíčků" + text_budget_destroy_assigned_wp: "K tomuto rozpočtu je přiřazeno %{count} pracovních balíčků. Co chcete udělat?" diff --git a/modules/grids/config/locales/crowdin/cs.yml b/modules/grids/config/locales/crowdin/cs.yml index e534aa35ee..63793c15d9 100644 --- a/modules/grids/config/locales/crowdin/cs.yml +++ b/modules/grids/config/locales/crowdin/cs.yml @@ -1,6 +1,6 @@ cs: grids: - label_widget_in_grid: "Widget contained in Grid %{grid_name}" + label_widget_in_grid: "Widget obsažený v mřížce %{grid_name}" activerecord: attributes: grids/grid: diff --git a/modules/grids/config/locales/crowdin/js-cs.yml b/modules/grids/config/locales/crowdin/js-cs.yml index 696b4cdda7..3686a677e3 100644 --- a/modules/grids/config/locales/crowdin/js-cs.yml +++ b/modules/grids/config/locales/crowdin/js-cs.yml @@ -6,7 +6,7 @@ cs: configure: 'Konfigurovat widget' upsale: text: "Some widgets, like the work package graph widget, are only available in the " - link: 'enterprise edition.' + link: 'Enterprise Edition.' widgets: custom_text: title: 'Vlastní text' @@ -15,32 +15,32 @@ cs: no_results: 'Zatím žádné dokumenty.' members: title: 'Členové' - no_results: 'No visible members.' + no_results: 'Žádní viditelní členové.' view_all_members: 'Zobrazit všechny členy' add: 'Člen' - too_many: 'Displaying %{count} of %{total} members.' + too_many: 'Zobrazuji %{count} z %{total} členů.' news: title: 'Novinky' at: 'v' no_results: 'Žádné novinky.' project_description: title: 'Popis projektu' - no_results: "No description has been written yet. One can be provided in the 'Project settings'." + no_results: "Zatím nebyl napsán žádný popis. Můžete ho uvést v \"Nastavení projektu\"." project_details: title: 'Detaily projektu' - no_results: 'No custom fields have been defined for projects.' + no_results: 'Pro projekty nebyla definována žádná vlastní pole.' project_status: title: 'Stav projektu' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' - not_set: 'Not set' + not_set: 'Nenastaveno' subprojects: title: 'Podprojekty' - no_results: 'No subprojects.' + no_results: 'Žádné podprojekty.' time_entries_current_user: - title: 'My spent time' - displayed_days: 'Days displayed in the widget:' + title: 'Můj strávený čas' + displayed_days: 'Dny zobrazené ve widgetu:' time_entries_list: title: 'Strávený čas (posledních 7 dní)' no_results: 'Žádné záznamy za posledních 7 dní.' @@ -53,11 +53,11 @@ cs: work_packages_watched: title: 'Mé sledované pracovní balíčky' work_packages_table: - title: 'Work packages table' + title: 'Tabulka pracovních balíčků' work_packages_graph: title: 'Work packages graph' work_packages_calendar: title: 'Kalendář' work_packages_overview: - title: 'Work packages overview' - placeholder: 'Click to edit ...' + title: 'Přehled pracovních balíčků' + placeholder: 'Kliekněte pro editaci' diff --git a/modules/job_status/config/locales/crowdin/js-cs.yml b/modules/job_status/config/locales/crowdin/js-cs.yml index 32257ce49d..0d4ea139f4 100644 --- a/modules/job_status/config/locales/crowdin/js-cs.yml +++ b/modules/job_status/config/locales/crowdin/js-cs.yml @@ -1,17 +1,17 @@ cs: js: job_status: - download_starts: 'The download should start automatically.' + download_starts: 'Stahování by mělo začít automaticky.' click_to_download: 'Klikněte zde na stažení' - title: 'Background job status' - redirect: 'You are being redirected.' + title: 'Stav úlohy na pozadí' + redirect: 'Jste přesměrováni.' redirect_link: 'Pro pokračování klikněte prosím zde.' - redirect_errors: 'Due to these errors, you will not be redirected automatically.' - errors: 'Some errors have occurred' + redirect_errors: 'Kvůli těmto chybám nebudete automaticky přesměrováni.' + errors: 'Došlo k několika chybám' generic_messages: - not_found: 'This job could not be found.' - in_queue: 'The job has been queued and will be processed shortly.' - in_process: 'The job is currently being processed.' + not_found: 'Tento úkol se nepodařilo najít.' + in_queue: 'Úkol byl zařazen do fronty a brzy bude zpracován.' + in_process: 'Tento úkol se v současné době zpracovává' error: 'Úlohu se nepodařilo dokončit.' - cancelled: 'The job has been cancelled due to an error.' + cancelled: 'úkol byl zrušen z důvodu chyby.' success: 'Operace proběhla úspěšně.' diff --git a/modules/ldap_groups/config/locales/crowdin/cs.yml b/modules/ldap_groups/config/locales/crowdin/cs.yml index 17dd775ae2..dc4dc41a59 100644 --- a/modules/ldap_groups/config/locales/crowdin/cs.yml +++ b/modules/ldap_groups/config/locales/crowdin/cs.yml @@ -4,24 +4,24 @@ cs: ldap_groups/synchronized_group: dn: 'DN' auth_source: 'Připojení LDAP' - sync_users: 'Sync users' + sync_users: 'Synchronizovat uživatele' ldap_groups/synchronized_filter: - filter_string: 'LDAP filter' + filter_string: 'LDAP filtr' auth_source: 'Připojení LDAP' group_name_attribute: "Group name attribute" - sync_users: 'Sync users' + sync_users: 'Synchronizovat uživatele' base_dn: "Search base DN" models: - ldap_groups/synchronized_group: 'Synchronized LDAP group' - ldap_groups/synchronized_filter: 'LDAP Group synchronization filter' + ldap_groups/synchronized_group: 'Synchronizovaná LDAP skupina' + ldap_groups/synchronized_filter: 'LDAP skupina synchronizační filtr' errors: models: ldap_groups/synchronized_filter: must_contain_base_dn: "Filter base DN must be contained within the LDAP connection's base DN" ldap_groups: - label_menu_item: 'LDAP group synchronization' + label_menu_item: 'Synchronizace skupiny LDAP' label_group_key: 'LDAP group filter key' - label_synchronize: 'Synchronize' + label_synchronize: 'Synchronizovat' settings: name_attribute: 'LDAP groups name attribute' name_attribute_text: 'The LDAP attribute used for naming the OpenProject group when created by a filter' @@ -36,8 +36,8 @@ cs: destroy: title: 'Remove synchronized filter %{name}' confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed." - removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!" - verification: "Enter the filter name %{name} to verify the deletion." + removed_groups: "Varování: Toto odstraní následující skupiny z OpenProject a odstraní je ze všech projektů!" + verification: "Zadejte název projektu %{name} pro potvrzení odstranění." form: group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.' filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.' @@ -45,7 +45,7 @@ cs: Enter the search base DN to use for this filter. It needs to be below the base DN of the selected LDAP connection. Leave this option empty to reuse the base DN of the connection synchronized_groups: - add_new: 'Add synchronized LDAP group' + add_new: 'Přidat synchronizovanou LDAP skupinu' destroy: title: 'Remove synchronized group %{name}' confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed." @@ -57,10 +57,10 @@ cs:
Groups are synchronized hourly through a cron job. Please see our documentation on this topic. - no_results: 'No synchronized groups found.' - no_members: 'This group has no synchronized members yet.' - plural: 'Synchronized LDAP groups' - singular: 'Synchronized LDAP group' + no_results: 'Nebyly nalezeny žádné synchronizované skupiny.' + no_members: 'Tato skupina zatím nemá žádné synchronizované členy.' + plural: 'Synchronizované LDAP skupiny' + singular: 'Synchronizovaná LDAP skupina' form: auth_source_text: 'Select which LDAP connection should be used.' sync_users_text: > diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml index 4c9b69b500..ccb4986ea7 100644 --- a/modules/meeting/config/locales/crowdin/cs.yml +++ b/modules/meeting/config/locales/crowdin/cs.yml @@ -33,20 +33,20 @@ cs: start_time_hour: "Čas začátku" errors: messages: - invalid_time_format: "is not a valid time. Required format: HH:MM" + invalid_time_format: "není platný čas. Požadovaný formát: HH:MM" models: meeting_agenda: "Agenda" meeting_minutes: "Zápis" description_attended: "zúčastněn" description_invite: "pozván" events: - meeting: Meeting edited - meeting_agenda: Meeting agenda edited - meeting_agenda_closed: Meeting agenda closed - meeting_agenda_opened: Meeting agenda opened - meeting_minutes: Meeting minutes edited - meeting_minutes_created: Meeting minutes created - error_notification_with_errors: "Failed to send notification. The following recipients could not be notified: %{recipients}" + meeting: Schůzka upravena + meeting_agenda: Agenda schůzky upravena + meeting_agenda_closed: Agenda schůzky uzavřena + meeting_agenda_opened: Agenda schůzky otevřena + meeting_minutes: Zápis ze zasedání byl upraven + meeting_minutes_created: Zápisy ze zasedání byly vytvořeny + error_notification_with_errors: "Odeslání oznámení se nezdařilo. Následující příjemci nelze upozornit: %{recipients}" label_meeting: "Schůzka" label_meeting_plural: "Schůzky" label_meeting_new: "Nová schůzka" @@ -58,31 +58,31 @@ cs: label_meeting_agenda_close: "Uzavřete agendu pro vytvoření zápisu" label_meeting_date_time: "Datum/Čas" label_meeting_diff: "Rozdíl" - label_notify: "Send for review" - label_icalendar: "Send iCalendar" + label_notify: "Odeslat k posouzení" + label_icalendar: "Odeslat iCalendar" label_version: "Verze" label_time_zone: "Časové pásmo" label_start_date: "Datum zahájení" meeting: - copied: "Copied from Meeting #%{id}" - notice_successful_notification: "Notification sent successfully" - notice_timezone_missing: No time zone is set and %{zone} is assumed. To choose your time zone, please click here. - permission_create_meetings: "Create meetings" - permission_edit_meetings: "Edit meetings" - permission_delete_meetings: "Delete meetings" - permission_view_meetings: "View meetings" - permission_create_meeting_agendas: "Manage agendas" + copied: "Zkopírováno ze schůzky #%{id}" + notice_successful_notification: "Oznámení bylo úspěšně odesláno" + notice_timezone_missing: Není nastaveno žádné časové pásmo a předpokládá se %{zone} . Chcete-li vybrat časové pásmo, klikněte prosím zde. + permission_create_meetings: "Vytvořit schůzku\n" + permission_edit_meetings: "Upravit schůzku" + permission_delete_meetings: "Smazat schůzku" + permission_view_meetings: "Zobrazit schůzky" + permission_create_meeting_agendas: "Správa agend" permission_close_meeting_agendas: "Close agendas" permission_send_meeting_agendas_notification: "Send review notification for agendas" permission_create_meeting_minutes: "Manage minutes" permission_send_meeting_minutes_notification: "Send review notification for minutes" - permission_meetings_send_invite: "Invite users to meetings" + permission_meetings_send_invite: "Pozvat uživatele na schůzky" permission_send_meeting_agendas_icalendar: "Send meeting agenda as calendar entry" project_module_meetings: "Schůzky" - text_duration_in_hours: "Duration in hours" + text_duration_in_hours: "Doba trvání v hodinách" text_in_hours: "in hours" text_meeting_agenda_for_meeting: 'agenda for the meeting "%{meeting}"' - text_meeting_closing_are_you_sure: "Are you sure you want to close the meeting?" + text_meeting_closing_are_you_sure: "Opravdu chcete tuto schůzku zavřít?" text_meeting_agenda_open_are_you_sure: "This will overwrite all changes in the minutes! Do you want to continue?" text_meeting_minutes_for_meeting: 'minutes for the meeting "%{meeting}"' text_review_meeting_agenda: "%{author} has put the %{link} up for review." diff --git a/modules/openid_connect/config/locales/crowdin/cs.yml b/modules/openid_connect/config/locales/crowdin/cs.yml index 7f6d534d9b..78d528f5e2 100644 --- a/modules/openid_connect/config/locales/crowdin/cs.yml +++ b/modules/openid_connect/config/locales/crowdin/cs.yml @@ -5,15 +5,15 @@ cs: attributes: openid_connect/provider: name: Jméno - display_name: Display name + display_name: Zobrazovaný název identifier: Identifikátor secret: Secret scope: Rozsah openid_connect: - menu_title: OpenID providers + menu_title: Poskytovatelé OpenID providers: - label_add_new: Add a new OpenID provider - label_edit: Edit OpenID provider %{name} - no_results_table: No providers have been defined yet. - plural: OpenID providers - singular: OpenID provider + label_add_new: Přidat nového poskytovatele OpenID + label_edit: Upravit poskytovatele OpenID %{name} + no_results_table: Zatím nebyli definováni žádní poskytovatelé. + plural: Poskytovatelé OpenID + singular: Poskytovatel OpenID diff --git a/modules/overviews/config/locales/crowdin/cs.yml b/modules/overviews/config/locales/crowdin/cs.yml index 6db38b896d..85460336b8 100644 --- a/modules/overviews/config/locales/crowdin/cs.yml +++ b/modules/overviews/config/locales/crowdin/cs.yml @@ -1,4 +1,4 @@ cs: overviews: label: 'Přehled' - permission_manage_overview: 'Manage overview page' + permission_manage_overview: 'Správa přehledové stránky ' diff --git a/modules/pdf_export/config/locales/crowdin/cs.yml b/modules/pdf_export/config/locales/crowdin/cs.yml index b3431c1595..bd39fbbb98 100644 --- a/modules/pdf_export/config/locales/crowdin/cs.yml +++ b/modules/pdf_export/config/locales/crowdin/cs.yml @@ -20,32 +20,32 @@ #See COPYRIGHT and LICENSE files for more details. #++ cs: - error_can_not_delete_export_card_configuration: "This config cannot be deleted." - error_can_not_change_name_of_default_configuration: "The name of the default config cannot be changed." - label_backlogs_export_card_config_select: "Select export card configuration" + error_can_not_delete_export_card_configuration: "Tuto konfiguraci nelze odstranit." + error_can_not_change_name_of_default_configuration: "Název výchozí konfigurace nelze změnit." + label_backlogs_export_card_config_select: "Vyberte konfiguraci karty exportu " label_backlogs_export_card_export: "Export" label_export_card_configuration_new: "New Export Card Config" - label_export_card_configuration: "Export Card Config" - label_export_card_configuration_plural: "Export Card Configs" + label_export_card_configuration: "Konfigurace karty exportu " + label_export_card_configuration_plural: "Konfigurace karet exportu " label_export_card_activate: "Aktivovat" - label_export_card_deactivate: "De-activate" - notice_export_card_configuration_activated: "Config successfully activated" - notice_export_card_configuration_deactivated: "Config successfully de-activated" - error_can_not_activate_export_card_configuration: "This config cannot be activated" - error_can_not_deactivate_export_card_configuration: "This config cannot be de-activated" + label_export_card_deactivate: "De-aktivovat" + notice_export_card_configuration_activated: "Nastavení bylo úspěšně aktivováno" + notice_export_card_configuration_deactivated: "Konfigurace úspěšně deaktivována" + error_can_not_activate_export_card_configuration: "Tuto konfiguraci nelze aktivovat" + error_can_not_deactivate_export_card_configuration: "Tuto konfiguraci nelze deaktivovat" validation_error_required_keys_not_present: "Required key(s) not present:" - validation_error_yaml_is_badly_formed: "has no valid YAML format." + validation_error_yaml_is_badly_formed: "nemá platný formát YAML." validation_error_uknown_key: "Unknown key:" yaml_error: "YAML error:" help_link_rows_format: "Rows Formatting" export_config_per_page: "Na stránku" - export_config_page_size: "Page size" - export_config_orientation: "Orientation" + export_config_page_size: "Velikost stránky" + export_config_orientation: "Orientace" export_config_rows: "Řádky" activerecord: attributes: export_card_configuration: rows: "Řádky" per_page: "Na stránku" - page_size: "Page size" - orientation: "Orientation" + page_size: "Velikost stránky" + orientation: "Orientace" diff --git a/modules/recaptcha/config/locales/crowdin/cs.yml b/modules/recaptcha/config/locales/crowdin/cs.yml index 91cf1438f9..af12924b49 100644 --- a/modules/recaptcha/config/locales/crowdin/cs.yml +++ b/modules/recaptcha/config/locales/crowdin/cs.yml @@ -6,9 +6,9 @@ cs: verify_account: "Ověřte svůj účet" error_captcha: "Váš účet nemohl být ověřen. Kontaktujte prosím administrátora." settings: - website_key: 'Website key' - website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.' - secret_key: 'Secret key' + website_key: 'Klíč webové stránky' + website_key_text: 'Zadejte webový klíč vytvořený v reCAPTCHA admin konzoli pro tuto doménu.' + secret_key: 'Secret Key' secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.' type: 'Použít reCAPTCHA' type_disabled: 'Zakázat reCAPTCHA' diff --git a/modules/reporting/config/locales/crowdin/cs.yml b/modules/reporting/config/locales/crowdin/cs.yml index f8a2b2523b..ea7bc324e6 100644 --- a/modules/reporting/config/locales/crowdin/cs.yml +++ b/modules/reporting/config/locales/crowdin/cs.yml @@ -27,57 +27,57 @@ cs: label_cost_report_plural: "Výkazy nákladů" description_drill_down: "Zobrazit detaily" description_filter_selection: "Výběr" - description_multi_select: "Show multiselect" + description_multi_select: "Zobrazit multiselect" description_remove_filter: "Odstranit filtr" information_restricted_depending_on_permission: "Tato stránka může obsahovat omezené informace v závislosti na vašich oprávněních." label_click_to_edit: "Kliekněte pro editaci." label_closed: "uzavřeno" label_columns: "Sloupce" label_cost_entry_attributes: "Cost entry attributes" - label_days_ago: "during the last days" + label_days_ago: "za poslední dny" label_entry: "Cost entry" - label_filter_text: "Filter text" + label_filter_text: "Filtrovat text" label_filter_value: "Hodnota" label_filters: "Filtrovat" label_greater: ">" label_is_not_project_with_subprojects: "není (včetně podprojektů)" label_is_project_with_subprojects: "je (včetně podprojektů)" - label_work_package_attributes: "Work package attributes" + label_work_package_attributes: "Atributy pracovního balíčku" label_less: "<" - label_money: "Cash value" - label_month_reporting: "Month (Spent)" - label_new_report: "New cost report" + label_money: "Hotovostní hodnota" + label_month_reporting: "Měsíc (stráveno)" + label_new_report: "Nový výkaz nákladů" label_open: "otevřít" label_operator: "Operátor" - label_private_report_plural: "Private cost reports" + label_private_report_plural: "soukromý výkaz nákladů" label_progress_bar_explanation: "Generování sestavy..." - label_public_report_plural: "Public cost reports" - label_really_delete_question: "Are you sure you want to delete this report?" + label_public_report_plural: "veřejný výkaz nákladů" + label_really_delete_question: "Jste si jisti, že chcete odstranit tento report?" label_rows: "Řádky" - label_saving: "Saving ..." - label_spent_on_reporting: "Date (Spent)" - label_sum: "Sum" + label_saving: "Ukládání..." + label_spent_on_reporting: "Datum (stráveno)" + label_sum: "Suma" label_units: "Jednotky" - label_week_reporting: "Week (Spent)" - label_year_reporting: "Year (Spent)" + label_week_reporting: "Týden (stráveno)" + label_year_reporting: "Rok (stráveno)" label_count: "Počet" label_filter: "Filtr" label_filter_add: "Přidat filtr" label_filter_plural: "Filtry" label_group_by: "Seskupit podle" - label_group_by_add: "Add Group-by Attribute" - label_inactive: "«inactive»" + label_group_by_add: "Přidat skupinový atribut" + label_inactive: "„neaktivní“" label_no: "Ne" label_none: "(žádná data)" - label_no_reports: "There are no cost reports yet." + label_no_reports: "Zatím nejsou k dispozici žádné výkazy nákladů." label_report: "Hlášení" label_yes: "Ano" - load_query_question: "Report will have %{size} table cells and may take some time to render. Do you still want to try rendering it?" - permission_save_cost_reports: "Save public cost reports" - permission_save_private_cost_reports: "Save private cost reports" + load_query_question: "Report bude obsahovat %{size} buněk tabulky a může chvíli trvat, než se vykreslí. Chcete to přesto zkusit vykreslit?" + permission_save_cost_reports: "Uložit veřejné výkazy nákladů" + permission_save_private_cost_reports: "Uložit soukromé výkazy nákladů" project_module_reporting_module: "Výkazy nákladů" - text_costs_are_rounded_note: "Displayed values are rounded. All calculations are based on the non-rounded values." - toggle_multiselect: "activate/deactivate multiselect" + text_costs_are_rounded_note: "Zobrazené hodnoty jsou zaokrouhleny. Všechny výpočty jsou založeny na \nnezaokrouhlených hodnotách." + toggle_multiselect: "aktivovat/deaktivovat multiselect" units: "Jednotky" validation_failure_date: "není platné datum" validation_failure_integer: "není platné číslo" diff --git a/modules/two_factor_authentication/config/locales/crowdin/cs.yml b/modules/two_factor_authentication/config/locales/crowdin/cs.yml index bfe7d5b618..60702bc1f6 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/cs.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/cs.yml @@ -71,7 +71,7 @@ cs: text_2fa_enabled: 'Při každém přihlášení bude tento uživatel požádán, aby zadal jednorázové heslo z jeho výchozího 2FA zařízení.' text_2fa_disabled: "Uživatel si nenastavil 2FA zařízení prostřednictvím stránky 'Můj účet'" upsale: - title: 'Two-factor authentication is an enterprise feature' + title: 'Dvoufaktorové ověření je dostupne v Enterprise verzi' description: 'Strenghten your internal or external authentication mechanisms with a second factor.' backup_codes: none_found: Pro tento účet neexistují žádné záložní kódy. @@ -87,24 +87,24 @@ cs: keep_safe_warning: 'Either save them in your password manager, or print this page and put in a safe place.' regenerate_warning: 'Warning: If you have created backup codes before, they will be invalidated and will no longer work.' devices: - add_new: 'Add new 2FA device' - register: 'Register device' - confirm_default: 'Confirm changing default device' - confirm_device: 'Confirm device' - confirm_now: 'Not confirmed, click here to activate' - cannot_delete_default: 'Cannot delete default device' - make_default_are_you_sure: 'Are you sure you want to make this 2FA device your default?' - make_default_failed: 'Failed to update the default 2FA device.' - deletion_are_you_sure: 'Are you sure you want to delete this 2FA device?' - registration_complete: '2FA device registration complete!' + add_new: 'Přidat nové 2FA zařízení' + register: 'Registrovat zařízení' + confirm_default: 'Potvrdit změnu výchozího zařízení' + confirm_device: 'Potvrdit zařízení' + confirm_now: 'Nepotvrzeno, klikněte zde pro aktivaci' + cannot_delete_default: 'Nelze odstranit výchozí zařízení' + make_default_are_you_sure: 'Jste si jisti, že chcete nastavit toto 2FA zařízení?' + make_default_failed: 'Nepodařilo se aktualizovat výchozí 2FA zařízení.' + deletion_are_you_sure: 'Jste si jisti, že chcete odstranit toto 2FA zařízení?' + registration_complete: 'Registrace 2FA zařízení dokončena!' registration_failed_token_invalid: '2FA device registration failed, the token was invalid.' registration_failed_update: '2FA device registration failed, the token was valid but the device could not be updated.' - confirm_send_failed: 'Confirmation of your 2FA device failed.' - button_complete_registration: 'Complete 2FA registration' + confirm_send_failed: 'Potvrzení 2FA zařízení se nezdařilo.' + button_complete_registration: 'Dokončete 2FA registraci' text_confirm_to_complete_html: "Please complete the registration of your device %{identifier} by entering a one-time password from your default device." text_confirm_to_change_default_html: "Please confirm changing your default device to %{new_identifier} by entering a one-time password from your current default device." text_identifier: 'You can give the device a custom identifier using this field.' - failed_to_delete: 'Failed to delete 2FA device.' + failed_to_delete: 'Smazání 2FA zařízení se nezdařilo.' is_default_cannot_delete: 'The device is marked as default and cannot be deleted due to an active security policy. Mark another device as default before deleting.' not_existing: 'No 2FA device has been registered for your account.' request_2fa: Please enter the code from your %{device_name} to verify your identity. @@ -125,11 +125,11 @@ cs: Register an application authenticator for use with OpenProject using the time-based one-time password authentication standard. Common examples are Google Authenticator or Authy. sms: - title: 'Use your mobile phone' - redacted_identifier: 'Mobile device (%{redacted_number})' + title: 'Použijte svůj mobilní telefon' + redacted_identifier: 'Mobilní zařízení (%{redacted_number})' request_2fa_identifier: '%{redacted_identifier}, we sent you an authentication code via %{delivery_channel}' description: | - Register your mobile phone number for delivery of OpenProject one-time passwords. + Zaregistrujte své mobilní telefonní číslo pro jednorázové doručení OpenProject hesel. sns: delivery_failed: 'SNS delivery failed:' message_bird: @@ -141,35 +141,35 @@ cs: totp: 'Ověřovací aplikace' sns: 'Amazon SNS' resdt: 'SMS Rest API' - mobile_transmit_notification: "A one-time password has been sent to your cell phone." - label_two_factor_authentication: 'Two-factor authentication' + mobile_transmit_notification: "Na váš mobilní telefon bylo odesláno jednorázové heslo." + label_two_factor_authentication: 'Dvoufázové ověření' forced_registration: required_to_add_device: 'An active security policy requires you to enable two-factor authentication. Please use the following form to register a device.' remember: active_session_notice: > Your account has an active remember cookie valid until %{expires_on}. This cookie allows you to log in without a second factor to your account until that time. other_active_session_notice: Your account has an active remember cookie on another session. - label: 'Remember' + label: 'Zapamatovat' clear_cookie: 'Click here to remove all remembered 2FA sessions.' cookie_removed: 'All remembered 2FA sessions have been removed.' dont_ask_again: "Create cookie to remember 2FA authentication on this client for %{days} days." - field_phone: "Cell phone" + field_phone: "Mobilní telefon" field_otp: "Jednorázové heslo" - notice_account_otp_invalid: "Invalid one-time password." - notice_account_otp_expired: "The one-time password you entered expired." + notice_account_otp_invalid: "Neplatné jednorázové heslo." + notice_account_otp_expired: "Zadané jednorázové heslo vypršelo." notice_developer_strategy_otp: "Developer strategy generated the following one-time password: %{token} (Channel: %{channel})" - notice_account_otp_send_failed: "Your one-time password could not be sent." - notice_account_has_no_phone: "No cell phone number is associated with your account." + notice_account_otp_send_failed: "Vaše jednorázové heslo nelze odeslat." + notice_account_has_no_phone: "S vaším účtem není přiřazeno žádné telefonní číslo." label_expiration_hint: "%{date} or on logout" label_actions: 'Akce' label_confirmed: 'Potvrzený' button_continue: 'Pokračovat' - button_make_default: 'Mark as default' - label_unverified_phone: "Cell phone not yet verified" - notice_phone_number_format: "Please enter the number in the following format: +XX XXXXXXXX." - text_otp_not_receive: "Other verification methods" - text_send_otp_again: "Resend one-time password by:" - button_resend_otp_form: "Resend" - button_otp_by_voice: "Voice call" + button_make_default: 'Označit jako výchozí' + label_unverified_phone: "Mobilní telefon ještě nebyl ověřen" + notice_phone_number_format: "Zadejte číslo v následujícím formátu: +XX XXXXXXXX." + text_otp_not_receive: "Jiné metody ověřování" + text_send_otp_again: "Znovu odeslat jednorázové heslo přes:" + button_resend_otp_form: "Znovu odeslat" + button_otp_by_voice: "Hovor" button_otp_by_sms: "SMS" label_otp_channel: "Delivery channel" diff --git a/modules/webhooks/config/locales/crowdin/cs.yml b/modules/webhooks/config/locales/crowdin/cs.yml index e98fe7a86d..a313d41238 100644 --- a/modules/webhooks/config/locales/crowdin/cs.yml +++ b/modules/webhooks/config/locales/crowdin/cs.yml @@ -9,51 +9,51 @@ cs: webhooks/log: event_name: 'Název události' url: 'Payload URL' - response_code: 'Response code' - response_body: 'Response' + response_code: 'Kód odpovědi' + response_body: 'Odpověď' models: - webhooks/outgoing_webhook: "Outgoing webhook" + webhooks/outgoing_webhook: "Odchozí webhook" webhooks: singular: Webhook - plural: Webhooks + plural: Webhooky resources: time_entry: name: "Vstup času" outgoing: - no_results_table: No webhooks have been defined yet. - label_add_new: Add new webhook - label_edit: Edit webhook + no_results_table: Zatím nebyly definovány žádné webhooky + label_add_new: Přidat nový webhook + label_edit: Upravit webhook label_event_resources: Event resources events: created: "Vytvořeno" updated: "Aktualizováno" status: - enabled: 'Webhook is enabled' - disabled: 'Webhook is disabled' + enabled: 'webhook je povolen' + disabled: 'webhook je zakázán' enabled_text: 'The webhook will emit payloads for the defined events below.' - disabled_text: 'Click the edit button to activate the webhook.' + disabled_text: 'Klikněte na tlačítko upravit pro aktivaci webhooku.' deliveries: no_results_table: No deliveries have been made for this webhook. title: 'Recent deliveries' - time: 'Delivery time' + time: 'Dodací doba' form: introduction: > Send a POST request to the payload URL below for any event in the project you're subscribed to. Payload will correspond to the APIv3 representation of the object being modified. - apiv3_doc_url: For more information, visit the API documentation + apiv3_doc_url: Pro více informací navštivte dokumentaci API description: - placeholder: 'Optional description for the webhook.' + placeholder: 'Volitelný popis webhooku.' enabled: description: > When checked, the webhook will trigger on the selected events. Uncheck to disable the webhook. events: - title: 'Enabled events' + title: 'Povolené události' project_ids: title: 'Povolit projekty' description: 'Select for which projects this webhook should be executed for.' - all: 'All projects' - selected: 'Selected projects only' + all: 'Všechny projekty' + selected: 'Pouze vybrané projekty' selected_project_ids: - title: 'Selected projects' + title: 'Vybrané projekty' secret: description: > If set, this secret value is used by OpenProject to sign the webhook payload. diff --git a/modules/xls_export/config/locales/crowdin/cs.yml b/modules/xls_export/config/locales/crowdin/cs.yml index 865493e2ff..885e43ae5f 100644 --- a/modules/xls_export/config/locales/crowdin/cs.yml +++ b/modules/xls_export/config/locales/crowdin/cs.yml @@ -1,13 +1,13 @@ cs: - export_to_excel: "Export XLS" - print_with_description: "Print preview with description" + export_to_excel: "Exportovat XLS" + print_with_description: "Tisk náhledu s popisem" sentence_separator_or: "nebo" - different_formats: Different formats + different_formats: Různé formáty export: format: xls: "XLS" xls_with_descriptions: "XLS s popisem" - xls_with_relations: "XLS with relations" + xls_with_relations: "XLS se vztahy" xls_export: - child_of: child of - parent_of: parent of + child_of: potomek + parent_of: rodič From 0818233f8ed36eaeb23580cdfe6579bf3ed0742b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Feb 2022 05:26:46 +0000 Subject: [PATCH 091/118] Bump rubocop from 1.25.0 to 1.25.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.25.0 to 1.25.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.25.0...v1.25.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8033a8fecb..409b92db87 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -822,7 +822,7 @@ GEM rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.10.3) - rubocop (1.25.0) + rubocop (1.25.1) parallel (~> 1.10) parser (>= 3.1.0.0) rainbow (>= 2.2.2, < 4.0) From acae34038ce9ab222e0a596d8ff30d61ba17f120 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Mon, 7 Feb 2022 03:04:55 +0000 Subject: [PATCH 092/118] update locales from crowdin [ci skip] --- config/locales/crowdin/cs.yml | 6 +- config/locales/crowdin/js-cs.yml | 2 +- config/locales/crowdin/js-lol.yml | 1906 ++++++++--------- .../avatars/config/locales/crowdin/js-no.yml | 4 +- .../boards/config/locales/crowdin/js-cs.yml | 2 +- 5 files changed, 960 insertions(+), 960 deletions(-) diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index f06723f9e7..c533c55635 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -1691,7 +1691,7 @@ cs: label_my_queries: "Moje vlastní dotazy" label_name: "Jméno" label_never: "Nikdy" - label_new: "Nové" + label_new: "Nový" label_new_features: "Nové funkce" label_new_statuses_allowed: "Nové povolené stavy" label_news_singular: "Novinky" @@ -1932,8 +1932,8 @@ cs: label_workflow_plural: "Pracovní vrstvy" label_workflow_summary: "Souhrn" label_x_closed_work_packages_abbr: - one: "1 uzavřena" - other: "%{count} uzavřeny" + one: "1 uzavřeno" + other: "%{count} uzavřených" zero: "0 uzavřeno" label_x_comments: one: "1 komentář" diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index f7845d99ff..d567b2c535 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -328,7 +328,7 @@ cs: label_details: "Podrobnosti" label_display: "Zobrazit" label_cancel_comment: "Stornovat komentář" - label_closed_work_packages: "closed" + label_closed_work_packages: "uzavřeno" label_collapse: "Sbalit" label_collapsed: "sbalené" label_collapse_all: "Sbalit vše" diff --git a/config/locales/crowdin/js-lol.yml b/config/locales/crowdin/js-lol.yml index b6c0853962..d15b64adc6 100644 --- a/config/locales/crowdin/js-lol.yml +++ b/config/locales/crowdin/js-lol.yml @@ -22,1140 +22,1140 @@ lol: js: ajax: - hide: "crwdns706230:0crwdne706230:0" - loading: "crwdns706232:0crwdne706232:0" + hide: "crwdns708340:0crwdne708340:0" + loading: "crwdns708342:0crwdne708342:0" attachments: draggable_hint: | - crwdns706234:0crwdne706234:0 + crwdns708344:0crwdne708344:0 autocomplete_select: placeholder: - multi: "crwdns706236:0%{name}crwdne706236:0" - single: "crwdns706238:0%{name}crwdne706238:0" - remove: "crwdns706240:0%{name}crwdne706240:0" - active: "crwdns706242:0%{label}crwdnd706242:0%{name}crwdne706242:0" + multi: "crwdns708346:0%{name}crwdne708346:0" + single: "crwdns708348:0%{name}crwdne708348:0" + remove: "crwdns708350:0%{name}crwdne708350:0" + active: "crwdns708352:0%{label}crwdnd708352:0%{name}crwdne708352:0" backup: - attachments_disabled: crwdns706244:0crwdne706244:0 + attachments_disabled: crwdns708354:0crwdne708354:0 info: > - crwdns706246:0crwdne706246:0 + crwdns708356:0crwdne708356:0 note: > - crwdns706248:0crwdne706248:0 - last_backup: crwdns706250:0crwdne706250:0 - last_backup_from: crwdns706252:0crwdne706252:0 - title: crwdns706254:0crwdne706254:0 - options: crwdns706256:0crwdne706256:0 - include_attachments: crwdns706258:0crwdne706258:0 - download_backup: crwdns706260:0crwdne706260:0 - request_backup: crwdns706262:0crwdne706262:0 - close_popup_title: "crwdns706264:0crwdne706264:0" - close_filter_title: "crwdns706266:0crwdne706266:0" - close_form_title: "crwdns706268:0crwdne706268:0" - button_add_watcher: "crwdns706270:0crwdne706270:0" - button_add: "crwdns706272:0crwdne706272:0" - button_back: "crwdns706274:0crwdne706274:0" - button_back_to_list_view: "crwdns706276:0crwdne706276:0" - button_cancel: "crwdns706278:0crwdne706278:0" - button_close: "crwdns706280:0crwdne706280:0" - button_change_project: "crwdns706282:0crwdne706282:0" - button_check_all: "crwdns706284:0crwdne706284:0" - button_configure-form: "crwdns706286:0crwdne706286:0" - button_confirm: "crwdns706288:0crwdne706288:0" - button_continue: "crwdns706290:0crwdne706290:0" - button_copy: "crwdns706292:0crwdne706292:0" - button_custom-fields: "crwdns706294:0crwdne706294:0" - button_delete: "crwdns706296:0crwdne706296:0" - button_delete_watcher: "crwdns706298:0crwdne706298:0" - button_details_view: "crwdns706300:0crwdne706300:0" - button_duplicate: "crwdns706302:0crwdne706302:0" - button_edit: "crwdns706304:0crwdne706304:0" - button_filter: "crwdns706306:0crwdne706306:0" - button_collapse_all: "crwdns706308:0crwdne706308:0" - button_expand_all: "crwdns706310:0crwdne706310:0" - button_advanced_filter: "crwdns706312:0crwdne706312:0" - button_list_view: "crwdns706314:0crwdne706314:0" - button_show_view: "crwdns706316:0crwdne706316:0" - button_log_time: "crwdns706318:0crwdne706318:0" - button_more: "crwdns706320:0crwdne706320:0" - button_open_details: "crwdns706322:0crwdne706322:0" - button_close_details: "crwdns706324:0crwdne706324:0" - button_open_fullscreen: "crwdns706326:0crwdne706326:0" - button_show_cards: "crwdns706328:0crwdne706328:0" - button_show_list: "crwdns706330:0crwdne706330:0" - button_quote: "crwdns706332:0crwdne706332:0" - button_save: "crwdns706334:0crwdne706334:0" - button_settings: "crwdns706336:0crwdne706336:0" - button_uncheck_all: "crwdns706338:0crwdne706338:0" - button_update: "crwdns706340:0crwdne706340:0" - button_export-pdf: "crwdns706342:0crwdne706342:0" - button_export-atom: "crwdns706344:0crwdne706344:0" - button_create: "crwdns706346:0crwdne706346:0" + crwdns708358:0crwdne708358:0 + last_backup: crwdns708360:0crwdne708360:0 + last_backup_from: crwdns708362:0crwdne708362:0 + title: crwdns708364:0crwdne708364:0 + options: crwdns708366:0crwdne708366:0 + include_attachments: crwdns708368:0crwdne708368:0 + download_backup: crwdns708370:0crwdne708370:0 + request_backup: crwdns708372:0crwdne708372:0 + close_popup_title: "crwdns708374:0crwdne708374:0" + close_filter_title: "crwdns708376:0crwdne708376:0" + close_form_title: "crwdns708378:0crwdne708378:0" + button_add_watcher: "crwdns708380:0crwdne708380:0" + button_add: "crwdns708382:0crwdne708382:0" + button_back: "crwdns708384:0crwdne708384:0" + button_back_to_list_view: "crwdns708386:0crwdne708386:0" + button_cancel: "crwdns708388:0crwdne708388:0" + button_close: "crwdns708390:0crwdne708390:0" + button_change_project: "crwdns708392:0crwdne708392:0" + button_check_all: "crwdns708394:0crwdne708394:0" + button_configure-form: "crwdns708396:0crwdne708396:0" + button_confirm: "crwdns708398:0crwdne708398:0" + button_continue: "crwdns708400:0crwdne708400:0" + button_copy: "crwdns708402:0crwdne708402:0" + button_custom-fields: "crwdns708404:0crwdne708404:0" + button_delete: "crwdns708406:0crwdne708406:0" + button_delete_watcher: "crwdns708408:0crwdne708408:0" + button_details_view: "crwdns708410:0crwdne708410:0" + button_duplicate: "crwdns708412:0crwdne708412:0" + button_edit: "crwdns708414:0crwdne708414:0" + button_filter: "crwdns708416:0crwdne708416:0" + button_collapse_all: "crwdns708418:0crwdne708418:0" + button_expand_all: "crwdns708420:0crwdne708420:0" + button_advanced_filter: "crwdns708422:0crwdne708422:0" + button_list_view: "crwdns708424:0crwdne708424:0" + button_show_view: "crwdns708426:0crwdne708426:0" + button_log_time: "crwdns708428:0crwdne708428:0" + button_more: "crwdns708430:0crwdne708430:0" + button_open_details: "crwdns708432:0crwdne708432:0" + button_close_details: "crwdns708434:0crwdne708434:0" + button_open_fullscreen: "crwdns708436:0crwdne708436:0" + button_show_cards: "crwdns708438:0crwdne708438:0" + button_show_list: "crwdns708440:0crwdne708440:0" + button_quote: "crwdns708442:0crwdne708442:0" + button_save: "crwdns708444:0crwdne708444:0" + button_settings: "crwdns708446:0crwdne708446:0" + button_uncheck_all: "crwdns708448:0crwdne708448:0" + button_update: "crwdns708450:0crwdne708450:0" + button_export-pdf: "crwdns708452:0crwdne708452:0" + button_export-atom: "crwdns708454:0crwdne708454:0" + button_create: "crwdns708456:0crwdne708456:0" card: - add_new: 'crwdns706348:0crwdne706348:0' + add_new: 'crwdns708458:0crwdne708458:0' highlighting: - inline: 'crwdns706350:0crwdne706350:0' - entire_card_by: 'crwdns706352:0crwdne706352:0' - remove_from_list: 'crwdns706354:0crwdne706354:0' - caption_rate_history: "crwdns706356:0crwdne706356:0" + inline: 'crwdns708460:0crwdne708460:0' + entire_card_by: 'crwdns708462:0crwdne708462:0' + remove_from_list: 'crwdns708464:0crwdne708464:0' + caption_rate_history: "crwdns708466:0crwdne708466:0" clipboard: - browser_error: "crwdns706358:0crwdne706358:0" - copied_successful: "crwdns706360:0crwdne706360:0" + browser_error: "crwdns708468:0crwdne708468:0" + copied_successful: "crwdns708470:0crwdne708470:0" chart: - type: 'crwdns706362:0crwdne706362:0' - axis_criteria: 'crwdns706364:0crwdne706364:0' - modal_title: 'crwdns706366:0crwdne706366:0' + type: 'crwdns708472:0crwdne708472:0' + axis_criteria: 'crwdns708474:0crwdne708474:0' + modal_title: 'crwdns708476:0crwdne708476:0' types: - line: 'crwdns706368:0crwdne706368:0' - horizontal_bar: 'crwdns706370:0crwdne706370:0' - bar: 'crwdns706372:0crwdne706372:0' - pie: 'crwdns706374:0crwdne706374:0' - doughnut: 'crwdns706376:0crwdne706376:0' - radar: 'crwdns706378:0crwdne706378:0' - polar_area: 'crwdns706380:0crwdne706380:0' + line: 'crwdns708478:0crwdne708478:0' + horizontal_bar: 'crwdns708480:0crwdne708480:0' + bar: 'crwdns708482:0crwdne708482:0' + pie: 'crwdns708484:0crwdne708484:0' + doughnut: 'crwdns708486:0crwdne708486:0' + radar: 'crwdns708488:0crwdne708488:0' + polar_area: 'crwdns708490:0crwdne708490:0' tabs: - graph_settings: 'crwdns706382:0crwdne706382:0' - dataset: 'crwdns706384:0%{number}crwdne706384:0' + graph_settings: 'crwdns708492:0crwdne708492:0' + dataset: 'crwdns708494:0%{number}crwdne708494:0' errors: - could_not_load: 'crwdns706386:0crwdne706386:0' - description_available_columns: "crwdns706388:0crwdne706388:0" - description_current_position: "crwdns706390:0crwdne706390:0" - description_select_work_package: "crwdns706392:0%{id}crwdne706392:0" - description_selected_columns: "crwdns706394:0crwdne706394:0" - description_subwork_package: "crwdns706396:0%{id}crwdne706396:0" + could_not_load: 'crwdns708496:0crwdne708496:0' + description_available_columns: "crwdns708498:0crwdne708498:0" + description_current_position: "crwdns708500:0crwdne708500:0" + description_select_work_package: "crwdns708502:0%{id}crwdne708502:0" + description_selected_columns: "crwdns708504:0crwdne708504:0" + description_subwork_package: "crwdns708506:0%{id}crwdne708506:0" editor: - preview: 'crwdns706398:0crwdne706398:0' - source_code: 'crwdns706400:0crwdne706400:0' - error_saving_failed: 'crwdns706402:0%{error}crwdne706402:0' - ckeditor_error: 'crwdns706404:0crwdne706404:0' + preview: 'crwdns708508:0crwdne708508:0' + source_code: 'crwdns708510:0crwdne708510:0' + error_saving_failed: 'crwdns708512:0%{error}crwdne708512:0' + ckeditor_error: 'crwdns708514:0crwdne708514:0' mode: - manual: 'crwdns706406:0crwdne706406:0' - wysiwyg: 'crwdns706408:0crwdne706408:0' + manual: 'crwdns708516:0crwdne708516:0' + wysiwyg: 'crwdns708518:0crwdne708518:0' macro: - error: 'crwdns706410:0%{message}crwdne706410:0' + error: 'crwdns708520:0%{message}crwdne708520:0' attribute_reference: - macro_help_tooltip: 'crwdns706412:0crwdne706412:0' - not_found: 'crwdns706414:0crwdne706414:0' - invalid_attribute: "crwdns706416:0%{name}crwdne706416:0" + macro_help_tooltip: 'crwdns708522:0crwdne708522:0' + not_found: 'crwdns708524:0crwdne708524:0' + invalid_attribute: "crwdns708526:0%{name}crwdne708526:0" child_pages: - button: 'crwdns706418:0crwdne706418:0' - include_parent: 'crwdns706420:0crwdne706420:0' - text: 'crwdns706422:0[Placeholder]crwdne706422:0' - page: 'crwdns706424:0crwdne706424:0' - this_page: 'crwdns706426:0crwdne706426:0' + button: 'crwdns708528:0crwdne708528:0' + include_parent: 'crwdns708530:0crwdne708530:0' + text: 'crwdns708532:0[Placeholder]crwdne708532:0' + page: 'crwdns708534:0crwdne708534:0' + this_page: 'crwdns708536:0crwdne708536:0' hint: | - crwdns706428:0crwdne706428:0 + crwdns708538:0crwdne708538:0 code_block: - button: 'crwdns706430:0crwdne706430:0' - title: 'crwdns706432:0crwdne706432:0' - language: 'crwdns706434:0crwdne706434:0' - language_hint: 'crwdns706436:0crwdne706436:0' + button: 'crwdns708540:0crwdne708540:0' + title: 'crwdns708542:0crwdne708542:0' + language: 'crwdns708544:0crwdne708544:0' + language_hint: 'crwdns708546:0crwdne708546:0' dropdown: - macros: 'crwdns706438:0crwdne706438:0' - chose_macro: 'crwdns706440:0crwdne706440:0' - toc: 'crwdns706442:0crwdne706442:0' - toolbar_help: 'crwdns706444:0crwdne706444:0' + macros: 'crwdns708548:0crwdne708548:0' + chose_macro: 'crwdns708550:0crwdne708550:0' + toc: 'crwdns708552:0crwdne708552:0' + toolbar_help: 'crwdns708554:0crwdne708554:0' wiki_page_include: - button: 'crwdns706446:0crwdne706446:0' - text: 'crwdns706448:0[Placeholder]crwdne706448:0' - page: 'crwdns706450:0crwdne706450:0' - not_set: 'crwdns706452:0crwdne706452:0' + button: 'crwdns708556:0crwdne708556:0' + text: 'crwdns708558:0[Placeholder]crwdne708558:0' + page: 'crwdns708560:0crwdne708560:0' + not_set: 'crwdns708562:0crwdne708562:0' hint: | - crwdns706454:0crwdne706454:0 + crwdns708564:0crwdne708564:0 work_package_button: - button: 'crwdns706456:0crwdne706456:0' - type: 'crwdns706458:0crwdne706458:0' - button_style: 'crwdns706460:0crwdne706460:0' - button_style_hint: 'crwdns706462:0crwdne706462:0' - without_type: 'crwdns706464:0crwdne706464:0' - with_type: 'crwdns706466:0%{typename}crwdne706466:0' + button: 'crwdns708566:0crwdne708566:0' + type: 'crwdns708568:0crwdne708568:0' + button_style: 'crwdns708570:0crwdne708570:0' + button_style_hint: 'crwdns708572:0crwdne708572:0' + without_type: 'crwdns708574:0crwdne708574:0' + with_type: 'crwdns708576:0%{typename}crwdne708576:0' embedded_table: - button: 'crwdns706468:0crwdne706468:0' - text: 'crwdns706470:0[Placeholder]crwdne706470:0' + button: 'crwdns708578:0crwdne708578:0' + text: 'crwdns708580:0[Placeholder]crwdne708580:0' embedded_calendar: - text: 'crwdns706472:0[Placeholder]crwdne706472:0' + text: 'crwdns708582:0[Placeholder]crwdne708582:0' admin: type_form: - custom_field: 'crwdns706474:0crwdne706474:0' - inactive: 'crwdns706476:0crwdne706476:0' - drag_to_activate: "crwdns706478:0crwdne706478:0" - add_group: "crwdns706480:0crwdne706480:0" - add_table: "crwdns706482:0crwdne706482:0" - edit_query: 'crwdns706484:0crwdne706484:0' - new_group: 'crwdns706486:0crwdne706486:0' - reset_to_defaults: 'crwdns706488:0crwdne706488:0' + custom_field: 'crwdns708584:0crwdne708584:0' + inactive: 'crwdns708586:0crwdne708586:0' + drag_to_activate: "crwdns708588:0crwdne708588:0" + add_group: "crwdns708590:0crwdne708590:0" + add_table: "crwdns708592:0crwdne708592:0" + edit_query: 'crwdns708594:0crwdne708594:0' + new_group: 'crwdns708596:0crwdne708596:0' + reset_to_defaults: 'crwdns708598:0crwdne708598:0' enterprise: - text_reprieve_days_left: "crwdns706490:0%{days}crwdne706490:0" - text_expired: "crwdns706492:0crwdne706492:0" + text_reprieve_days_left: "crwdns708600:0%{days}crwdne708600:0" + text_expired: "crwdns708602:0crwdne708602:0" trial: - confirmation: "crwdns706494:0crwdne706494:0" + confirmation: "crwdns708604:0crwdne708604:0" confirmation_info: > - crwdns706496:0%{date}crwdnd706496:0%{email}crwdne706496:0 + crwdns708606:0%{date}crwdnd708606:0%{email}crwdne708606:0 form: general_consent: > - crwdns706498:0%{link_terms}crwdnd706498:0%{link_privacy}crwdne706498:0 - invalid_email: "crwdns706500:0crwdne706500:0" - label_company: "crwdns706502:0crwdne706502:0" - label_first_name: "crwdns706504:0crwdne706504:0" - label_last_name: "crwdns706506:0crwdne706506:0" - label_domain: "crwdns706508:0crwdne706508:0" - label_subscriber: "crwdns706510:0crwdne706510:0" - label_maximum_users: "crwdns706512:0crwdne706512:0" - label_starts_at: "crwdns706514:0crwdne706514:0" - label_expires_at: "crwdns706516:0crwdne706516:0" - receive_newsletter: crwdns706518:0%{link}crwdne706518:0 - taken_domain: crwdns706520:0crwdne706520:0 - taken_email: crwdns706522:0crwdne706522:0 - email_not_received: "crwdns706524:0crwdne706524:0" - try_another_email: "crwdns706526:0crwdne706526:0" - next_steps: "crwdns706528:0crwdne706528:0" - resend_link: "crwdns706530:0crwdne706530:0" - resend_success: "crwdns706532:0crwdne706532:0" - resend_warning: "crwdns706534:0crwdne706534:0" - session_timeout: "crwdns706536:0crwdne706536:0" - status_label: "crwdns706538:0crwdne706538:0" - status_confirmed: "crwdns706540:0crwdne706540:0" - status_waiting: "crwdns706542:0crwdne706542:0" - test_ee: "crwdns706544:0crwdne706544:0" - quick_overview: "crwdns706546:0crwdne706546:0" + crwdns708608:0%{link_terms}crwdnd708608:0%{link_privacy}crwdne708608:0 + invalid_email: "crwdns708610:0crwdne708610:0" + label_company: "crwdns708612:0crwdne708612:0" + label_first_name: "crwdns708614:0crwdne708614:0" + label_last_name: "crwdns708616:0crwdne708616:0" + label_domain: "crwdns708618:0crwdne708618:0" + label_subscriber: "crwdns708620:0crwdne708620:0" + label_maximum_users: "crwdns708622:0crwdne708622:0" + label_starts_at: "crwdns708624:0crwdne708624:0" + label_expires_at: "crwdns708626:0crwdne708626:0" + receive_newsletter: crwdns708628:0%{link}crwdne708628:0 + taken_domain: crwdns708630:0crwdne708630:0 + taken_email: crwdns708632:0crwdne708632:0 + email_not_received: "crwdns708634:0crwdne708634:0" + try_another_email: "crwdns708636:0crwdne708636:0" + next_steps: "crwdns708638:0crwdne708638:0" + resend_link: "crwdns708640:0crwdne708640:0" + resend_success: "crwdns708642:0crwdne708642:0" + resend_warning: "crwdns708644:0crwdne708644:0" + session_timeout: "crwdns708646:0crwdne708646:0" + status_label: "crwdns708648:0crwdne708648:0" + status_confirmed: "crwdns708650:0crwdne708650:0" + status_waiting: "crwdns708652:0crwdne708652:0" + test_ee: "crwdns708654:0crwdne708654:0" + quick_overview: "crwdns708656:0crwdne708656:0" upsale: - become_hero: "crwdns706548:0crwdne706548:0" + become_hero: "crwdns708658:0crwdne708658:0" benefits: - description: "crwdns706550:0crwdne706550:0" - high_security: "crwdns706552:0crwdne706552:0" - high_security_text: "crwdns706554:0crwdne706554:0" - installation: "crwdns706556:0crwdne706556:0" - installation_text: "crwdns706558:0crwdne706558:0" - premium_features: "crwdns706560:0crwdne706560:0" - premium_features_text: "crwdns706562:0crwdne706562:0" - professional_support: "crwdns706564:0crwdne706564:0" - professional_support_text: "crwdns706566:0crwdne706566:0" - button_start_trial: "crwdns706568:0crwdne706568:0" - button_book_now: "crwdns706570:0crwdne706570:0" + description: "crwdns708660:0crwdne708660:0" + high_security: "crwdns708662:0crwdne708662:0" + high_security_text: "crwdns708664:0crwdne708664:0" + installation: "crwdns708666:0crwdne708666:0" + installation_text: "crwdns708668:0crwdne708668:0" + premium_features: "crwdns708670:0crwdne708670:0" + premium_features_text: "crwdns708672:0crwdne708672:0" + professional_support: "crwdns708674:0crwdne708674:0" + professional_support_text: "crwdns708676:0crwdne708676:0" + button_start_trial: "crwdns708678:0crwdne708678:0" + button_book_now: "crwdns708680:0crwdne708680:0" confidence: > - crwdns706572:0crwdne706572:0 - link_quote: "crwdns706574:0crwdne706574:0" + crwdns708682:0crwdne708682:0 + link_quote: "crwdns708684:0crwdne708684:0" text: > - crwdns706576:0crwdne706576:0 - unlimited: "crwdns706578:0crwdne706578:0" - you_contribute: "crwdns706580:0crwdne706580:0" + crwdns708686:0crwdne708686:0 + unlimited: "crwdns708688:0crwdne708688:0" + you_contribute: "crwdns708690:0crwdne708690:0" custom_actions: date: - specific: 'crwdns706582:0crwdne706582:0' - current_date: 'crwdns706584:0crwdne706584:0' + specific: 'crwdns708692:0crwdne708692:0' + current_date: 'crwdns708694:0crwdne708694:0' error: - internal: "crwdns706586:0crwdne706586:0" - cannot_save_changes_with_message: "crwdns706588:0%{error}crwdne706588:0" - query_saving: "crwdns706590:0crwdne706590:0" - embedded_table_loading: "crwdns706592:0%{message}crwdne706592:0" - enumeration_activities: "crwdns706594:0crwdne706594:0" - enumeration_doc_categories: "crwdns706596:0crwdne706596:0" - enumeration_work_package_priorities: "crwdns706598:0crwdne706598:0" + internal: "crwdns708696:0crwdne708696:0" + cannot_save_changes_with_message: "crwdns708698:0%{error}crwdne708698:0" + query_saving: "crwdns708700:0crwdne708700:0" + embedded_table_loading: "crwdns708702:0%{message}crwdne708702:0" + enumeration_activities: "crwdns708704:0crwdne708704:0" + enumeration_doc_categories: "crwdns708706:0crwdne708706:0" + enumeration_work_package_priorities: "crwdns708708:0crwdne708708:0" filter: description: - text_open_filter: "crwdns706600:0crwdne706600:0" - text_close_filter: "crwdns706602:0crwdne706602:0" - noneElement: "crwdns706604:0crwdne706604:0" + text_open_filter: "crwdns708710:0crwdne708710:0" + text_close_filter: "crwdns708712:0crwdne708712:0" + noneElement: "crwdns708714:0crwdne708714:0" time_zone_converted: - two_values: "crwdns706606:0%{from}crwdnd706606:0%{to}crwdne706606:0" - only_start: "crwdns706608:0%{from}crwdne706608:0" - only_end: "crwdns706610:0%{to}crwdne706610:0" - value_spacer: "crwdns706612:0crwdne706612:0" + two_values: "crwdns708716:0%{from}crwdnd708716:0%{to}crwdne708716:0" + only_start: "crwdns708718:0%{from}crwdne708718:0" + only_end: "crwdns708720:0%{to}crwdne708720:0" + value_spacer: "crwdns708722:0crwdne708722:0" sorting: criteria: - one: "crwdns706614:0crwdne706614:0" - two: "crwdns706616:0crwdne706616:0" - three: "crwdns706618:0crwdne706618:0" - upsale_for_more: "crwdns706620:0crwdne706620:0" - upsale_link: 'crwdns706622:0crwdne706622:0' - general_text_no: "crwdns706624:0crwdne706624:0" - general_text_yes: "crwdns706626:0crwdne706626:0" - general_text_No: "crwdns706628:0crwdne706628:0" - general_text_Yes: "crwdns706630:0crwdne706630:0" + one: "crwdns708724:0crwdne708724:0" + two: "crwdns708726:0crwdne708726:0" + three: "crwdns708728:0crwdne708728:0" + upsale_for_more: "crwdns708730:0crwdne708730:0" + upsale_link: 'crwdns708732:0crwdne708732:0' + general_text_no: "crwdns708734:0crwdne708734:0" + general_text_yes: "crwdns708736:0crwdne708736:0" + general_text_No: "crwdns708738:0crwdne708738:0" + general_text_Yes: "crwdns708740:0crwdne708740:0" hal: error: - update_conflict_refresh: "crwdns706632:0crwdne706632:0" - edit_prohibited: "crwdns706634:0%{attribute}crwdne706634:0" + update_conflict_refresh: "crwdns708742:0crwdne708742:0" + edit_prohibited: "crwdns708744:0%{attribute}crwdne708744:0" format: - date: "crwdns706636:0%{attribute}crwdne706636:0" - general: "crwdns706638:0crwdne706638:0" + date: "crwdns708746:0%{attribute}crwdne708746:0" + general: "crwdns708748:0crwdne708748:0" homescreen: blocks: new_features: - text_new_features: "crwdns706640:0crwdne706640:0" - learn_about: "crwdns706642:0crwdne706642:0" + text_new_features: "crwdns708750:0crwdne708750:0" + learn_about: "crwdns708752:0crwdne708752:0" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': standard: - learn_about_link: crwdns706644:0crwdne706644:0 + learn_about_link: crwdns708754:0crwdne708754:0 new_features_html: > - crwdns706646:0%{list_styling_class}crwdne706646:0 + crwdns708756:0%{list_styling_class}crwdne708756:0 bim: - learn_about_link: crwdns706648:0crwdne706648:0 + learn_about_link: crwdns708758:0crwdne708758:0 new_features_html: > - crwdns706650:0%{list_styling_class}crwdne706650:0 - label_activate: "crwdns706652:0crwdne706652:0" - label_add_column_after: "crwdns706654:0crwdne706654:0" - label_add_column_before: "crwdns706656:0crwdne706656:0" - label_add_columns: "crwdns706658:0crwdne706658:0" - label_add_comment: "crwdns706660:0crwdne706660:0" - label_add_comment_title: "crwdns706662:0crwdne706662:0" - label_add_row_after: "crwdns706664:0crwdne706664:0" - label_add_row_before: "crwdns706666:0crwdne706666:0" - label_add_selected_columns: "crwdns706668:0crwdne706668:0" - label_added_by: "crwdns706670:0crwdne706670:0" - label_added_time_by: "crwdns706672:0%{authorLink}crwdnd706672:0%{author}crwdnd706672:0%{age}crwdne706672:0" - label_ago: "crwdns706674:0crwdne706674:0" - label_all: "crwdns706676:0crwdne706676:0" - label_all_work_packages: "crwdns706678:0crwdne706678:0" - label_and: "crwdns706680:0crwdne706680:0" - label_ascending: "crwdns706682:0crwdne706682:0" - label_author: "crwdns706684:0%{user}crwdne706684:0" - label_avatar: "crwdns706686:0crwdne706686:0" - label_between: "crwdns706688:0crwdne706688:0" - label_board: "crwdns706690:0crwdne706690:0" - label_board_locked: "crwdns706692:0crwdne706692:0" - label_board_plural: "crwdns706694:0crwdne706694:0" - label_board_sticky: "crwdns706696:0crwdne706696:0" - label_change: "crwdns706698:0crwdne706698:0" - label_create: "crwdns706700:0crwdne706700:0" - label_create_work_package: "crwdns706702:0crwdne706702:0" - label_created_by: "crwdns706704:0crwdne706704:0" - label_date: "crwdns706706:0crwdne706706:0" - label_date_with_format: "crwdns706708:0%{date_attribute}crwdnd706708:0%{format}crwdne706708:0" - label_deactivate: "crwdns706710:0crwdne706710:0" - label_descending: "crwdns706712:0crwdne706712:0" - label_description: "crwdns706714:0crwdne706714:0" - label_details: "crwdns706716:0crwdne706716:0" - label_display: "crwdns706718:0crwdne706718:0" - label_cancel_comment: "crwdns706720:0crwdne706720:0" - label_closed_work_packages: "crwdns706722:0crwdne706722:0" - label_collapse: "crwdns706724:0crwdne706724:0" - label_collapsed: "crwdns706726:0crwdne706726:0" - label_collapse_all: "crwdns706728:0crwdne706728:0" - label_comment: "crwdns706730:0crwdne706730:0" - label_committed_at: "crwdns706732:0%{committed_revision_link}crwdnd706732:0%{date}crwdne706732:0" - label_committed_link: "crwdns706734:0%{revision_identifier}crwdne706734:0" - label_contains: "crwdns706736:0crwdne706736:0" - label_created_on: "crwdns706738:0crwdne706738:0" - label_edit_comment: "crwdns706740:0crwdne706740:0" - label_edit_status: "crwdns706742:0crwdne706742:0" - label_email: "crwdns706744:0crwdne706744:0" - label_equals: "crwdns706746:0crwdne706746:0" - label_expand: "crwdns706748:0crwdne706748:0" - label_expanded: "crwdns706750:0crwdne706750:0" - label_expand_all: "crwdns706752:0crwdne706752:0" - label_expand_project_menu: "crwdns706754:0crwdne706754:0" - label_export: "crwdns706756:0crwdne706756:0" - label_export_preparing: "crwdns706758:0crwdne706758:0" - label_filename: "crwdns706760:0crwdne706760:0" - label_filesize: "crwdns706762:0crwdne706762:0" - label_general: "crwdns706764:0crwdne706764:0" - label_global_roles: "crwdns706766:0crwdne706766:0" - label_greater_or_equal: "crwdns706768:0crwdne706768:0" - label_group: 'crwdns706770:0crwdne706770:0' - label_group_by: "crwdns706772:0crwdne706772:0" - label_group_plural: "crwdns706774:0crwdne706774:0" - label_hide_attributes: "crwdns706776:0crwdne706776:0" - label_hide_column: "crwdns706778:0crwdne706778:0" - label_hide_project_menu: "crwdns706780:0crwdne706780:0" - label_in: "crwdns706782:0crwdne706782:0" - label_in_less_than: "crwdns706784:0crwdne706784:0" - label_in_more_than: "crwdns706786:0crwdne706786:0" - label_incoming_emails: "crwdns706788:0crwdne706788:0" - label_information_plural: "crwdns706790:0crwdne706790:0" - label_import: "crwdns706792:0crwdne706792:0" - label_latest_activity: "crwdns706794:0crwdne706794:0" - label_last_updated_on: "crwdns706796:0crwdne706796:0" - label_learn_more_link: "crwdns706798:0crwdne706798:0" - label_less_or_equal: "crwdns706800:0crwdne706800:0" - label_less_than_ago: "crwdns706802:0crwdne706802:0" - label_loading: "crwdns706804:0crwdne706804:0" - label_mail_notification: "crwdns706806:0crwdne706806:0" - label_me: "crwdns706808:0crwdne706808:0" - label_meeting_agenda: "crwdns706810:0crwdne706810:0" - label_meeting_minutes: "crwdns706812:0crwdne706812:0" - label_menu_collapse: "crwdns706814:0crwdne706814:0" - label_menu_expand: "crwdns706816:0crwdne706816:0" - label_more_than_ago: "crwdns706818:0crwdne706818:0" - label_next: "crwdns706820:0crwdne706820:0" - label_no_color: "crwdns706822:0crwdne706822:0" - label_no_data: "crwdns706824:0crwdne706824:0" - label_no_due_date: "crwdns706826:0crwdne706826:0" - label_no_start_date: "crwdns706828:0crwdne706828:0" - label_no_value: "crwdns706830:0crwdne706830:0" - label_none: "crwdns706832:0crwdne706832:0" - label_not_contains: "crwdns706834:0crwdne706834:0" - label_not_equals: "crwdns706836:0crwdne706836:0" - label_on: "crwdns706838:0crwdne706838:0" - label_open_menu: "crwdns706840:0crwdne706840:0" - label_open_context_menu: "crwdns706842:0crwdne706842:0" - label_open_work_packages: "crwdns706844:0crwdne706844:0" - label_password: "crwdns706846:0crwdne706846:0" - label_previous: "crwdns706848:0crwdne706848:0" - label_per_page: "crwdns706850:0crwdne706850:0" - label_please_wait: "crwdns706852:0crwdne706852:0" - label_project_plural: "crwdns706854:0crwdne706854:0" - label_visibility_settings: "crwdns706856:0crwdne706856:0" - label_quote_comment: "crwdns706858:0crwdne706858:0" - label_recent: "crwdns706860:0crwdne706860:0" - label_reset: "crwdns706862:0crwdne706862:0" - label_remove: "crwdns706864:0crwdne706864:0" - label_remove_column: "crwdns706866:0crwdne706866:0" - label_remove_columns: "crwdns706868:0crwdne706868:0" - label_remove_row: "crwdns706870:0crwdne706870:0" - label_report: "crwdns706872:0crwdne706872:0" - label_repository_plural: "crwdns706874:0crwdne706874:0" - label_save_as: "crwdns706876:0crwdne706876:0" - label_select_watcher: "crwdns706878:0crwdne706878:0" - label_selected_filter_list: "crwdns706880:0crwdne706880:0" - label_show_attributes: "crwdns706882:0crwdne706882:0" - label_show_in_menu: "crwdns706884:0crwdne706884:0" - label_sort_by: "crwdns706886:0crwdne706886:0" - label_sorted_by: "crwdns706888:0crwdne706888:0" - label_sort_higher: "crwdns706890:0crwdne706890:0" - label_sort_lower: "crwdns706892:0crwdne706892:0" - label_sorting: "crwdns706894:0crwdne706894:0" - label_spent_time: "crwdns706896:0crwdne706896:0" - label_star_query: "crwdns706898:0crwdne706898:0" - label_press_enter_to_save: "crwdns706900:0crwdne706900:0" - label_public_query: "crwdns706902:0crwdne706902:0" - label_sum: "crwdns706904:0crwdne706904:0" - label_sum_for: "crwdns706906:0crwdne706906:0" - label_total_sum: "crwdns706908:0crwdne706908:0" - label_subject: "crwdns706910:0crwdne706910:0" - label_this_week: "crwdns706912:0crwdne706912:0" - label_today: "crwdns706914:0crwdne706914:0" - label_time_entry_plural: "crwdns706916:0crwdne706916:0" - label_up: "crwdns706918:0crwdne706918:0" - label_user_plural: "crwdns706920:0crwdne706920:0" - label_activity_show_only_comments: "crwdns706922:0crwdne706922:0" - label_activity_show_all: "crwdns706924:0crwdne706924:0" - label_total_progress: "crwdns706926:0%{percent}crwdne706926:0" - label_total_amount: "crwdns706928:0%{amount}crwdne706928:0" - label_updated_on: "crwdns706930:0crwdne706930:0" - label_value_derived_from_children: "crwdns706932:0crwdne706932:0" - label_children_derived_duration: "crwdns706934:0crwdne706934:0" - label_warning: "crwdns706936:0crwdne706936:0" - label_work_package: "crwdns706938:0crwdne706938:0" - label_work_package_parent: "crwdns706940:0crwdne706940:0" - label_work_package_plural: "crwdns706942:0crwdne706942:0" - label_watch: "crwdns706944:0crwdne706944:0" - label_watch_work_package: "crwdns706946:0crwdne706946:0" - label_watcher_added_successfully: "crwdns706948:0crwdne706948:0" - label_watcher_deleted_successfully: "crwdns706950:0crwdne706950:0" - label_work_package_details_you_are_here: "crwdns706952:0%{tab}crwdnd706952:0%{type}crwdnd706952:0%{subject}crwdne706952:0" - label_unwatch: "crwdns706954:0crwdne706954:0" - label_unwatch_work_package: "crwdns706956:0crwdne706956:0" - label_uploaded_by: "crwdns706958:0crwdne706958:0" - label_default_queries: "crwdns706960:0crwdne706960:0" - label_starred_queries: "crwdns706962:0crwdne706962:0" - label_global_queries: "crwdns706964:0crwdne706964:0" - label_custom_queries: "crwdns706966:0crwdne706966:0" - label_create_new_query: "crwdns706968:0crwdne706968:0" - label_columns: "crwdns706970:0crwdne706970:0" - label_attachments: crwdns706972:0crwdne706972:0 - label_drop_files: crwdns706974:0crwdne706974:0 - label_drop_files_hint: crwdns706976:0crwdne706976:0 - label_drop_folders_hint: crwdns706978:0crwdne706978:0 - label_add_attachments: "crwdns706980:0crwdne706980:0" - label_formattable_attachment_hint: "crwdns706982:0crwdne706982:0" - label_remove_file: "crwdns706984:0%{fileName}crwdne706984:0" - label_remove_watcher: "crwdns706986:0%{name}crwdne706986:0" - label_remove_all_files: crwdns706988:0crwdne706988:0 - label_add_description: "crwdns706990:0%{file}crwdne706990:0" - label_upload_notification: "crwdns706992:0crwdne706992:0" - label_work_package_upload_notification: "crwdns706994:0%{id}crwdnd706994:0%{subject}crwdne706994:0" - label_wp_id_added_by: "crwdns706996:0%{id}crwdnd706996:0%{author}crwdne706996:0" - label_files_to_upload: "crwdns706998:0crwdne706998:0" - label_rejected_files: "crwdns707000:0crwdne707000:0" - label_rejected_files_reason: "crwdns707002:0%{maximumFilesize}crwdne707002:0" - label_wait: "crwdns707004:0crwdne707004:0" - label_upload_counter: "crwdns707006:0%{done}crwdnd707006:0%{count}crwdne707006:0" - label_validation_error: "crwdns707008:0crwdne707008:0" - label_version_plural: "crwdns707010:0crwdne707010:0" - label_view_has_changed: "crwdns707012:0crwdne707012:0" + crwdns708760:0%{list_styling_class}crwdne708760:0 + label_activate: "crwdns708762:0crwdne708762:0" + label_add_column_after: "crwdns708764:0crwdne708764:0" + label_add_column_before: "crwdns708766:0crwdne708766:0" + label_add_columns: "crwdns708768:0crwdne708768:0" + label_add_comment: "crwdns708770:0crwdne708770:0" + label_add_comment_title: "crwdns708772:0crwdne708772:0" + label_add_row_after: "crwdns708774:0crwdne708774:0" + label_add_row_before: "crwdns708776:0crwdne708776:0" + label_add_selected_columns: "crwdns708778:0crwdne708778:0" + label_added_by: "crwdns708780:0crwdne708780:0" + label_added_time_by: "crwdns708782:0%{authorLink}crwdnd708782:0%{author}crwdnd708782:0%{age}crwdne708782:0" + label_ago: "crwdns708784:0crwdne708784:0" + label_all: "crwdns708786:0crwdne708786:0" + label_all_work_packages: "crwdns708788:0crwdne708788:0" + label_and: "crwdns708790:0crwdne708790:0" + label_ascending: "crwdns708792:0crwdne708792:0" + label_author: "crwdns708794:0%{user}crwdne708794:0" + label_avatar: "crwdns708796:0crwdne708796:0" + label_between: "crwdns708798:0crwdne708798:0" + label_board: "crwdns708800:0crwdne708800:0" + label_board_locked: "crwdns708802:0crwdne708802:0" + label_board_plural: "crwdns708804:0crwdne708804:0" + label_board_sticky: "crwdns708806:0crwdne708806:0" + label_change: "crwdns708808:0crwdne708808:0" + label_create: "crwdns708810:0crwdne708810:0" + label_create_work_package: "crwdns708812:0crwdne708812:0" + label_created_by: "crwdns708814:0crwdne708814:0" + label_date: "crwdns708816:0crwdne708816:0" + label_date_with_format: "crwdns708818:0%{date_attribute}crwdnd708818:0%{format}crwdne708818:0" + label_deactivate: "crwdns708820:0crwdne708820:0" + label_descending: "crwdns708822:0crwdne708822:0" + label_description: "crwdns708824:0crwdne708824:0" + label_details: "crwdns708826:0crwdne708826:0" + label_display: "crwdns708828:0crwdne708828:0" + label_cancel_comment: "crwdns708830:0crwdne708830:0" + label_closed_work_packages: "crwdns708832:0crwdne708832:0" + label_collapse: "crwdns708834:0crwdne708834:0" + label_collapsed: "crwdns708836:0crwdne708836:0" + label_collapse_all: "crwdns708838:0crwdne708838:0" + label_comment: "crwdns708840:0crwdne708840:0" + label_committed_at: "crwdns708842:0%{committed_revision_link}crwdnd708842:0%{date}crwdne708842:0" + label_committed_link: "crwdns708844:0%{revision_identifier}crwdne708844:0" + label_contains: "crwdns708846:0crwdne708846:0" + label_created_on: "crwdns708848:0crwdne708848:0" + label_edit_comment: "crwdns708850:0crwdne708850:0" + label_edit_status: "crwdns708852:0crwdne708852:0" + label_email: "crwdns708854:0crwdne708854:0" + label_equals: "crwdns708856:0crwdne708856:0" + label_expand: "crwdns708858:0crwdne708858:0" + label_expanded: "crwdns708860:0crwdne708860:0" + label_expand_all: "crwdns708862:0crwdne708862:0" + label_expand_project_menu: "crwdns708864:0crwdne708864:0" + label_export: "crwdns708866:0crwdne708866:0" + label_export_preparing: "crwdns708868:0crwdne708868:0" + label_filename: "crwdns708870:0crwdne708870:0" + label_filesize: "crwdns708872:0crwdne708872:0" + label_general: "crwdns708874:0crwdne708874:0" + label_global_roles: "crwdns708876:0crwdne708876:0" + label_greater_or_equal: "crwdns708878:0crwdne708878:0" + label_group: 'crwdns708880:0crwdne708880:0' + label_group_by: "crwdns708882:0crwdne708882:0" + label_group_plural: "crwdns708884:0crwdne708884:0" + label_hide_attributes: "crwdns708886:0crwdne708886:0" + label_hide_column: "crwdns708888:0crwdne708888:0" + label_hide_project_menu: "crwdns708890:0crwdne708890:0" + label_in: "crwdns708892:0crwdne708892:0" + label_in_less_than: "crwdns708894:0crwdne708894:0" + label_in_more_than: "crwdns708896:0crwdne708896:0" + label_incoming_emails: "crwdns708898:0crwdne708898:0" + label_information_plural: "crwdns708900:0crwdne708900:0" + label_import: "crwdns708902:0crwdne708902:0" + label_latest_activity: "crwdns708904:0crwdne708904:0" + label_last_updated_on: "crwdns708906:0crwdne708906:0" + label_learn_more_link: "crwdns708908:0crwdne708908:0" + label_less_or_equal: "crwdns708910:0crwdne708910:0" + label_less_than_ago: "crwdns708912:0crwdne708912:0" + label_loading: "crwdns708914:0crwdne708914:0" + label_mail_notification: "crwdns708916:0crwdne708916:0" + label_me: "crwdns708918:0crwdne708918:0" + label_meeting_agenda: "crwdns708920:0crwdne708920:0" + label_meeting_minutes: "crwdns708922:0crwdne708922:0" + label_menu_collapse: "crwdns708924:0crwdne708924:0" + label_menu_expand: "crwdns708926:0crwdne708926:0" + label_more_than_ago: "crwdns708928:0crwdne708928:0" + label_next: "crwdns708930:0crwdne708930:0" + label_no_color: "crwdns708932:0crwdne708932:0" + label_no_data: "crwdns708934:0crwdne708934:0" + label_no_due_date: "crwdns708936:0crwdne708936:0" + label_no_start_date: "crwdns708938:0crwdne708938:0" + label_no_value: "crwdns708940:0crwdne708940:0" + label_none: "crwdns708942:0crwdne708942:0" + label_not_contains: "crwdns708944:0crwdne708944:0" + label_not_equals: "crwdns708946:0crwdne708946:0" + label_on: "crwdns708948:0crwdne708948:0" + label_open_menu: "crwdns708950:0crwdne708950:0" + label_open_context_menu: "crwdns708952:0crwdne708952:0" + label_open_work_packages: "crwdns708954:0crwdne708954:0" + label_password: "crwdns708956:0crwdne708956:0" + label_previous: "crwdns708958:0crwdne708958:0" + label_per_page: "crwdns708960:0crwdne708960:0" + label_please_wait: "crwdns708962:0crwdne708962:0" + label_project_plural: "crwdns708964:0crwdne708964:0" + label_visibility_settings: "crwdns708966:0crwdne708966:0" + label_quote_comment: "crwdns708968:0crwdne708968:0" + label_recent: "crwdns708970:0crwdne708970:0" + label_reset: "crwdns708972:0crwdne708972:0" + label_remove: "crwdns708974:0crwdne708974:0" + label_remove_column: "crwdns708976:0crwdne708976:0" + label_remove_columns: "crwdns708978:0crwdne708978:0" + label_remove_row: "crwdns708980:0crwdne708980:0" + label_report: "crwdns708982:0crwdne708982:0" + label_repository_plural: "crwdns708984:0crwdne708984:0" + label_save_as: "crwdns708986:0crwdne708986:0" + label_select_watcher: "crwdns708988:0crwdne708988:0" + label_selected_filter_list: "crwdns708990:0crwdne708990:0" + label_show_attributes: "crwdns708992:0crwdne708992:0" + label_show_in_menu: "crwdns708994:0crwdne708994:0" + label_sort_by: "crwdns708996:0crwdne708996:0" + label_sorted_by: "crwdns708998:0crwdne708998:0" + label_sort_higher: "crwdns709000:0crwdne709000:0" + label_sort_lower: "crwdns709002:0crwdne709002:0" + label_sorting: "crwdns709004:0crwdne709004:0" + label_spent_time: "crwdns709006:0crwdne709006:0" + label_star_query: "crwdns709008:0crwdne709008:0" + label_press_enter_to_save: "crwdns709010:0crwdne709010:0" + label_public_query: "crwdns709012:0crwdne709012:0" + label_sum: "crwdns709014:0crwdne709014:0" + label_sum_for: "crwdns709016:0crwdne709016:0" + label_total_sum: "crwdns709018:0crwdne709018:0" + label_subject: "crwdns709020:0crwdne709020:0" + label_this_week: "crwdns709022:0crwdne709022:0" + label_today: "crwdns709024:0crwdne709024:0" + label_time_entry_plural: "crwdns709026:0crwdne709026:0" + label_up: "crwdns709028:0crwdne709028:0" + label_user_plural: "crwdns709030:0crwdne709030:0" + label_activity_show_only_comments: "crwdns709032:0crwdne709032:0" + label_activity_show_all: "crwdns709034:0crwdne709034:0" + label_total_progress: "crwdns709036:0%{percent}crwdne709036:0" + label_total_amount: "crwdns709038:0%{amount}crwdne709038:0" + label_updated_on: "crwdns709040:0crwdne709040:0" + label_value_derived_from_children: "crwdns709042:0crwdne709042:0" + label_children_derived_duration: "crwdns709044:0crwdne709044:0" + label_warning: "crwdns709046:0crwdne709046:0" + label_work_package: "crwdns709048:0crwdne709048:0" + label_work_package_parent: "crwdns709050:0crwdne709050:0" + label_work_package_plural: "crwdns709052:0crwdne709052:0" + label_watch: "crwdns709054:0crwdne709054:0" + label_watch_work_package: "crwdns709056:0crwdne709056:0" + label_watcher_added_successfully: "crwdns709058:0crwdne709058:0" + label_watcher_deleted_successfully: "crwdns709060:0crwdne709060:0" + label_work_package_details_you_are_here: "crwdns709062:0%{tab}crwdnd709062:0%{type}crwdnd709062:0%{subject}crwdne709062:0" + label_unwatch: "crwdns709064:0crwdne709064:0" + label_unwatch_work_package: "crwdns709066:0crwdne709066:0" + label_uploaded_by: "crwdns709068:0crwdne709068:0" + label_default_queries: "crwdns709070:0crwdne709070:0" + label_starred_queries: "crwdns709072:0crwdne709072:0" + label_global_queries: "crwdns709074:0crwdne709074:0" + label_custom_queries: "crwdns709076:0crwdne709076:0" + label_create_new_query: "crwdns709078:0crwdne709078:0" + label_columns: "crwdns709080:0crwdne709080:0" + label_attachments: crwdns709082:0crwdne709082:0 + label_drop_files: crwdns709084:0crwdne709084:0 + label_drop_files_hint: crwdns709086:0crwdne709086:0 + label_drop_folders_hint: crwdns709088:0crwdne709088:0 + label_add_attachments: "crwdns709090:0crwdne709090:0" + label_formattable_attachment_hint: "crwdns709092:0crwdne709092:0" + label_remove_file: "crwdns709094:0%{fileName}crwdne709094:0" + label_remove_watcher: "crwdns709096:0%{name}crwdne709096:0" + label_remove_all_files: crwdns709098:0crwdne709098:0 + label_add_description: "crwdns709100:0%{file}crwdne709100:0" + label_upload_notification: "crwdns709102:0crwdne709102:0" + label_work_package_upload_notification: "crwdns709104:0%{id}crwdnd709104:0%{subject}crwdne709104:0" + label_wp_id_added_by: "crwdns709106:0%{id}crwdnd709106:0%{author}crwdne709106:0" + label_files_to_upload: "crwdns709108:0crwdne709108:0" + label_rejected_files: "crwdns709110:0crwdne709110:0" + label_rejected_files_reason: "crwdns709112:0%{maximumFilesize}crwdne709112:0" + label_wait: "crwdns709114:0crwdne709114:0" + label_upload_counter: "crwdns709116:0%{done}crwdnd709116:0%{count}crwdne709116:0" + label_validation_error: "crwdns709118:0crwdne709118:0" + label_version_plural: "crwdns709120:0crwdne709120:0" + label_view_has_changed: "crwdns709122:0crwdne709122:0" help_texts: - show_modal: 'crwdns707014:0crwdne707014:0' + show_modal: 'crwdns709124:0crwdne709124:0' onboarding: buttons: - skip: 'crwdns707016:0crwdne707016:0' - next: 'crwdns707018:0crwdne707018:0' - got_it: 'crwdns707020:0crwdne707020:0' + skip: 'crwdns709126:0crwdne709126:0' + next: 'crwdns709128:0crwdne709128:0' + got_it: 'crwdns709130:0crwdne709130:0' steps: - help_menu: 'crwdns707022:0crwdne707022:0' - members: 'crwdns707024:0crwdne707024:0' - project_selection: 'crwdns707026:0crwdne707026:0' - quick_add_button: 'crwdns707028:0crwdne707028:0' - sidebar_arrow: "crwdns707030:0crwdne707030:0" - welcome: 'crwdns707032:0crwdne707032:0' - wiki: 'crwdns707034:0crwdne707034:0' + help_menu: 'crwdns709132:0crwdne709132:0' + members: 'crwdns709134:0crwdne709134:0' + project_selection: 'crwdns709136:0crwdne709136:0' + quick_add_button: 'crwdns709138:0crwdne709138:0' + sidebar_arrow: "crwdns709140:0crwdne709140:0" + welcome: 'crwdns709142:0crwdne709142:0' + wiki: 'crwdns709144:0crwdne709144:0' backlogs: - overview: "crwdns707036:0crwdne707036:0" - sprints: "crwdns707038:0crwdne707038:0" - task_board_arrow: 'crwdns707040:0crwdne707040:0' - task_board_select: 'crwdns707042:0crwdne707042:0' - task_board: "crwdns707044:0crwdne707044:0" + overview: "crwdns709146:0crwdne709146:0" + sprints: "crwdns709148:0crwdne709148:0" + task_board_arrow: 'crwdns709150:0crwdne709150:0' + task_board_select: 'crwdns709152:0crwdne709152:0' + task_board: "crwdns709154:0crwdne709154:0" boards: - overview: 'crwdns707046:0crwdne707046:0' - lists: 'crwdns707048:0crwdne707048:0' - add: 'crwdns707050:0crwdne707050:0' - drag: 'crwdns707052:0crwdne707052:0' + overview: 'crwdns709156:0crwdne709156:0' + lists: 'crwdns709158:0crwdne709158:0' + add: 'crwdns709160:0crwdne709160:0' + drag: 'crwdns709162:0crwdne709162:0' wp: - toggler: "crwdns707054:0crwdne707054:0" - list: 'crwdns707056:0crwdne707056:0' - full_view: 'crwdns707058:0crwdne707058:0' - back_button: 'crwdns707060:0crwdne707060:0' - create_button: 'crwdns707062:0crwdne707062:0' - timeline_button: 'crwdns707064:0crwdne707064:0' - timeline: 'crwdns707066:0crwdne707066:0' + toggler: "crwdns709164:0crwdne709164:0" + list: 'crwdns709166:0crwdne709166:0' + full_view: 'crwdns709168:0crwdne709168:0' + back_button: 'crwdns709170:0crwdne709170:0' + create_button: 'crwdns709172:0crwdne709172:0' + timeline_button: 'crwdns709174:0crwdne709174:0' + timeline: 'crwdns709176:0crwdne709176:0' notifications: - title: "crwdns707068:0crwdne707068:0" - no_unread: "crwdns707070:0crwdne707070:0" + title: "crwdns709178:0crwdne709178:0" + no_unread: "crwdns709180:0crwdne709180:0" reasons: - mentioned: 'crwdns707072:0crwdne707072:0' - watched: 'crwdns707074:0crwdne707074:0' - assigned: 'crwdns707076:0crwdne707076:0' - responsible: 'crwdns707078:0crwdne707078:0' + mentioned: 'crwdns709182:0crwdne709182:0' + watched: 'crwdns709184:0crwdne709184:0' + assigned: 'crwdns709186:0crwdne709186:0' + responsible: 'crwdns709188:0crwdne709188:0' facets: - unread: 'crwdns707080:0crwdne707080:0' - all: 'crwdns707082:0crwdne707082:0' + unread: 'crwdns709190:0crwdne709190:0' + all: 'crwdns709192:0crwdne709192:0' center: and_more_users: - one: 'crwdns707084:1crwdne707084:1' - other: 'crwdns707084:5%{count}crwdne707084:5' + one: 'crwdns709194:1crwdne709194:1' + other: 'crwdns709194:5%{count}crwdne709194:5' no_results: - at_all: 'crwdns707086:0crwdne707086:0' - with_current_filter: 'crwdns707088:0crwdne707088:0' - mark_all_read: 'crwdns707090:0crwdne707090:0' - mark_as_read: 'crwdns707092:0crwdne707092:0' - text_update_date: "crwdns707094:0%{date}crwdne707094:0" - total_count_warning: "crwdns707096:0%{newest_count}crwdnd707096:0%{more_count}crwdne707096:0" + at_all: 'crwdns709196:0crwdne709196:0' + with_current_filter: 'crwdns709198:0crwdne709198:0' + mark_all_read: 'crwdns709200:0crwdne709200:0' + mark_as_read: 'crwdns709202:0crwdne709202:0' + text_update_date: "crwdns709204:0%{date}crwdne709204:0" + total_count_warning: "crwdns709206:0%{newest_count}crwdnd709206:0%{more_count}crwdne709206:0" empty_state: - no_notification: "crwdns707098:0crwdne707098:0" - no_notification_with_current_filter: "crwdns707100:0crwdne707100:0" - no_selection: "crwdns707102:0crwdne707102:0" + no_notification: "crwdns709208:0crwdne709208:0" + no_notification_with_current_filter: "crwdns709210:0crwdne709210:0" + no_selection: "crwdns709212:0crwdne709212:0" new_notifications: - message: 'crwdns707104:0crwdne707104:0' - link_text: 'crwdns707106:0crwdne707106:0' + message: 'crwdns709214:0crwdne709214:0' + link_text: 'crwdns709216:0crwdne709216:0' menu: - accountable: 'crwdns707108:0crwdne707108:0' - assigned: 'crwdns707110:0crwdne707110:0' - by_project: 'crwdns707112:0crwdne707112:0' - by_reason: 'crwdns707114:0crwdne707114:0' - inbox: 'crwdns707116:0crwdne707116:0' - mentioned: 'crwdns707118:0crwdne707118:0' - watching: 'crwdns707120:0crwdne707120:0' + accountable: 'crwdns709218:0crwdne709218:0' + assigned: 'crwdns709220:0crwdne709220:0' + by_project: 'crwdns709222:0crwdne709222:0' + by_reason: 'crwdns709224:0crwdne709224:0' + inbox: 'crwdns709226:0crwdne709226:0' + mentioned: 'crwdns709228:0crwdne709228:0' + watching: 'crwdns709230:0crwdne709230:0' settings: - change_notification_settings: 'crwdns707122:0%{url}crwdne707122:0' - title: "crwdns707124:0crwdne707124:0" - notify_me: "crwdns707126:0crwdne707126:0" + change_notification_settings: 'crwdns709232:0%{url}crwdne709232:0' + title: "crwdns709234:0crwdne709234:0" + notify_me: "crwdns709236:0crwdne709236:0" reasons: mentioned: - title: 'crwdns707128:0crwdne707128:0' - description: 'crwdns707130:0crwdne707130:0' + title: 'crwdns709238:0crwdne709238:0' + description: 'crwdns709240:0crwdne709240:0' involved: - title: 'crwdns707132:0crwdne707132:0' - description: 'crwdns707134:0crwdne707134:0' - watched: 'crwdns707136:0crwdne707136:0' - work_package_commented: 'crwdns707138:0crwdne707138:0' - work_package_created: 'crwdns707140:0crwdne707140:0' - work_package_processed: 'crwdns707142:0crwdne707142:0' - work_package_prioritized: 'crwdns707144:0crwdne707144:0' - work_package_scheduled: 'crwdns707146:0crwdne707146:0' + title: 'crwdns709242:0crwdne709242:0' + description: 'crwdns709244:0crwdne709244:0' + watched: 'crwdns709246:0crwdne709246:0' + work_package_commented: 'crwdns709248:0crwdne709248:0' + work_package_created: 'crwdns709250:0crwdne709250:0' + work_package_processed: 'crwdns709252:0crwdne709252:0' + work_package_prioritized: 'crwdns709254:0crwdne709254:0' + work_package_scheduled: 'crwdns709256:0crwdne709256:0' global: immediately: - title: 'crwdns707148:0crwdne707148:0' - description: 'crwdns707150:0crwdne707150:0' + title: 'crwdns709258:0crwdne709258:0' + description: 'crwdns709260:0crwdne709260:0' delayed: - title: 'crwdns707152:0crwdne707152:0' - description: 'crwdns707154:0crwdne707154:0' + title: 'crwdns709262:0crwdne709262:0' + description: 'crwdns709264:0crwdne709264:0' project_specific: - title: 'crwdns707156:0crwdne707156:0' - description: 'crwdns707158:0crwdne707158:0' - add: 'crwdns707160:0crwdne707160:0' - already_selected: 'crwdns707162:0crwdne707162:0' - remove: 'crwdns707164:0crwdne707164:0' + title: 'crwdns709266:0crwdne709266:0' + description: 'crwdns709268:0crwdne709268:0' + add: 'crwdns709270:0crwdne709270:0' + already_selected: 'crwdns709272:0crwdne709272:0' + remove: 'crwdns709274:0crwdne709274:0' password_confirmation: - field_description: 'crwdns707166:0crwdne707166:0' - title: 'crwdns707168:0crwdne707168:0' + field_description: 'crwdns709276:0crwdne709276:0' + title: 'crwdns709278:0crwdne709278:0' pagination: - no_other_page: "crwdns707170:0crwdne707170:0" + no_other_page: "crwdns709280:0crwdne709280:0" pages: - next: "crwdns707172:0crwdne707172:0" - previous: "crwdns707174:0crwdne707174:0" + next: "crwdns709282:0crwdne709282:0" + previous: "crwdns709284:0crwdne709284:0" placeholders: - default: 'crwdns707176:0crwdne707176:0' - subject: 'crwdns707178:0crwdne707178:0' - selection: 'crwdns707180:0crwdne707180:0' - relation_description: 'crwdns707182:0crwdne707182:0' + default: 'crwdns709286:0crwdne709286:0' + subject: 'crwdns709288:0crwdne709288:0' + selection: 'crwdns709290:0crwdne709290:0' + relation_description: 'crwdns709292:0crwdne709292:0' project: required_outside_context: > - crwdns707184:0crwdne707184:0 - context: 'crwdns707186:0crwdne707186:0' - work_package_belongs_to: 'crwdns707188:0%{projectname}crwdne707188:0' - click_to_switch_context: 'crwdns707190:0crwdne707190:0' - confirm_template_load: 'crwdns707192:0crwdne707192:0' - use_template: "crwdns707194:0crwdne707194:0" - no_template_selected: "crwdns707196:0crwdne707196:0" + crwdns709294:0crwdne709294:0 + context: 'crwdns709296:0crwdne709296:0' + work_package_belongs_to: 'crwdns709298:0%{projectname}crwdne709298:0' + click_to_switch_context: 'crwdns709300:0crwdne709300:0' + confirm_template_load: 'crwdns709302:0crwdne709302:0' + use_template: "crwdns709304:0crwdne709304:0" + no_template_selected: "crwdns709306:0crwdne709306:0" copy: - copy_options: "crwdns707198:0crwdne707198:0" + copy_options: "crwdns709308:0crwdne709308:0" autocompleter: - label: 'crwdns707200:0crwdne707200:0' + label: 'crwdns709310:0crwdne709310:0' reminders: settings: daily: - add_time: 'crwdns707202:0crwdne707202:0' - enable: 'crwdns707204:0crwdne707204:0' - explanation: 'crwdns707206:0%{no_time_zone}crwdne707206:0' - no_time_zone: 'crwdns707208:0crwdne707208:0' - time_label: 'crwdns707210:0%{counter}crwdne707210:0' - title: 'crwdns707212:0crwdne707212:0' + add_time: 'crwdns709312:0crwdne709312:0' + enable: 'crwdns709314:0crwdne709314:0' + explanation: 'crwdns709316:0%{no_time_zone}crwdne709316:0' + no_time_zone: 'crwdns709318:0crwdne709318:0' + time_label: 'crwdns709320:0%{counter}crwdne709320:0' + title: 'crwdns709322:0crwdne709322:0' workdays: - title: 'crwdns707214:0crwdne707214:0' + title: 'crwdns709324:0crwdne709324:0' immediate: - title: 'crwdns707216:0crwdne707216:0' - mentioned: 'crwdns707218:0crwdne707218:0' + title: 'crwdns709326:0crwdne709326:0' + mentioned: 'crwdns709328:0crwdne709328:0' alerts: - title: 'crwdns707220:0crwdne707220:0' + title: 'crwdns709330:0crwdne709330:0' explanation: > - crwdns707222:0crwdne707222:0 - news_added: 'crwdns707224:0crwdne707224:0' - news_commented: 'crwdns707226:0crwdne707226:0' - document_added: 'crwdns707228:0crwdne707228:0' - forum_messages: 'crwdns707230:0crwdne707230:0' - wiki_page_added: 'crwdns707232:0crwdne707232:0' - wiki_page_updated: 'crwdns707234:0crwdne707234:0' - membership_added: 'crwdns707236:0crwdne707236:0' - membership_updated: 'crwdns707238:0crwdne707238:0' - title: 'crwdns707240:0crwdne707240:0' + crwdns709332:0crwdne709332:0 + news_added: 'crwdns709334:0crwdne709334:0' + news_commented: 'crwdns709336:0crwdne709336:0' + document_added: 'crwdns709338:0crwdne709338:0' + forum_messages: 'crwdns709340:0crwdne709340:0' + wiki_page_added: 'crwdns709342:0crwdne709342:0' + wiki_page_updated: 'crwdns709344:0crwdne709344:0' + membership_added: 'crwdns709346:0crwdne709346:0' + membership_updated: 'crwdns709348:0crwdne709348:0' + title: 'crwdns709350:0crwdne709350:0' pause: - label: 'crwdns707242:0crwdne707242:0' - first_day: 'crwdns707244:0crwdne707244:0' - last_day: 'crwdns707246:0crwdne707246:0' - text_are_you_sure: "crwdns707248:0crwdne707248:0" - text_data_lost: "crwdns707250:0crwdne707250:0" + label: 'crwdns709352:0crwdne709352:0' + first_day: 'crwdns709354:0crwdne709354:0' + last_day: 'crwdns709356:0crwdne709356:0' + text_are_you_sure: "crwdns709358:0crwdne709358:0" + text_data_lost: "crwdns709360:0crwdne709360:0" types: attribute_groups: - error_duplicate_group_name: "crwdns707252:0%{group}crwdne707252:0" - error_no_table_configured: "crwdns707254:0%{group}crwdne707254:0" - reset_title: "crwdns707256:0crwdne707256:0" + error_duplicate_group_name: "crwdns709362:0%{group}crwdne709362:0" + error_no_table_configured: "crwdns709364:0%{group}crwdne709364:0" + reset_title: "crwdns709366:0crwdne709366:0" confirm_reset: > - crwdns707258:0crwdne707258:0 - upgrade_to_ee: "crwdns707260:0crwdne707260:0" - upgrade_to_ee_text: "crwdns707262:0crwdne707262:0" - more_information: "crwdns707264:0crwdne707264:0" - nevermind: "crwdns707266:0crwdne707266:0" + crwdns709368:0crwdne709368:0 + upgrade_to_ee: "crwdns709370:0crwdne709370:0" + upgrade_to_ee_text: "crwdns709372:0crwdne709372:0" + more_information: "crwdns709374:0crwdne709374:0" + nevermind: "crwdns709376:0crwdne709376:0" edit: - form_configuration: "crwdns707268:0crwdne707268:0" - projects: "crwdns707270:0crwdne707270:0" - settings: "crwdns707272:0crwdne707272:0" + form_configuration: "crwdns709378:0crwdne709378:0" + projects: "crwdns709380:0crwdne709380:0" + settings: "crwdns709382:0crwdne709382:0" time_entry: - project: 'crwdns707274:0crwdne707274:0' - work_package: 'crwdns707276:0crwdne707276:0' - work_package_required: 'crwdns707278:0crwdne707278:0' - activity: 'crwdns707280:0crwdne707280:0' - comment: 'crwdns707282:0crwdne707282:0' - duration: 'crwdns707284:0crwdne707284:0' - spent_on: 'crwdns707286:0crwdne707286:0' - hours: 'crwdns707288:0crwdne707288:0' - title: 'crwdns707290:0crwdne707290:0' + project: 'crwdns709384:0crwdne709384:0' + work_package: 'crwdns709386:0crwdne709386:0' + work_package_required: 'crwdns709388:0crwdne709388:0' + activity: 'crwdns709390:0crwdne709390:0' + comment: 'crwdns709392:0crwdne709392:0' + duration: 'crwdns709394:0crwdne709394:0' + spent_on: 'crwdns709396:0crwdne709396:0' + hours: 'crwdns709398:0crwdne709398:0' + title: 'crwdns709400:0crwdne709400:0' two_factor_authentication: - label_two_factor_authentication: 'crwdns707292:0crwdne707292:0' + label_two_factor_authentication: 'crwdns709402:0crwdne709402:0' watchers: - label_loading: crwdns707294:0crwdne707294:0 - label_error_loading: crwdns707296:0crwdne707296:0 - label_search_watchers: crwdns707298:0crwdne707298:0 - label_add: crwdns707300:0crwdne707300:0 - label_discard: crwdns707302:0crwdne707302:0 - typeahead_placeholder: crwdns707304:0crwdne707304:0 + label_loading: crwdns709404:0crwdne709404:0 + label_error_loading: crwdns709406:0crwdne709406:0 + label_search_watchers: crwdns709408:0crwdne709408:0 + label_add: crwdns709410:0crwdne709410:0 + label_discard: crwdns709412:0crwdne709412:0 + typeahead_placeholder: crwdns709414:0crwdne709414:0 relation_labels: - parent: "crwdns707306:0crwdne707306:0" - children: "crwdns707308:0crwdne707308:0" - relates: "crwdns707310:0crwdne707310:0" - duplicates: "crwdns707312:0crwdne707312:0" - duplicated: "crwdns707314:0crwdne707314:0" - blocks: "crwdns707316:0crwdne707316:0" - blocked: "crwdns707318:0crwdne707318:0" - precedes: "crwdns707320:0crwdne707320:0" - follows: "crwdns707322:0crwdne707322:0" - includes: "crwdns707324:0crwdne707324:0" - partof: "crwdns707326:0crwdne707326:0" - requires: "crwdns707328:0crwdne707328:0" - required: "crwdns707330:0crwdne707330:0" - relation_type: "crwdns707332:0crwdne707332:0" + parent: "crwdns709416:0crwdne709416:0" + children: "crwdns709418:0crwdne709418:0" + relates: "crwdns709420:0crwdne709420:0" + duplicates: "crwdns709422:0crwdne709422:0" + duplicated: "crwdns709424:0crwdne709424:0" + blocks: "crwdns709426:0crwdne709426:0" + blocked: "crwdns709428:0crwdne709428:0" + precedes: "crwdns709430:0crwdne709430:0" + follows: "crwdns709432:0crwdne709432:0" + includes: "crwdns709434:0crwdne709434:0" + partof: "crwdns709436:0crwdne709436:0" + requires: "crwdns709438:0crwdne709438:0" + required: "crwdns709440:0crwdne709440:0" + relation_type: "crwdns709442:0crwdne709442:0" relations_hierarchy: - parent_headline: "crwdns707334:0crwdne707334:0" - hierarchy_headline: "crwdns707336:0crwdne707336:0" - children_headline: "crwdns707338:0crwdne707338:0" + parent_headline: "crwdns709444:0crwdne709444:0" + hierarchy_headline: "crwdns709446:0crwdne709446:0" + children_headline: "crwdns709448:0crwdne709448:0" relation_buttons: - set_parent: "crwdns707340:0crwdne707340:0" - change_parent: "crwdns707342:0crwdne707342:0" - remove_parent: "crwdns707344:0crwdne707344:0" - hierarchy_indent: "crwdns707346:0crwdne707346:0" - hierarchy_outdent: "crwdns707348:0crwdne707348:0" - group_by_wp_type: "crwdns707350:0crwdne707350:0" - group_by_relation_type: "crwdns707352:0crwdne707352:0" - add_parent: "crwdns707354:0crwdne707354:0" - add_new_child: "crwdns707356:0crwdne707356:0" - create_new: "crwdns707358:0crwdne707358:0" - add_existing: "crwdns707360:0crwdne707360:0" - add_existing_child: "crwdns707362:0crwdne707362:0" - remove_child: "crwdns707364:0crwdne707364:0" - add_new_relation: "crwdns707366:0crwdne707366:0" - add_existing_relation: "crwdns707368:0crwdne707368:0" - update_description: "crwdns707370:0crwdne707370:0" - toggle_description: "crwdns707372:0crwdne707372:0" - update_relation: "crwdns707374:0crwdne707374:0" - add_follower: "crwdns707376:0crwdne707376:0" - add_predecessor: "crwdns707378:0crwdne707378:0" - remove: "crwdns707380:0crwdne707380:0" - save: "crwdns707382:0crwdne707382:0" - abort: "crwdns707384:0crwdne707384:0" + set_parent: "crwdns709450:0crwdne709450:0" + change_parent: "crwdns709452:0crwdne709452:0" + remove_parent: "crwdns709454:0crwdne709454:0" + hierarchy_indent: "crwdns709456:0crwdne709456:0" + hierarchy_outdent: "crwdns709458:0crwdne709458:0" + group_by_wp_type: "crwdns709460:0crwdne709460:0" + group_by_relation_type: "crwdns709462:0crwdne709462:0" + add_parent: "crwdns709464:0crwdne709464:0" + add_new_child: "crwdns709466:0crwdne709466:0" + create_new: "crwdns709468:0crwdne709468:0" + add_existing: "crwdns709470:0crwdne709470:0" + add_existing_child: "crwdns709472:0crwdne709472:0" + remove_child: "crwdns709474:0crwdne709474:0" + add_new_relation: "crwdns709476:0crwdne709476:0" + add_existing_relation: "crwdns709478:0crwdne709478:0" + update_description: "crwdns709480:0crwdne709480:0" + toggle_description: "crwdns709482:0crwdne709482:0" + update_relation: "crwdns709484:0crwdne709484:0" + add_follower: "crwdns709486:0crwdne709486:0" + add_predecessor: "crwdns709488:0crwdne709488:0" + remove: "crwdns709490:0crwdne709490:0" + save: "crwdns709492:0crwdne709492:0" + abort: "crwdns709494:0crwdne709494:0" relations_autocomplete: - placeholder: "crwdns707386:0crwdne707386:0" - parent_placeholder: "crwdns707388:0crwdne707388:0" + placeholder: "crwdns709496:0crwdne709496:0" + parent_placeholder: "crwdns709498:0crwdne709498:0" autocompleter: - placeholder: "crwdns707390:0crwdne707390:0" - notFoundText: "crwdns707392:0crwdne707392:0" - typeToSearchText: "crwdns707394:0crwdne707394:0" + placeholder: "crwdns709500:0crwdne709500:0" + notFoundText: "crwdns709502:0crwdne709502:0" + typeToSearchText: "crwdns709504:0crwdne709504:0" repositories: - select_tag: 'crwdns707396:0crwdne707396:0' - select_branch: 'crwdns707398:0crwdne707398:0' - field_value_enter_prompt: "crwdns707400:0%{field}crwdne707400:0" - project_menu_details: "crwdns707402:0crwdne707402:0" + select_tag: 'crwdns709506:0crwdne709506:0' + select_branch: 'crwdns709508:0crwdne709508:0' + field_value_enter_prompt: "crwdns709510:0%{field}crwdne709510:0" + project_menu_details: "crwdns709512:0crwdne709512:0" scheduling: - manual: 'crwdns707404:0crwdne707404:0' - automatic: 'crwdns707406:0crwdne707406:0' + manual: 'crwdns709514:0crwdne709514:0' + automatic: 'crwdns709516:0crwdne709516:0' sort: - sorted_asc: 'crwdns707408:0crwdne707408:0' - sorted_dsc: 'crwdns707410:0crwdne707410:0' - sorted_no: 'crwdns707412:0crwdne707412:0' - sorting_disabled: 'crwdns707414:0crwdne707414:0' - activate_asc: 'crwdns707416:0crwdne707416:0' - activate_dsc: 'crwdns707418:0crwdne707418:0' - activate_no: 'crwdns707420:0crwdne707420:0' - text_work_packages_destroy_confirmation: "crwdns707422:0crwdne707422:0" - text_query_destroy_confirmation: "crwdns707424:0crwdne707424:0" - text_attachment_destroy_confirmation: "crwdns707426:0crwdne707426:0" + sorted_asc: 'crwdns709518:0crwdne709518:0' + sorted_dsc: 'crwdns709520:0crwdne709520:0' + sorted_no: 'crwdns709522:0crwdne709522:0' + sorting_disabled: 'crwdns709524:0crwdne709524:0' + activate_asc: 'crwdns709526:0crwdne709526:0' + activate_dsc: 'crwdns709528:0crwdne709528:0' + activate_no: 'crwdns709530:0crwdne709530:0' + text_work_packages_destroy_confirmation: "crwdns709532:0crwdne709532:0" + text_query_destroy_confirmation: "crwdns709534:0crwdne709534:0" + text_attachment_destroy_confirmation: "crwdns709536:0crwdne709536:0" timelines: - quarter_label: 'crwdns707428:0%{quarter_number}crwdne707428:0' - gantt_chart: 'crwdns707430:0crwdne707430:0' + quarter_label: 'crwdns709538:0%{quarter_number}crwdne709538:0' + gantt_chart: 'crwdns709540:0crwdne709540:0' labels: - title: 'crwdns707432:0crwdne707432:0' - bar: 'crwdns707434:0crwdne707434:0' - left: 'crwdns707436:0crwdne707436:0' - right: 'crwdns707438:0crwdne707438:0' - farRight: 'crwdns707440:0crwdne707440:0' - showNone: 'crwdns707442:0crwdne707442:0' + title: 'crwdns709542:0crwdne709542:0' + bar: 'crwdns709544:0crwdne709544:0' + left: 'crwdns709546:0crwdne709546:0' + right: 'crwdns709548:0crwdne709548:0' + farRight: 'crwdns709550:0crwdne709550:0' + showNone: 'crwdns709552:0crwdne709552:0' description: > - crwdns707444:0crwdne707444:0 - button_activate: 'crwdns707446:0crwdne707446:0' - button_deactivate: 'crwdns707448:0crwdne707448:0' - cancel: crwdns707450:0crwdne707450:0 - change: "crwdns707452:0crwdne707452:0" - due_date: "crwdns707454:0crwdne707454:0" - empty: "crwdns707456:0crwdne707456:0" - error: "crwdns707458:0crwdne707458:0" + crwdns709554:0crwdne709554:0 + button_activate: 'crwdns709556:0crwdne709556:0' + button_deactivate: 'crwdns709558:0crwdne709558:0' + cancel: crwdns709560:0crwdne709560:0 + change: "crwdns709562:0crwdne709562:0" + due_date: "crwdns709564:0crwdne709564:0" + empty: "crwdns709566:0crwdne709566:0" + error: "crwdns709568:0crwdne709568:0" errors: - not_implemented: "crwdns707460:0crwdne707460:0" - report_comparison: "crwdns707462:0crwdne707462:0" - report_epicfail: "crwdns707464:0crwdne707464:0" - report_timeout: "crwdns707466:0crwdne707466:0" + not_implemented: "crwdns709570:0crwdne709570:0" + report_comparison: "crwdns709572:0crwdne709572:0" + report_epicfail: "crwdns709574:0crwdne709574:0" + report_timeout: "crwdns709576:0crwdne709576:0" filter: - grouping_other: "crwdns707468:0crwdne707468:0" - noneSelection: "crwdns707470:0crwdne707470:0" - name: "crwdns707472:0crwdne707472:0" - outline: "crwdns707474:0crwdne707474:0" + grouping_other: "crwdns709578:0crwdne709578:0" + noneSelection: "crwdns709580:0crwdne709580:0" + name: "crwdns709582:0crwdne709582:0" + outline: "crwdns709584:0crwdne709584:0" outlines: - aggregation: "crwdns707476:0crwdne707476:0" - level1: "crwdns707478:0crwdne707478:0" - level2: "crwdns707480:0crwdne707480:0" - level3: "crwdns707482:0crwdne707482:0" - level4: "crwdns707484:0crwdne707484:0" - level5: "crwdns707486:0crwdne707486:0" - all: "crwdns707488:0crwdne707488:0" - project_status: "crwdns707490:0crwdne707490:0" - really_close_dialog: "crwdns707492:0crwdne707492:0" - responsible: "crwdns707494:0crwdne707494:0" - save: crwdns707496:0crwdne707496:0 - start_date: "crwdns707498:0crwdne707498:0" - tooManyProjects: "crwdns707500:0%{count}crwdne707500:0" + aggregation: "crwdns709586:0crwdne709586:0" + level1: "crwdns709588:0crwdne709588:0" + level2: "crwdns709590:0crwdne709590:0" + level3: "crwdns709592:0crwdne709592:0" + level4: "crwdns709594:0crwdne709594:0" + level5: "crwdns709596:0crwdne709596:0" + all: "crwdns709598:0crwdne709598:0" + project_status: "crwdns709600:0crwdne709600:0" + really_close_dialog: "crwdns709602:0crwdne709602:0" + responsible: "crwdns709604:0crwdne709604:0" + save: crwdns709606:0crwdne709606:0 + start_date: "crwdns709608:0crwdne709608:0" + tooManyProjects: "crwdns709610:0%{count}crwdne709610:0" selection_mode: - notification: 'crwdns707502:0crwdne707502:0' + notification: 'crwdns709612:0crwdne709612:0' zoom: - in: "crwdns707504:0crwdne707504:0" - out: "crwdns707506:0crwdne707506:0" - auto: "crwdns707508:0crwdne707508:0" - days: "crwdns707510:0crwdne707510:0" - weeks: "crwdns707512:0crwdne707512:0" - months: "crwdns707514:0crwdne707514:0" - quarters: "crwdns707516:0crwdne707516:0" - years: "crwdns707518:0crwdne707518:0" - slider: "crwdns707520:0crwdne707520:0" + in: "crwdns709614:0crwdne709614:0" + out: "crwdns709616:0crwdne709616:0" + auto: "crwdns709618:0crwdne709618:0" + days: "crwdns709620:0crwdne709620:0" + weeks: "crwdns709622:0crwdne709622:0" + months: "crwdns709624:0crwdne709624:0" + quarters: "crwdns709626:0crwdne709626:0" + years: "crwdns709628:0crwdne709628:0" + slider: "crwdns709630:0crwdne709630:0" description: > - crwdns707522:0crwdne707522:0 + crwdns709632:0crwdne709632:0 tl_toolbar: - zooms: "crwdns707524:0crwdne707524:0" - outlines: "crwdns707526:0crwdne707526:0" + zooms: "crwdns709634:0crwdne709634:0" + outlines: "crwdns709636:0crwdne709636:0" upsale: - ee_only: 'crwdns707528:0crwdne707528:0' + ee_only: 'crwdns709638:0crwdne709638:0' wiki_formatting: - strong: "crwdns707530:0crwdne707530:0" - italic: "crwdns707532:0crwdne707532:0" - underline: "crwdns707534:0crwdne707534:0" - deleted: "crwdns707536:0crwdne707536:0" - code: "crwdns707538:0crwdne707538:0" - heading1: "crwdns707540:0crwdne707540:0" - heading2: "crwdns707542:0crwdne707542:0" - heading3: "crwdns707544:0crwdne707544:0" - unordered_list: "crwdns707546:0crwdne707546:0" - ordered_list: "crwdns707548:0crwdne707548:0" - quote: "crwdns707550:0crwdne707550:0" - unquote: "crwdns707552:0crwdne707552:0" - preformatted_text: "crwdns707554:0crwdne707554:0" - wiki_link: "crwdns707556:0crwdne707556:0" - image: "crwdns707558:0crwdne707558:0" + strong: "crwdns709640:0crwdne709640:0" + italic: "crwdns709642:0crwdne709642:0" + underline: "crwdns709644:0crwdne709644:0" + deleted: "crwdns709646:0crwdne709646:0" + code: "crwdns709648:0crwdne709648:0" + heading1: "crwdns709650:0crwdne709650:0" + heading2: "crwdns709652:0crwdne709652:0" + heading3: "crwdns709654:0crwdne709654:0" + unordered_list: "crwdns709656:0crwdne709656:0" + ordered_list: "crwdns709658:0crwdne709658:0" + quote: "crwdns709660:0crwdne709660:0" + unquote: "crwdns709662:0crwdne709662:0" + preformatted_text: "crwdns709664:0crwdne709664:0" + wiki_link: "crwdns709666:0crwdne709666:0" + image: "crwdns709668:0crwdne709668:0" work_packages: bulk_actions: - move: 'crwdns707560:0crwdne707560:0' - edit: 'crwdns707562:0crwdne707562:0' - copy: 'crwdns707564:0crwdne707564:0' - delete: 'crwdns707566:0crwdne707566:0' - button_clear: "crwdns707568:0crwdne707568:0" - comment_added: "crwdns707570:0crwdne707570:0" - comment_send_failed: "crwdns707572:0crwdne707572:0" - comment_updated: "crwdns707574:0crwdne707574:0" - confirm_edit_cancel: "crwdns707576:0crwdne707576:0" - description_filter: "crwdns707578:0crwdne707578:0" - description_enter_text: "crwdns707580:0crwdne707580:0" - description_options_hide: "crwdns707582:0crwdne707582:0" - description_options_show: "crwdns707584:0crwdne707584:0" - edit_attribute: "crwdns707586:0%{attribute}crwdne707586:0" - key_value: "crwdns707588:0%{key}crwdnd707588:0%{value}crwdne707588:0" - label_enable_multi_select: "crwdns707590:0crwdne707590:0" - label_disable_multi_select: "crwdns707592:0crwdne707592:0" - label_filter_add: "crwdns707594:0crwdne707594:0" - label_filter_by_text: "crwdns707596:0crwdne707596:0" - label_options: "crwdns707598:0crwdne707598:0" - label_column_multiselect: "crwdns707600:0crwdne707600:0" - message_error_during_bulk_delete: crwdns707602:0crwdne707602:0 - message_successful_bulk_delete: crwdns707604:0crwdne707604:0 - message_successful_show_in_fullscreen: "crwdns707606:0crwdne707606:0" - message_view_spent_time: "crwdns707608:0crwdne707608:0" - message_work_package_read_only: "crwdns707610:0crwdne707610:0" - message_work_package_status_blocked: "crwdns707612:0crwdne707612:0" - placeholder_filter_by_text: "crwdns707614:0crwdne707614:0" + move: 'crwdns709670:0crwdne709670:0' + edit: 'crwdns709672:0crwdne709672:0' + copy: 'crwdns709674:0crwdne709674:0' + delete: 'crwdns709676:0crwdne709676:0' + button_clear: "crwdns709678:0crwdne709678:0" + comment_added: "crwdns709680:0crwdne709680:0" + comment_send_failed: "crwdns709682:0crwdne709682:0" + comment_updated: "crwdns709684:0crwdne709684:0" + confirm_edit_cancel: "crwdns709686:0crwdne709686:0" + description_filter: "crwdns709688:0crwdne709688:0" + description_enter_text: "crwdns709690:0crwdne709690:0" + description_options_hide: "crwdns709692:0crwdne709692:0" + description_options_show: "crwdns709694:0crwdne709694:0" + edit_attribute: "crwdns709696:0%{attribute}crwdne709696:0" + key_value: "crwdns709698:0%{key}crwdnd709698:0%{value}crwdne709698:0" + label_enable_multi_select: "crwdns709700:0crwdne709700:0" + label_disable_multi_select: "crwdns709702:0crwdne709702:0" + label_filter_add: "crwdns709704:0crwdne709704:0" + label_filter_by_text: "crwdns709706:0crwdne709706:0" + label_options: "crwdns709708:0crwdne709708:0" + label_column_multiselect: "crwdns709710:0crwdne709710:0" + message_error_during_bulk_delete: crwdns709712:0crwdne709712:0 + message_successful_bulk_delete: crwdns709714:0crwdne709714:0 + message_successful_show_in_fullscreen: "crwdns709716:0crwdne709716:0" + message_view_spent_time: "crwdns709718:0crwdne709718:0" + message_work_package_read_only: "crwdns709720:0crwdne709720:0" + message_work_package_status_blocked: "crwdns709722:0crwdne709722:0" + placeholder_filter_by_text: "crwdns709724:0crwdne709724:0" inline_create: - title: 'crwdns707616:0crwdne707616:0' + title: 'crwdns709726:0crwdne709726:0' create: - title: 'crwdns707618:0crwdne707618:0' - header: 'crwdns707620:0%{type}crwdne707620:0' - header_no_type: 'crwdns707622:0crwdne707622:0' - header_with_parent: 'crwdns707624:0%{type}crwdnd707624:0%{parent_type}crwdnd707624:0%{id}crwdne707624:0' - button: 'crwdns707626:0crwdne707626:0' + title: 'crwdns709728:0crwdne709728:0' + header: 'crwdns709730:0%{type}crwdne709730:0' + header_no_type: 'crwdns709732:0crwdne709732:0' + header_with_parent: 'crwdns709734:0%{type}crwdnd709734:0%{parent_type}crwdnd709734:0%{id}crwdne709734:0' + button: 'crwdns709736:0crwdne709736:0' copy: - title: 'crwdns707628:0crwdne707628:0' + title: 'crwdns709738:0crwdne709738:0' hierarchy: - show: "crwdns707630:0crwdne707630:0" - hide: "crwdns707632:0crwdne707632:0" - toggle_button: 'crwdns707634:0crwdne707634:0' - leaf: 'crwdns707636:0%{level}crwdne707636:0' - children_collapsed: 'crwdns707638:0%{level}crwdne707638:0' - children_expanded: 'crwdns707640:0%{level}crwdne707640:0' + show: "crwdns709740:0crwdne709740:0" + hide: "crwdns709742:0crwdne709742:0" + toggle_button: 'crwdns709744:0crwdne709744:0' + leaf: 'crwdns709746:0%{level}crwdne709746:0' + children_collapsed: 'crwdns709748:0%{level}crwdne709748:0' + children_expanded: 'crwdns709750:0%{level}crwdne709750:0' faulty_query: - title: crwdns707642:0crwdne707642:0 - description: crwdns707644:0crwdne707644:0 + title: crwdns709752:0crwdne709752:0 + description: crwdns709754:0crwdne709754:0 no_results: - title: crwdns707646:0crwdne707646:0 - description: crwdns707648:0crwdne707648:0 - limited_results: crwdns707650:0%{count}crwdne707650:0 + title: crwdns709756:0crwdne709756:0 + description: crwdns709758:0crwdne709758:0 + limited_results: crwdns709760:0%{count}crwdne709760:0 property_groups: - details: "crwdns707652:0crwdne707652:0" - people: "crwdns707654:0crwdne707654:0" - estimatesAndTime: "crwdns707656:0crwdne707656:0" - other: "crwdns707658:0crwdne707658:0" + details: "crwdns709762:0crwdne709762:0" + people: "crwdns709764:0crwdne709764:0" + estimatesAndTime: "crwdns709766:0crwdne709766:0" + other: "crwdns709768:0crwdne709768:0" properties: - assignee: "crwdns707660:0crwdne707660:0" - author: "crwdns707662:0crwdne707662:0" - createdAt: "crwdns707664:0crwdne707664:0" - description: "crwdns707666:0crwdne707666:0" - date: "crwdns707668:0crwdne707668:0" - dueDate: "crwdns707670:0crwdne707670:0" - estimatedTime: "crwdns707672:0crwdne707672:0" - spentTime: "crwdns707674:0crwdne707674:0" - category: "crwdns707676:0crwdne707676:0" - percentageDone: "crwdns707678:0crwdne707678:0" - priority: "crwdns707680:0crwdne707680:0" - projectName: "crwdns707682:0crwdne707682:0" - responsible: "crwdns707684:0crwdne707684:0" - startDate: "crwdns707686:0crwdne707686:0" - status: "crwdns707688:0crwdne707688:0" - subject: "crwdns707690:0crwdne707690:0" - subproject: "crwdns707692:0crwdne707692:0" - title: "crwdns707694:0crwdne707694:0" - type: "crwdns707696:0crwdne707696:0" - updatedAt: "crwdns707698:0crwdne707698:0" - versionName: "crwdns707700:0crwdne707700:0" - version: "crwdns707702:0crwdne707702:0" + assignee: "crwdns709770:0crwdne709770:0" + author: "crwdns709772:0crwdne709772:0" + createdAt: "crwdns709774:0crwdne709774:0" + description: "crwdns709776:0crwdne709776:0" + date: "crwdns709778:0crwdne709778:0" + dueDate: "crwdns709780:0crwdne709780:0" + estimatedTime: "crwdns709782:0crwdne709782:0" + spentTime: "crwdns709784:0crwdne709784:0" + category: "crwdns709786:0crwdne709786:0" + percentageDone: "crwdns709788:0crwdne709788:0" + priority: "crwdns709790:0crwdne709790:0" + projectName: "crwdns709792:0crwdne709792:0" + responsible: "crwdns709794:0crwdne709794:0" + startDate: "crwdns709796:0crwdne709796:0" + status: "crwdns709798:0crwdne709798:0" + subject: "crwdns709800:0crwdne709800:0" + subproject: "crwdns709802:0crwdne709802:0" + title: "crwdns709804:0crwdne709804:0" + type: "crwdns709806:0crwdne709806:0" + updatedAt: "crwdns709808:0crwdne709808:0" + versionName: "crwdns709810:0crwdne709810:0" + version: "crwdns709812:0crwdne709812:0" default_queries: - latest_activity: "crwdns707704:0crwdne707704:0" - created_by_me: "crwdns707706:0crwdne707706:0" - assigned_to_me: "crwdns707708:0crwdne707708:0" - recently_created: "crwdns707710:0crwdne707710:0" - all_open: "crwdns707712:0crwdne707712:0" - summary: "crwdns707714:0crwdne707714:0" + latest_activity: "crwdns709814:0crwdne709814:0" + created_by_me: "crwdns709816:0crwdne709816:0" + assigned_to_me: "crwdns709818:0crwdne709818:0" + recently_created: "crwdns709820:0crwdne709820:0" + all_open: "crwdns709822:0crwdne709822:0" + summary: "crwdns709824:0crwdne709824:0" jump_marks: - pagination: "crwdns707716:0crwdne707716:0" - label_pagination: "crwdns707718:0crwdne707718:0" - content: "crwdns707720:0crwdne707720:0" - label_content: "crwdns707722:0crwdne707722:0" + pagination: "crwdns709826:0crwdne709826:0" + label_pagination: "crwdns709828:0crwdne709828:0" + content: "crwdns709830:0crwdne709830:0" + label_content: "crwdns709832:0crwdne709832:0" placeholders: - default: "crwdns707724:0crwdne707724:0" - date: "crwdns707726:0crwdne707726:0" - formattable: "crwdns707728:0%{name}crwdne707728:0" + default: "crwdns709834:0crwdne709834:0" + date: "crwdns709836:0crwdne709836:0" + formattable: "crwdns709838:0%{name}crwdne709838:0" query: - column_names: "crwdns707730:0crwdne707730:0" - group_by: "crwdns707732:0crwdne707732:0" - group: "crwdns707734:0crwdne707734:0" - group_by_disabled_by_hierarchy: "crwdns707736:0crwdne707736:0" - hierarchy_disabled_by_group_by: "crwdns707738:0%{column}crwdne707738:0" - sort_ascending: "crwdns707740:0crwdne707740:0" - sort_descending: "crwdns707742:0crwdne707742:0" - move_column_left: "crwdns707744:0crwdne707744:0" - move_column_right: "crwdns707746:0crwdne707746:0" - hide_column: "crwdns707748:0crwdne707748:0" - insert_columns: "crwdns707750:0crwdne707750:0" - filters: "crwdns707752:0crwdne707752:0" - display_sums: "crwdns707754:0crwdne707754:0" - confirm_edit_cancel: "crwdns707756:0crwdne707756:0" - click_to_edit_query_name: "crwdns707758:0crwdne707758:0" - rename_query_placeholder: "crwdns707760:0crwdne707760:0" - star_text: "crwdns707762:0crwdne707762:0" + column_names: "crwdns709840:0crwdne709840:0" + group_by: "crwdns709842:0crwdne709842:0" + group: "crwdns709844:0crwdne709844:0" + group_by_disabled_by_hierarchy: "crwdns709846:0crwdne709846:0" + hierarchy_disabled_by_group_by: "crwdns709848:0%{column}crwdne709848:0" + sort_ascending: "crwdns709850:0crwdne709850:0" + sort_descending: "crwdns709852:0crwdne709852:0" + move_column_left: "crwdns709854:0crwdne709854:0" + move_column_right: "crwdns709856:0crwdne709856:0" + hide_column: "crwdns709858:0crwdne709858:0" + insert_columns: "crwdns709860:0crwdne709860:0" + filters: "crwdns709862:0crwdne709862:0" + display_sums: "crwdns709864:0crwdne709864:0" + confirm_edit_cancel: "crwdns709866:0crwdne709866:0" + click_to_edit_query_name: "crwdns709868:0crwdne709868:0" + rename_query_placeholder: "crwdns709870:0crwdne709870:0" + star_text: "crwdns709872:0crwdne709872:0" public_text: > - crwdns707764:0crwdne707764:0 + crwdns709874:0crwdne709874:0 errors: - unretrievable_query: "crwdns707766:0crwdne707766:0" - not_found: "crwdns707768:0crwdne707768:0" - duplicate_query_title: "crwdns707770:0crwdne707770:0" - text_no_results: "crwdns707772:0crwdne707772:0" + unretrievable_query: "crwdns709876:0crwdne709876:0" + not_found: "crwdns709878:0crwdne709878:0" + duplicate_query_title: "crwdns709880:0crwdne709880:0" + text_no_results: "crwdns709882:0crwdne709882:0" scheduling: - is_parent: "crwdns707774:0crwdne707774:0" - is_switched_from_manual_to_automatic: "crwdns707776:0crwdne707776:0" + is_parent: "crwdns709884:0crwdne709884:0" + is_switched_from_manual_to_automatic: "crwdns709886:0crwdne709886:0" table: - configure_button: 'crwdns707778:0crwdne707778:0' - summary: "crwdns707780:0crwdne707780:0" - text_inline_edit: "crwdns707782:0crwdne707782:0" - text_sort_hint: "crwdns707784:0crwdne707784:0" - text_select_hint: "crwdns707786:0crwdne707786:0" + configure_button: 'crwdns709888:0crwdne709888:0' + summary: "crwdns709890:0crwdne709890:0" + text_inline_edit: "crwdns709892:0crwdne709892:0" + text_sort_hint: "crwdns709894:0crwdne709894:0" + text_select_hint: "crwdns709896:0crwdne709896:0" table_configuration: - button: 'crwdns707788:0crwdne707788:0' - choose_display_mode: 'crwdns707790:0crwdne707790:0' - modal_title: 'crwdns707792:0crwdne707792:0' - embedded_tab_disabled: "crwdns707794:0crwdne707794:0" - default: "crwdns707796:0crwdne707796:0" - display_settings: 'crwdns707798:0crwdne707798:0' - default_mode: "crwdns707800:0crwdne707800:0" - hierarchy_mode: "crwdns707802:0crwdne707802:0" - hierarchy_hint: "crwdns707804:0crwdne707804:0" - display_sums_hint: "crwdns707806:0crwdne707806:0" - show_timeline_hint: "crwdns707808:0crwdne707808:0" - highlighting: 'crwdns707810:0crwdne707810:0' + button: 'crwdns709898:0crwdne709898:0' + choose_display_mode: 'crwdns709900:0crwdne709900:0' + modal_title: 'crwdns709902:0crwdne709902:0' + embedded_tab_disabled: "crwdns709904:0crwdne709904:0" + default: "crwdns709906:0crwdne709906:0" + display_settings: 'crwdns709908:0crwdne709908:0' + default_mode: "crwdns709910:0crwdne709910:0" + hierarchy_mode: "crwdns709912:0crwdne709912:0" + hierarchy_hint: "crwdns709914:0crwdne709914:0" + display_sums_hint: "crwdns709916:0crwdne709916:0" + show_timeline_hint: "crwdns709918:0crwdne709918:0" + highlighting: 'crwdns709920:0crwdne709920:0' highlighting_mode: - description: "crwdns707812:0crwdne707812:0" - none: "crwdns707814:0crwdne707814:0" - inline: 'crwdns707816:0crwdne707816:0' - inline_all: 'crwdns707818:0crwdne707818:0' - entire_row_by: 'crwdns707820:0crwdne707820:0' - status: 'crwdns707822:0crwdne707822:0' - priority: 'crwdns707824:0crwdne707824:0' - type: 'crwdns707826:0crwdne707826:0' + description: "crwdns709922:0crwdne709922:0" + none: "crwdns709924:0crwdne709924:0" + inline: 'crwdns709926:0crwdne709926:0' + inline_all: 'crwdns709928:0crwdne709928:0' + entire_row_by: 'crwdns709930:0crwdne709930:0' + status: 'crwdns709932:0crwdne709932:0' + priority: 'crwdns709934:0crwdne709934:0' + type: 'crwdns709936:0crwdne709936:0' sorting_mode: - description: 'crwdns707828:0crwdne707828:0' - automatic: 'crwdns707830:0crwdne707830:0' - manually: 'crwdns707832:0crwdne707832:0' - warning: 'crwdns707834:0crwdne707834:0' - columns_help_text: "crwdns707836:0crwdne707836:0" + description: 'crwdns709938:0crwdne709938:0' + automatic: 'crwdns709940:0crwdne709940:0' + manually: 'crwdns709942:0crwdne709942:0' + warning: 'crwdns709944:0crwdne709944:0' + columns_help_text: "crwdns709946:0crwdne709946:0" upsale: - attribute_highlighting: 'crwdns707838:0crwdne707838:0' - relation_columns: 'crwdns707840:0crwdne707840:0' - check_out_link: 'crwdns707842:0crwdne707842:0' + attribute_highlighting: 'crwdns709948:0crwdne709948:0' + relation_columns: 'crwdns709950:0crwdne709950:0' + check_out_link: 'crwdns709952:0crwdne709952:0' relation_filters: - filter_work_packages_by_relation_type: 'crwdns707844:0crwdne707844:0' + filter_work_packages_by_relation_type: 'crwdns709954:0crwdne709954:0' tabs: - overview: crwdns707846:0crwdne707846:0 - activity: crwdns707848:0crwdne707848:0 - relations: crwdns707850:0crwdne707850:0 - watchers: crwdns707852:0crwdne707852:0 - attachments: crwdns707854:0crwdne707854:0 + overview: crwdns709956:0crwdne709956:0 + activity: crwdns709958:0crwdne709958:0 + relations: crwdns709960:0crwdne709960:0 + watchers: crwdns709962:0crwdne709962:0 + attachments: crwdns709964:0crwdne709964:0 time_relative: - days: "crwdns707856:0crwdne707856:0" - weeks: "crwdns707858:0crwdne707858:0" - months: "crwdns707860:0crwdne707860:0" + days: "crwdns709966:0crwdne709966:0" + weeks: "crwdns709968:0crwdne709968:0" + months: "crwdns709970:0crwdne709970:0" toolbar: settings: - configure_view: "crwdns707862:0crwdne707862:0" - columns: "crwdns707864:0crwdne707864:0" - sort_by: "crwdns707866:0crwdne707866:0" - group_by: "crwdns707868:0crwdne707868:0" - display_sums: "crwdns707870:0crwdne707870:0" - display_hierarchy: "crwdns707872:0crwdne707872:0" - hide_hierarchy: "crwdns707874:0crwdne707874:0" - hide_sums: "crwdns707876:0crwdne707876:0" - save: "crwdns707878:0crwdne707878:0" - save_as: "crwdns707880:0crwdne707880:0" - export: "crwdns707882:0crwdne707882:0" - visibility_settings: "crwdns707884:0crwdne707884:0" - page_settings: "crwdns707886:0crwdne707886:0" - delete: "crwdns707888:0crwdne707888:0" - filter: "crwdns707890:0crwdne707890:0" - unselected_title: "crwdns707892:0crwdne707892:0" - search_query_label: "crwdns707894:0crwdne707894:0" - search_query_title: "crwdns707896:0crwdne707896:0" - placeholder_query_title: "crwdns707898:0crwdne707898:0" + configure_view: "crwdns709972:0crwdne709972:0" + columns: "crwdns709974:0crwdne709974:0" + sort_by: "crwdns709976:0crwdne709976:0" + group_by: "crwdns709978:0crwdne709978:0" + display_sums: "crwdns709980:0crwdne709980:0" + display_hierarchy: "crwdns709982:0crwdne709982:0" + hide_hierarchy: "crwdns709984:0crwdne709984:0" + hide_sums: "crwdns709986:0crwdne709986:0" + save: "crwdns709988:0crwdne709988:0" + save_as: "crwdns709990:0crwdne709990:0" + export: "crwdns709992:0crwdne709992:0" + visibility_settings: "crwdns709994:0crwdne709994:0" + page_settings: "crwdns709996:0crwdne709996:0" + delete: "crwdns709998:0crwdne709998:0" + filter: "crwdns710000:0crwdne710000:0" + unselected_title: "crwdns710002:0crwdne710002:0" + search_query_label: "crwdns710004:0crwdne710004:0" + search_query_title: "crwdns710006:0crwdne710006:0" + placeholder_query_title: "crwdns710008:0crwdne710008:0" modals: - label_settings: "crwdns707900:0crwdne707900:0" - label_name: "crwdns707902:0crwdne707902:0" - label_delete_page: "crwdns707904:0crwdne707904:0" - button_apply: "crwdns707906:0crwdne707906:0" - button_save: "crwdns707908:0crwdne707908:0" - button_submit: "crwdns707910:0crwdne707910:0" - button_cancel: "crwdns707912:0crwdne707912:0" + label_settings: "crwdns710010:0crwdne710010:0" + label_name: "crwdns710012:0crwdne710012:0" + label_delete_page: "crwdns710014:0crwdne710014:0" + button_apply: "crwdns710016:0crwdne710016:0" + button_save: "crwdns710018:0crwdne710018:0" + button_submit: "crwdns710020:0crwdne710020:0" + button_cancel: "crwdns710022:0crwdne710022:0" form_submit: - title: 'crwdns707914:0crwdne707914:0' - text: 'crwdns707916:0crwdne707916:0' + title: 'crwdns710024:0crwdne710024:0' + text: 'crwdns710026:0crwdne710026:0' destroy_work_package: - title: "crwdns707918:0%{label}crwdne707918:0" - text: "crwdns707920:0%{label}crwdne707920:0" - has_children: "crwdns707922:0%{childUnits}crwdne707922:0" - confirm_deletion_children: "crwdns707924:0crwdne707924:0" - deletes_children: "crwdns707926:0crwdne707926:0" + title: "crwdns710028:0%{label}crwdne710028:0" + text: "crwdns710030:0%{label}crwdne710030:0" + has_children: "crwdns710032:0%{childUnits}crwdne710032:0" + confirm_deletion_children: "crwdns710034:0crwdne710034:0" + deletes_children: "crwdns710036:0crwdne710036:0" destroy_time_entry: - title: "crwdns707928:0crwdne707928:0" - text: "crwdns707930:0crwdne707930:0" - notice_no_results_to_display: "crwdns707932:0crwdne707932:0" - notice_successful_create: "crwdns707934:0crwdne707934:0" - notice_successful_delete: "crwdns707936:0crwdne707936:0" - notice_successful_update: "crwdns707938:0crwdne707938:0" - notice_job_started: "crwdns707940:0crwdne707940:0" - notice_bad_request: "crwdns707942:0crwdne707942:0" + title: "crwdns710038:0crwdne710038:0" + text: "crwdns710040:0crwdne710040:0" + notice_no_results_to_display: "crwdns710042:0crwdne710042:0" + notice_successful_create: "crwdns710044:0crwdne710044:0" + notice_successful_delete: "crwdns710046:0crwdne710046:0" + notice_successful_update: "crwdns710048:0crwdne710048:0" + notice_job_started: "crwdns710050:0crwdne710050:0" + notice_bad_request: "crwdns710052:0crwdne710052:0" relations: - empty: crwdns707944:0crwdne707944:0 - remove: crwdns707946:0crwdne707946:0 + empty: crwdns710054:0crwdne710054:0 + remove: crwdns710056:0crwdne710056:0 inplace: - button_edit: "crwdns707948:0%{attribute}crwdne707948:0" - button_save: "crwdns707950:0%{attribute}crwdne707950:0" - button_cancel: "crwdns707952:0%{attribute}crwdne707952:0" - button_save_all: "crwdns707954:0crwdne707954:0" - button_cancel_all: "crwdns707956:0crwdne707956:0" - link_formatting_help: "crwdns707958:0crwdne707958:0" - btn_preview_enable: "crwdns707960:0crwdne707960:0" - btn_preview_disable: "crwdns707962:0crwdne707962:0" - null_value_label: "crwdns707964:0crwdne707964:0" - clear_value_label: "crwdns707966:0crwdne707966:0" + button_edit: "crwdns710058:0%{attribute}crwdne710058:0" + button_save: "crwdns710060:0%{attribute}crwdne710060:0" + button_cancel: "crwdns710062:0%{attribute}crwdne710062:0" + button_save_all: "crwdns710064:0crwdne710064:0" + button_cancel_all: "crwdns710066:0crwdne710066:0" + link_formatting_help: "crwdns710068:0crwdne710068:0" + btn_preview_enable: "crwdns710070:0crwdne710070:0" + btn_preview_disable: "crwdns710072:0crwdne710072:0" + null_value_label: "crwdns710074:0crwdne710074:0" + clear_value_label: "crwdns710076:0crwdne710076:0" errors: - required: 'crwdns707968:0%{field}crwdne707968:0' - number: 'crwdns707970:0%{field}crwdne707970:0' - maxlength: 'crwdns707972:0%{field}crwdnd707972:0%{maxLength}crwdne707972:0' - minlength: 'crwdns707974:0%{field}crwdnd707974:0%{minLength}crwdne707974:0' - messages_on_field: 'crwdns707976:0%{messages}crwdne707976:0' - error_could_not_resolve_version_name: "crwdns707978:0crwdne707978:0" - error_could_not_resolve_user_name: "crwdns707980:0crwdne707980:0" - error_attachment_upload: "crwdns707982:0%{error}crwdne707982:0" - error_attachment_upload_permission: "crwdns707984:0crwdne707984:0" + required: 'crwdns710078:0%{field}crwdne710078:0' + number: 'crwdns710080:0%{field}crwdne710080:0' + maxlength: 'crwdns710082:0%{field}crwdnd710082:0%{maxLength}crwdne710082:0' + minlength: 'crwdns710084:0%{field}crwdnd710084:0%{minLength}crwdne710084:0' + messages_on_field: 'crwdns710086:0%{messages}crwdne710086:0' + error_could_not_resolve_version_name: "crwdns710088:0crwdne710088:0" + error_could_not_resolve_user_name: "crwdns710090:0crwdne710090:0" + error_attachment_upload: "crwdns710092:0%{error}crwdne710092:0" + error_attachment_upload_permission: "crwdns710094:0crwdne710094:0" units: workPackage: - one: "crwdns707986:1crwdne707986:1" - other: "crwdns707986:5crwdne707986:5" + one: "crwdns710096:1crwdne710096:1" + other: "crwdns710096:5crwdne710096:5" child_work_packages: - one: "crwdns707988:1crwdne707988:1" - other: "crwdns707988:5%{count}crwdne707988:5" + one: "crwdns710098:1crwdne710098:1" + other: "crwdns710098:5%{count}crwdne710098:5" hour: - one: "crwdns707990:0crwdne707990:0" - other: "crwdns707992:0%{count}crwdne707992:0" - zero: "crwdns707994:0crwdne707994:0" + one: "crwdns710100:0crwdne710100:0" + other: "crwdns710102:0%{count}crwdne710102:0" + zero: "crwdns710104:0crwdne710104:0" zen_mode: - button_activate: 'crwdns707996:0crwdne707996:0' - button_deactivate: 'crwdns707998:0crwdne707998:0' + button_activate: 'crwdns710106:0crwdne710106:0' + button_deactivate: 'crwdns710108:0crwdne710108:0' global_search: - all_projects: "crwdns708000:0crwdne708000:0" - search: "crwdns708002:0crwdne708002:0" - close_search: "crwdns708004:0crwdne708004:0" - current_project: "crwdns708006:0crwdne708006:0" - current_project_and_all_descendants: "crwdns708008:0crwdne708008:0" + all_projects: "crwdns710110:0crwdne710110:0" + search: "crwdns710112:0crwdne710112:0" + close_search: "crwdns710114:0crwdne710114:0" + current_project: "crwdns710116:0crwdne710116:0" + current_project_and_all_descendants: "crwdns710118:0crwdne710118:0" title: - all_projects: "crwdns708010:0crwdne708010:0" - project_and_subprojects: "crwdns708012:0crwdne708012:0" - search_for: "crwdns708014:0crwdne708014:0" + all_projects: "crwdns710120:0crwdne710120:0" + project_and_subprojects: "crwdns710122:0crwdne710122:0" + search_for: "crwdns710124:0crwdne710124:0" views: - card: 'crwdns708016:0crwdne708016:0' - list: 'crwdns708018:0crwdne708018:0' - timeline: 'crwdns708020:0crwdne708020:0' + card: 'crwdns710126:0crwdne710126:0' + list: 'crwdns710128:0crwdne710128:0' + timeline: 'crwdns710130:0crwdne710130:0' invite_user_modal: - back: 'crwdns708022:0crwdne708022:0' - invite: 'crwdns708024:0crwdne708024:0' + back: 'crwdns710132:0crwdne710132:0' + invite: 'crwdns710134:0crwdne710134:0' title: - invite: 'crwdns708026:0crwdne708026:0' - invite_to_project: 'crwdns708028:0%{type}crwdnd708028:0%{project}crwdne708028:0' - User: 'crwdns708030:0crwdne708030:0' - Group: 'crwdns708032:0crwdne708032:0' - PlaceholderUser: 'crwdns708034:0crwdne708034:0' - invite_principal_to_project: 'crwdns708036:0%{principal}crwdnd708036:0%{project}crwdne708036:0' + invite: 'crwdns710136:0crwdne710136:0' + invite_to_project: 'crwdns710138:0%{type}crwdnd710138:0%{project}crwdne710138:0' + User: 'crwdns710140:0crwdne710140:0' + Group: 'crwdns710142:0crwdne710142:0' + PlaceholderUser: 'crwdns710144:0crwdne710144:0' + invite_principal_to_project: 'crwdns710146:0%{principal}crwdnd710146:0%{project}crwdne710146:0' project: - label: 'crwdns708038:0crwdne708038:0' - required: 'crwdns708040:0crwdne708040:0' - lacking_permission: 'crwdns708042:0crwdne708042:0' - lacking_permission_info: 'crwdns708044:0crwdne708044:0' - next_button: 'crwdns708046:0crwdne708046:0' - no_results: 'crwdns708048:0crwdne708048:0' - no_invite_rights: 'crwdns708050:0crwdne708050:0' + label: 'crwdns710148:0crwdne710148:0' + required: 'crwdns710150:0crwdne710150:0' + lacking_permission: 'crwdns710152:0crwdne710152:0' + lacking_permission_info: 'crwdns710154:0crwdne710154:0' + next_button: 'crwdns710156:0crwdne710156:0' + no_results: 'crwdns710158:0crwdne710158:0' + no_invite_rights: 'crwdns710160:0crwdne710160:0' type: - required: 'crwdns708052:0crwdne708052:0' + required: 'crwdns710162:0crwdne710162:0' user: - title: 'crwdns708054:0crwdne708054:0' - description: 'crwdns708056:0crwdne708056:0' + title: 'crwdns710164:0crwdne710164:0' + description: 'crwdns710166:0crwdne710166:0' group: - title: 'crwdns708058:0crwdne708058:0' - description: 'crwdns708060:0crwdne708060:0' + title: 'crwdns710168:0crwdne710168:0' + description: 'crwdns710170:0crwdne710170:0' placeholder: - title: 'crwdns708062:0crwdne708062:0' - title_no_ee: 'crwdns708064:0crwdne708064:0' - description: 'crwdns708066:0crwdne708066:0' - description_no_ee: 'crwdns708068:0%{eeHref}crwdne708068:0' + title: 'crwdns710172:0crwdne710172:0' + title_no_ee: 'crwdns710174:0crwdne710174:0' + description: 'crwdns710176:0crwdne710176:0' + description_no_ee: 'crwdns710178:0%{eeHref}crwdne710178:0' principal: label: - name_or_email: 'crwdns708070:0crwdne708070:0' - name: 'crwdns708072:0crwdne708072:0' - already_member_message: 'crwdns708074:0%{project}crwdne708074:0' - no_results_user: 'crwdns708076:0crwdne708076:0' - invite_user: 'crwdns708078:0crwdne708078:0' - no_results_placeholder: 'crwdns708080:0crwdne708080:0' - create_new_placeholder: 'crwdns708082:0crwdne708082:0' - no_results_group: 'crwdns708084:0crwdne708084:0' - next_button: 'crwdns708086:0crwdne708086:0' + name_or_email: 'crwdns710180:0crwdne710180:0' + name: 'crwdns710182:0crwdne710182:0' + already_member_message: 'crwdns710184:0%{project}crwdne710184:0' + no_results_user: 'crwdns710186:0crwdne710186:0' + invite_user: 'crwdns710188:0crwdne710188:0' + no_results_placeholder: 'crwdns710190:0crwdne710190:0' + create_new_placeholder: 'crwdns710192:0crwdne710192:0' + no_results_group: 'crwdns710194:0crwdne710194:0' + next_button: 'crwdns710196:0crwdne710196:0' required: - user: 'crwdns708088:0crwdne708088:0' - placeholder: 'crwdns708090:0crwdne708090:0' - group: 'crwdns708092:0crwdne708092:0' + user: 'crwdns710198:0crwdne710198:0' + placeholder: 'crwdns710200:0crwdne710200:0' + group: 'crwdns710202:0crwdne710202:0' role: - label: 'crwdns708094:0%{project}crwdne708094:0' - no_roles_found: 'crwdns708096:0crwdne708096:0' - description: 'crwdns708098:0%{principal}crwdne708098:0' - required: 'crwdns708100:0crwdne708100:0' - next_button: 'crwdns708102:0crwdne708102:0' + label: 'crwdns710204:0%{project}crwdne710204:0' + no_roles_found: 'crwdns710206:0crwdne710206:0' + description: 'crwdns710208:0%{principal}crwdne710208:0' + required: 'crwdns710210:0crwdne710210:0' + next_button: 'crwdns710212:0crwdne710212:0' message: - label: 'crwdns708104:0crwdne708104:0' - description: 'crwdns708106:0%{principal}crwdne708106:0' - next_button: 'crwdns708108:0crwdne708108:0' + label: 'crwdns710214:0crwdne710214:0' + description: 'crwdns710216:0%{principal}crwdne710216:0' + next_button: 'crwdns710218:0crwdne710218:0' summary: - next_button: 'crwdns708110:0crwdne708110:0' + next_button: 'crwdns710220:0crwdne710220:0' success: - title: 'crwdns708112:0%{principal}crwdne708112:0' + title: 'crwdns710222:0%{principal}crwdne710222:0' description: - user: 'crwdns708114:0%{project}crwdne708114:0' - placeholder: 'crwdns708116:0%{project}crwdne708116:0' - group: 'crwdns708118:0%{project}crwdne708118:0' - next_button: 'crwdns708120:0crwdne708120:0' + user: 'crwdns710224:0%{project}crwdne710224:0' + placeholder: 'crwdns710226:0%{project}crwdne710226:0' + group: 'crwdns710228:0%{project}crwdne710228:0' + next_button: 'crwdns710230:0crwdne710230:0' forms: - submit_success_message: 'crwdns708122:0crwdne708122:0' - load_error_message: 'crwdns708124:0crwdne708124:0' - validation_error_message: 'crwdns708126:0crwdne708126:0' - advanced_settings: 'crwdns708128:0crwdne708128:0' + submit_success_message: 'crwdns710232:0crwdne710232:0' + load_error_message: 'crwdns710234:0crwdne710234:0' + validation_error_message: 'crwdns710236:0crwdne710236:0' + advanced_settings: 'crwdns710238:0crwdne710238:0' diff --git a/modules/avatars/config/locales/crowdin/js-no.yml b/modules/avatars/config/locales/crowdin/js-no.yml index 1de7b9faea..a46d623218 100644 --- a/modules/avatars/config/locales/crowdin/js-no.yml +++ b/modules/avatars/config/locales/crowdin/js-no.yml @@ -5,11 +5,11 @@ button_update: 'Oppdatèr' avatars: label_choose_avatar: "Velg Profilbilde fra fil" - uploading_avatar: "Uploading your avatar." + uploading_avatar: "Laster opp profilbildet ditt." text_upload_instructions: | Last opp din egen egendefinerte avatar på 128 etter 128 pixler. Større filer vil bli endret til å matche. En forhåndsvisning av profilbildet vil bli vist før opplasting, når du har valgt et bilde. - error_image_too_large: "Image is too large." + error_image_too_large: "Bildet er for stort" wrong_file_format: "Tillatte formater er jpg, png, gif" empty_file_error: "Vennligst last opp et gyldig bilde (jpg, png, gif)" diff --git a/modules/boards/config/locales/crowdin/js-cs.yml b/modules/boards/config/locales/crowdin/js-cs.yml index 5ea9097442..df1f8063c8 100644 --- a/modules/boards/config/locales/crowdin/js-cs.yml +++ b/modules/boards/config/locales/crowdin/js-cs.yml @@ -22,7 +22,7 @@ cs: edit_version: 'Upravit verzi' show_version: 'Zobrazit verzi' locked: 'Uzamčeno' - closed: 'Uzavřený' + closed: 'Uzavřeno' new_board: 'Nová tabule' add_list: 'Přidat list na tabuli' add_card: 'Přidat kartu' From 42bfa7c0860b4edd1d526d2ed380acbdff6cb6aa Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Mon, 7 Feb 2022 03:10:29 +0000 Subject: [PATCH 093/118] update locales from crowdin [ci skip] --- config/locales/crowdin/cs.yml | 6 +++--- config/locales/crowdin/js-cs.yml | 2 +- modules/avatars/config/locales/crowdin/js-no.yml | 4 ++-- modules/boards/config/locales/crowdin/js-cs.yml | 2 +- modules/dashboards/config/locales/crowdin/no.yml | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 00220bc6a1..65c5b7473d 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -1683,7 +1683,7 @@ cs: label_my_queries: "Moje vlastní dotazy" label_name: "Jméno" label_never: "Nikdy" - label_new: "Nové" + label_new: "Nový" label_new_features: "Nové funkce" label_new_statuses_allowed: "Nové povolené stavy" label_news_singular: "Novinky" @@ -1925,8 +1925,8 @@ cs: label_workflow_plural: "Pracovní vrstvy" label_workflow_summary: "Souhrn" label_x_closed_work_packages_abbr: - one: "1 uzavřena" - other: "%{count} uzavřeny" + one: "1 uzavřeno" + other: "%{count} uzavřených" zero: "0 uzavřeno" label_x_comments: one: "1 komentář" diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index e158c6b361..e4bbbd0200 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -331,7 +331,7 @@ cs: label_details: "Podrobnosti" label_display: "Zobrazit" label_cancel_comment: "Stornovat komentář" - label_closed_work_packages: "closed" + label_closed_work_packages: "uzavřeno" label_collapse: "Sbalit" label_collapsed: "sbalené" label_collapse_all: "Sbalit vše" diff --git a/modules/avatars/config/locales/crowdin/js-no.yml b/modules/avatars/config/locales/crowdin/js-no.yml index 1de7b9faea..a46d623218 100644 --- a/modules/avatars/config/locales/crowdin/js-no.yml +++ b/modules/avatars/config/locales/crowdin/js-no.yml @@ -5,11 +5,11 @@ button_update: 'Oppdatèr' avatars: label_choose_avatar: "Velg Profilbilde fra fil" - uploading_avatar: "Uploading your avatar." + uploading_avatar: "Laster opp profilbildet ditt." text_upload_instructions: | Last opp din egen egendefinerte avatar på 128 etter 128 pixler. Større filer vil bli endret til å matche. En forhåndsvisning av profilbildet vil bli vist før opplasting, når du har valgt et bilde. - error_image_too_large: "Image is too large." + error_image_too_large: "Bildet er for stort" wrong_file_format: "Tillatte formater er jpg, png, gif" empty_file_error: "Vennligst last opp et gyldig bilde (jpg, png, gif)" diff --git a/modules/boards/config/locales/crowdin/js-cs.yml b/modules/boards/config/locales/crowdin/js-cs.yml index 5ea9097442..df1f8063c8 100644 --- a/modules/boards/config/locales/crowdin/js-cs.yml +++ b/modules/boards/config/locales/crowdin/js-cs.yml @@ -22,7 +22,7 @@ cs: edit_version: 'Upravit verzi' show_version: 'Zobrazit verzi' locked: 'Uzamčeno' - closed: 'Uzavřený' + closed: 'Uzavřeno' new_board: 'Nová tabule' add_list: 'Přidat list na tabuli' add_card: 'Přidat kartu' diff --git a/modules/dashboards/config/locales/crowdin/no.yml b/modules/dashboards/config/locales/crowdin/no.yml index 2f2ca36d26..d958330f67 100644 --- a/modules/dashboards/config/locales/crowdin/no.yml +++ b/modules/dashboards/config/locales/crowdin/no.yml @@ -1,5 +1,5 @@ "no": dashboards: label: 'Dashboards' - menu_badge: 'Alpha' + menu_badge: 'Alfa' project_module_dashboards: 'Dashboards' From 9a46b70fdc55ed678562a2db15038aa73effebfe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Feb 2022 05:30:25 +0000 Subject: [PATCH 094/118] Bump aws-sdk-core from 3.125.5 to 3.126.0 Bumps [aws-sdk-core](https://github.com/aws/aws-sdk-ruby) from 3.125.5 to 3.126.0. - [Release notes](https://github.com/aws/aws-sdk-ruby/releases) - [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-ruby/commits) --- updated-dependencies: - dependency-name: aws-sdk-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 409b92db87..dde26c73e3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -278,8 +278,8 @@ GEM awesome_nested_set (3.4.0) activerecord (>= 4.0.0, < 7.0) aws-eventstream (1.2.0) - aws-partitions (1.551.0) - aws-sdk-core (3.125.5) + aws-partitions (1.553.0) + aws-sdk-core (3.126.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) From 1aa847fad301b0b7bc0e97798a91c7d8b9060520 Mon Sep 17 00:00:00 2001 From: Wieland Lindenthal Date: Mon, 7 Feb 2022 09:53:24 +0100 Subject: [PATCH 095/118] Fix: Longer project status options stay visible --- frontend/src/global_styles/content/_project_status.sass | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/global_styles/content/_project_status.sass b/frontend/src/global_styles/content/_project_status.sass index f47449207e..2c2b5549a0 100644 --- a/frontend/src/global_styles/content/_project_status.sass +++ b/frontend/src/global_styles/content/_project_status.sass @@ -1,6 +1,7 @@ // Project status widget .ng-select &.project-status + min-width: 200px max-width: 250px .ng-select-container min-height: 56px !important From 6a23a4143f7185306299acd0414df508875f840d Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Mon, 7 Feb 2022 10:23:36 +0100 Subject: [PATCH 096/118] Move dates into subject line for inline cards and add html title for cards --- .../planner/team-planner.component.html | 4 +- .../wp-single-card.component.html | 44 ++++++++++++++----- .../wp-single-card.component.sass | 15 +++++-- .../wp-single-card.component.ts | 18 ++++++-- .../global_styles/vendor/_full_calendar.sass | 20 ++++++++- 5 files changed, 80 insertions(+), 21 deletions(-) diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html index 63513b325f..53cf949a17 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html @@ -66,9 +66,11 @@ *ngIf="event.extendedProps.workPackage" [workPackage]="event.extendedProps.workPackage" [orientation]="'horizontal'" - [additionalClasses]="'op-wp-single-card_inline'" [highlightingMode]="'type'" [disabledInfo]="showDisabledText(event.extendedProps.workPackage)" + [showAsInlineCard]="true" + [showStartDate]="!this.showResizeHandle(event.extendedProps.workPackage, 'start')" + [showEndDate]="!this.showResizeHandle(event.extendedProps.workPackage, 'end')" > diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html index 560abe0a13..05ef86d77c 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html @@ -4,6 +4,7 @@ [attr.data-qa-draggable]="draggable || undefined" [attr.data-qa-checked]="isSelected(workPackage) || undefined" [ngClass]="cardClasses()" + [title]="cardTitle()" >
- - -   - + + + {{splittedDate(workPackage)[0]}}- + + + + + + + + + -{{splittedDate(workPackage)[1]}} + - -
diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass index ccd9f32617..a346df2388 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass @@ -45,10 +45,12 @@ grid-template-rows: auto max-content grid-template-areas: "status id project project project" "subject subject subject subject subject" - &-cover-image, &-assignee display: none - + &-subject-line + display: flex + &-subject + flex-grow: 1 // Style shadow element while dragging wp-single-card:host.gu-transit & @@ -76,7 +78,8 @@ @include text-shortener &-type grid-area: type - &-subject + margin-right: 4px + &-subject-line grid-area: subject @include text-shortener(false) &-assignee @@ -108,6 +111,12 @@ color: var(--gray-dark) font-size: 12px + &-inline-date + font-size: 12px + color: var(--gray-dark) + margin: 0 12px + white-space: nowrap + &--highlighting width: 100% height: 4px diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index ef27e7e36e..76fee67498 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -46,10 +46,14 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen @Input() public shrinkOnMobile = false; - @Input() public additionalClasses = ''; - @Input() public disabledInfo = ''; + @Input() public showAsInlineCard = false; + + @Input() public showStartDate = true; + + @Input() public showEndDate = true; + @Output() onRemove = new EventEmitter(); @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); @@ -114,13 +118,17 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen [`${base}_new`]: isNewResource(this.workPackage), [`${base}_shrink`]: this.shrinkOnMobile, [`${base}_disabled`]: this.disabledInfo.length > 0, + [`${base}_inline`]: this.showAsInlineCard, // eslint-disable-next-line @typescript-eslint/restrict-template-expressions [`${base}-${this.workPackage.id}`]: !!this.workPackage.id, [`${base}_${this.orientation}`]: true, - [`${this.additionalClasses}`]: true, }; } + cardTitle():string { + return `${this.workPackage.subject} (${this.workPackage.status.name})`; + } + // eslint-disable-next-line class-methods-use-this public wpTypeAttribute(wp:WorkPackageResource):string { return wp.type.name; @@ -162,6 +170,10 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen return ''; } + splittedDate(wp:WorkPackageResource):string[] { + return this.wpDates(wp).split('–'); + } + wpOverDueHighlighting(wp:WorkPackageResource):string { const diff = this.timezoneService.daysFromToday(wp.dueDate); return Highlighting.overdueDate(diff); diff --git a/frontend/src/global_styles/vendor/_full_calendar.sass b/frontend/src/global_styles/vendor/_full_calendar.sass index ff278be5a0..fdf2df8cb4 100644 --- a/frontend/src/global_styles/vendor/_full_calendar.sass +++ b/frontend/src/global_styles/vendor/_full_calendar.sass @@ -46,8 +46,8 @@ padding-bottom: 5px border-radius: 5px margin-bottom: 4px - background: transparent !important - border: transparent + background-color: var(--timeline--type-fallback-color) + border-color: var(--timeline--type-fallback-color) color: #000000 &:before, @@ -55,6 +55,22 @@ padding-right: 4px pointer-events: none + .fc-timeline-event + background: transparent !important + border: transparent + + &:before + position: absolute + top: 40px + z-index: 8 + left: 8px + + &:after + position: absolute + top: 40px + z-index: 8 + right: 8px + .fc-event-title-container margin: 0 16px line-height: 12px From b6e4dbcbcc75a5aada733019c4c20dbd150e8586 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 7 Feb 2022 10:26:29 +0100 Subject: [PATCH 097/118] prefer db query over pure ruby for #deletable_role? --- app/models/member.rb | 5 ++++- app/models/member_role.rb | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/models/member.rb b/app/models/member.rb index 3b528ace34..e61807f30e 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -71,7 +71,10 @@ class Member < ApplicationRecord end def deletable_role?(role) - member_roles.filter { _1.role_id == role.id }.none?(&:inherited_from) + member_roles + .only_inherited + .where(role: role) + .none? end def include?(principal) diff --git a/app/models/member_role.rb b/app/models/member_role.rb index e96a5ce3a2..7e47b3c269 100644 --- a/app/models/member_role.rb +++ b/app/models/member_role.rb @@ -32,6 +32,9 @@ class MemberRole < ApplicationRecord belongs_to :member, touch: true belongs_to :role + # `inherited` is reserved ActiveRecord method + scope :only_inherited, -> { where.not(inherited_from: nil) } + validates_presence_of :role validate :validate_project_member_role From d9821167deed962a7f6681c836a436f7cc6f7e0b Mon Sep 17 00:00:00 2001 From: Andrej Sandorf <77627197+as-op@users.noreply.github.com> Date: Mon, 7 Feb 2022 10:31:49 +0100 Subject: [PATCH 098/118] Fix/docs faq [ci skip] (#10142) * fix(docs): remove work in progress file with capital letters in folder name * fix(docs): restore frontmatter and markdown --- docs/Error Message/README.md | 36 --- docs/faq/README.md | 533 +++++++++++++---------------------- 2 files changed, 199 insertions(+), 370 deletions(-) delete mode 100644 docs/Error Message/README.md diff --git a/docs/Error Message/README.md b/docs/Error Message/README.md deleted file mode 100644 index fd1f737d8f..0000000000 --- a/docs/Error Message/README.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -sidebar_navigation: - title: Error Message - priority: 951 -description: Error messages from OpenProject -robots: index, follow -keywords: error, introduction, tutorial, project management software, error message, help ---- -# Error messages from OpenProject - -Welcome to the central overview for frequent OpenProject. - -| Topic | Content | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| [Frequent errors](#frequent-errors) | General Error messages in OpenProject | -| [Error after new update](#error after new update) | Error messages regarding an update | -| [No authorization](#no-authorization) | Set the right rights to work withpout errors in OpenProject | -| [...](#...) | ... | -| [...](#...) | ... | -| [...](#...) | ... | -| [...](#...) | ... | - - - -## Frequent errors - -### ... - -## Error after new update - -### ... - -## No authorization - -### ... - diff --git a/docs/faq/README.md b/docs/faq/README.md index 5b1b7bb9da..d17fffdc2a 100644 --- a/docs/faq/README.md +++ b/docs/faq/README.md @@ -1,486 +1,351 @@ -- # Frequently asked questions (FAQ) for OpenProject +--- +sidebar_navigation: +title: FAQ +priority: 950 +description: Frequently asked questions for OpenProject (FAQ) +robots: index, follow +keywords: FAQ, introduction, tutorial, project management software, frequently asked questions, help +--- +# Frequently asked questions (FAQ) for OpenProject - Welcome to the central overview of frequently asked questions for OpenProject. +Welcome to the central overview of frequently asked questions for OpenProject. - | Topic | Content | - | ------------------------------------------------------------ | ------------------------------------------------------------ | - | [Learn more about OpenProject](#learn-more-about-openproject) | General questions about OpenProject, security, setup and much more | - | [How to ... in OpenProject?](#how-to--in-openproject) | Questions about how to achieve certain outcomes in OpenProject that do not fit elsewhere | - | [FAQ regarding features](#faq-regarding-features) | Information about frequent feature requests | - | [FAQ regarding OpenProject BIM edition](#faq-regarding-openproject-bim-edition) | Questions concerning the additional BCF module for OpenProject and the BIM edition | - | [Migration](#migration) | Questions regarding migrating to OpenProject from e.g. Bitnami or from other OpenProject versions | - | [Other](#other) | Additional questions, e.g. about contribution, training, support | - | [Topic-specific FAQ](#topic-specific-faq) | Links to other FAQ sections | +| Topic | Content | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| [Learn more about OpenProject](#learn-more-about-openproject) | General questions about OpenProject, security, setup and much more | +| [How to ... in OpenProject?](#how-to--in-openproject) | Questions about how to achieve certain outcomes in OpenProject that do not fit elsewhere | +| [FAQ regarding features](#faq-regarding-features) | Information about frequent feature requests | +| [FAQ regarding OpenProject BIM edition](#faq-regarding-openproject-bim-edition) | Questions concerning the additional BCF module for OpenProject and the BIM edition | +| [Migration](#migration) | Questions regarding migrating to OpenProject from e.g. Bitnami or from other OpenProject versions | +| [Other](#other) | Additional questions, e.g. about contribution, training, support | +| [Topic-specific FAQ](#topic-specific-faq) | Links to other FAQ sections | - - ## Learn more about OpenProject +## Learn more about OpenProject - ### What about data privacy, data security and GDPR conformity? +### What about data privacy, data security and GDPR conformity? - Data protection and security are one of the main motivations for the development of this open source application. Thus, you have the possibility to move the OpenProject application including your data to your own infrastructure at any time. Unlike other cloud tools, you can also take a look at the software code and adapt it if necessary. +Data protection and security are one of the main motivations for the development of this open source application. Thus, you have the possibility to move the OpenProject application including your data to your own infrastructure at any time. Unlike other cloud tools, you can also take a look at the software code and adapt it if necessary. - For users who do not want to run OpenProject themselves, we offer a hosting product. Here we use subcontractors who are not based in the EU, too. We achieve compliance with the GDPR by using standard protection clauses (Art. 46 (2) (c) and (d) GDPR). - A list of the subcontractors currently used in the Cloud Edition can be found here: https://www.openproject.org/legal/data-processing-agreement/sub-processors/ - For our cloud product, we aim to completely eliminate subcontractors outside of the EU by the end of 2021. We have made a start by replacing Google Analytics with Matomo since 2020. - You can also send us encrypted emails to privacy@openproject.com. You can find the corresponding GPG key here: https://keys.openpgp.org/vks/v1/by-fingerprint/BDCFE01EDE84EA199AE172CE7D669C6D475339588 +For users who do not want to run OpenProject themselves, we offer a hosting product. Here we use subcontractors who are not based in the EU, too. We achieve compliance with the GDPR by using standard protection clauses (Art. 46 (2) (c) and (d) GDPR). +A list of the subcontractors currently used in the Cloud Edition can be found here: [https://www.openproject.org/legal/data-processing-agreement/sub-processors/](https://www.openproject.org/legal/data-processing-agreement/sub-processors/) +For our cloud product, we aim to completely eliminate subcontractors outside of the EU by the end of 2021. We have made a start by replacing Google Analytics with Matomo since 2020. +You can also send us encrypted emails to privacy@openproject.com. You can find the corresponding GPG key here: [https://keys.openpgp.org/vks/v1/by-fingerprint/BDCFE01EDE84EA199AE172CE7D669C6D475339588](https://keys.openpgp.org/vks/v1/by-fingerprint/BDCFE01EDE84EA199AE172CE7D669C6D475339588) - ### Without authentication, can you be sure that users have exactly the permissions you have given them? +#### Is OpenProject Enterprise cloud GDPR compliant? - The Anonymous role lets you control what users can do when they have access to public projects without authentication. - Otherwise, you would have to create an account for each user and require authentication so that not everyone has access to your public projects. +The OpenProject cloud environment is hosted on a logically isolated virtual cloud at Amazon Web Services with all services being located in Ireland. +AWS is a GDPR compliant cloud infrastructure provider with extensive security and compliance programs as well as unparalleled access control mechanisms to ensure data privacy. +Employed facilities are compliant with the ISO 27001 and 27018 standards. The OpenProject cloud environment is continuously backing up user data with data at rest being fully encrypted with AES-256. +Each individual instance is logically separated and data is persisted in a unique database schema, reducing the risk of intersection or data leaks between instances. Find out more about GDPR compliance on our [website](https://www.openproject.org/gdpr-compliance). - ### I would like to know where the data of openproject is saved with the online version, do you recommend us to keep a copy of the data somewhere else? +### How do I get access to the OpenProject premium features? +We offer the premium functions of OpenProject (incl. boards) for two different OpenProject variants: - At the moment you can not download a backup yourself. However, you are welcome to ask us to do this for you. We are currently developing a feature that will allow users to download backups themselves in the future. The database and also the storage for the attachments (also database backups) are each divided into several so-called AZs (availability zones). This means that even if one data center burns down, the data will not be lost because it is additionally replicated in another data center at a safe distance. +* For the OpenProject Enterprise cloud edition (hosted by us), +* For the self-hosted (on-premises) OpenProject Enterprise on-premises edition - "AZs are physically separated by a meaningful distance, many kilometers, from any other AZ, although all are within 100 km (60 miles) of each other." +If you want to run OpenProject on your own server, the OpenProject Enterprise on-premises edition is the right option. +Have you already installed the [OpenProject Community edition](https://www.openproject.org/download-and-installation/)? If yes, you can request a trial license for the OpenProject Enterprise on-premises edition by clicking on the button "Free trial license" [here](https://www.openproject.org/de/enterprise-edition/) and test the Enterprise on-premises edition for 14 days for free. - ### Is OpenProject Enterprise cloud GDPR compliant? +### Can I have some users with premium features and some without? +As the Enterprise premium features affect the whole instance (e.g. with Agile Boards and project custom fields) it's not possible to upgrade only some users. - The OpenProject cloud environment is hosted on a logically isolated virtual cloud at Amazon Web Services with all services being located in Ireland. - AWS is a GDPR compliant cloud infrastructure provider with extensive security and compliance programs as well as unparalleled access control mechanisms to ensure data privacy. - Employed facilities are compliant with the ISO 27001 and 27018 standards. The OpenProject cloud environment is continuously backing up user data with data at rest being fully encrypted with AES-256. - Each individual instance is logically separated and data is persisted in a unique database schema, reducing the risk of intersection or data leaks between instances. Find out more about GDPR compliance on our [website](https://www.openproject.org/gdpr-compliance). +### What are the system requirements? - ### Is OpenProject HIPPA compliant? +The system requirements can be found [here](../installation-and-operations/system-requirements). - Currently OpenProject is not HIPAA-compliant. OpenProject has high data-security and data-privacy standards and fulfills GDPR regulation. +Apart from using OpenProject in the cloud (OpenProject Enterprise cloud) OpenProject can be installed in two different ways: The packaged installation of OpenProject is the recommended way to install and maintain OpenProject using DEB or RPM packages. There's also a Docker based installation option. - ### How do I get access to the OpenProject premium features? +### How can I learn more about OpenProject and how to use it? - We offer the premium functions of OpenProject (incl. boards) for two different OpenProject variants: +Here are resources to get to know OpenProject: - * For the OpenProject Enterprise cloud edition (hosted by us), - * For the self-hosted (on-premises) OpenProject Enterprise on-premises edition +- The [overview of our features](https://www.openproject.org/collaboration-software-features) +- Our [English demo video](https://www.youtube.com/watch?v=un6zCm8_FT4) or [German demo video](https://www.youtube.com/watch?v=doVtVArSSvk) to get an overview of Openproject. There are additional videos explaining certain features to be found on our [YouTube channel](https://www.youtube.com/c/OpenProjectCommunity/videos), too. +- The [Getting started guide](../getting-started) and the [User guide](../user-guide) +- Our free trial: Click the green button [here](https://www.openproject.org/enterprise-edition) for Enterprise on-premises or go to [start.openproject.com](https://start.openproject.com) for the Enterprise cloud. +- Our [development roadmap](https://community.openproject.com/projects/openproject/work_packages?query_id=1993) (to get to know future features) +- Our [training and consulting offers](https://www.openproject.org/training-and-consulting) - If you want to run OpenProject on your own server, the OpenProject Enterprise on-premises edition is the right option. - Have you already installed the [OpenProject Community edition](https://www.openproject.org/download-and-installation/)? If yes, you can request a trial license for the OpenProject Enterprise on-premises edition by clicking on the button "Free trial license" [here](https://www.openproject.org/de/enterprise-edition/) and test the Enterprise on-premises edition for 14 days for free. +### Can I run OpenProject as a single user? - ### Can I have some users with premium features and some without? +Our minimum plan for the Enterprise cloud edition and Enterprise on-premises edition is five users. Our pricing scheme covers three subscription options: Community Edition ($0), Enterprise cloud (€5.95/member/month or $7.25/member/month), and Enterprise on-premises (€5.95/member/month or $7.25/member/month). We recommend to start the [Community version](https://www.openproject.org/download-and-installation/) free of charge if the five user minimum is an issue for you. - As the Enterprise premium features affect the whole instance (e.g. with Agile Boards and project custom fields) it's not possible to upgrade only some users. +### OpenProject is Open Source. Which kind of license does it come with? What am I allowed to do? What can I change? - ### What are the system requirements? +OpenProject comes with the GNU General Public License v3 (GPLv3). You can find out more about the copyright [here](https://github.com/opf/openproject/blob/dev/COPYRIGHT). +In accordance with the terms set by the GPLv3 license, users can make modifications, create copies and redistribute the work. +Terms and conditions regarding GPLv3 are available at [https://www.gnu.org/licenses/gpl-3.0.en.html](https://www.gnu.org/licenses/gpl-3.0.en.html) or in [our repository](https://github.com/opf/openproject/blob/dev/LICENSE). - The system requirements can be found [here](../installation-and-operations/system-requirements). +### Is OpenProject free of charge? - Apart from using OpenProject in the cloud (OpenProject Enterprise cloud) OpenProject can be installed in two different ways: The packaged installation of OpenProject is the recommended way to install and maintain OpenProject using DEB or RPM packages. There's also a Docker based installation option. +We offer three different versions of OpenProject. Please get an overview of the different OpenProject Editions [here](https://www.openproject.org/pricing/#compare). - ### How can I test OpenProject and lern how to use it? +The (on-premise) OpenProject Community edition is completely free. The Enterprise cloud and Enterprise on-premises edition offer premium features, hosting and support and thus we are charging for it. Nevertheless, we offer free 14 days trials for the Enterprise versions so that you can get to know their benefits. If you prefer to use the free OpenProject Community edition, you can follow these [installation instructions](https://www.openproject.org/download-and-installation/), please note that you need a Linux server to install the Community edition. It is always possible to upgrade from the Community to the Enterprise cloud and Enterprise on-premises edition – check out the premium features [here](https://www.openproject.org/enterprise-edition/#premium-features). - Here are resources to get to know OpenProject: +### Can I have both users with the Enterprise cloud and others with the Enterprise on-premises Edition? - - The [overview of our features](https://www.openproject.org/collaboration-software-features) - - Our [English demo video](https://www.youtube.com/watch?v=un6zCm8_FT4) or [German demo video](https://www.youtube.com/watch?v=doVtVArSSvk) to get an overview of Openproject. There are additional videos explaining certain features to be found on our [YouTube channel](https://www.youtube.com/c/OpenProjectCommunity/videos), too. - - The [Getting started guide](../getting-started) and the [User guide](../user-guide) - - Our free trial: Click the green button [here](https://www.openproject.org/enterprise-edition) for Enterprise on-premises or go to [start.openproject.com](https://start.openproject.com) for the Enterprise cloud. - - Our [development roadmap](https://community.openproject.com/projects/openproject/work_packages?query_id=1993) (to get to know future features) - - Our [training and consulting offers](https://www.openproject.org/training-and-consulting) +This is only possible if you book two different plans for OpenProject. The users won't be able to work together directly. We strongly recommend using either Enterprise cloud *or* Enterprise on-premises, if you want to collaborate with all colleagues. - ### Can I run OpenProject as a single user? +### How are users in OpenProject counted? How many licenses do I need for Enterprise on-premises or Enterprise cloud? - Our minimum plan for the Enterprise cloud edition and Enterprise on-premises edition is five users. Our pricing scheme covers three subscription options: Community Edition ($0), Enterprise cloud (€5.95/member/month or $7.25/member/month), and Enterprise on-premises (€5.95/member/month or $7.25/member/month). We recommend to start the [Community version](https://www.openproject.org/download-and-installation/) free of charge if the five user minimum is an issue for you. +All users working in OpenProject Enterprise cloud/on-premises need a license in order to access OpenProject. Regarding payments, we only count the active (not blocked) users. Users who were only invited but didn't accept the invite do not count, either. - ### OpenProject is Open Source. Which kind of license does it come with? What am I allowed to do? What can I change? +### How many projects can I manage in OpenProject at once? - OpenProject comes with the GNU General Public License v3 (GPLv3). You can find out more about the copyright [here](https://github.com/opf/openproject/blob/dev/COPYRIGHT). - In accordance with the terms set by the GPLv3 license, users can make modifications, create copies and redistribute the work. - Terms and conditions regarding GPLv3 are available at http://www.gnu.org/licenses/gpl-3.0.en.html or in [our repository](https://github.com/opf/openproject/blob/dev/LICENSE). +The number of projects is always unlimited. +For the paid versions Enterprise or Cloud Edition, the price differs according to the number of users. +However, if you're still using an old OpenProject subscription there may be limits to the number of projects. In this case please contact us. - ### Is OpenProject free of charge? +### What is the difference between Enterprise on-premises and Community Edition regarding LDAP? - We offer three different versions of OpenProject. Please get an overview of the different OpenProject Editions [here](https://www.openproject.org/pricing/#compare). +In the Community Edition and in the Enterprise on-premises edition you can use the standard LDAP authentication. However, the Enterprise on-premises edition also includes LDAP group synchronization. This allows you to synchronize group members from LDAP with groups in OpenProject. The respective documentation can be found [here](../system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/#synchronize-ldap-and-openproject-groups-premium-feature). - The (on-premise) OpenProject Community edition is completely free. The Enterprise cloud and Enterprise on-premises edition offer premium features, hosting and support and thus we are charging for it. Nevertheless, we offer free 14 days trials for the Enterprise versions so that you can get to know their benefits. If you prefer to use the free OpenProject Community edition, you can follow these [installation instructions](https://www.openproject.org/download-and-installation/), please note that you need a Linux server to install the Community edition. It is always possible to upgrade from the Community to the Enterprise cloud and Enterprise on-premises edition – check out the premium features [here](https://www.openproject.org/enterprise-edition/#premium-features). +## How to ... in OpenProject? - ### Can I have both users with the Enterprise cloud and others with the Enterprise on-premises Edition? +Most of this kind of questions will be answered in the respective sections for each topic (see links below). However, there may be some FAQ that do not really fit elsewhere: - This is only possible if you book two different plans for OpenProject. The users won't be able to work together directly. We strongly recommend using either Enterprise cloud *or* Enterprise on-premises, if you want to collaborate with all colleagues. +### I cannot log in, I do not know my password. What can I do? - ### How are users in OpenProject counted? How many licenses do I need for Enterprise on-premises or Enterprise cloud? +As a first step please try to [reset your password](../getting-started/sign-in-registration/#reset-your-password). Please look in your spam folder, too, if you didn't receive an email. - All users working in OpenProject Enterprise cloud/on-premises need a license in order to access OpenProject. Regarding payments, we only count the active (not blocked) users. Users who were only invited but didn't accept the invite do not count, either. +If that doesn't help please contact your admin for login related topics. He/she can [set a new password for you](../system-admin-guide/users-permissions/users/#manage-user-settings). - ### How many projects can I manage in OpenProject at once? +If you don't know the URL of your OpenProject Enterprise cloud, you can find it on [this website](https://www.openproject.org/request-organization) on the basis of your email address. - The number of projects is always unlimited. - For the paid versions Enterprise or Cloud Edition, the price differs according to the number of users. - However, if you're still using an old OpenProject subscription there may be limits to the number of projects. In this case please contact us. +### I cannot log in. Resetting my password seems to have no effect. What do I do? - ### What is the difference between Enterprise on-premises and Community Edition regarding LDAP? +Look in your spam folder for the email. - In the Community Edition and in the Enterprise on-premises edition you can use the standard LDAP authentication. However, the Enterprise on-premises edition also includes LDAP group synchronization. This allows you to synchronize group members from LDAP with groups in OpenProject. The respective documentation can be found [here](../system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/#synchronize-ldap-and-openproject-groups-premium-feature). +Ask your system admin to [set a new password for you](../system-admin-guide/users-permissions/users/#manage-user-settings). - ### Does LDAP work in cloud edition? +If you are the system administrator of an on-premises installation (Enterprise on-premises or Community Edition) please have a look at [this FAQ](../installation-and-operations/operation/faq/#i-lost-access-to-my-admin-account-how-do-i-reset-my-password). - LDAP is possible in principle. Effectively, everything runs on AWS EC2 instances in Ireland. However, the IPs are not fixed, but can theoretically change arbitrarily (within the IP ranges for eu-west-1 in [1]). In practice, this won't necessarily happen all the time, but we ourselves don't currently have a mechanism to make the concrete IPs of all servers available, for example. +### How can I reverse changes? - ### What is the availability of your hosted OpenProject? Are there fixed maintenance windows where the software is not available? +This is not possible per se, there's no Ctrl+Z option or anything similar. - There is no fixed maintenance window per se. The databases have a maintenance window of half an hour each. One is on mondays at 3 am (CET), the other on thursdays at 1 am. But this does not mean that the database is not available. Since the databases are redundant (for vips at least), there is usually no interruption. - With new releases it always depends on the changes. - With the last release (11.2) there was no downtime, because the database changes were upward compatible. I.e. the old version could work with the new data. - Sometimes this is not the case, and then we need a downtime to roll out the new version. This usually takes up to an hour and we always announce it a few days in advance. - So there are no regular downtimes. +Please use these resources to find out about the latest changes and re-do them manually: The [work package activity](../getting-started/work-packages-introduction/#activity-of-work-packages), the [history of the wiki page](../user-guide/wiki/more-wiki-functions/#show-wiki-page-history) or the [Activities module](../user-guide/activity). - ### Will my account be deleted after a certain time of inactivity? +### How can I increase or decrease the number of users in OpenProject? - Generally, no accounts will be deleted automatically. You can delete your account on -> My account (top right corner under your name) -> Delete Account. +You can invite new users in the system administration as long as you have enough licenses. - ## How to ... in OpenProject? +For the Community Edition you can have as many users as you need for free. +If you are using Enterprise on-premises, please write an email to sales @ openproject.com. - Most of this kind of questions will be answered in the respective sections for each topic (see links below). However, there may be some FAQ that do not really fit elsewhere: +If you are using the Enterprise cloud, you can easily upgrade or downgrade the number of users by navigating to *Administration -> Billing -> Manage subscription* and choosing the new amount of users which you need in your system. Find out more [here](../enterprise-guide/enterprise-cloud-guide/manage-cloud-subscription). - ### I cannot log in, I do not know my password. What can I do? +### How can I change the day my week starts with, etc.? - As a first step please try to [reset your password](../getting-started/sign-in-registration/#reset-your-password). Please look in your spam folder, too, if you didn't receive an email. +You can do this as a system administrator in the [System settings](../system-admin-guide/system-settings/display-settings/#time-and-date-formatting-aggregation-of-changes-in-activity). - If that doesn't help please contact your admin for login related topics. He/she can [set a new password for you](../system-admin-guide/users-permissions/users/#manage-user-settings). +### How can I add a RACI matrix in OpenProject? - If you don't know the URL of your OpenProject Enterprise cloud, you can find it on [this website](https://www.openproject.org/request-organization) on the basis of your email address. - - ### I cannot log in. Resetting my password seems to have no effect. What do I do? - - Look in your spam folder for the email. - - Ask your system admin to [set a new password for you](../system-admin-guide/users-permissions/users/#manage-user-settings). - - If you are the system administrator of an on-premises installation (Enterprise on-premises or Community Edition) please have a look at [this FAQ](../installation-and-operations/operation/faq/#i-lost-access-to-my-admin-account-how-do-i-reset-my-password). - - ### How can I reverse changes? - - This is not possible per se, there's no Ctrl+Z option or anything similar. - - Please use these resources to find out about the latest changes and re-do them manually: The [work package activity](../getting-started/work-packages-introduction/#activity-of-work-packages), the [history of the wiki page](../user-guide/wiki/more-wiki-functions/#show-wiki-page-history) or the [Activities module](../user-guide/activity). - - - ### What happens when the unit cost of a project, or budget, changes during a project or during a budget term? - - The behavior depends on the date the budget and the rate of cost types refer to. The budget will contain the rate that was valid for the included unit costs at its creation (see “fixed date” in the budget details). Please note that it is possible to change this “fixed date” as well as old rates for cost types which will influence the budget or/and the spent costs. - - ### How can I increase or decrease the number of users in OpenProject? - - You can invite new users in the system administration as long as you have enough licenses. - For the Community Edition you can have as many users as you need for free. - If you are using Enterprise on-premises, please write an email to sales@openproject.com. - - If you are using the Enterprise cloud, you can easily upgrade or downgrade the number of users by navigating to *Administration -> Billing -> Manage subscription* and choosing the new amount of users which you need in your system. Find out more [here](../enterprise-guide/enterprise-cloud-guide/manage-cloud-subscription). - - ### How can I check the workload of each of my employees? - - The best way is to use one of our Action boards, the [Assignee board](.../.../.../agile-boards/#choose-between-board-types). Alternatively, you can filter work package lists (in each project or using the global work package list accessible via Modules in the right part of the header) to filter for work packages where employees are set as Assignee or as Accountable. - - ### How can I change the day my week starts with, etc.? - - You can do this as a system administrator in the [System settings](../system-admin-guide/system-settings/display-settings/#time-and-date-formatting-aggregation-of-changes-in-activity). - - ### How to use plugins in OpenProject and where can I find them? - - Not all available plugins for OpenProject are published yet. After updating the plugins so that they are working with the Rails3 OpenProject Core, they will be published on Github continiously. Please write us a note if you have questions to any of the plugins. - - ### Which Plugins are published so far? - - Please refer to the list of [integrations and community plugins](.../system-admin-guide/integrations/) to see which plugins will be released. Plugin development will take place in dedicated sub-projects on openproject.org. - - ### How can I add a RACI matrix in OpenProject? You can add [project custom fields](../system-admin-guide/custom-fields/custom-fields-projects/) of the type "user" to your projects and track the respective persons there. - On a work package level you could use "Assignee" for "Responsible", "Accountable" for "Accountable" and [add custom fields](../system-admin-guide/custom-fields/) for "Consulted" and "Informed". For the latter one you could also just set the person as watcher instead. - - ### How can I create a PDF file with an individual and consolidated projects report? - - To create and print/export reports you can... - - - use the [global work packages list](../user-guide/projects/#global-work-packages-list): Filter for e.g. phases and milestones (which would make sense to use in your projects in this case). Then use the [export feature](../user-guide/work-packages/exporting/#exporting-work-packages). This will give you an overview over all projects' work packages (or all projects' milestones and phases, respectively). - - use the [Wiki module](../user-guide/wiki) to document your project reports. The Wiki pages is optimized for being printed using your browser's print feature. You could even insert a work packages list there. If you want to use the Wiki we suggest setting it up in a (global) parent project. - - The projects overview is not optimized for export via PDF, yet. Nevertheless, you can try to use your browser's print feature. - - ### How can I receive the OpenProject newsletter? - - Please go to https://www.openproject.org/newsletter/ and submit your data to receive our newsletter. Another option would be to agree to receive the newsletter when creating your account. - - ## FAQ regarding features - - Please find information on the features of OpenProject [here](https://www.openproject.org/collaboration-software-features/) and a comparison between Enterprise on-premises, Enterprise cloud and Community Edition [here](https://www.openproject.org/pricing/#compare). The community platform to see and [issue](../development/submit-feature-idea/) feature ideas can be found [here](https://community.openproject.com). - - ### How can I become a member of the community? - - You can start collaborating with other members of OpenProject [here](https://community.openproject.org/projects/openproject/), bring in your contributions and ideas to improve the software and the community. Share your experiences with OpenProject. Also take a look at the Contribution page for further information. We are looking forward to your participation. - - ### What is OPF (OpenProject Foundation)? - - The OpenProject Foundation (Hyperlik to OPF) (OPF) (e.V.) is incorporated as a membership-based, non-profit organisation. It establishes a framework in which the open source software can successfully be developed. It supports and guides the software project, the community and its growth, furthermore, ensures that OpenProject continues to exist beyond the participation of individual members or companies. - - ### How can I become a member of OPF? - - Individuals as well as enterprises who have a proven commitment to collaborative open-source software development through sustained participation and contributions within OpenProject, are eligible for membership. Enterprises will be represented by individuals who will represent the interests of the company within the foundation. - An individual or a representative of a company is awarded for membership after nomination and approval by the majority of the existing members of the OpenProject Foundation. - - ### Is it possible to use multiple languages in OpenProject? - - Yes, it is possible to use OpenProject in multiple languages. We support English, German, French and a number of additional languages. Each user can select their own preferred language by signing into OpenProject, clicking on the user avatar on the upper right side and selecting "My account" from the dropdown menu. - You can then select "Settings" from the side menu on the left side and [change the language](../getting-started/my-account/#change-your-language). - - ### How are decisions taken within this community, e.g. what will be a core feature? - - We aim to take decisions in a transparent and collaborative approach and agree together on future developments and the overall thrust of the project. - General decisions will be governed by the OpenProject Foundation. - - ### Is there an OpenProject app? - - There is no native iOS or Android app for OpenProject, but OpenProject is responsive - so it displays well on smaller screens. - - ### Is it possible to connect MS Project and OpenProject or to migrate from MS Project to OpenProject? - - Yes, please use the free [Excel synchronization](../system-admin-guide/integrations/excel-synchronization/) for this. - - ### Are there plan/actual comparisons in OpenProject? - - You can use the [Budgets module](../user-guide/budgets/#budgets) for a plan/actual comparison. - - ### Can I use OpenProject offline? - - No, it's not possible to use OpenProject without Internet access (Enterprise cloud) or access to the server it is installed on (on-premises installations). - - ### Can I import tasks from spreadsheets like Excel or LibreOffice? - - Yes, that’s possible. Please have a look at our [Excel sync](../system-admin-guide/integrations/excel-synchronization/). - - ### Is possible to create a task in one place and have it show up in several projects (and only have to update from one place). If so, how can I go about configuring that? - - As a workaround you could use work package relations. Once the task is created in one project you can create the relation "includes" in another project. This would be an option to display that task in multiple projects. You can find a detailed description for workpakage relations [here](../user-guide/work-packages/work-package-relations-hierarchies/). - - ### Does OpenProject have guest accounts? - - Currently, all users working in the OpenProject Enterprise editions need a license in order to access OpenProject. Regarding payments we only count the active (not blocked) users. If users only require temporary access, you can [block](../system-admin-guide/users-permissions/users/#lock-and-unlock-users) those users afterwards to free up additional seats. - - Apart from that, you can use [placeholder users](../system-admin-guide/users-permissions/placeholder-users/) to set up your project without using license seats. - - ### Can I get a notification when a deadline approaches? - - Not at the moment. This is a well-known feature requirement and we are currently working on the specification for this with our dev team. It's already on our roadmap and it will be developed in one of the upcoming releases. - - ### Does OpenProject offer resource management? - - You can [set up budgets](../user-guide/budgets), [set an Estimated time](../user-guide/work-packages/edit-work-package/) for a work package and use the [Assignee board](../user-guide/agile-boards/#choose-between-board-types) to find out how many work packages are assigned to a person, yet. - Additional resource management features will be added within the next years. You can find the road-map for future releases [here](https://community.openproject.com/projects/openproject/work_packages?query_id=1993). - - ### Is there an organizational chart in OpenProject? - - There's no such feature. However, you can use the wiki to add information regarding your departments and employees. Furthermore, you can upload existing org charts as image or e.g. PDF to the wiki or the documents module. - - In many companies it makes sense to structure your project tree according to your departments (i.e. one parent project for each department with projects for each topic or client underneath). - - ### What syntax is used to enter text in meetings? +On a work package level you could use "Assignee" for "Responsible", "Accountable" for "Accountable" and [add custom fields](../system-admin-guide/custom-fields/) for "Consulted" and "Informed". For the latter one you could also just set the person as watcher instead. - It’s the same as for all wiki pages: Textile. See Wiki’s FAQ for further help. +### How can I create a PDF file with an individual and consolidated projects report? - ### How can I add my notes to the agenda? +To create and print/export reports you can... - Below the general meeting information which comprise date, time and place you see the agenda. You have several options, the left-most allows you to close the agenda, which is to be done after the meeting in order to create the meeting minutes. - One to the left, you can edit the agenda and add your notes. - If you are done click save. +- use the [global work packages list](../user-guide/projects/#global-work-packages-list): Filter for e.g. phases and milestones (which would make sense to use in your projects in this case). Then use the [export feature](../user-guide/work-packages/exporting/#exporting-work-packages). This will give you an overview over all projects' work packages (or all projects' milestones and phases, respectively). +- use the [Wiki module](../user-guide/wiki) to document your project reports. The Wiki pages is optimized for being printed using your browser's print feature. You could even insert a work packages list there. If you want to use the Wiki we suggest setting it up in a (global) parent project. - ### How can I send the agenda to the invitees? +The projects overview is not optimized for export via PDF, yet. Nevertheless, you can try to use your browser's print feature. - You can send the agenda or respectively the minutes to all invited project members, by clicking send agenda for review. +### How can I receive the OpenProject newsletter? - ### What happens if I close an agenda? +Please go to https://www.openproject.org/newsletter/ and submit your data to receive our newsletter. Another option would be to agree to receive the newsletter when creating your account. - The close button will re-open the agenda for editing, but if you click save, the agenda will be saved as the meeting minutes. It was designed to be used during or after the meeting +## FAQ regarding features - ### How can I reference work packages? +Please find information on the features of OpenProject [here](https://www.openproject.org/collaboration-software-features/) and a comparison between Enterprise on-premises, Enterprise cloud and Community Edition [here](https://www.openproject.org/pricing/#compare). The community platform to see and [issue](../development/submit-feature-idea/) feature ideas can be found [here](https://community.openproject.com). - You can reference work packages typing #issue_number . For a more detailed description see Referencing issues. +### Is it possible to use multiple languages in OpenProject? - ### Is there an architecture diagram for OpenProject? +Yes, it is possible to use OpenProject in multiple languages. We support English, German, French and a number of additional languages. Each user can select their own preferred language by signing into OpenProject, clicking on the user avatar on the upper right side and selecting "My account" from the dropdown menu. +You can then select "Settings" from the side menu on the left side and [change the language](../getting-started/my-account/#change-your-language). - A (very rough) diagram can be found on https://www.openproject.org/hosting/. +### Is there an OpenProject app? - ### Can I set up an entity-relationship diagram in OpenProject? +There is no native iOS or Android app for OpenProject, but OpenProject is responsive - so it displays well on smaller screens. - No, currently we do not have an entity-relationship diagram for OpenProject. +### Is it possible to connect MS Project and OpenProject or to migrate from MS Project to OpenProject? - ## FAQ regarding scrum: How to set up backlogs and sprints? +Yes, please use the free [Excel synchronization](../system-admin-guide/integrations/excel-synchronization/) for this. - ### How to set up product and sprint backlogs? +### Are there plan/actual comparisons in OpenProject? - As project administrator you have the right to access the project configuration. There, you can define, which versions shall be used for that project. - For a regular scrum project, a product backlog, a kind of wish list and regularly updated sprints would be the basic configuration. Of course you can name those versions as you like. After the creation of the versions the issues can be assigned to them. +You can use the [Budgets module](../user-guide/budgets/#budgets) for a plan/actual comparison. - ### Not all work packages are displayed in the backlogs - why? +### Can I use OpenProject offline? - The work packages need to be assigned to the specific versions first, i.e. existing work package need to be updated. Once the work packages are displayed in the backlogs, you can assign them to new versions or namely sprints by dragging them. In the same manner, the userstories can be ranked according to their priority. +No, it's not possible to use OpenProject without Internet access (Enterprise cloud) or access to the server it is installed on (on-premises installations). - ### When is a work package counted as ‘done’ for the burn-down chart? +### Can I import tasks from spreadsheets like Excel or LibreOffice? - As it is not applicable for each tracker to set an issue to closed there might be the need to define different statuses as complete. - In the project configuration, you can set the Definition of done. Whenever a workpackage reaches a status which is defined as Done the assigned storypoints will be deducted from the planned storypoints for the sprint. +Yes, that’s possible. Please have a look at our [Excel sync](../system-admin-guide/integrations/excel-synchronization/). - ### How can I update the work package in a sprint? +### Does OpenProject have guest accounts? - For updating backlog work packages, you do not have to go back to the general work package view. You can edit the work pacvkages in-line, like updating the story points. - Just click the part you want to change and the field will become editable. +Currently, all users working in the OpenProject Enterprise editions need a license in order to access OpenProject. Regarding payments we only count the active (not blocked) users. If users only require temporary access, you can [block](../system-admin-guide/users-permissions/users/#lock-and-unlock-users) those users afterwards to free up additional seats. - ### How can I print the story cards? +Apart from that, you can use [placeholder users](../system-admin-guide/users-permissions/placeholder-users/) to set up your project without using license seats. - In the top right corner of the Sprint there is an icon you can click. It will open a drop-down menu, which holds the option to export the storycards as a PDF file and to print them afterwards for arranging them on a real task board. +### Can I get a notification when a deadline approaches? - ### How to create a Scrumwiki? +Not at the moment. This is a well-known feature requirement and we are currently working on the specification for this with our dev team. It's already on our roadmap and it will be developed in one of the upcoming releases. - OpenProject allows you to define a template wiki page, which can be generated for each Sprint. In the backlogs, you can generate the page by selecting wiki from the sprint menu. - You would have to create a general wiki page in your specific project. It must not be a subpage of any other page and has to have the name, which was set by the global administrator. For openproject.org it is Scrumwiki. +### Does OpenProject offer resource management? - ### I wanted to move the work package to ‘closed’ but get an error message - what is wrong? +You can [set up budgets](../user-guide/budgets), [set an Estimated time](../user-guide/work-packages/edit-work-package/) for a work package and use the [Assignee board](../user-guide/agile-boards/#choose-between-board-types) to find out how many work packages are assigned to a person, yet. +Additional resource management features will be added within the next years. You can find the road-map for future releases [here](https://community.openproject.com/projects/openproject/work_packages?query_id=1993). - Probably, the workpackage is blocked by an impediment, which is not yet finished. - The theoretical background is, that you cannot finish a task, if there is something which blocks the completion. On the task board, these impediments might not be obvious on first sight, so you might want to ‘close’ a work package accidentally, although it could not have been closed. In this case, you should check, if someone probably just forgot to update the impediment. +### Is there an organizational chart in OpenProject? - ### How can I change the version of tasks that are child components of a work package? +There's no such feature. However, you can use the wiki to add information regarding your departments and employees. Furthermore, you can upload existing org charts as image or e.g. PDF to the wiki or the documents module. - If you want to use the backlog module you have two options: +In many companies it makes sense to structure your project tree according to your departments (i.e. one parent project for each department with projects for each topic or client underneath). - 1. you can assign all components to a work package and assign this work package to a sprint and then, if necessary, move the work package to the next sprint. - 2. you can create several work packages and assign them to the desired sprints with the respective components. +### Is there an architecture diagram for OpenProject? - ## FAQ regarding OpenProject BIM edition +A (very rough) diagram can be found on [https://www.openproject.org/hosting/](https://www.openproject.org/hosting/). - ### How can I find out more about OpenProject BIM edition? +### Can I set up an entity-relationship diagram in OpenProject? - Please have a look at our [demo video](https://www.youtube.com/watch?v=ThA4_17yedg) and at our [website](https://www.openproject.org/bim-project-management/). You can start a free trial there, too. +No, currently we do not have an entity-relationship diagram for OpenProject. - ### Which IFC format are you using for conversion in the BIM module? +## FAQ regarding OpenProject BIM edition - IFC2x3 and IFC4. We accept those formats and convert them to some other format that is optimized for web. +### How can I find out more about OpenProject BIM edition? - ### Is there a way to use OpenProject BIM for free, too? +Please have a look at our [demo video](https://www.youtube.com/watch?v=ThA4_17yedg) and at our [website](https://www.openproject.org/bim-project-management/). You can start a free trial there, too. - Yes, (only) as part of the Community Edition you can use OpenProject BIM for free. Please have a look [here](../installation-and-operations/changing-to-bim-edition/) to find out how to activate the BIM modules in your on-premises installation. +### Which IFC format are you using for conversion in the BIM module? - ### If an enterprise on-premises customer wants to switch to the BIM Edition (on-premises), does anything change for them in terms of price? +IFC2x3 and IFC4. We accept those formats and convert them to some other format that is optimized for web. - The on premises BIM is unlike the cloud edition currently still included in the price and can be activated free of charge. If you want more Information about changing to BIM click [here](.../.../installation-and-operations/changing-to-bim-edition/) +### Is there a way to use OpenProject BIM for free, too? - ### Can a BCF file created from other software e.g. BIMcollab, Solibri, etc. be opened in OpenProject? - Yes, of course. That's why the module for this in OpenProject is called "BCF". You can import and export BCF XML files. Our goal is to have specialized tools like Solibri do model checks, but the coordination of the results, the issues, is done in OpenProject, because more people can get access to the BCF issues through OpenProject because our licenses are much cheaper. In addition, BCF issues imported into OpenProject behave just like other non-BCF work packages. For example, you can plan them in a Gantt chart on the timeline, or manage them agilely in boards. We support the current BCF XML format 2.1. - Furthermore, we are planning a direct integration into Solibri. Then you don't need to export and import XML files anymore, but Solibri will read and write directly into OpenProject via an interface, the BCF-API. Before that, however, we will complete the integration in Autodesk Revit. - (Status: February 2021) +Yes, (only) as part of the Community Edition you can use OpenProject BIM for free. Please have a look [here](../installation-and-operations/changing-to-bim-edition/) to find out how to activate the BIM modules in your on-premises installation. - ### Does clicking on a BCF-issue zoom you to the appropriate location in the model? +### Can a BCF file created from other software e.g. BIMcollab, Solibri, etc. be opened in OpenProject? - Yes, the so-called camera position is stored in the BCF-issues, so that exactly the same camera position is assumed when you click on the BCF-issue. These are called viewpoints. If you have several models, e.g. architecture and technical building equipment, these must be activated (made visible) before you click on the BCF-issue. In the same way, BCF-elements of the model can be hidden or selected via the viewpoint. +Yes, of course. That's why the module for this in OpenProject is called "BCF". You can import and export BCF XML files. Our goal is to have specialized tools like Solibri do model checks, but the coordination of the results, the issues, is done in OpenProject, because more people can get access to the BCF issues through OpenProject because our licenses are much cheaper. In addition, BCF issues imported into OpenProject behave just like other non-BCF work packages. For example, you can plan them in a Gantt chart on the timeline, or manage them agilely in boards. We support the current BCF XML format 2.1. +Furthermore, we are planning a direct integration into Solibri. Then you don't need to export and import XML files anymore, but Solibri will read and write directly into OpenProject via an interface, the BCF-API. Before that, however, we will complete the integration in Autodesk Revit. +(Status: February 2021) - In our [introductory video](https://www.youtube.com/watch?v=ThA4_17yedg) to the OpenProject BIM Edition the basics are shown very well. In particular, the integration of BCF management into the rest of the project management of a construction project is the strength of OpenProject. +### Does clicking on a BCF-issue zoom you to the appropriate location in the model? - ### Can I add photos from my mobile/phone to BIM issues? +Yes, the so-called camera position is stored in the BCF-issues, so that exactly the same camera position is assumed when you click on the BCF-issue. These are called viewpoints. If you have several models, e.g. architecture and technical building equipment, these must be activated (made visible) before you click on the BCF-issue. In the same way, BCF-elements of the model can be hidden or selected via the viewpoint. - Yes. Take a photo with your camera and save it on your phone. Then open the correct work package in your browser or create a new one. Append the photo as an attachment to the work package. +In our [introductory video](https://www.youtube.com/watch?v=ThA4_17yedg) to the OpenProject BIM Edition the basics are shown very well. In particular, the integration of BCF management into the rest of the project management of a construction project is the strength of OpenProject. - ### Can I use IFC while a Revit connection is not available? +### Can I add photos from my mobile/phone to BIM issues? - Yes, of course. Within the BCF module you can upload multiple IFC models and create and manage BCF issues. +Yes. Take a photo with your camera and save it on your phone. Then open the correct work package in your browser or create a new one. Append the photo as an attachment to the work package. - ## Migration +### Can I use IFC while a Revit connection is not available? - ### How can I migrate from Bitnami to OpenProject? +Yes, of course. Within the BCF module you can upload multiple IFC models and create and manage BCF issues. - To migrate from Bitnami **to Enterprise cloud** please provide these: - - data as database dump (.sql file) - - attachment folder +## Migration - You can use the first two steps of [this instruction](../installation-and-operations/installation-faq/#how-can-i-migrate-from-bitnami-to-the-official-openproject-installation-packages). Please contact us to discuss your migration. +### How can I migrate from Bitnami to OpenProject? - To migrate from Bitnami **to Enterprise on premises** please use [this instruction](../installation-and-operations/installation-faq/#how-can-i-migrate-from-bitnami-to-the-official-openproject-installation-packages). We offer (paid) installation support to help you migrate to OpenProject (for the Enterprise on-premises edition). Please contact us to request it. +To migrate from Bitnami **to Enterprise cloud** please provide these: - ### How can I migrate from Jira/Confluence to OpenProject? +- data as database dump (.sql file) +- attachment folder - At the moment there are these ways to migrate: +You can use the first two steps of [this instruction](../installation-and-operations/installation-faq/#how-can-i-migrate-from-bitnami-to-the-official-openproject-installation-packages). Please contact us to discuss your migration. - - our [API](../api/) - - our [Excel sync](../system-admin-guide/integrations/excel-synchronization) - - Using a [Markdown export app](https://marketplace.atlassian.com/apps/1221351/markdown-exporter-for-confluence) you can export pages from Confluence and paste them (via copy & paste) into OpenProject in e.g. the wiki. This should preserve at least most of the layout. Attachments would then have to be added manually. +To migrate from Bitnami **to Enterprise on premises** please use [this instruction](../installation-and-operations/installation-faq/#how-can-i-migrate-from-bitnami-to-the-official-openproject-installation-packages). We offer (paid) installation support to help you migrate to OpenProject (for the Enterprise on-premises edition). Please contact us to request it. - For more information please contact us. +### How can I migrate from Jira/Confluence to OpenProject? - ### How can I migrate from Enterprise cloud to Enterprise on-premises? +At the moment there are these ways to migrate: - We will provide a database dump which you can upload into your Enterprise on-premises edition. This way you can keep all your data. +- our [API](../api/) +- our [Excel sync](../system-admin-guide/integrations/excel-synchronization) +- Using a [Markdown export app](https://marketplace.atlassian.com/apps/1221351/markdown-exporter-for-confluence) you can export pages from Confluence and paste them (via copy & paste) into OpenProject in e.g. the wiki. This should preserve at least most of the layout. Attachments would then have to be added manually. - ### Can my data be moved from OpenProject Enterprise cloud edition to my own installed Enterprise on-premises edition? +For more information please contact us. - Your data can be moved from the Enterprise cloud to the Enterprise on-premises edition. We will provide a database dump which you can upload into your Enterprise on-premises edition. +### How can I migrate from Community Edition or Enterprise on-premises to Enterprise cloud? - ### How can I migrate from Community edition to Enterprise on-premises? +We will need a database dump from you which we will upload to your new Enterprise cloud. Please contact us to plan the migration and get more instructions. - If you [book Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/#order-the-enterprise-on-premises-edition) you will receive an Enterprise token. Use it to activate the Enterprise premium features. For detailed activation instructions please refer to the [Enterprise activation guide](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/). You can keep your data that you created in the Community Edition. +### How can I migrate from Enterprise cloud to Enterprise on-premises? - ### How can I migrate from Enterprise on-premises to Community edition? +We will provide a database dump which you can upload into your Enterprise on-premises edition. This way you can keep all your data. - If you cancel your subscription for Enterprise on-premises you will be downgraded to Community Edition automatically as soon as the subscription period ends. You can keep all your data but won't be able to use the [premium features](.../.../enterprise-edition/#premium-features) and won't be eligible for support any more. +### How can I migrate from Community Edition to Enterprise on-premises? - ### Where can I find information on additional migrations (e.g. from MySQL to PostgreSQL)? +If you [book Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/#order-the-enterprise-on-premises-edition) you will receive an Enterprise token. Use it to activate the Enterprise premium features. For detailed activation instructions please refer to the [Enterprise activation guide](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/). You can keep your data that you created in the Community Edition. - Please have a look at [this section](../installation-and-operations/misc). +### How can I migrate from Enterprise on-premises to Community Edition? - ### Do you have any documentation to enable slack plugin on the docker-compose file of your project? +If you cancel your subscription for Enterprise on-premises you will be downgraded to Community Edition automatically as soon as the subscription period ends. You can keep all your data but won't be able to use the [premium features](https://www.openproject.org/de/enterprise-edition/#premium-features) and won't be eligible for support any more. - We have a [documentation](.../installation-and-operations/installation/docker/#openproject-plugins) for how to add Slack to a docker setup, but you need to extend the OpenProject docker container yourself in order to add the plugin. There is no documentation as of now for how to do the same with the docker-compose setup. +### Where can I find information on additional migrations (e.g. from MySQL to PostgreSQL)? - ## Other +Please have a look at [this section](../installation-and-operations/misc). - ### How can I contribute to OpenProject? +## Other - We welcome everybody willing to help make OpenProject better. There are a lot of possibilities for helping, be it [improving the translations](../development/translate-openproject) via crowdin, answering questions in the [forums](https://community.openproject.org/projects/openproject/forums) or by fixing bugs and implementing features. +### How can I contribute to OpenProject? - If you want to code, a good starting point would be to make yourself familiar with the [basic approaches for developing](../development/) in OpenProject and opening a pull request on GitHub referencing an existing bug report or feature request. Find our GitHub page [here](https://github.com/opf/openproject). +We welcome everybody willing to help make OpenProject better. There are a lot of possibilities for helping, be it [improving the translations](../development/translate-openproject) via crowdin, answering questions in the [forums](https://community.openproject.org/projects/openproject/forums) or by fixing bugs and implementing features. - If in doubt on how you should start, you can also just [contact us](https://www.openproject.org/contact-us/). +If you want to code, a good starting point would be to make yourself familiar with the [basic approaches for developing](../development/) in OpenProject and opening a pull request on GitHub referencing an existing bug report or feature request. Find our GitHub page [here](https://github.com/opf/openproject). - ### How can I receive support? +If in doubt on how you should start, you can also just [contact us](https://www.openproject.org/contact-us/). - We offer our Professional Support for Enterprise on-premises users and Enterprise cloud users. Please write an email to support@openproject.com. +### How can I receive support? - If you use the Community Edition please feel free to use our [forums](https://community.openproject.org/projects/openproject/forums) for exchange with other users. +We offer our Professional Support for Enterprise on-premises users and Enterprise cloud users. Please write an email to support@openproject.com. - To learn more about OpenProject and how its features work please have a look at [this FAQ](#how-can-i-learn-more-about-openproject-and-how-to-use-it). +If you use the Community Edition please feel free to use our [forums](https://community.openproject.org/projects/openproject/forums) for exchange with other users. - ### Do you support Univention users? +To learn more about OpenProject and how its features work please have a look at [this FAQ](#how-can-i-learn-more-about-openproject-and-how-to-use-it). - If you're an Enterprise on-premises user you're eligible for Professional Support. However, we can't support you in all Univention-related topics (e.g. server not reachable, authentication setup, ...). +### Do you support Univention users? - ### Do you have a cyber insurance? +If you're an Enterprise on-premises user you're eligible for Professional Support. However, we can't support you in all Univention-related topics (e.g. server not reachable, authentication setup, ...). - Yes, we do. +### Do you have a cyber insurance? - ### Is there a limitation of participants for the trainings? +Yes, we do. - No, you can join with as many people from your organization as you like. However, or most we recommend not more than 20-25 people so there's enough opportunity for everyone to ask questions. - *This answer only refers to e.g. Getting Started training and custom trainings, not to the OpenProject certification!* +### Is there a limitation of participants for the trainings? - ### Can trainings be conducted remotely, too (e.g. the Custom training)? +No, you can join with as many people from your organization as you like. However, or most we recommend not more than 20-25 people so there's enough opportunity for everyone to ask questions. +*This answer only refers to e.g. Getting Started training and custom trainings, not to the OpenProject certification!* - Yes, this is possible. Please get in touch. +### Can trainings be conducted remotely, too (e.g. the Custom training)? - ### How long is the OpenProject certification valid? +Yes, this is possible. Please get in touch. - It does not expire. However, the certification training always covers the current version of the software at the time. +### How long is the OpenProject certification valid? - ### Where can I find out more about pricing? +It does not expire. However, the certification training always covers the current version of the software at the time. - You can find the price calculator [here](https://www.openproject.org/pricing) and FAQ regarding pricing [here](https://www.openproject.org/pricing/#faq). +### Where can I find out more about pricing? - ## Topic-specific FAQ +You can find the price calculator [here](https://www.openproject.org/pricing) and FAQ regarding pricing [here](https://www.openproject.org/pricing/#faq). - Here are some selected links to other FAQ pages. Please use the menu to navigate to a topic's section to find more FAQs or use the search bar in the header. +## Topic-specific FAQ - - [FAQ for work packages](../user-guide/work-packages/work-packages-faq) - - [FAQ for Gantt chart](../user-guide/gantt-chart/gantt-chart-faq) - - [FAQ for Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/enterprise-on-premises-faq) - - [FAQ for Enterprise cloud](../enterprise-guide/enterprise-cloud-guide/enterprise-cloud-faq) - - [FAQ for system administration](../system-admin-guide/system-admin-guide-faq) - - [FAQ for installation, operation and upgrades]( +Here are some selected links to other FAQ pages. Please use the menu to navigate to a topic's section to find more FAQs or use the search bar in the header. -- ../installation-and-operations/installation-faq) +- [FAQ for work packages](../user-guide/work-packages/work-packages-faq) +- [FAQ for Gantt chart](../user-guide/gantt-chart/gantt-chart-faq) +- [FAQ for Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/enterprise-on-premises-faq) +- [FAQ for Enterprise cloud](../enterprise-guide/enterprise-cloud-guide/enterprise-cloud-faq) +- [FAQ for system administration](../system-admin-guide/system-admin-guide-faq) +- [FAQ for installation, operation and upgrades](../installation-and-operations/installation-faq) From 10be2439dd40a166b31a0f31a69d5f50b50e18e5 Mon Sep 17 00:00:00 2001 From: Andrej Sandorf <77627197+as-op@users.noreply.github.com> Date: Mon, 7 Feb 2022 11:01:45 +0100 Subject: [PATCH 099/118] fix(docs): lowercase folder name (#10144) --- .../start-page/{Start-page-faq => start-page-faq}/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/user-guide/start-page/{Start-page-faq => start-page-faq}/README.md (100%) diff --git a/docs/user-guide/start-page/Start-page-faq/README.md b/docs/user-guide/start-page/start-page-faq/README.md similarity index 100% rename from docs/user-guide/start-page/Start-page-faq/README.md rename to docs/user-guide/start-page/start-page-faq/README.md From 9bb1c9da9f3ab08da1152504fb84306757a9a53a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Mon, 7 Feb 2022 11:24:41 +0100 Subject: [PATCH 100/118] [40957] Remove rounded FC button style https://community.openproject.org/wp/40957 --- frontend/src/global_styles/content/_calendars.sass | 2 +- .../src/global_styles/vendor/_full_calendar.sass | 14 -------------- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/frontend/src/global_styles/content/_calendars.sass b/frontend/src/global_styles/content/_calendars.sass index 62eb972afa..31c09d4396 100644 --- a/frontend/src/global_styles/content/_calendars.sass +++ b/frontend/src/global_styles/content/_calendars.sass @@ -9,7 +9,7 @@ full-calendar height: 34px &.fc-today-button - margin-bottom: 0 + margin: 0 margin-left: 0.5rem // ensure to have higher specificity than above extend diff --git a/frontend/src/global_styles/vendor/_full_calendar.sass b/frontend/src/global_styles/vendor/_full_calendar.sass index 8e69c3b0c3..c15387d642 100644 --- a/frontend/src/global_styles/vendor/_full_calendar.sass +++ b/frontend/src/global_styles/vendor/_full_calendar.sass @@ -61,23 +61,9 @@ &:focus box-shadow: none - > .fc-button - border-radius: 2rem - - .fc-button-group .fc-button - &:first-of-type - border-bottom-left-radius: 2rem - border-top-left-radius: 2rem - - &:last-of-type - border-bottom-right-radius: 2rem - border-top-right-radius: 2rem - .fc-prev-button, .fc-next-button - border-radius: 2rem padding: 4px - margin: 0 8px 0 0 font-size: 8px height: 32px width: 32px From ed3aa3f598cdb92a11005154c50aaf150c32e422 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 7 Feb 2022 11:26:12 +0100 Subject: [PATCH 101/118] rename Mails::MemberRolesDiff as Members::RolesDiff applicability is not only limited to emails, hence mving it to models makes more sense. --- .../mails/member_roles_diff.rb => models/members/roles_diff.rb} | 2 +- app/workers/mails/member_created_job.rb | 2 +- app/workers/mails/member_job.rb | 2 +- .../members/roles_diff_spec.rb} | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename app/{workers/mails/member_roles_diff.rb => models/members/roles_diff.rb} (98%) rename spec/{workers/mails/member_roles_diff_spec.rb => models/members/roles_diff_spec.rb} (99%) diff --git a/app/workers/mails/member_roles_diff.rb b/app/models/members/roles_diff.rb similarity index 98% rename from app/workers/mails/member_roles_diff.rb rename to app/models/members/roles_diff.rb index 05f259531d..01e93f981c 100644 --- a/app/workers/mails/member_roles_diff.rb +++ b/app/models/members/roles_diff.rb @@ -26,7 +26,7 @@ # See COPYRIGHT and LICENSE files for more details. #++ -class Mails::MemberRolesDiff +class Members::RolesDiff attr_reader :user_member, :group_member def initialize(user_member, group_member) diff --git a/app/workers/mails/member_created_job.rb b/app/workers/mails/member_created_job.rb index e631ff9f35..b418955435 100644 --- a/app/workers/mails/member_created_job.rb +++ b/app/workers/mails/member_created_job.rb @@ -32,7 +32,7 @@ class Mails::MemberCreatedJob < Mails::MemberJob alias_method :send_for_project_user, :send_added_project def send_for_group_user(current_user, user_member, group_member, message) - difference = Mails::MemberRolesDiff.new(user_member, group_member) + difference = Members::RolesDiff.new(user_member, group_member) if difference.roles_created? send_added_project(current_user, user_member, message) elsif difference.roles_updated? diff --git a/app/workers/mails/member_job.rb b/app/workers/mails/member_job.rb index 0b689608ba..fc25227e8b 100644 --- a/app/workers/mails/member_job.rb +++ b/app/workers/mails/member_job.rb @@ -118,6 +118,6 @@ class Mails::MemberJob < ApplicationJob end def roles_changed?(user_member, group_member) - Mails::MemberRolesDiff.new(user_member, group_member).roles_changed? + Members::RolesDiff.new(user_member, group_member).roles_changed? end end diff --git a/spec/workers/mails/member_roles_diff_spec.rb b/spec/models/members/roles_diff_spec.rb similarity index 99% rename from spec/workers/mails/member_roles_diff_spec.rb rename to spec/models/members/roles_diff_spec.rb index 7ddac74dad..eda98b975f 100644 --- a/spec/workers/mails/member_roles_diff_spec.rb +++ b/spec/models/members/roles_diff_spec.rb @@ -29,7 +29,7 @@ require 'spec_helper' # rubocop:disable RSpec/MultipleMemoizedHelpers -describe Mails::MemberRolesDiff, type: :model do +describe Members::RolesDiff, type: :model do let(:project) { build_stubbed(:project) } let(:group) { build_stubbed(:group) } let(:user) { build_stubbed(:user) } From 13077a66ed87c27294553b5b404c4eda64906404 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Mon, 7 Feb 2022 13:08:10 +0100 Subject: [PATCH 102/118] Style closed cards in the team planner differently --- .../planner/team-planner.component.html | 2 ++ .../planner/team-planner.component.ts | 21 +++++++++++++++++++ .../wp-single-card.component.sass | 4 ++++ .../wp-single-card.component.ts | 3 +++ 4 files changed, 30 insertions(+) diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html index 53cf949a17..a3b21e14a9 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html @@ -67,7 +67,9 @@ [workPackage]="event.extendedProps.workPackage" [orientation]="'horizontal'" [highlightingMode]="'type'" + [showInfoButton]="true" [disabledInfo]="showDisabledText(event.extendedProps.workPackage)" + [isClosed]="isStatusClosed(event.extendedProps.workPackage)" [showAsInlineCard]="true" [showStartDate]="!this.showResizeHandle(event.extendedProps.workPackage, 'start')" [showEndDate]="!this.showResizeHandle(event.extendedProps.workPackage, 'end')" diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts index 3463c49e8a..043f34cf05 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts @@ -26,6 +26,7 @@ import { filter, map, mergeMap, + take, } from 'rxjs/operators'; import { StateService } from '@uirouter/angular'; import resourceTimelinePlugin from '@fullcalendar/resource-timeline'; @@ -55,6 +56,7 @@ import { HalResourceNotificationService } from 'core-app/features/hal/services/h import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { CalendarDragDropService } from 'core-app/features/team-planner/team-planner/calendar-drag-drop.service'; +import { StatusResource } from 'core-app/features/hal/resources/status-resource'; @Component({ selector: 'op-team-planner', @@ -116,6 +118,8 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, assignees:HalResource[] = []; + statuses:StatusResource[] = []; + text = { add_existing: this.I18n.t('js.team_planner.add_existing'), assignees: this.I18n.t('js.team_planner.label_assignee_plural'), @@ -214,6 +218,17 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, // This needs to be done after all the subscribers are set up this.showAddAssignee$.next(false); + + this + .apiV3Service + .statuses + .get() + .pipe( + take(1), + ) + .subscribe((collection) => { + this.statuses = collection.elements; + }); } ngOnDestroy():void { @@ -394,6 +409,12 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, return this.calendarDrag.workPackageDisabledExplanation(workPackage); } + isStatusClosed(workPackage:WorkPackageResource):boolean { + const status = this.statuses.find((el) => el.id === workPackage.status.id); + + return status ? status.isClosed : false; + } + private mapToCalendarEvents(workPackages:WorkPackageResource[]):EventInput[] { return workPackages .map((workPackage:WorkPackageResource):EventInput|undefined => { diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass index a346df2388..6bc95db92d 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass @@ -31,6 +31,9 @@ &_disabled opacity: 0.6 + &_closed + background-color: #F3F3F3 + &_horizontal height: 100% @@ -51,6 +54,7 @@ display: flex &-subject flex-grow: 1 + @include text-shortener // Style shadow element while dragging wp-single-card:host.gu-transit & diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 76fee67498..7e8dc345bd 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -54,6 +54,8 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen @Input() public showEndDate = true; + @Input() public isClosed = false; + @Output() onRemove = new EventEmitter(); @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); @@ -119,6 +121,7 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen [`${base}_shrink`]: this.shrinkOnMobile, [`${base}_disabled`]: this.disabledInfo.length > 0, [`${base}_inline`]: this.showAsInlineCard, + [`${base}_closed`]: this.isClosed, // eslint-disable-next-line @typescript-eslint/restrict-template-expressions [`${base}-${this.workPackage.id}`]: !!this.workPackage.id, [`${base}_${this.orientation}`]: true, From 3bb31623e37e8fdad1b3da21a6c635f65e2d37be Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Mon, 7 Feb 2022 14:02:15 +0100 Subject: [PATCH 103/118] Take care that the selection is updated when clicking on a team planner item --- frontend/src/app/features/calendar/op-calendar.service.ts | 4 ++++ .../add-work-packages/add-existing-pane.component.html | 3 ++- .../wp-single-card/wp-single-card.component.sass | 6 +++--- .../wp-card-view/wp-single-card/wp-single-card.component.ts | 4 ---- frontend/src/global_styles/vendor/_full_calendar.sass | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/features/calendar/op-calendar.service.ts b/frontend/src/app/features/calendar/op-calendar.service.ts index e5043ececa..8a7b9a8237 100644 --- a/frontend/src/app/features/calendar/op-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-calendar.service.ts @@ -44,6 +44,7 @@ import { import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset'; import * as moment from 'moment'; +import { WorkPackageViewSelectionService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-selection.service'; export interface CalendarViewEvent { el:HTMLElement; @@ -85,6 +86,7 @@ export class OpCalendarService extends UntilDestroyedMixin { readonly uiRouterGlobals:UIRouterGlobals, readonly timezoneService:TimezoneService, readonly halEditing:HalResourceEditingService, + readonly wpTableSelection:WorkPackageViewSelectionService, ) { super(); } @@ -272,6 +274,8 @@ export class OpCalendarService extends UntilDestroyedMixin { private openSplitView(event:EventClickArg) { const workPackage = event.event.extendedProps.workPackage as WorkPackageResource; + this.wpTableSelection.setSelection(workPackage.id!, -1); + void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, { workPackageId: workPackage.id, tabIdentifier: 'overview' }, diff --git a/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.html b/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.html index 684e90cc18..a903abcbac 100644 --- a/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.html +++ b/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.html @@ -43,7 +43,8 @@ [attr.data-qa-selector]="'op-add-existing-pane--wp-' + wp.id" (stateLinkClicked)="openStateLink($event)" > -
+ + diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass index 6bc95db92d..7c8a8083eb 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.sass @@ -31,7 +31,7 @@ &_disabled opacity: 0.6 - &_closed + &_closed:not(&_checked) background-color: #F3F3F3 &_horizontal @@ -118,12 +118,12 @@ &-inline-date font-size: 12px color: var(--gray-dark) - margin: 0 12px + margin: 0 8px white-space: nowrap &--highlighting width: 100% - height: 4px + height: 2px position: absolute top: 0 left: 0 diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 7e8dc345bd..c7640730ae 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -182,10 +182,6 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen return Highlighting.overdueDate(diff); } - public fullWorkPackageLink(wp:WorkPackageResource):string { - return this.$state.href('work-packages.show', { workPackageId: wp.id }); - } - public cardHighlightingClass(wp:WorkPackageResource):string { return this.cardHighlighting(wp); } diff --git a/frontend/src/global_styles/vendor/_full_calendar.sass b/frontend/src/global_styles/vendor/_full_calendar.sass index fdf2df8cb4..4ce43da780 100644 --- a/frontend/src/global_styles/vendor/_full_calendar.sass +++ b/frontend/src/global_styles/vendor/_full_calendar.sass @@ -63,13 +63,13 @@ position: absolute top: 40px z-index: 8 - left: 8px + left: 2px &:after position: absolute top: 40px z-index: 8 - right: 8px + right: 2px .fc-event-title-container margin: 0 16px From 4311a0cecb33973d833070d0b9cdcaee2f8fbc4f Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 7 Feb 2022 14:28:30 +0100 Subject: [PATCH 104/118] deprecate method Setting.register_callback --- app/models/setting/callbacks_helper.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/models/setting/callbacks_helper.rb b/app/models/setting/callbacks_helper.rb index bdd677a97f..985f03ffe8 100644 --- a/app/models/setting/callbacks_helper.rb +++ b/app/models/setting/callbacks_helper.rb @@ -35,6 +35,9 @@ class Setting # register the block with the underlying notifications system notifier.subscribe(notification_event_for(name), &callback) end + # register_callback is not used anymore in our code + # it can be removed along with fire_callbacks in next major version + OpenProject::Deprecation.deprecate_method(self, :register_callback) # instructs the underlying notifications system to publish all setting events for setting #name # based on the new and old setting objects different events can be triggered From 727520ec36da3b855ded9f3b38fdce5264bc2b8b Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Mon, 7 Feb 2022 15:49:07 +0100 Subject: [PATCH 105/118] document how to get global memberships in API --- docs/api/apiv3/paths/memberships.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/api/apiv3/paths/memberships.yml b/docs/api/apiv3/paths/memberships.yml index 3735323714..524013ce1c 100644 --- a/docs/api/apiv3/paths/memberships.yml +++ b/docs/api/apiv3/paths/memberships.yml @@ -26,7 +26,13 @@ get: + created_at: filters memberships based on the time the membership was created. + updated_at: filters memberships based on the time the membership was updated last. - example: '[{ "name": { "operator": "=", "values": ["A User"] }" }]' + examples: + name-filter: + summary: Filtering on the name of the principal + value: '[{ "name": { "operator": "=", "values": ["A User"] }" }]' + global-memberships: + summary: Get memberships for global roles + value: '[{ "project": { "operator": "!*", "values": null }" }]' in: query name: filters required: false From 8eaa542a1c1ec01e64ebd1908b279e385ad551d6 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 8 Feb 2022 03:05:26 +0000 Subject: [PATCH 106/118] update locales from crowdin [ci skip] --- config/locales/crowdin/af.yml | 3 + config/locales/crowdin/ar.yml | 3 + config/locales/crowdin/az.yml | 3 + config/locales/crowdin/bg.yml | 3 + config/locales/crowdin/ca.yml | 3 + config/locales/crowdin/cs.yml | 5 +- config/locales/crowdin/da.yml | 3 + config/locales/crowdin/de.yml | 3 + config/locales/crowdin/el.yml | 3 + config/locales/crowdin/eo.yml | 3 + config/locales/crowdin/es.yml | 3 + config/locales/crowdin/et.yml | 3 + config/locales/crowdin/fa.yml | 3 + config/locales/crowdin/fi.yml | 3 + config/locales/crowdin/fil.yml | 3 + config/locales/crowdin/fr.yml | 3 + config/locales/crowdin/he.yml | 3 + config/locales/crowdin/hi.yml | 3 + config/locales/crowdin/hr.yml | 3 + config/locales/crowdin/hu.yml | 3 + config/locales/crowdin/id.yml | 3 + config/locales/crowdin/it.yml | 3 + config/locales/crowdin/ja.yml | 3 + config/locales/crowdin/js-cs.yml | 6 +- config/locales/crowdin/js-lol.yml | 1906 ++++++++--------- config/locales/crowdin/ko.yml | 3 + config/locales/crowdin/lol.yml | 3 + config/locales/crowdin/lt.yml | 3 + config/locales/crowdin/lv.yml | 3 + config/locales/crowdin/ne.yml | 3 + config/locales/crowdin/nl.yml | 3 + config/locales/crowdin/no.yml | 3 + config/locales/crowdin/pl.yml | 3 + config/locales/crowdin/pt.yml | 3 + config/locales/crowdin/ro.yml | 3 + config/locales/crowdin/ru.yml | 27 +- config/locales/crowdin/rw.yml | 3 + config/locales/crowdin/si.yml | 3 + config/locales/crowdin/sk.yml | 3 + config/locales/crowdin/sl.yml | 3 + config/locales/crowdin/sv.yml | 3 + config/locales/crowdin/th.yml | 3 + config/locales/crowdin/tr.yml | 3 + config/locales/crowdin/uk.yml | 3 + config/locales/crowdin/vi.yml | 3 + config/locales/crowdin/zh-TW.yml | 3 + .../avatars/config/locales/crowdin/js-ru.yml | 4 +- .../grids/config/locales/crowdin/js-af.yml | 3 + .../grids/config/locales/crowdin/js-ar.yml | 3 + .../grids/config/locales/crowdin/js-az.yml | 3 + .../grids/config/locales/crowdin/js-bg.yml | 3 + .../grids/config/locales/crowdin/js-ca.yml | 3 + .../grids/config/locales/crowdin/js-cs.yml | 3 + .../grids/config/locales/crowdin/js-da.yml | 3 + .../grids/config/locales/crowdin/js-de.yml | 3 + .../grids/config/locales/crowdin/js-el.yml | 3 + .../grids/config/locales/crowdin/js-eo.yml | 3 + .../grids/config/locales/crowdin/js-es.yml | 3 + .../grids/config/locales/crowdin/js-et.yml | 3 + .../grids/config/locales/crowdin/js-fa.yml | 3 + .../grids/config/locales/crowdin/js-fi.yml | 3 + .../grids/config/locales/crowdin/js-fil.yml | 3 + .../grids/config/locales/crowdin/js-fr.yml | 3 + .../grids/config/locales/crowdin/js-he.yml | 3 + .../grids/config/locales/crowdin/js-hi.yml | 3 + .../grids/config/locales/crowdin/js-hr.yml | 3 + .../grids/config/locales/crowdin/js-hu.yml | 3 + .../grids/config/locales/crowdin/js-id.yml | 3 + .../grids/config/locales/crowdin/js-it.yml | 3 + .../grids/config/locales/crowdin/js-ja.yml | 3 + .../grids/config/locales/crowdin/js-ko.yml | 3 + .../grids/config/locales/crowdin/js-lol.yml | 3 + .../grids/config/locales/crowdin/js-lt.yml | 3 + .../grids/config/locales/crowdin/js-lv.yml | 3 + .../grids/config/locales/crowdin/js-ne.yml | 3 + .../grids/config/locales/crowdin/js-nl.yml | 3 + .../grids/config/locales/crowdin/js-no.yml | 3 + .../grids/config/locales/crowdin/js-pl.yml | 3 + .../grids/config/locales/crowdin/js-pt.yml | 3 + .../grids/config/locales/crowdin/js-ro.yml | 3 + .../grids/config/locales/crowdin/js-ru.yml | 3 + .../grids/config/locales/crowdin/js-rw.yml | 3 + .../grids/config/locales/crowdin/js-si.yml | 3 + .../grids/config/locales/crowdin/js-sk.yml | 3 + .../grids/config/locales/crowdin/js-sl.yml | 3 + .../grids/config/locales/crowdin/js-sv.yml | 3 + .../grids/config/locales/crowdin/js-th.yml | 3 + .../grids/config/locales/crowdin/js-tr.yml | 3 + .../grids/config/locales/crowdin/js-uk.yml | 3 + .../grids/config/locales/crowdin/js-vi.yml | 3 + .../grids/config/locales/crowdin/js-zh-TW.yml | 3 + 91 files changed, 1235 insertions(+), 971 deletions(-) diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index d9d87caf69..901b145b18 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -455,9 +455,12 @@ af: code: 'Status' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolomme" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index e0b05a0e2e..511ea38522 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -459,9 +459,12 @@ ar: code: 'الحالة' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "الأعمدة" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index d58b295223..67c69b6532 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -455,9 +455,12 @@ az: code: 'Status' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Columns" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index 9a59381bfd..092cd3b4b8 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -455,9 +455,12 @@ bg: code: 'Състояние' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Колони" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index 13d588dad2..67eec20ffe 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -452,9 +452,12 @@ ca: code: 'Estat' explanation: 'Descripció de l''estat' codes: + not_started: 'Not started' on_track: 'Pel bon camí' at_risk: 'En risc' off_track: 'En mal camí' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Columnes" relations_to_type_column: "Relacions a %{type}" diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index c533c55635..691702f150 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -457,9 +457,12 @@ cs: code: 'Stav' explanation: 'Popis stavu' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Sloupce" relations_to_type_column: "Vztahy s %{type}" @@ -1169,7 +1172,7 @@ cs: default_status_in_progress: "Probíhá" default_status_in_specification: "Ve specifikaci" default_status_in_testing: "V testování" - default_status_new: "Nové" + default_status_new: "Nový" default_status_on_hold: "Pozastaven" default_status_rejected: "Odmítnutý" default_status_scheduled: "Naplánováno" diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index de03e8d27c..15d89739ee 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -453,9 +453,12 @@ da: code: 'Status' explanation: 'Statusbeskrivelse' codes: + not_started: 'Not started' on_track: 'På sporet' at_risk: 'I fare' off_track: 'Af sporet' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolonner" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 2de93cb344..e12ab11784 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -450,9 +450,12 @@ de: code: 'Status' explanation: 'Statusbeschreibung' codes: + not_started: 'Not started' on_track: 'Planmäßig' at_risk: 'Gefährdet' off_track: 'Unplanmäßig' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Spalten" relations_to_type_column: "Beziehungen zu %{type}" diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index 20affcdfe8..1eea3414f8 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -451,9 +451,12 @@ el: code: 'Κατάσταση' explanation: 'Περιγραφή κατάστασης' codes: + not_started: 'Not started' on_track: 'Eντός πορείας' at_risk: 'Σε κίνδυνο' off_track: 'Eκτός πορείας' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Στήλες" relations_to_type_column: "Συσχετίσεις με %{type}" diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml index 0170376e13..26954c77b4 100644 --- a/config/locales/crowdin/eo.yml +++ b/config/locales/crowdin/eo.yml @@ -455,9 +455,12 @@ eo: code: 'Stato' explanation: 'Statpriskribo' codes: + not_started: 'Not started' on_track: 'Laŭ la plano' at_risk: 'Riske' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolumnoj" relations_to_type_column: "Rilatoj kun %{type}" diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index 4569ebfbef..8753244ca4 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -452,9 +452,12 @@ es: code: 'Estado' explanation: 'Descripción del estado' codes: + not_started: 'Not started' on_track: 'Según lo previsto' at_risk: 'En riesgo' off_track: 'Fuera de lo previsto' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Columnas" relations_to_type_column: "Relaciones con %{type}" diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index 71758eeee0..4d36d798ba 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -455,9 +455,12 @@ et: code: 'Olek' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Väljad" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index 327fdef1aa..ed56186723 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -455,9 +455,12 @@ fa: code: 'Status' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "ستون‌ها" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index 00d4257251..de9fa3fedc 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -455,9 +455,12 @@ fi: code: 'Tila' explanation: 'Tilan kuvaus' codes: + not_started: 'Not started' on_track: 'Hyvä' at_risk: 'Rajalla' off_track: 'Huono' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Sarakkeet" relations_to_type_column: "Riippuvuus %{type}" diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index 46a8d8398c..a9c430554f 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -455,9 +455,12 @@ fil: code: 'Estado' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Mga hanay" relations_to_type_column: "Mga relasyon sa %{type}" diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 5589e3d8be..b1b626f319 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -455,9 +455,12 @@ fr: code: 'Statut' explanation: 'Description du statut' codes: + not_started: 'Not started' on_track: 'Sur la bonne voie' at_risk: 'À risque' off_track: 'Sur la mauvaise voie' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Colonnes" relations_to_type_column: "Relations avec %{type}" diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index 8aac5a57b6..29d6ef3156 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -457,9 +457,12 @@ he: code: 'מצב' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "עמודות" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index c87b981367..8cde42ef64 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -453,9 +453,12 @@ hi: code: 'अवस्था' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "स्तंभ" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index a276e1cca5..f725339ce7 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -456,9 +456,12 @@ hr: code: 'Status' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Stupci" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index efa383caa0..c289f53219 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -456,9 +456,12 @@ hu: code: 'Állapot' explanation: 'Állapot leírása' codes: + not_started: 'Not started' on_track: 'Terv szerint' at_risk: 'Veszélyben' off_track: 'Kisiklott' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Oszlopok" relations_to_type_column: "Kapcsolatok %{type}-hoz" diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index bb20d0f7c3..3879f7f279 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -451,9 +451,12 @@ id: code: 'Status' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolom" relations_to_type_column: "Relasi untuk %{type}" diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index 73d1f17966..e72285b2fd 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -452,9 +452,12 @@ it: code: 'Stato' explanation: 'Descrizione stato' codes: + not_started: 'Not started' on_track: 'Nei limiti' at_risk: 'A rischio' off_track: 'Fuori limite' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Colonne" relations_to_type_column: "Relazioni con %{type}" diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index da31886ad5..59a6761e3f 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -450,9 +450,12 @@ ja: code: 'ステータス' explanation: '状況の説明' codes: + not_started: 'Not started' on_track: '順調' at_risk: 'リスクあり' off_track: '脱線' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "列" relations_to_type_column: "%{type} との関連" diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index 9478c8ed90..4efcc8ff8b 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -416,7 +416,7 @@ cs: label_sort_lower: "Přesunout níž" label_sorting: "Řazení" label_spent_time: "Strávený čas" - label_star_query: "Zabráněno" + label_star_query: "Oblíbená" label_press_enter_to_save: "Stiskněte Enter pro uložení." label_public_query: "Veřejné" label_sum: "Suma" @@ -521,7 +521,7 @@ cs: all: 'Vše' center: and_more_users: - one: 'a 1 další' + one: 'and 1 other' few: 'and %{count} others' many: 'and %{count} others' other: 'and %{count} others' @@ -678,7 +678,7 @@ cs: duplicated: "Duplikováno" blocks: "Bloky" blocked: "Zablokován" - precedes: "Předchází" + precedes: "Je předchúdcem" follows: "Následuje" includes: "Zahrnuje" partof: "Část" diff --git a/config/locales/crowdin/js-lol.yml b/config/locales/crowdin/js-lol.yml index d15b64adc6..dd28b9cfc6 100644 --- a/config/locales/crowdin/js-lol.yml +++ b/config/locales/crowdin/js-lol.yml @@ -22,1140 +22,1140 @@ lol: js: ajax: - hide: "crwdns708340:0crwdne708340:0" - loading: "crwdns708342:0crwdne708342:0" + hide: "crwdns710628:0crwdne710628:0" + loading: "crwdns710630:0crwdne710630:0" attachments: draggable_hint: | - crwdns708344:0crwdne708344:0 + crwdns710632:0crwdne710632:0 autocomplete_select: placeholder: - multi: "crwdns708346:0%{name}crwdne708346:0" - single: "crwdns708348:0%{name}crwdne708348:0" - remove: "crwdns708350:0%{name}crwdne708350:0" - active: "crwdns708352:0%{label}crwdnd708352:0%{name}crwdne708352:0" + multi: "crwdns710634:0%{name}crwdne710634:0" + single: "crwdns710636:0%{name}crwdne710636:0" + remove: "crwdns710638:0%{name}crwdne710638:0" + active: "crwdns710640:0%{label}crwdnd710640:0%{name}crwdne710640:0" backup: - attachments_disabled: crwdns708354:0crwdne708354:0 + attachments_disabled: crwdns710642:0crwdne710642:0 info: > - crwdns708356:0crwdne708356:0 + crwdns710644:0crwdne710644:0 note: > - crwdns708358:0crwdne708358:0 - last_backup: crwdns708360:0crwdne708360:0 - last_backup_from: crwdns708362:0crwdne708362:0 - title: crwdns708364:0crwdne708364:0 - options: crwdns708366:0crwdne708366:0 - include_attachments: crwdns708368:0crwdne708368:0 - download_backup: crwdns708370:0crwdne708370:0 - request_backup: crwdns708372:0crwdne708372:0 - close_popup_title: "crwdns708374:0crwdne708374:0" - close_filter_title: "crwdns708376:0crwdne708376:0" - close_form_title: "crwdns708378:0crwdne708378:0" - button_add_watcher: "crwdns708380:0crwdne708380:0" - button_add: "crwdns708382:0crwdne708382:0" - button_back: "crwdns708384:0crwdne708384:0" - button_back_to_list_view: "crwdns708386:0crwdne708386:0" - button_cancel: "crwdns708388:0crwdne708388:0" - button_close: "crwdns708390:0crwdne708390:0" - button_change_project: "crwdns708392:0crwdne708392:0" - button_check_all: "crwdns708394:0crwdne708394:0" - button_configure-form: "crwdns708396:0crwdne708396:0" - button_confirm: "crwdns708398:0crwdne708398:0" - button_continue: "crwdns708400:0crwdne708400:0" - button_copy: "crwdns708402:0crwdne708402:0" - button_custom-fields: "crwdns708404:0crwdne708404:0" - button_delete: "crwdns708406:0crwdne708406:0" - button_delete_watcher: "crwdns708408:0crwdne708408:0" - button_details_view: "crwdns708410:0crwdne708410:0" - button_duplicate: "crwdns708412:0crwdne708412:0" - button_edit: "crwdns708414:0crwdne708414:0" - button_filter: "crwdns708416:0crwdne708416:0" - button_collapse_all: "crwdns708418:0crwdne708418:0" - button_expand_all: "crwdns708420:0crwdne708420:0" - button_advanced_filter: "crwdns708422:0crwdne708422:0" - button_list_view: "crwdns708424:0crwdne708424:0" - button_show_view: "crwdns708426:0crwdne708426:0" - button_log_time: "crwdns708428:0crwdne708428:0" - button_more: "crwdns708430:0crwdne708430:0" - button_open_details: "crwdns708432:0crwdne708432:0" - button_close_details: "crwdns708434:0crwdne708434:0" - button_open_fullscreen: "crwdns708436:0crwdne708436:0" - button_show_cards: "crwdns708438:0crwdne708438:0" - button_show_list: "crwdns708440:0crwdne708440:0" - button_quote: "crwdns708442:0crwdne708442:0" - button_save: "crwdns708444:0crwdne708444:0" - button_settings: "crwdns708446:0crwdne708446:0" - button_uncheck_all: "crwdns708448:0crwdne708448:0" - button_update: "crwdns708450:0crwdne708450:0" - button_export-pdf: "crwdns708452:0crwdne708452:0" - button_export-atom: "crwdns708454:0crwdne708454:0" - button_create: "crwdns708456:0crwdne708456:0" + crwdns710646:0crwdne710646:0 + last_backup: crwdns710648:0crwdne710648:0 + last_backup_from: crwdns710650:0crwdne710650:0 + title: crwdns710652:0crwdne710652:0 + options: crwdns710654:0crwdne710654:0 + include_attachments: crwdns710656:0crwdne710656:0 + download_backup: crwdns710658:0crwdne710658:0 + request_backup: crwdns710660:0crwdne710660:0 + close_popup_title: "crwdns710662:0crwdne710662:0" + close_filter_title: "crwdns710664:0crwdne710664:0" + close_form_title: "crwdns710666:0crwdne710666:0" + button_add_watcher: "crwdns710668:0crwdne710668:0" + button_add: "crwdns710670:0crwdne710670:0" + button_back: "crwdns710672:0crwdne710672:0" + button_back_to_list_view: "crwdns710674:0crwdne710674:0" + button_cancel: "crwdns710676:0crwdne710676:0" + button_close: "crwdns710678:0crwdne710678:0" + button_change_project: "crwdns710680:0crwdne710680:0" + button_check_all: "crwdns710682:0crwdne710682:0" + button_configure-form: "crwdns710684:0crwdne710684:0" + button_confirm: "crwdns710686:0crwdne710686:0" + button_continue: "crwdns710688:0crwdne710688:0" + button_copy: "crwdns710690:0crwdne710690:0" + button_custom-fields: "crwdns710692:0crwdne710692:0" + button_delete: "crwdns710694:0crwdne710694:0" + button_delete_watcher: "crwdns710696:0crwdne710696:0" + button_details_view: "crwdns710698:0crwdne710698:0" + button_duplicate: "crwdns710700:0crwdne710700:0" + button_edit: "crwdns710702:0crwdne710702:0" + button_filter: "crwdns710704:0crwdne710704:0" + button_collapse_all: "crwdns710706:0crwdne710706:0" + button_expand_all: "crwdns710708:0crwdne710708:0" + button_advanced_filter: "crwdns710710:0crwdne710710:0" + button_list_view: "crwdns710712:0crwdne710712:0" + button_show_view: "crwdns710714:0crwdne710714:0" + button_log_time: "crwdns710716:0crwdne710716:0" + button_more: "crwdns710718:0crwdne710718:0" + button_open_details: "crwdns710720:0crwdne710720:0" + button_close_details: "crwdns710722:0crwdne710722:0" + button_open_fullscreen: "crwdns710724:0crwdne710724:0" + button_show_cards: "crwdns710726:0crwdne710726:0" + button_show_list: "crwdns710728:0crwdne710728:0" + button_quote: "crwdns710730:0crwdne710730:0" + button_save: "crwdns710732:0crwdne710732:0" + button_settings: "crwdns710734:0crwdne710734:0" + button_uncheck_all: "crwdns710736:0crwdne710736:0" + button_update: "crwdns710738:0crwdne710738:0" + button_export-pdf: "crwdns710740:0crwdne710740:0" + button_export-atom: "crwdns710742:0crwdne710742:0" + button_create: "crwdns710744:0crwdne710744:0" card: - add_new: 'crwdns708458:0crwdne708458:0' + add_new: 'crwdns710746:0crwdne710746:0' highlighting: - inline: 'crwdns708460:0crwdne708460:0' - entire_card_by: 'crwdns708462:0crwdne708462:0' - remove_from_list: 'crwdns708464:0crwdne708464:0' - caption_rate_history: "crwdns708466:0crwdne708466:0" + inline: 'crwdns710748:0crwdne710748:0' + entire_card_by: 'crwdns710750:0crwdne710750:0' + remove_from_list: 'crwdns710752:0crwdne710752:0' + caption_rate_history: "crwdns710754:0crwdne710754:0" clipboard: - browser_error: "crwdns708468:0crwdne708468:0" - copied_successful: "crwdns708470:0crwdne708470:0" + browser_error: "crwdns710756:0crwdne710756:0" + copied_successful: "crwdns710758:0crwdne710758:0" chart: - type: 'crwdns708472:0crwdne708472:0' - axis_criteria: 'crwdns708474:0crwdne708474:0' - modal_title: 'crwdns708476:0crwdne708476:0' + type: 'crwdns710760:0crwdne710760:0' + axis_criteria: 'crwdns710762:0crwdne710762:0' + modal_title: 'crwdns710764:0crwdne710764:0' types: - line: 'crwdns708478:0crwdne708478:0' - horizontal_bar: 'crwdns708480:0crwdne708480:0' - bar: 'crwdns708482:0crwdne708482:0' - pie: 'crwdns708484:0crwdne708484:0' - doughnut: 'crwdns708486:0crwdne708486:0' - radar: 'crwdns708488:0crwdne708488:0' - polar_area: 'crwdns708490:0crwdne708490:0' + line: 'crwdns710766:0crwdne710766:0' + horizontal_bar: 'crwdns710768:0crwdne710768:0' + bar: 'crwdns710770:0crwdne710770:0' + pie: 'crwdns710772:0crwdne710772:0' + doughnut: 'crwdns710774:0crwdne710774:0' + radar: 'crwdns710776:0crwdne710776:0' + polar_area: 'crwdns710778:0crwdne710778:0' tabs: - graph_settings: 'crwdns708492:0crwdne708492:0' - dataset: 'crwdns708494:0%{number}crwdne708494:0' + graph_settings: 'crwdns710780:0crwdne710780:0' + dataset: 'crwdns710782:0%{number}crwdne710782:0' errors: - could_not_load: 'crwdns708496:0crwdne708496:0' - description_available_columns: "crwdns708498:0crwdne708498:0" - description_current_position: "crwdns708500:0crwdne708500:0" - description_select_work_package: "crwdns708502:0%{id}crwdne708502:0" - description_selected_columns: "crwdns708504:0crwdne708504:0" - description_subwork_package: "crwdns708506:0%{id}crwdne708506:0" + could_not_load: 'crwdns710784:0crwdne710784:0' + description_available_columns: "crwdns710786:0crwdne710786:0" + description_current_position: "crwdns710788:0crwdne710788:0" + description_select_work_package: "crwdns710790:0%{id}crwdne710790:0" + description_selected_columns: "crwdns710792:0crwdne710792:0" + description_subwork_package: "crwdns710794:0%{id}crwdne710794:0" editor: - preview: 'crwdns708508:0crwdne708508:0' - source_code: 'crwdns708510:0crwdne708510:0' - error_saving_failed: 'crwdns708512:0%{error}crwdne708512:0' - ckeditor_error: 'crwdns708514:0crwdne708514:0' + preview: 'crwdns710796:0crwdne710796:0' + source_code: 'crwdns710798:0crwdne710798:0' + error_saving_failed: 'crwdns710800:0%{error}crwdne710800:0' + ckeditor_error: 'crwdns710802:0crwdne710802:0' mode: - manual: 'crwdns708516:0crwdne708516:0' - wysiwyg: 'crwdns708518:0crwdne708518:0' + manual: 'crwdns710804:0crwdne710804:0' + wysiwyg: 'crwdns710806:0crwdne710806:0' macro: - error: 'crwdns708520:0%{message}crwdne708520:0' + error: 'crwdns710808:0%{message}crwdne710808:0' attribute_reference: - macro_help_tooltip: 'crwdns708522:0crwdne708522:0' - not_found: 'crwdns708524:0crwdne708524:0' - invalid_attribute: "crwdns708526:0%{name}crwdne708526:0" + macro_help_tooltip: 'crwdns710810:0crwdne710810:0' + not_found: 'crwdns710812:0crwdne710812:0' + invalid_attribute: "crwdns710814:0%{name}crwdne710814:0" child_pages: - button: 'crwdns708528:0crwdne708528:0' - include_parent: 'crwdns708530:0crwdne708530:0' - text: 'crwdns708532:0[Placeholder]crwdne708532:0' - page: 'crwdns708534:0crwdne708534:0' - this_page: 'crwdns708536:0crwdne708536:0' + button: 'crwdns710816:0crwdne710816:0' + include_parent: 'crwdns710818:0crwdne710818:0' + text: 'crwdns710820:0[Placeholder]crwdne710820:0' + page: 'crwdns710822:0crwdne710822:0' + this_page: 'crwdns710824:0crwdne710824:0' hint: | - crwdns708538:0crwdne708538:0 + crwdns710826:0crwdne710826:0 code_block: - button: 'crwdns708540:0crwdne708540:0' - title: 'crwdns708542:0crwdne708542:0' - language: 'crwdns708544:0crwdne708544:0' - language_hint: 'crwdns708546:0crwdne708546:0' + button: 'crwdns710828:0crwdne710828:0' + title: 'crwdns710830:0crwdne710830:0' + language: 'crwdns710832:0crwdne710832:0' + language_hint: 'crwdns710834:0crwdne710834:0' dropdown: - macros: 'crwdns708548:0crwdne708548:0' - chose_macro: 'crwdns708550:0crwdne708550:0' - toc: 'crwdns708552:0crwdne708552:0' - toolbar_help: 'crwdns708554:0crwdne708554:0' + macros: 'crwdns710836:0crwdne710836:0' + chose_macro: 'crwdns710838:0crwdne710838:0' + toc: 'crwdns710840:0crwdne710840:0' + toolbar_help: 'crwdns710842:0crwdne710842:0' wiki_page_include: - button: 'crwdns708556:0crwdne708556:0' - text: 'crwdns708558:0[Placeholder]crwdne708558:0' - page: 'crwdns708560:0crwdne708560:0' - not_set: 'crwdns708562:0crwdne708562:0' + button: 'crwdns710844:0crwdne710844:0' + text: 'crwdns710846:0[Placeholder]crwdne710846:0' + page: 'crwdns710848:0crwdne710848:0' + not_set: 'crwdns710850:0crwdne710850:0' hint: | - crwdns708564:0crwdne708564:0 + crwdns710852:0crwdne710852:0 work_package_button: - button: 'crwdns708566:0crwdne708566:0' - type: 'crwdns708568:0crwdne708568:0' - button_style: 'crwdns708570:0crwdne708570:0' - button_style_hint: 'crwdns708572:0crwdne708572:0' - without_type: 'crwdns708574:0crwdne708574:0' - with_type: 'crwdns708576:0%{typename}crwdne708576:0' + button: 'crwdns710854:0crwdne710854:0' + type: 'crwdns710856:0crwdne710856:0' + button_style: 'crwdns710858:0crwdne710858:0' + button_style_hint: 'crwdns710860:0crwdne710860:0' + without_type: 'crwdns710862:0crwdne710862:0' + with_type: 'crwdns710864:0%{typename}crwdne710864:0' embedded_table: - button: 'crwdns708578:0crwdne708578:0' - text: 'crwdns708580:0[Placeholder]crwdne708580:0' + button: 'crwdns710866:0crwdne710866:0' + text: 'crwdns710868:0[Placeholder]crwdne710868:0' embedded_calendar: - text: 'crwdns708582:0[Placeholder]crwdne708582:0' + text: 'crwdns710870:0[Placeholder]crwdne710870:0' admin: type_form: - custom_field: 'crwdns708584:0crwdne708584:0' - inactive: 'crwdns708586:0crwdne708586:0' - drag_to_activate: "crwdns708588:0crwdne708588:0" - add_group: "crwdns708590:0crwdne708590:0" - add_table: "crwdns708592:0crwdne708592:0" - edit_query: 'crwdns708594:0crwdne708594:0' - new_group: 'crwdns708596:0crwdne708596:0' - reset_to_defaults: 'crwdns708598:0crwdne708598:0' + custom_field: 'crwdns710872:0crwdne710872:0' + inactive: 'crwdns710874:0crwdne710874:0' + drag_to_activate: "crwdns710876:0crwdne710876:0" + add_group: "crwdns710878:0crwdne710878:0" + add_table: "crwdns710880:0crwdne710880:0" + edit_query: 'crwdns710882:0crwdne710882:0' + new_group: 'crwdns710884:0crwdne710884:0' + reset_to_defaults: 'crwdns710886:0crwdne710886:0' enterprise: - text_reprieve_days_left: "crwdns708600:0%{days}crwdne708600:0" - text_expired: "crwdns708602:0crwdne708602:0" + text_reprieve_days_left: "crwdns710888:0%{days}crwdne710888:0" + text_expired: "crwdns710890:0crwdne710890:0" trial: - confirmation: "crwdns708604:0crwdne708604:0" + confirmation: "crwdns710892:0crwdne710892:0" confirmation_info: > - crwdns708606:0%{date}crwdnd708606:0%{email}crwdne708606:0 + crwdns710894:0%{date}crwdnd710894:0%{email}crwdne710894:0 form: general_consent: > - crwdns708608:0%{link_terms}crwdnd708608:0%{link_privacy}crwdne708608:0 - invalid_email: "crwdns708610:0crwdne708610:0" - label_company: "crwdns708612:0crwdne708612:0" - label_first_name: "crwdns708614:0crwdne708614:0" - label_last_name: "crwdns708616:0crwdne708616:0" - label_domain: "crwdns708618:0crwdne708618:0" - label_subscriber: "crwdns708620:0crwdne708620:0" - label_maximum_users: "crwdns708622:0crwdne708622:0" - label_starts_at: "crwdns708624:0crwdne708624:0" - label_expires_at: "crwdns708626:0crwdne708626:0" - receive_newsletter: crwdns708628:0%{link}crwdne708628:0 - taken_domain: crwdns708630:0crwdne708630:0 - taken_email: crwdns708632:0crwdne708632:0 - email_not_received: "crwdns708634:0crwdne708634:0" - try_another_email: "crwdns708636:0crwdne708636:0" - next_steps: "crwdns708638:0crwdne708638:0" - resend_link: "crwdns708640:0crwdne708640:0" - resend_success: "crwdns708642:0crwdne708642:0" - resend_warning: "crwdns708644:0crwdne708644:0" - session_timeout: "crwdns708646:0crwdne708646:0" - status_label: "crwdns708648:0crwdne708648:0" - status_confirmed: "crwdns708650:0crwdne708650:0" - status_waiting: "crwdns708652:0crwdne708652:0" - test_ee: "crwdns708654:0crwdne708654:0" - quick_overview: "crwdns708656:0crwdne708656:0" + crwdns710896:0%{link_terms}crwdnd710896:0%{link_privacy}crwdne710896:0 + invalid_email: "crwdns710898:0crwdne710898:0" + label_company: "crwdns710900:0crwdne710900:0" + label_first_name: "crwdns710902:0crwdne710902:0" + label_last_name: "crwdns710904:0crwdne710904:0" + label_domain: "crwdns710906:0crwdne710906:0" + label_subscriber: "crwdns710908:0crwdne710908:0" + label_maximum_users: "crwdns710910:0crwdne710910:0" + label_starts_at: "crwdns710912:0crwdne710912:0" + label_expires_at: "crwdns710914:0crwdne710914:0" + receive_newsletter: crwdns710916:0%{link}crwdne710916:0 + taken_domain: crwdns710918:0crwdne710918:0 + taken_email: crwdns710920:0crwdne710920:0 + email_not_received: "crwdns710922:0crwdne710922:0" + try_another_email: "crwdns710924:0crwdne710924:0" + next_steps: "crwdns710926:0crwdne710926:0" + resend_link: "crwdns710928:0crwdne710928:0" + resend_success: "crwdns710930:0crwdne710930:0" + resend_warning: "crwdns710932:0crwdne710932:0" + session_timeout: "crwdns710934:0crwdne710934:0" + status_label: "crwdns710936:0crwdne710936:0" + status_confirmed: "crwdns710938:0crwdne710938:0" + status_waiting: "crwdns710940:0crwdne710940:0" + test_ee: "crwdns710942:0crwdne710942:0" + quick_overview: "crwdns710944:0crwdne710944:0" upsale: - become_hero: "crwdns708658:0crwdne708658:0" + become_hero: "crwdns710946:0crwdne710946:0" benefits: - description: "crwdns708660:0crwdne708660:0" - high_security: "crwdns708662:0crwdne708662:0" - high_security_text: "crwdns708664:0crwdne708664:0" - installation: "crwdns708666:0crwdne708666:0" - installation_text: "crwdns708668:0crwdne708668:0" - premium_features: "crwdns708670:0crwdne708670:0" - premium_features_text: "crwdns708672:0crwdne708672:0" - professional_support: "crwdns708674:0crwdne708674:0" - professional_support_text: "crwdns708676:0crwdne708676:0" - button_start_trial: "crwdns708678:0crwdne708678:0" - button_book_now: "crwdns708680:0crwdne708680:0" + description: "crwdns710948:0crwdne710948:0" + high_security: "crwdns710950:0crwdne710950:0" + high_security_text: "crwdns710952:0crwdne710952:0" + installation: "crwdns710954:0crwdne710954:0" + installation_text: "crwdns710956:0crwdne710956:0" + premium_features: "crwdns710958:0crwdne710958:0" + premium_features_text: "crwdns710960:0crwdne710960:0" + professional_support: "crwdns710962:0crwdne710962:0" + professional_support_text: "crwdns710964:0crwdne710964:0" + button_start_trial: "crwdns710966:0crwdne710966:0" + button_book_now: "crwdns710968:0crwdne710968:0" confidence: > - crwdns708682:0crwdne708682:0 - link_quote: "crwdns708684:0crwdne708684:0" + crwdns710970:0crwdne710970:0 + link_quote: "crwdns710972:0crwdne710972:0" text: > - crwdns708686:0crwdne708686:0 - unlimited: "crwdns708688:0crwdne708688:0" - you_contribute: "crwdns708690:0crwdne708690:0" + crwdns710974:0crwdne710974:0 + unlimited: "crwdns710976:0crwdne710976:0" + you_contribute: "crwdns710978:0crwdne710978:0" custom_actions: date: - specific: 'crwdns708692:0crwdne708692:0' - current_date: 'crwdns708694:0crwdne708694:0' + specific: 'crwdns710980:0crwdne710980:0' + current_date: 'crwdns710982:0crwdne710982:0' error: - internal: "crwdns708696:0crwdne708696:0" - cannot_save_changes_with_message: "crwdns708698:0%{error}crwdne708698:0" - query_saving: "crwdns708700:0crwdne708700:0" - embedded_table_loading: "crwdns708702:0%{message}crwdne708702:0" - enumeration_activities: "crwdns708704:0crwdne708704:0" - enumeration_doc_categories: "crwdns708706:0crwdne708706:0" - enumeration_work_package_priorities: "crwdns708708:0crwdne708708:0" + internal: "crwdns710984:0crwdne710984:0" + cannot_save_changes_with_message: "crwdns710986:0%{error}crwdne710986:0" + query_saving: "crwdns710988:0crwdne710988:0" + embedded_table_loading: "crwdns710990:0%{message}crwdne710990:0" + enumeration_activities: "crwdns710992:0crwdne710992:0" + enumeration_doc_categories: "crwdns710994:0crwdne710994:0" + enumeration_work_package_priorities: "crwdns710996:0crwdne710996:0" filter: description: - text_open_filter: "crwdns708710:0crwdne708710:0" - text_close_filter: "crwdns708712:0crwdne708712:0" - noneElement: "crwdns708714:0crwdne708714:0" + text_open_filter: "crwdns710998:0crwdne710998:0" + text_close_filter: "crwdns711000:0crwdne711000:0" + noneElement: "crwdns711002:0crwdne711002:0" time_zone_converted: - two_values: "crwdns708716:0%{from}crwdnd708716:0%{to}crwdne708716:0" - only_start: "crwdns708718:0%{from}crwdne708718:0" - only_end: "crwdns708720:0%{to}crwdne708720:0" - value_spacer: "crwdns708722:0crwdne708722:0" + two_values: "crwdns711004:0%{from}crwdnd711004:0%{to}crwdne711004:0" + only_start: "crwdns711006:0%{from}crwdne711006:0" + only_end: "crwdns711008:0%{to}crwdne711008:0" + value_spacer: "crwdns711010:0crwdne711010:0" sorting: criteria: - one: "crwdns708724:0crwdne708724:0" - two: "crwdns708726:0crwdne708726:0" - three: "crwdns708728:0crwdne708728:0" - upsale_for_more: "crwdns708730:0crwdne708730:0" - upsale_link: 'crwdns708732:0crwdne708732:0' - general_text_no: "crwdns708734:0crwdne708734:0" - general_text_yes: "crwdns708736:0crwdne708736:0" - general_text_No: "crwdns708738:0crwdne708738:0" - general_text_Yes: "crwdns708740:0crwdne708740:0" + one: "crwdns711012:0crwdne711012:0" + two: "crwdns711014:0crwdne711014:0" + three: "crwdns711016:0crwdne711016:0" + upsale_for_more: "crwdns711018:0crwdne711018:0" + upsale_link: 'crwdns711020:0crwdne711020:0' + general_text_no: "crwdns711022:0crwdne711022:0" + general_text_yes: "crwdns711024:0crwdne711024:0" + general_text_No: "crwdns711026:0crwdne711026:0" + general_text_Yes: "crwdns711028:0crwdne711028:0" hal: error: - update_conflict_refresh: "crwdns708742:0crwdne708742:0" - edit_prohibited: "crwdns708744:0%{attribute}crwdne708744:0" + update_conflict_refresh: "crwdns711030:0crwdne711030:0" + edit_prohibited: "crwdns711032:0%{attribute}crwdne711032:0" format: - date: "crwdns708746:0%{attribute}crwdne708746:0" - general: "crwdns708748:0crwdne708748:0" + date: "crwdns711034:0%{attribute}crwdne711034:0" + general: "crwdns711036:0crwdne711036:0" homescreen: blocks: new_features: - text_new_features: "crwdns708750:0crwdne708750:0" - learn_about: "crwdns708752:0crwdne708752:0" + text_new_features: "crwdns711038:0crwdne711038:0" + learn_about: "crwdns711040:0crwdne711040:0" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': standard: - learn_about_link: crwdns708754:0crwdne708754:0 + learn_about_link: crwdns711042:0crwdne711042:0 new_features_html: > - crwdns708756:0%{list_styling_class}crwdne708756:0 + crwdns711044:0%{list_styling_class}crwdne711044:0 bim: - learn_about_link: crwdns708758:0crwdne708758:0 + learn_about_link: crwdns711046:0crwdne711046:0 new_features_html: > - crwdns708760:0%{list_styling_class}crwdne708760:0 - label_activate: "crwdns708762:0crwdne708762:0" - label_add_column_after: "crwdns708764:0crwdne708764:0" - label_add_column_before: "crwdns708766:0crwdne708766:0" - label_add_columns: "crwdns708768:0crwdne708768:0" - label_add_comment: "crwdns708770:0crwdne708770:0" - label_add_comment_title: "crwdns708772:0crwdne708772:0" - label_add_row_after: "crwdns708774:0crwdne708774:0" - label_add_row_before: "crwdns708776:0crwdne708776:0" - label_add_selected_columns: "crwdns708778:0crwdne708778:0" - label_added_by: "crwdns708780:0crwdne708780:0" - label_added_time_by: "crwdns708782:0%{authorLink}crwdnd708782:0%{author}crwdnd708782:0%{age}crwdne708782:0" - label_ago: "crwdns708784:0crwdne708784:0" - label_all: "crwdns708786:0crwdne708786:0" - label_all_work_packages: "crwdns708788:0crwdne708788:0" - label_and: "crwdns708790:0crwdne708790:0" - label_ascending: "crwdns708792:0crwdne708792:0" - label_author: "crwdns708794:0%{user}crwdne708794:0" - label_avatar: "crwdns708796:0crwdne708796:0" - label_between: "crwdns708798:0crwdne708798:0" - label_board: "crwdns708800:0crwdne708800:0" - label_board_locked: "crwdns708802:0crwdne708802:0" - label_board_plural: "crwdns708804:0crwdne708804:0" - label_board_sticky: "crwdns708806:0crwdne708806:0" - label_change: "crwdns708808:0crwdne708808:0" - label_create: "crwdns708810:0crwdne708810:0" - label_create_work_package: "crwdns708812:0crwdne708812:0" - label_created_by: "crwdns708814:0crwdne708814:0" - label_date: "crwdns708816:0crwdne708816:0" - label_date_with_format: "crwdns708818:0%{date_attribute}crwdnd708818:0%{format}crwdne708818:0" - label_deactivate: "crwdns708820:0crwdne708820:0" - label_descending: "crwdns708822:0crwdne708822:0" - label_description: "crwdns708824:0crwdne708824:0" - label_details: "crwdns708826:0crwdne708826:0" - label_display: "crwdns708828:0crwdne708828:0" - label_cancel_comment: "crwdns708830:0crwdne708830:0" - label_closed_work_packages: "crwdns708832:0crwdne708832:0" - label_collapse: "crwdns708834:0crwdne708834:0" - label_collapsed: "crwdns708836:0crwdne708836:0" - label_collapse_all: "crwdns708838:0crwdne708838:0" - label_comment: "crwdns708840:0crwdne708840:0" - label_committed_at: "crwdns708842:0%{committed_revision_link}crwdnd708842:0%{date}crwdne708842:0" - label_committed_link: "crwdns708844:0%{revision_identifier}crwdne708844:0" - label_contains: "crwdns708846:0crwdne708846:0" - label_created_on: "crwdns708848:0crwdne708848:0" - label_edit_comment: "crwdns708850:0crwdne708850:0" - label_edit_status: "crwdns708852:0crwdne708852:0" - label_email: "crwdns708854:0crwdne708854:0" - label_equals: "crwdns708856:0crwdne708856:0" - label_expand: "crwdns708858:0crwdne708858:0" - label_expanded: "crwdns708860:0crwdne708860:0" - label_expand_all: "crwdns708862:0crwdne708862:0" - label_expand_project_menu: "crwdns708864:0crwdne708864:0" - label_export: "crwdns708866:0crwdne708866:0" - label_export_preparing: "crwdns708868:0crwdne708868:0" - label_filename: "crwdns708870:0crwdne708870:0" - label_filesize: "crwdns708872:0crwdne708872:0" - label_general: "crwdns708874:0crwdne708874:0" - label_global_roles: "crwdns708876:0crwdne708876:0" - label_greater_or_equal: "crwdns708878:0crwdne708878:0" - label_group: 'crwdns708880:0crwdne708880:0' - label_group_by: "crwdns708882:0crwdne708882:0" - label_group_plural: "crwdns708884:0crwdne708884:0" - label_hide_attributes: "crwdns708886:0crwdne708886:0" - label_hide_column: "crwdns708888:0crwdne708888:0" - label_hide_project_menu: "crwdns708890:0crwdne708890:0" - label_in: "crwdns708892:0crwdne708892:0" - label_in_less_than: "crwdns708894:0crwdne708894:0" - label_in_more_than: "crwdns708896:0crwdne708896:0" - label_incoming_emails: "crwdns708898:0crwdne708898:0" - label_information_plural: "crwdns708900:0crwdne708900:0" - label_import: "crwdns708902:0crwdne708902:0" - label_latest_activity: "crwdns708904:0crwdne708904:0" - label_last_updated_on: "crwdns708906:0crwdne708906:0" - label_learn_more_link: "crwdns708908:0crwdne708908:0" - label_less_or_equal: "crwdns708910:0crwdne708910:0" - label_less_than_ago: "crwdns708912:0crwdne708912:0" - label_loading: "crwdns708914:0crwdne708914:0" - label_mail_notification: "crwdns708916:0crwdne708916:0" - label_me: "crwdns708918:0crwdne708918:0" - label_meeting_agenda: "crwdns708920:0crwdne708920:0" - label_meeting_minutes: "crwdns708922:0crwdne708922:0" - label_menu_collapse: "crwdns708924:0crwdne708924:0" - label_menu_expand: "crwdns708926:0crwdne708926:0" - label_more_than_ago: "crwdns708928:0crwdne708928:0" - label_next: "crwdns708930:0crwdne708930:0" - label_no_color: "crwdns708932:0crwdne708932:0" - label_no_data: "crwdns708934:0crwdne708934:0" - label_no_due_date: "crwdns708936:0crwdne708936:0" - label_no_start_date: "crwdns708938:0crwdne708938:0" - label_no_value: "crwdns708940:0crwdne708940:0" - label_none: "crwdns708942:0crwdne708942:0" - label_not_contains: "crwdns708944:0crwdne708944:0" - label_not_equals: "crwdns708946:0crwdne708946:0" - label_on: "crwdns708948:0crwdne708948:0" - label_open_menu: "crwdns708950:0crwdne708950:0" - label_open_context_menu: "crwdns708952:0crwdne708952:0" - label_open_work_packages: "crwdns708954:0crwdne708954:0" - label_password: "crwdns708956:0crwdne708956:0" - label_previous: "crwdns708958:0crwdne708958:0" - label_per_page: "crwdns708960:0crwdne708960:0" - label_please_wait: "crwdns708962:0crwdne708962:0" - label_project_plural: "crwdns708964:0crwdne708964:0" - label_visibility_settings: "crwdns708966:0crwdne708966:0" - label_quote_comment: "crwdns708968:0crwdne708968:0" - label_recent: "crwdns708970:0crwdne708970:0" - label_reset: "crwdns708972:0crwdne708972:0" - label_remove: "crwdns708974:0crwdne708974:0" - label_remove_column: "crwdns708976:0crwdne708976:0" - label_remove_columns: "crwdns708978:0crwdne708978:0" - label_remove_row: "crwdns708980:0crwdne708980:0" - label_report: "crwdns708982:0crwdne708982:0" - label_repository_plural: "crwdns708984:0crwdne708984:0" - label_save_as: "crwdns708986:0crwdne708986:0" - label_select_watcher: "crwdns708988:0crwdne708988:0" - label_selected_filter_list: "crwdns708990:0crwdne708990:0" - label_show_attributes: "crwdns708992:0crwdne708992:0" - label_show_in_menu: "crwdns708994:0crwdne708994:0" - label_sort_by: "crwdns708996:0crwdne708996:0" - label_sorted_by: "crwdns708998:0crwdne708998:0" - label_sort_higher: "crwdns709000:0crwdne709000:0" - label_sort_lower: "crwdns709002:0crwdne709002:0" - label_sorting: "crwdns709004:0crwdne709004:0" - label_spent_time: "crwdns709006:0crwdne709006:0" - label_star_query: "crwdns709008:0crwdne709008:0" - label_press_enter_to_save: "crwdns709010:0crwdne709010:0" - label_public_query: "crwdns709012:0crwdne709012:0" - label_sum: "crwdns709014:0crwdne709014:0" - label_sum_for: "crwdns709016:0crwdne709016:0" - label_total_sum: "crwdns709018:0crwdne709018:0" - label_subject: "crwdns709020:0crwdne709020:0" - label_this_week: "crwdns709022:0crwdne709022:0" - label_today: "crwdns709024:0crwdne709024:0" - label_time_entry_plural: "crwdns709026:0crwdne709026:0" - label_up: "crwdns709028:0crwdne709028:0" - label_user_plural: "crwdns709030:0crwdne709030:0" - label_activity_show_only_comments: "crwdns709032:0crwdne709032:0" - label_activity_show_all: "crwdns709034:0crwdne709034:0" - label_total_progress: "crwdns709036:0%{percent}crwdne709036:0" - label_total_amount: "crwdns709038:0%{amount}crwdne709038:0" - label_updated_on: "crwdns709040:0crwdne709040:0" - label_value_derived_from_children: "crwdns709042:0crwdne709042:0" - label_children_derived_duration: "crwdns709044:0crwdne709044:0" - label_warning: "crwdns709046:0crwdne709046:0" - label_work_package: "crwdns709048:0crwdne709048:0" - label_work_package_parent: "crwdns709050:0crwdne709050:0" - label_work_package_plural: "crwdns709052:0crwdne709052:0" - label_watch: "crwdns709054:0crwdne709054:0" - label_watch_work_package: "crwdns709056:0crwdne709056:0" - label_watcher_added_successfully: "crwdns709058:0crwdne709058:0" - label_watcher_deleted_successfully: "crwdns709060:0crwdne709060:0" - label_work_package_details_you_are_here: "crwdns709062:0%{tab}crwdnd709062:0%{type}crwdnd709062:0%{subject}crwdne709062:0" - label_unwatch: "crwdns709064:0crwdne709064:0" - label_unwatch_work_package: "crwdns709066:0crwdne709066:0" - label_uploaded_by: "crwdns709068:0crwdne709068:0" - label_default_queries: "crwdns709070:0crwdne709070:0" - label_starred_queries: "crwdns709072:0crwdne709072:0" - label_global_queries: "crwdns709074:0crwdne709074:0" - label_custom_queries: "crwdns709076:0crwdne709076:0" - label_create_new_query: "crwdns709078:0crwdne709078:0" - label_columns: "crwdns709080:0crwdne709080:0" - label_attachments: crwdns709082:0crwdne709082:0 - label_drop_files: crwdns709084:0crwdne709084:0 - label_drop_files_hint: crwdns709086:0crwdne709086:0 - label_drop_folders_hint: crwdns709088:0crwdne709088:0 - label_add_attachments: "crwdns709090:0crwdne709090:0" - label_formattable_attachment_hint: "crwdns709092:0crwdne709092:0" - label_remove_file: "crwdns709094:0%{fileName}crwdne709094:0" - label_remove_watcher: "crwdns709096:0%{name}crwdne709096:0" - label_remove_all_files: crwdns709098:0crwdne709098:0 - label_add_description: "crwdns709100:0%{file}crwdne709100:0" - label_upload_notification: "crwdns709102:0crwdne709102:0" - label_work_package_upload_notification: "crwdns709104:0%{id}crwdnd709104:0%{subject}crwdne709104:0" - label_wp_id_added_by: "crwdns709106:0%{id}crwdnd709106:0%{author}crwdne709106:0" - label_files_to_upload: "crwdns709108:0crwdne709108:0" - label_rejected_files: "crwdns709110:0crwdne709110:0" - label_rejected_files_reason: "crwdns709112:0%{maximumFilesize}crwdne709112:0" - label_wait: "crwdns709114:0crwdne709114:0" - label_upload_counter: "crwdns709116:0%{done}crwdnd709116:0%{count}crwdne709116:0" - label_validation_error: "crwdns709118:0crwdne709118:0" - label_version_plural: "crwdns709120:0crwdne709120:0" - label_view_has_changed: "crwdns709122:0crwdne709122:0" + crwdns711048:0%{list_styling_class}crwdne711048:0 + label_activate: "crwdns711050:0crwdne711050:0" + label_add_column_after: "crwdns711052:0crwdne711052:0" + label_add_column_before: "crwdns711054:0crwdne711054:0" + label_add_columns: "crwdns711056:0crwdne711056:0" + label_add_comment: "crwdns711058:0crwdne711058:0" + label_add_comment_title: "crwdns711060:0crwdne711060:0" + label_add_row_after: "crwdns711062:0crwdne711062:0" + label_add_row_before: "crwdns711064:0crwdne711064:0" + label_add_selected_columns: "crwdns711066:0crwdne711066:0" + label_added_by: "crwdns711068:0crwdne711068:0" + label_added_time_by: "crwdns711070:0%{authorLink}crwdnd711070:0%{author}crwdnd711070:0%{age}crwdne711070:0" + label_ago: "crwdns711072:0crwdne711072:0" + label_all: "crwdns711074:0crwdne711074:0" + label_all_work_packages: "crwdns711076:0crwdne711076:0" + label_and: "crwdns711078:0crwdne711078:0" + label_ascending: "crwdns711080:0crwdne711080:0" + label_author: "crwdns711082:0%{user}crwdne711082:0" + label_avatar: "crwdns711084:0crwdne711084:0" + label_between: "crwdns711086:0crwdne711086:0" + label_board: "crwdns711088:0crwdne711088:0" + label_board_locked: "crwdns711090:0crwdne711090:0" + label_board_plural: "crwdns711092:0crwdne711092:0" + label_board_sticky: "crwdns711094:0crwdne711094:0" + label_change: "crwdns711096:0crwdne711096:0" + label_create: "crwdns711098:0crwdne711098:0" + label_create_work_package: "crwdns711100:0crwdne711100:0" + label_created_by: "crwdns711102:0crwdne711102:0" + label_date: "crwdns711104:0crwdne711104:0" + label_date_with_format: "crwdns711106:0%{date_attribute}crwdnd711106:0%{format}crwdne711106:0" + label_deactivate: "crwdns711108:0crwdne711108:0" + label_descending: "crwdns711110:0crwdne711110:0" + label_description: "crwdns711112:0crwdne711112:0" + label_details: "crwdns711114:0crwdne711114:0" + label_display: "crwdns711116:0crwdne711116:0" + label_cancel_comment: "crwdns711118:0crwdne711118:0" + label_closed_work_packages: "crwdns711120:0crwdne711120:0" + label_collapse: "crwdns711122:0crwdne711122:0" + label_collapsed: "crwdns711124:0crwdne711124:0" + label_collapse_all: "crwdns711126:0crwdne711126:0" + label_comment: "crwdns711128:0crwdne711128:0" + label_committed_at: "crwdns711130:0%{committed_revision_link}crwdnd711130:0%{date}crwdne711130:0" + label_committed_link: "crwdns711132:0%{revision_identifier}crwdne711132:0" + label_contains: "crwdns711134:0crwdne711134:0" + label_created_on: "crwdns711136:0crwdne711136:0" + label_edit_comment: "crwdns711138:0crwdne711138:0" + label_edit_status: "crwdns711140:0crwdne711140:0" + label_email: "crwdns711142:0crwdne711142:0" + label_equals: "crwdns711144:0crwdne711144:0" + label_expand: "crwdns711146:0crwdne711146:0" + label_expanded: "crwdns711148:0crwdne711148:0" + label_expand_all: "crwdns711150:0crwdne711150:0" + label_expand_project_menu: "crwdns711152:0crwdne711152:0" + label_export: "crwdns711154:0crwdne711154:0" + label_export_preparing: "crwdns711156:0crwdne711156:0" + label_filename: "crwdns711158:0crwdne711158:0" + label_filesize: "crwdns711160:0crwdne711160:0" + label_general: "crwdns711162:0crwdne711162:0" + label_global_roles: "crwdns711164:0crwdne711164:0" + label_greater_or_equal: "crwdns711166:0crwdne711166:0" + label_group: 'crwdns711168:0crwdne711168:0' + label_group_by: "crwdns711170:0crwdne711170:0" + label_group_plural: "crwdns711172:0crwdne711172:0" + label_hide_attributes: "crwdns711174:0crwdne711174:0" + label_hide_column: "crwdns711176:0crwdne711176:0" + label_hide_project_menu: "crwdns711178:0crwdne711178:0" + label_in: "crwdns711180:0crwdne711180:0" + label_in_less_than: "crwdns711182:0crwdne711182:0" + label_in_more_than: "crwdns711184:0crwdne711184:0" + label_incoming_emails: "crwdns711186:0crwdne711186:0" + label_information_plural: "crwdns711188:0crwdne711188:0" + label_import: "crwdns711190:0crwdne711190:0" + label_latest_activity: "crwdns711192:0crwdne711192:0" + label_last_updated_on: "crwdns711194:0crwdne711194:0" + label_learn_more_link: "crwdns711196:0crwdne711196:0" + label_less_or_equal: "crwdns711198:0crwdne711198:0" + label_less_than_ago: "crwdns711200:0crwdne711200:0" + label_loading: "crwdns711202:0crwdne711202:0" + label_mail_notification: "crwdns711204:0crwdne711204:0" + label_me: "crwdns711206:0crwdne711206:0" + label_meeting_agenda: "crwdns711208:0crwdne711208:0" + label_meeting_minutes: "crwdns711210:0crwdne711210:0" + label_menu_collapse: "crwdns711212:0crwdne711212:0" + label_menu_expand: "crwdns711214:0crwdne711214:0" + label_more_than_ago: "crwdns711216:0crwdne711216:0" + label_next: "crwdns711218:0crwdne711218:0" + label_no_color: "crwdns711220:0crwdne711220:0" + label_no_data: "crwdns711222:0crwdne711222:0" + label_no_due_date: "crwdns711224:0crwdne711224:0" + label_no_start_date: "crwdns711226:0crwdne711226:0" + label_no_value: "crwdns711228:0crwdne711228:0" + label_none: "crwdns711230:0crwdne711230:0" + label_not_contains: "crwdns711232:0crwdne711232:0" + label_not_equals: "crwdns711234:0crwdne711234:0" + label_on: "crwdns711236:0crwdne711236:0" + label_open_menu: "crwdns711238:0crwdne711238:0" + label_open_context_menu: "crwdns711240:0crwdne711240:0" + label_open_work_packages: "crwdns711242:0crwdne711242:0" + label_password: "crwdns711244:0crwdne711244:0" + label_previous: "crwdns711246:0crwdne711246:0" + label_per_page: "crwdns711248:0crwdne711248:0" + label_please_wait: "crwdns711250:0crwdne711250:0" + label_project_plural: "crwdns711252:0crwdne711252:0" + label_visibility_settings: "crwdns711254:0crwdne711254:0" + label_quote_comment: "crwdns711256:0crwdne711256:0" + label_recent: "crwdns711258:0crwdne711258:0" + label_reset: "crwdns711260:0crwdne711260:0" + label_remove: "crwdns711262:0crwdne711262:0" + label_remove_column: "crwdns711264:0crwdne711264:0" + label_remove_columns: "crwdns711266:0crwdne711266:0" + label_remove_row: "crwdns711268:0crwdne711268:0" + label_report: "crwdns711270:0crwdne711270:0" + label_repository_plural: "crwdns711272:0crwdne711272:0" + label_save_as: "crwdns711274:0crwdne711274:0" + label_select_watcher: "crwdns711276:0crwdne711276:0" + label_selected_filter_list: "crwdns711278:0crwdne711278:0" + label_show_attributes: "crwdns711280:0crwdne711280:0" + label_show_in_menu: "crwdns711282:0crwdne711282:0" + label_sort_by: "crwdns711284:0crwdne711284:0" + label_sorted_by: "crwdns711286:0crwdne711286:0" + label_sort_higher: "crwdns711288:0crwdne711288:0" + label_sort_lower: "crwdns711290:0crwdne711290:0" + label_sorting: "crwdns711292:0crwdne711292:0" + label_spent_time: "crwdns711294:0crwdne711294:0" + label_star_query: "crwdns711296:0crwdne711296:0" + label_press_enter_to_save: "crwdns711298:0crwdne711298:0" + label_public_query: "crwdns711300:0crwdne711300:0" + label_sum: "crwdns711302:0crwdne711302:0" + label_sum_for: "crwdns711304:0crwdne711304:0" + label_total_sum: "crwdns711306:0crwdne711306:0" + label_subject: "crwdns711308:0crwdne711308:0" + label_this_week: "crwdns711310:0crwdne711310:0" + label_today: "crwdns711312:0crwdne711312:0" + label_time_entry_plural: "crwdns711314:0crwdne711314:0" + label_up: "crwdns711316:0crwdne711316:0" + label_user_plural: "crwdns711318:0crwdne711318:0" + label_activity_show_only_comments: "crwdns711320:0crwdne711320:0" + label_activity_show_all: "crwdns711322:0crwdne711322:0" + label_total_progress: "crwdns711324:0%{percent}crwdne711324:0" + label_total_amount: "crwdns711326:0%{amount}crwdne711326:0" + label_updated_on: "crwdns711328:0crwdne711328:0" + label_value_derived_from_children: "crwdns711330:0crwdne711330:0" + label_children_derived_duration: "crwdns711332:0crwdne711332:0" + label_warning: "crwdns711334:0crwdne711334:0" + label_work_package: "crwdns711336:0crwdne711336:0" + label_work_package_parent: "crwdns711338:0crwdne711338:0" + label_work_package_plural: "crwdns711340:0crwdne711340:0" + label_watch: "crwdns711342:0crwdne711342:0" + label_watch_work_package: "crwdns711344:0crwdne711344:0" + label_watcher_added_successfully: "crwdns711346:0crwdne711346:0" + label_watcher_deleted_successfully: "crwdns711348:0crwdne711348:0" + label_work_package_details_you_are_here: "crwdns711350:0%{tab}crwdnd711350:0%{type}crwdnd711350:0%{subject}crwdne711350:0" + label_unwatch: "crwdns711352:0crwdne711352:0" + label_unwatch_work_package: "crwdns711354:0crwdne711354:0" + label_uploaded_by: "crwdns711356:0crwdne711356:0" + label_default_queries: "crwdns711358:0crwdne711358:0" + label_starred_queries: "crwdns711360:0crwdne711360:0" + label_global_queries: "crwdns711362:0crwdne711362:0" + label_custom_queries: "crwdns711364:0crwdne711364:0" + label_create_new_query: "crwdns711366:0crwdne711366:0" + label_columns: "crwdns711368:0crwdne711368:0" + label_attachments: crwdns711370:0crwdne711370:0 + label_drop_files: crwdns711372:0crwdne711372:0 + label_drop_files_hint: crwdns711374:0crwdne711374:0 + label_drop_folders_hint: crwdns711376:0crwdne711376:0 + label_add_attachments: "crwdns711378:0crwdne711378:0" + label_formattable_attachment_hint: "crwdns711380:0crwdne711380:0" + label_remove_file: "crwdns711382:0%{fileName}crwdne711382:0" + label_remove_watcher: "crwdns711384:0%{name}crwdne711384:0" + label_remove_all_files: crwdns711386:0crwdne711386:0 + label_add_description: "crwdns711388:0%{file}crwdne711388:0" + label_upload_notification: "crwdns711390:0crwdne711390:0" + label_work_package_upload_notification: "crwdns711392:0%{id}crwdnd711392:0%{subject}crwdne711392:0" + label_wp_id_added_by: "crwdns711394:0%{id}crwdnd711394:0%{author}crwdne711394:0" + label_files_to_upload: "crwdns711396:0crwdne711396:0" + label_rejected_files: "crwdns711398:0crwdne711398:0" + label_rejected_files_reason: "crwdns711400:0%{maximumFilesize}crwdne711400:0" + label_wait: "crwdns711402:0crwdne711402:0" + label_upload_counter: "crwdns711404:0%{done}crwdnd711404:0%{count}crwdne711404:0" + label_validation_error: "crwdns711406:0crwdne711406:0" + label_version_plural: "crwdns711408:0crwdne711408:0" + label_view_has_changed: "crwdns711410:0crwdne711410:0" help_texts: - show_modal: 'crwdns709124:0crwdne709124:0' + show_modal: 'crwdns711412:0crwdne711412:0' onboarding: buttons: - skip: 'crwdns709126:0crwdne709126:0' - next: 'crwdns709128:0crwdne709128:0' - got_it: 'crwdns709130:0crwdne709130:0' + skip: 'crwdns711414:0crwdne711414:0' + next: 'crwdns711416:0crwdne711416:0' + got_it: 'crwdns711418:0crwdne711418:0' steps: - help_menu: 'crwdns709132:0crwdne709132:0' - members: 'crwdns709134:0crwdne709134:0' - project_selection: 'crwdns709136:0crwdne709136:0' - quick_add_button: 'crwdns709138:0crwdne709138:0' - sidebar_arrow: "crwdns709140:0crwdne709140:0" - welcome: 'crwdns709142:0crwdne709142:0' - wiki: 'crwdns709144:0crwdne709144:0' + help_menu: 'crwdns711420:0crwdne711420:0' + members: 'crwdns711422:0crwdne711422:0' + project_selection: 'crwdns711424:0crwdne711424:0' + quick_add_button: 'crwdns711426:0crwdne711426:0' + sidebar_arrow: "crwdns711428:0crwdne711428:0" + welcome: 'crwdns711430:0crwdne711430:0' + wiki: 'crwdns711432:0crwdne711432:0' backlogs: - overview: "crwdns709146:0crwdne709146:0" - sprints: "crwdns709148:0crwdne709148:0" - task_board_arrow: 'crwdns709150:0crwdne709150:0' - task_board_select: 'crwdns709152:0crwdne709152:0' - task_board: "crwdns709154:0crwdne709154:0" + overview: "crwdns711434:0crwdne711434:0" + sprints: "crwdns711436:0crwdne711436:0" + task_board_arrow: 'crwdns711438:0crwdne711438:0' + task_board_select: 'crwdns711440:0crwdne711440:0' + task_board: "crwdns711442:0crwdne711442:0" boards: - overview: 'crwdns709156:0crwdne709156:0' - lists: 'crwdns709158:0crwdne709158:0' - add: 'crwdns709160:0crwdne709160:0' - drag: 'crwdns709162:0crwdne709162:0' + overview: 'crwdns711444:0crwdne711444:0' + lists: 'crwdns711446:0crwdne711446:0' + add: 'crwdns711448:0crwdne711448:0' + drag: 'crwdns711450:0crwdne711450:0' wp: - toggler: "crwdns709164:0crwdne709164:0" - list: 'crwdns709166:0crwdne709166:0' - full_view: 'crwdns709168:0crwdne709168:0' - back_button: 'crwdns709170:0crwdne709170:0' - create_button: 'crwdns709172:0crwdne709172:0' - timeline_button: 'crwdns709174:0crwdne709174:0' - timeline: 'crwdns709176:0crwdne709176:0' + toggler: "crwdns711452:0crwdne711452:0" + list: 'crwdns711454:0crwdne711454:0' + full_view: 'crwdns711456:0crwdne711456:0' + back_button: 'crwdns711458:0crwdne711458:0' + create_button: 'crwdns711460:0crwdne711460:0' + timeline_button: 'crwdns711462:0crwdne711462:0' + timeline: 'crwdns711464:0crwdne711464:0' notifications: - title: "crwdns709178:0crwdne709178:0" - no_unread: "crwdns709180:0crwdne709180:0" + title: "crwdns711466:0crwdne711466:0" + no_unread: "crwdns711468:0crwdne711468:0" reasons: - mentioned: 'crwdns709182:0crwdne709182:0' - watched: 'crwdns709184:0crwdne709184:0' - assigned: 'crwdns709186:0crwdne709186:0' - responsible: 'crwdns709188:0crwdne709188:0' + mentioned: 'crwdns711470:0crwdne711470:0' + watched: 'crwdns711472:0crwdne711472:0' + assigned: 'crwdns711474:0crwdne711474:0' + responsible: 'crwdns711476:0crwdne711476:0' facets: - unread: 'crwdns709190:0crwdne709190:0' - all: 'crwdns709192:0crwdne709192:0' + unread: 'crwdns711478:0crwdne711478:0' + all: 'crwdns711480:0crwdne711480:0' center: and_more_users: - one: 'crwdns709194:1crwdne709194:1' - other: 'crwdns709194:5%{count}crwdne709194:5' + one: 'crwdns711482:1crwdne711482:1' + other: 'crwdns711482:5%{count}crwdne711482:5' no_results: - at_all: 'crwdns709196:0crwdne709196:0' - with_current_filter: 'crwdns709198:0crwdne709198:0' - mark_all_read: 'crwdns709200:0crwdne709200:0' - mark_as_read: 'crwdns709202:0crwdne709202:0' - text_update_date: "crwdns709204:0%{date}crwdne709204:0" - total_count_warning: "crwdns709206:0%{newest_count}crwdnd709206:0%{more_count}crwdne709206:0" + at_all: 'crwdns711484:0crwdne711484:0' + with_current_filter: 'crwdns711486:0crwdne711486:0' + mark_all_read: 'crwdns711488:0crwdne711488:0' + mark_as_read: 'crwdns711490:0crwdne711490:0' + text_update_date: "crwdns711492:0%{date}crwdne711492:0" + total_count_warning: "crwdns711494:0%{newest_count}crwdnd711494:0%{more_count}crwdne711494:0" empty_state: - no_notification: "crwdns709208:0crwdne709208:0" - no_notification_with_current_filter: "crwdns709210:0crwdne709210:0" - no_selection: "crwdns709212:0crwdne709212:0" + no_notification: "crwdns711496:0crwdne711496:0" + no_notification_with_current_filter: "crwdns711498:0crwdne711498:0" + no_selection: "crwdns711500:0crwdne711500:0" new_notifications: - message: 'crwdns709214:0crwdne709214:0' - link_text: 'crwdns709216:0crwdne709216:0' + message: 'crwdns711502:0crwdne711502:0' + link_text: 'crwdns711504:0crwdne711504:0' menu: - accountable: 'crwdns709218:0crwdne709218:0' - assigned: 'crwdns709220:0crwdne709220:0' - by_project: 'crwdns709222:0crwdne709222:0' - by_reason: 'crwdns709224:0crwdne709224:0' - inbox: 'crwdns709226:0crwdne709226:0' - mentioned: 'crwdns709228:0crwdne709228:0' - watching: 'crwdns709230:0crwdne709230:0' + accountable: 'crwdns711506:0crwdne711506:0' + assigned: 'crwdns711508:0crwdne711508:0' + by_project: 'crwdns711510:0crwdne711510:0' + by_reason: 'crwdns711512:0crwdne711512:0' + inbox: 'crwdns711514:0crwdne711514:0' + mentioned: 'crwdns711516:0crwdne711516:0' + watching: 'crwdns711518:0crwdne711518:0' settings: - change_notification_settings: 'crwdns709232:0%{url}crwdne709232:0' - title: "crwdns709234:0crwdne709234:0" - notify_me: "crwdns709236:0crwdne709236:0" + change_notification_settings: 'crwdns711520:0%{url}crwdne711520:0' + title: "crwdns711522:0crwdne711522:0" + notify_me: "crwdns711524:0crwdne711524:0" reasons: mentioned: - title: 'crwdns709238:0crwdne709238:0' - description: 'crwdns709240:0crwdne709240:0' + title: 'crwdns711526:0crwdne711526:0' + description: 'crwdns711528:0crwdne711528:0' involved: - title: 'crwdns709242:0crwdne709242:0' - description: 'crwdns709244:0crwdne709244:0' - watched: 'crwdns709246:0crwdne709246:0' - work_package_commented: 'crwdns709248:0crwdne709248:0' - work_package_created: 'crwdns709250:0crwdne709250:0' - work_package_processed: 'crwdns709252:0crwdne709252:0' - work_package_prioritized: 'crwdns709254:0crwdne709254:0' - work_package_scheduled: 'crwdns709256:0crwdne709256:0' + title: 'crwdns711530:0crwdne711530:0' + description: 'crwdns711532:0crwdne711532:0' + watched: 'crwdns711534:0crwdne711534:0' + work_package_commented: 'crwdns711536:0crwdne711536:0' + work_package_created: 'crwdns711538:0crwdne711538:0' + work_package_processed: 'crwdns711540:0crwdne711540:0' + work_package_prioritized: 'crwdns711542:0crwdne711542:0' + work_package_scheduled: 'crwdns711544:0crwdne711544:0' global: immediately: - title: 'crwdns709258:0crwdne709258:0' - description: 'crwdns709260:0crwdne709260:0' + title: 'crwdns711546:0crwdne711546:0' + description: 'crwdns711548:0crwdne711548:0' delayed: - title: 'crwdns709262:0crwdne709262:0' - description: 'crwdns709264:0crwdne709264:0' + title: 'crwdns711550:0crwdne711550:0' + description: 'crwdns711552:0crwdne711552:0' project_specific: - title: 'crwdns709266:0crwdne709266:0' - description: 'crwdns709268:0crwdne709268:0' - add: 'crwdns709270:0crwdne709270:0' - already_selected: 'crwdns709272:0crwdne709272:0' - remove: 'crwdns709274:0crwdne709274:0' + title: 'crwdns711554:0crwdne711554:0' + description: 'crwdns711556:0crwdne711556:0' + add: 'crwdns711558:0crwdne711558:0' + already_selected: 'crwdns711560:0crwdne711560:0' + remove: 'crwdns711562:0crwdne711562:0' password_confirmation: - field_description: 'crwdns709276:0crwdne709276:0' - title: 'crwdns709278:0crwdne709278:0' + field_description: 'crwdns711564:0crwdne711564:0' + title: 'crwdns711566:0crwdne711566:0' pagination: - no_other_page: "crwdns709280:0crwdne709280:0" + no_other_page: "crwdns711568:0crwdne711568:0" pages: - next: "crwdns709282:0crwdne709282:0" - previous: "crwdns709284:0crwdne709284:0" + next: "crwdns711570:0crwdne711570:0" + previous: "crwdns711572:0crwdne711572:0" placeholders: - default: 'crwdns709286:0crwdne709286:0' - subject: 'crwdns709288:0crwdne709288:0' - selection: 'crwdns709290:0crwdne709290:0' - relation_description: 'crwdns709292:0crwdne709292:0' + default: 'crwdns711574:0crwdne711574:0' + subject: 'crwdns711576:0crwdne711576:0' + selection: 'crwdns711578:0crwdne711578:0' + relation_description: 'crwdns711580:0crwdne711580:0' project: required_outside_context: > - crwdns709294:0crwdne709294:0 - context: 'crwdns709296:0crwdne709296:0' - work_package_belongs_to: 'crwdns709298:0%{projectname}crwdne709298:0' - click_to_switch_context: 'crwdns709300:0crwdne709300:0' - confirm_template_load: 'crwdns709302:0crwdne709302:0' - use_template: "crwdns709304:0crwdne709304:0" - no_template_selected: "crwdns709306:0crwdne709306:0" + crwdns711582:0crwdne711582:0 + context: 'crwdns711584:0crwdne711584:0' + work_package_belongs_to: 'crwdns711586:0%{projectname}crwdne711586:0' + click_to_switch_context: 'crwdns711588:0crwdne711588:0' + confirm_template_load: 'crwdns711590:0crwdne711590:0' + use_template: "crwdns711592:0crwdne711592:0" + no_template_selected: "crwdns711594:0crwdne711594:0" copy: - copy_options: "crwdns709308:0crwdne709308:0" + copy_options: "crwdns711596:0crwdne711596:0" autocompleter: - label: 'crwdns709310:0crwdne709310:0' + label: 'crwdns711598:0crwdne711598:0' reminders: settings: daily: - add_time: 'crwdns709312:0crwdne709312:0' - enable: 'crwdns709314:0crwdne709314:0' - explanation: 'crwdns709316:0%{no_time_zone}crwdne709316:0' - no_time_zone: 'crwdns709318:0crwdne709318:0' - time_label: 'crwdns709320:0%{counter}crwdne709320:0' - title: 'crwdns709322:0crwdne709322:0' + add_time: 'crwdns711600:0crwdne711600:0' + enable: 'crwdns711602:0crwdne711602:0' + explanation: 'crwdns711604:0%{no_time_zone}crwdne711604:0' + no_time_zone: 'crwdns711606:0crwdne711606:0' + time_label: 'crwdns711608:0%{counter}crwdne711608:0' + title: 'crwdns711610:0crwdne711610:0' workdays: - title: 'crwdns709324:0crwdne709324:0' + title: 'crwdns711612:0crwdne711612:0' immediate: - title: 'crwdns709326:0crwdne709326:0' - mentioned: 'crwdns709328:0crwdne709328:0' + title: 'crwdns711614:0crwdne711614:0' + mentioned: 'crwdns711616:0crwdne711616:0' alerts: - title: 'crwdns709330:0crwdne709330:0' + title: 'crwdns711618:0crwdne711618:0' explanation: > - crwdns709332:0crwdne709332:0 - news_added: 'crwdns709334:0crwdne709334:0' - news_commented: 'crwdns709336:0crwdne709336:0' - document_added: 'crwdns709338:0crwdne709338:0' - forum_messages: 'crwdns709340:0crwdne709340:0' - wiki_page_added: 'crwdns709342:0crwdne709342:0' - wiki_page_updated: 'crwdns709344:0crwdne709344:0' - membership_added: 'crwdns709346:0crwdne709346:0' - membership_updated: 'crwdns709348:0crwdne709348:0' - title: 'crwdns709350:0crwdne709350:0' + crwdns711620:0crwdne711620:0 + news_added: 'crwdns711622:0crwdne711622:0' + news_commented: 'crwdns711624:0crwdne711624:0' + document_added: 'crwdns711626:0crwdne711626:0' + forum_messages: 'crwdns711628:0crwdne711628:0' + wiki_page_added: 'crwdns711630:0crwdne711630:0' + wiki_page_updated: 'crwdns711632:0crwdne711632:0' + membership_added: 'crwdns711634:0crwdne711634:0' + membership_updated: 'crwdns711636:0crwdne711636:0' + title: 'crwdns711638:0crwdne711638:0' pause: - label: 'crwdns709352:0crwdne709352:0' - first_day: 'crwdns709354:0crwdne709354:0' - last_day: 'crwdns709356:0crwdne709356:0' - text_are_you_sure: "crwdns709358:0crwdne709358:0" - text_data_lost: "crwdns709360:0crwdne709360:0" + label: 'crwdns711640:0crwdne711640:0' + first_day: 'crwdns711642:0crwdne711642:0' + last_day: 'crwdns711644:0crwdne711644:0' + text_are_you_sure: "crwdns711646:0crwdne711646:0" + text_data_lost: "crwdns711648:0crwdne711648:0" types: attribute_groups: - error_duplicate_group_name: "crwdns709362:0%{group}crwdne709362:0" - error_no_table_configured: "crwdns709364:0%{group}crwdne709364:0" - reset_title: "crwdns709366:0crwdne709366:0" + error_duplicate_group_name: "crwdns711650:0%{group}crwdne711650:0" + error_no_table_configured: "crwdns711652:0%{group}crwdne711652:0" + reset_title: "crwdns711654:0crwdne711654:0" confirm_reset: > - crwdns709368:0crwdne709368:0 - upgrade_to_ee: "crwdns709370:0crwdne709370:0" - upgrade_to_ee_text: "crwdns709372:0crwdne709372:0" - more_information: "crwdns709374:0crwdne709374:0" - nevermind: "crwdns709376:0crwdne709376:0" + crwdns711656:0crwdne711656:0 + upgrade_to_ee: "crwdns711658:0crwdne711658:0" + upgrade_to_ee_text: "crwdns711660:0crwdne711660:0" + more_information: "crwdns711662:0crwdne711662:0" + nevermind: "crwdns711664:0crwdne711664:0" edit: - form_configuration: "crwdns709378:0crwdne709378:0" - projects: "crwdns709380:0crwdne709380:0" - settings: "crwdns709382:0crwdne709382:0" + form_configuration: "crwdns711666:0crwdne711666:0" + projects: "crwdns711668:0crwdne711668:0" + settings: "crwdns711670:0crwdne711670:0" time_entry: - project: 'crwdns709384:0crwdne709384:0' - work_package: 'crwdns709386:0crwdne709386:0' - work_package_required: 'crwdns709388:0crwdne709388:0' - activity: 'crwdns709390:0crwdne709390:0' - comment: 'crwdns709392:0crwdne709392:0' - duration: 'crwdns709394:0crwdne709394:0' - spent_on: 'crwdns709396:0crwdne709396:0' - hours: 'crwdns709398:0crwdne709398:0' - title: 'crwdns709400:0crwdne709400:0' + project: 'crwdns711672:0crwdne711672:0' + work_package: 'crwdns711674:0crwdne711674:0' + work_package_required: 'crwdns711676:0crwdne711676:0' + activity: 'crwdns711678:0crwdne711678:0' + comment: 'crwdns711680:0crwdne711680:0' + duration: 'crwdns711682:0crwdne711682:0' + spent_on: 'crwdns711684:0crwdne711684:0' + hours: 'crwdns711686:0crwdne711686:0' + title: 'crwdns711688:0crwdne711688:0' two_factor_authentication: - label_two_factor_authentication: 'crwdns709402:0crwdne709402:0' + label_two_factor_authentication: 'crwdns711690:0crwdne711690:0' watchers: - label_loading: crwdns709404:0crwdne709404:0 - label_error_loading: crwdns709406:0crwdne709406:0 - label_search_watchers: crwdns709408:0crwdne709408:0 - label_add: crwdns709410:0crwdne709410:0 - label_discard: crwdns709412:0crwdne709412:0 - typeahead_placeholder: crwdns709414:0crwdne709414:0 + label_loading: crwdns711692:0crwdne711692:0 + label_error_loading: crwdns711694:0crwdne711694:0 + label_search_watchers: crwdns711696:0crwdne711696:0 + label_add: crwdns711698:0crwdne711698:0 + label_discard: crwdns711700:0crwdne711700:0 + typeahead_placeholder: crwdns711702:0crwdne711702:0 relation_labels: - parent: "crwdns709416:0crwdne709416:0" - children: "crwdns709418:0crwdne709418:0" - relates: "crwdns709420:0crwdne709420:0" - duplicates: "crwdns709422:0crwdne709422:0" - duplicated: "crwdns709424:0crwdne709424:0" - blocks: "crwdns709426:0crwdne709426:0" - blocked: "crwdns709428:0crwdne709428:0" - precedes: "crwdns709430:0crwdne709430:0" - follows: "crwdns709432:0crwdne709432:0" - includes: "crwdns709434:0crwdne709434:0" - partof: "crwdns709436:0crwdne709436:0" - requires: "crwdns709438:0crwdne709438:0" - required: "crwdns709440:0crwdne709440:0" - relation_type: "crwdns709442:0crwdne709442:0" + parent: "crwdns711704:0crwdne711704:0" + children: "crwdns711706:0crwdne711706:0" + relates: "crwdns711708:0crwdne711708:0" + duplicates: "crwdns711710:0crwdne711710:0" + duplicated: "crwdns711712:0crwdne711712:0" + blocks: "crwdns711714:0crwdne711714:0" + blocked: "crwdns711716:0crwdne711716:0" + precedes: "crwdns711718:0crwdne711718:0" + follows: "crwdns711720:0crwdne711720:0" + includes: "crwdns711722:0crwdne711722:0" + partof: "crwdns711724:0crwdne711724:0" + requires: "crwdns711726:0crwdne711726:0" + required: "crwdns711728:0crwdne711728:0" + relation_type: "crwdns711730:0crwdne711730:0" relations_hierarchy: - parent_headline: "crwdns709444:0crwdne709444:0" - hierarchy_headline: "crwdns709446:0crwdne709446:0" - children_headline: "crwdns709448:0crwdne709448:0" + parent_headline: "crwdns711732:0crwdne711732:0" + hierarchy_headline: "crwdns711734:0crwdne711734:0" + children_headline: "crwdns711736:0crwdne711736:0" relation_buttons: - set_parent: "crwdns709450:0crwdne709450:0" - change_parent: "crwdns709452:0crwdne709452:0" - remove_parent: "crwdns709454:0crwdne709454:0" - hierarchy_indent: "crwdns709456:0crwdne709456:0" - hierarchy_outdent: "crwdns709458:0crwdne709458:0" - group_by_wp_type: "crwdns709460:0crwdne709460:0" - group_by_relation_type: "crwdns709462:0crwdne709462:0" - add_parent: "crwdns709464:0crwdne709464:0" - add_new_child: "crwdns709466:0crwdne709466:0" - create_new: "crwdns709468:0crwdne709468:0" - add_existing: "crwdns709470:0crwdne709470:0" - add_existing_child: "crwdns709472:0crwdne709472:0" - remove_child: "crwdns709474:0crwdne709474:0" - add_new_relation: "crwdns709476:0crwdne709476:0" - add_existing_relation: "crwdns709478:0crwdne709478:0" - update_description: "crwdns709480:0crwdne709480:0" - toggle_description: "crwdns709482:0crwdne709482:0" - update_relation: "crwdns709484:0crwdne709484:0" - add_follower: "crwdns709486:0crwdne709486:0" - add_predecessor: "crwdns709488:0crwdne709488:0" - remove: "crwdns709490:0crwdne709490:0" - save: "crwdns709492:0crwdne709492:0" - abort: "crwdns709494:0crwdne709494:0" + set_parent: "crwdns711738:0crwdne711738:0" + change_parent: "crwdns711740:0crwdne711740:0" + remove_parent: "crwdns711742:0crwdne711742:0" + hierarchy_indent: "crwdns711744:0crwdne711744:0" + hierarchy_outdent: "crwdns711746:0crwdne711746:0" + group_by_wp_type: "crwdns711748:0crwdne711748:0" + group_by_relation_type: "crwdns711750:0crwdne711750:0" + add_parent: "crwdns711752:0crwdne711752:0" + add_new_child: "crwdns711754:0crwdne711754:0" + create_new: "crwdns711756:0crwdne711756:0" + add_existing: "crwdns711758:0crwdne711758:0" + add_existing_child: "crwdns711760:0crwdne711760:0" + remove_child: "crwdns711762:0crwdne711762:0" + add_new_relation: "crwdns711764:0crwdne711764:0" + add_existing_relation: "crwdns711766:0crwdne711766:0" + update_description: "crwdns711768:0crwdne711768:0" + toggle_description: "crwdns711770:0crwdne711770:0" + update_relation: "crwdns711772:0crwdne711772:0" + add_follower: "crwdns711774:0crwdne711774:0" + add_predecessor: "crwdns711776:0crwdne711776:0" + remove: "crwdns711778:0crwdne711778:0" + save: "crwdns711780:0crwdne711780:0" + abort: "crwdns711782:0crwdne711782:0" relations_autocomplete: - placeholder: "crwdns709496:0crwdne709496:0" - parent_placeholder: "crwdns709498:0crwdne709498:0" + placeholder: "crwdns711784:0crwdne711784:0" + parent_placeholder: "crwdns711786:0crwdne711786:0" autocompleter: - placeholder: "crwdns709500:0crwdne709500:0" - notFoundText: "crwdns709502:0crwdne709502:0" - typeToSearchText: "crwdns709504:0crwdne709504:0" + placeholder: "crwdns711788:0crwdne711788:0" + notFoundText: "crwdns711790:0crwdne711790:0" + typeToSearchText: "crwdns711792:0crwdne711792:0" repositories: - select_tag: 'crwdns709506:0crwdne709506:0' - select_branch: 'crwdns709508:0crwdne709508:0' - field_value_enter_prompt: "crwdns709510:0%{field}crwdne709510:0" - project_menu_details: "crwdns709512:0crwdne709512:0" + select_tag: 'crwdns711794:0crwdne711794:0' + select_branch: 'crwdns711796:0crwdne711796:0' + field_value_enter_prompt: "crwdns711798:0%{field}crwdne711798:0" + project_menu_details: "crwdns711800:0crwdne711800:0" scheduling: - manual: 'crwdns709514:0crwdne709514:0' - automatic: 'crwdns709516:0crwdne709516:0' + manual: 'crwdns711802:0crwdne711802:0' + automatic: 'crwdns711804:0crwdne711804:0' sort: - sorted_asc: 'crwdns709518:0crwdne709518:0' - sorted_dsc: 'crwdns709520:0crwdne709520:0' - sorted_no: 'crwdns709522:0crwdne709522:0' - sorting_disabled: 'crwdns709524:0crwdne709524:0' - activate_asc: 'crwdns709526:0crwdne709526:0' - activate_dsc: 'crwdns709528:0crwdne709528:0' - activate_no: 'crwdns709530:0crwdne709530:0' - text_work_packages_destroy_confirmation: "crwdns709532:0crwdne709532:0" - text_query_destroy_confirmation: "crwdns709534:0crwdne709534:0" - text_attachment_destroy_confirmation: "crwdns709536:0crwdne709536:0" + sorted_asc: 'crwdns711806:0crwdne711806:0' + sorted_dsc: 'crwdns711808:0crwdne711808:0' + sorted_no: 'crwdns711810:0crwdne711810:0' + sorting_disabled: 'crwdns711812:0crwdne711812:0' + activate_asc: 'crwdns711814:0crwdne711814:0' + activate_dsc: 'crwdns711816:0crwdne711816:0' + activate_no: 'crwdns711818:0crwdne711818:0' + text_work_packages_destroy_confirmation: "crwdns711820:0crwdne711820:0" + text_query_destroy_confirmation: "crwdns711822:0crwdne711822:0" + text_attachment_destroy_confirmation: "crwdns711824:0crwdne711824:0" timelines: - quarter_label: 'crwdns709538:0%{quarter_number}crwdne709538:0' - gantt_chart: 'crwdns709540:0crwdne709540:0' + quarter_label: 'crwdns711826:0%{quarter_number}crwdne711826:0' + gantt_chart: 'crwdns711828:0crwdne711828:0' labels: - title: 'crwdns709542:0crwdne709542:0' - bar: 'crwdns709544:0crwdne709544:0' - left: 'crwdns709546:0crwdne709546:0' - right: 'crwdns709548:0crwdne709548:0' - farRight: 'crwdns709550:0crwdne709550:0' - showNone: 'crwdns709552:0crwdne709552:0' + title: 'crwdns711830:0crwdne711830:0' + bar: 'crwdns711832:0crwdne711832:0' + left: 'crwdns711834:0crwdne711834:0' + right: 'crwdns711836:0crwdne711836:0' + farRight: 'crwdns711838:0crwdne711838:0' + showNone: 'crwdns711840:0crwdne711840:0' description: > - crwdns709554:0crwdne709554:0 - button_activate: 'crwdns709556:0crwdne709556:0' - button_deactivate: 'crwdns709558:0crwdne709558:0' - cancel: crwdns709560:0crwdne709560:0 - change: "crwdns709562:0crwdne709562:0" - due_date: "crwdns709564:0crwdne709564:0" - empty: "crwdns709566:0crwdne709566:0" - error: "crwdns709568:0crwdne709568:0" + crwdns711842:0crwdne711842:0 + button_activate: 'crwdns711844:0crwdne711844:0' + button_deactivate: 'crwdns711846:0crwdne711846:0' + cancel: crwdns711848:0crwdne711848:0 + change: "crwdns711850:0crwdne711850:0" + due_date: "crwdns711852:0crwdne711852:0" + empty: "crwdns711854:0crwdne711854:0" + error: "crwdns711856:0crwdne711856:0" errors: - not_implemented: "crwdns709570:0crwdne709570:0" - report_comparison: "crwdns709572:0crwdne709572:0" - report_epicfail: "crwdns709574:0crwdne709574:0" - report_timeout: "crwdns709576:0crwdne709576:0" + not_implemented: "crwdns711858:0crwdne711858:0" + report_comparison: "crwdns711860:0crwdne711860:0" + report_epicfail: "crwdns711862:0crwdne711862:0" + report_timeout: "crwdns711864:0crwdne711864:0" filter: - grouping_other: "crwdns709578:0crwdne709578:0" - noneSelection: "crwdns709580:0crwdne709580:0" - name: "crwdns709582:0crwdne709582:0" - outline: "crwdns709584:0crwdne709584:0" + grouping_other: "crwdns711866:0crwdne711866:0" + noneSelection: "crwdns711868:0crwdne711868:0" + name: "crwdns711870:0crwdne711870:0" + outline: "crwdns711872:0crwdne711872:0" outlines: - aggregation: "crwdns709586:0crwdne709586:0" - level1: "crwdns709588:0crwdne709588:0" - level2: "crwdns709590:0crwdne709590:0" - level3: "crwdns709592:0crwdne709592:0" - level4: "crwdns709594:0crwdne709594:0" - level5: "crwdns709596:0crwdne709596:0" - all: "crwdns709598:0crwdne709598:0" - project_status: "crwdns709600:0crwdne709600:0" - really_close_dialog: "crwdns709602:0crwdne709602:0" - responsible: "crwdns709604:0crwdne709604:0" - save: crwdns709606:0crwdne709606:0 - start_date: "crwdns709608:0crwdne709608:0" - tooManyProjects: "crwdns709610:0%{count}crwdne709610:0" + aggregation: "crwdns711874:0crwdne711874:0" + level1: "crwdns711876:0crwdne711876:0" + level2: "crwdns711878:0crwdne711878:0" + level3: "crwdns711880:0crwdne711880:0" + level4: "crwdns711882:0crwdne711882:0" + level5: "crwdns711884:0crwdne711884:0" + all: "crwdns711886:0crwdne711886:0" + project_status: "crwdns711888:0crwdne711888:0" + really_close_dialog: "crwdns711890:0crwdne711890:0" + responsible: "crwdns711892:0crwdne711892:0" + save: crwdns711894:0crwdne711894:0 + start_date: "crwdns711896:0crwdne711896:0" + tooManyProjects: "crwdns711898:0%{count}crwdne711898:0" selection_mode: - notification: 'crwdns709612:0crwdne709612:0' + notification: 'crwdns711900:0crwdne711900:0' zoom: - in: "crwdns709614:0crwdne709614:0" - out: "crwdns709616:0crwdne709616:0" - auto: "crwdns709618:0crwdne709618:0" - days: "crwdns709620:0crwdne709620:0" - weeks: "crwdns709622:0crwdne709622:0" - months: "crwdns709624:0crwdne709624:0" - quarters: "crwdns709626:0crwdne709626:0" - years: "crwdns709628:0crwdne709628:0" - slider: "crwdns709630:0crwdne709630:0" + in: "crwdns711902:0crwdne711902:0" + out: "crwdns711904:0crwdne711904:0" + auto: "crwdns711906:0crwdne711906:0" + days: "crwdns711908:0crwdne711908:0" + weeks: "crwdns711910:0crwdne711910:0" + months: "crwdns711912:0crwdne711912:0" + quarters: "crwdns711914:0crwdne711914:0" + years: "crwdns711916:0crwdne711916:0" + slider: "crwdns711918:0crwdne711918:0" description: > - crwdns709632:0crwdne709632:0 + crwdns711920:0crwdne711920:0 tl_toolbar: - zooms: "crwdns709634:0crwdne709634:0" - outlines: "crwdns709636:0crwdne709636:0" + zooms: "crwdns711922:0crwdne711922:0" + outlines: "crwdns711924:0crwdne711924:0" upsale: - ee_only: 'crwdns709638:0crwdne709638:0' + ee_only: 'crwdns711926:0crwdne711926:0' wiki_formatting: - strong: "crwdns709640:0crwdne709640:0" - italic: "crwdns709642:0crwdne709642:0" - underline: "crwdns709644:0crwdne709644:0" - deleted: "crwdns709646:0crwdne709646:0" - code: "crwdns709648:0crwdne709648:0" - heading1: "crwdns709650:0crwdne709650:0" - heading2: "crwdns709652:0crwdne709652:0" - heading3: "crwdns709654:0crwdne709654:0" - unordered_list: "crwdns709656:0crwdne709656:0" - ordered_list: "crwdns709658:0crwdne709658:0" - quote: "crwdns709660:0crwdne709660:0" - unquote: "crwdns709662:0crwdne709662:0" - preformatted_text: "crwdns709664:0crwdne709664:0" - wiki_link: "crwdns709666:0crwdne709666:0" - image: "crwdns709668:0crwdne709668:0" + strong: "crwdns711928:0crwdne711928:0" + italic: "crwdns711930:0crwdne711930:0" + underline: "crwdns711932:0crwdne711932:0" + deleted: "crwdns711934:0crwdne711934:0" + code: "crwdns711936:0crwdne711936:0" + heading1: "crwdns711938:0crwdne711938:0" + heading2: "crwdns711940:0crwdne711940:0" + heading3: "crwdns711942:0crwdne711942:0" + unordered_list: "crwdns711944:0crwdne711944:0" + ordered_list: "crwdns711946:0crwdne711946:0" + quote: "crwdns711948:0crwdne711948:0" + unquote: "crwdns711950:0crwdne711950:0" + preformatted_text: "crwdns711952:0crwdne711952:0" + wiki_link: "crwdns711954:0crwdne711954:0" + image: "crwdns711956:0crwdne711956:0" work_packages: bulk_actions: - move: 'crwdns709670:0crwdne709670:0' - edit: 'crwdns709672:0crwdne709672:0' - copy: 'crwdns709674:0crwdne709674:0' - delete: 'crwdns709676:0crwdne709676:0' - button_clear: "crwdns709678:0crwdne709678:0" - comment_added: "crwdns709680:0crwdne709680:0" - comment_send_failed: "crwdns709682:0crwdne709682:0" - comment_updated: "crwdns709684:0crwdne709684:0" - confirm_edit_cancel: "crwdns709686:0crwdne709686:0" - description_filter: "crwdns709688:0crwdne709688:0" - description_enter_text: "crwdns709690:0crwdne709690:0" - description_options_hide: "crwdns709692:0crwdne709692:0" - description_options_show: "crwdns709694:0crwdne709694:0" - edit_attribute: "crwdns709696:0%{attribute}crwdne709696:0" - key_value: "crwdns709698:0%{key}crwdnd709698:0%{value}crwdne709698:0" - label_enable_multi_select: "crwdns709700:0crwdne709700:0" - label_disable_multi_select: "crwdns709702:0crwdne709702:0" - label_filter_add: "crwdns709704:0crwdne709704:0" - label_filter_by_text: "crwdns709706:0crwdne709706:0" - label_options: "crwdns709708:0crwdne709708:0" - label_column_multiselect: "crwdns709710:0crwdne709710:0" - message_error_during_bulk_delete: crwdns709712:0crwdne709712:0 - message_successful_bulk_delete: crwdns709714:0crwdne709714:0 - message_successful_show_in_fullscreen: "crwdns709716:0crwdne709716:0" - message_view_spent_time: "crwdns709718:0crwdne709718:0" - message_work_package_read_only: "crwdns709720:0crwdne709720:0" - message_work_package_status_blocked: "crwdns709722:0crwdne709722:0" - placeholder_filter_by_text: "crwdns709724:0crwdne709724:0" + move: 'crwdns711958:0crwdne711958:0' + edit: 'crwdns711960:0crwdne711960:0' + copy: 'crwdns711962:0crwdne711962:0' + delete: 'crwdns711964:0crwdne711964:0' + button_clear: "crwdns711966:0crwdne711966:0" + comment_added: "crwdns711968:0crwdne711968:0" + comment_send_failed: "crwdns711970:0crwdne711970:0" + comment_updated: "crwdns711972:0crwdne711972:0" + confirm_edit_cancel: "crwdns711974:0crwdne711974:0" + description_filter: "crwdns711976:0crwdne711976:0" + description_enter_text: "crwdns711978:0crwdne711978:0" + description_options_hide: "crwdns711980:0crwdne711980:0" + description_options_show: "crwdns711982:0crwdne711982:0" + edit_attribute: "crwdns711984:0%{attribute}crwdne711984:0" + key_value: "crwdns711986:0%{key}crwdnd711986:0%{value}crwdne711986:0" + label_enable_multi_select: "crwdns711988:0crwdne711988:0" + label_disable_multi_select: "crwdns711990:0crwdne711990:0" + label_filter_add: "crwdns711992:0crwdne711992:0" + label_filter_by_text: "crwdns711994:0crwdne711994:0" + label_options: "crwdns711996:0crwdne711996:0" + label_column_multiselect: "crwdns711998:0crwdne711998:0" + message_error_during_bulk_delete: crwdns712000:0crwdne712000:0 + message_successful_bulk_delete: crwdns712002:0crwdne712002:0 + message_successful_show_in_fullscreen: "crwdns712004:0crwdne712004:0" + message_view_spent_time: "crwdns712006:0crwdne712006:0" + message_work_package_read_only: "crwdns712008:0crwdne712008:0" + message_work_package_status_blocked: "crwdns712010:0crwdne712010:0" + placeholder_filter_by_text: "crwdns712012:0crwdne712012:0" inline_create: - title: 'crwdns709726:0crwdne709726:0' + title: 'crwdns712014:0crwdne712014:0' create: - title: 'crwdns709728:0crwdne709728:0' - header: 'crwdns709730:0%{type}crwdne709730:0' - header_no_type: 'crwdns709732:0crwdne709732:0' - header_with_parent: 'crwdns709734:0%{type}crwdnd709734:0%{parent_type}crwdnd709734:0%{id}crwdne709734:0' - button: 'crwdns709736:0crwdne709736:0' + title: 'crwdns712016:0crwdne712016:0' + header: 'crwdns712018:0%{type}crwdne712018:0' + header_no_type: 'crwdns712020:0crwdne712020:0' + header_with_parent: 'crwdns712022:0%{type}crwdnd712022:0%{parent_type}crwdnd712022:0%{id}crwdne712022:0' + button: 'crwdns712024:0crwdne712024:0' copy: - title: 'crwdns709738:0crwdne709738:0' + title: 'crwdns712026:0crwdne712026:0' hierarchy: - show: "crwdns709740:0crwdne709740:0" - hide: "crwdns709742:0crwdne709742:0" - toggle_button: 'crwdns709744:0crwdne709744:0' - leaf: 'crwdns709746:0%{level}crwdne709746:0' - children_collapsed: 'crwdns709748:0%{level}crwdne709748:0' - children_expanded: 'crwdns709750:0%{level}crwdne709750:0' + show: "crwdns712028:0crwdne712028:0" + hide: "crwdns712030:0crwdne712030:0" + toggle_button: 'crwdns712032:0crwdne712032:0' + leaf: 'crwdns712034:0%{level}crwdne712034:0' + children_collapsed: 'crwdns712036:0%{level}crwdne712036:0' + children_expanded: 'crwdns712038:0%{level}crwdne712038:0' faulty_query: - title: crwdns709752:0crwdne709752:0 - description: crwdns709754:0crwdne709754:0 + title: crwdns712040:0crwdne712040:0 + description: crwdns712042:0crwdne712042:0 no_results: - title: crwdns709756:0crwdne709756:0 - description: crwdns709758:0crwdne709758:0 - limited_results: crwdns709760:0%{count}crwdne709760:0 + title: crwdns712044:0crwdne712044:0 + description: crwdns712046:0crwdne712046:0 + limited_results: crwdns712048:0%{count}crwdne712048:0 property_groups: - details: "crwdns709762:0crwdne709762:0" - people: "crwdns709764:0crwdne709764:0" - estimatesAndTime: "crwdns709766:0crwdne709766:0" - other: "crwdns709768:0crwdne709768:0" + details: "crwdns712050:0crwdne712050:0" + people: "crwdns712052:0crwdne712052:0" + estimatesAndTime: "crwdns712054:0crwdne712054:0" + other: "crwdns712056:0crwdne712056:0" properties: - assignee: "crwdns709770:0crwdne709770:0" - author: "crwdns709772:0crwdne709772:0" - createdAt: "crwdns709774:0crwdne709774:0" - description: "crwdns709776:0crwdne709776:0" - date: "crwdns709778:0crwdne709778:0" - dueDate: "crwdns709780:0crwdne709780:0" - estimatedTime: "crwdns709782:0crwdne709782:0" - spentTime: "crwdns709784:0crwdne709784:0" - category: "crwdns709786:0crwdne709786:0" - percentageDone: "crwdns709788:0crwdne709788:0" - priority: "crwdns709790:0crwdne709790:0" - projectName: "crwdns709792:0crwdne709792:0" - responsible: "crwdns709794:0crwdne709794:0" - startDate: "crwdns709796:0crwdne709796:0" - status: "crwdns709798:0crwdne709798:0" - subject: "crwdns709800:0crwdne709800:0" - subproject: "crwdns709802:0crwdne709802:0" - title: "crwdns709804:0crwdne709804:0" - type: "crwdns709806:0crwdne709806:0" - updatedAt: "crwdns709808:0crwdne709808:0" - versionName: "crwdns709810:0crwdne709810:0" - version: "crwdns709812:0crwdne709812:0" + assignee: "crwdns712058:0crwdne712058:0" + author: "crwdns712060:0crwdne712060:0" + createdAt: "crwdns712062:0crwdne712062:0" + description: "crwdns712064:0crwdne712064:0" + date: "crwdns712066:0crwdne712066:0" + dueDate: "crwdns712068:0crwdne712068:0" + estimatedTime: "crwdns712070:0crwdne712070:0" + spentTime: "crwdns712072:0crwdne712072:0" + category: "crwdns712074:0crwdne712074:0" + percentageDone: "crwdns712076:0crwdne712076:0" + priority: "crwdns712078:0crwdne712078:0" + projectName: "crwdns712080:0crwdne712080:0" + responsible: "crwdns712082:0crwdne712082:0" + startDate: "crwdns712084:0crwdne712084:0" + status: "crwdns712086:0crwdne712086:0" + subject: "crwdns712088:0crwdne712088:0" + subproject: "crwdns712090:0crwdne712090:0" + title: "crwdns712092:0crwdne712092:0" + type: "crwdns712094:0crwdne712094:0" + updatedAt: "crwdns712096:0crwdne712096:0" + versionName: "crwdns712098:0crwdne712098:0" + version: "crwdns712100:0crwdne712100:0" default_queries: - latest_activity: "crwdns709814:0crwdne709814:0" - created_by_me: "crwdns709816:0crwdne709816:0" - assigned_to_me: "crwdns709818:0crwdne709818:0" - recently_created: "crwdns709820:0crwdne709820:0" - all_open: "crwdns709822:0crwdne709822:0" - summary: "crwdns709824:0crwdne709824:0" + latest_activity: "crwdns712102:0crwdne712102:0" + created_by_me: "crwdns712104:0crwdne712104:0" + assigned_to_me: "crwdns712106:0crwdne712106:0" + recently_created: "crwdns712108:0crwdne712108:0" + all_open: "crwdns712110:0crwdne712110:0" + summary: "crwdns712112:0crwdne712112:0" jump_marks: - pagination: "crwdns709826:0crwdne709826:0" - label_pagination: "crwdns709828:0crwdne709828:0" - content: "crwdns709830:0crwdne709830:0" - label_content: "crwdns709832:0crwdne709832:0" + pagination: "crwdns712114:0crwdne712114:0" + label_pagination: "crwdns712116:0crwdne712116:0" + content: "crwdns712118:0crwdne712118:0" + label_content: "crwdns712120:0crwdne712120:0" placeholders: - default: "crwdns709834:0crwdne709834:0" - date: "crwdns709836:0crwdne709836:0" - formattable: "crwdns709838:0%{name}crwdne709838:0" + default: "crwdns712122:0crwdne712122:0" + date: "crwdns712124:0crwdne712124:0" + formattable: "crwdns712126:0%{name}crwdne712126:0" query: - column_names: "crwdns709840:0crwdne709840:0" - group_by: "crwdns709842:0crwdne709842:0" - group: "crwdns709844:0crwdne709844:0" - group_by_disabled_by_hierarchy: "crwdns709846:0crwdne709846:0" - hierarchy_disabled_by_group_by: "crwdns709848:0%{column}crwdne709848:0" - sort_ascending: "crwdns709850:0crwdne709850:0" - sort_descending: "crwdns709852:0crwdne709852:0" - move_column_left: "crwdns709854:0crwdne709854:0" - move_column_right: "crwdns709856:0crwdne709856:0" - hide_column: "crwdns709858:0crwdne709858:0" - insert_columns: "crwdns709860:0crwdne709860:0" - filters: "crwdns709862:0crwdne709862:0" - display_sums: "crwdns709864:0crwdne709864:0" - confirm_edit_cancel: "crwdns709866:0crwdne709866:0" - click_to_edit_query_name: "crwdns709868:0crwdne709868:0" - rename_query_placeholder: "crwdns709870:0crwdne709870:0" - star_text: "crwdns709872:0crwdne709872:0" + column_names: "crwdns712128:0crwdne712128:0" + group_by: "crwdns712130:0crwdne712130:0" + group: "crwdns712132:0crwdne712132:0" + group_by_disabled_by_hierarchy: "crwdns712134:0crwdne712134:0" + hierarchy_disabled_by_group_by: "crwdns712136:0%{column}crwdne712136:0" + sort_ascending: "crwdns712138:0crwdne712138:0" + sort_descending: "crwdns712140:0crwdne712140:0" + move_column_left: "crwdns712142:0crwdne712142:0" + move_column_right: "crwdns712144:0crwdne712144:0" + hide_column: "crwdns712146:0crwdne712146:0" + insert_columns: "crwdns712148:0crwdne712148:0" + filters: "crwdns712150:0crwdne712150:0" + display_sums: "crwdns712152:0crwdne712152:0" + confirm_edit_cancel: "crwdns712154:0crwdne712154:0" + click_to_edit_query_name: "crwdns712156:0crwdne712156:0" + rename_query_placeholder: "crwdns712158:0crwdne712158:0" + star_text: "crwdns712160:0crwdne712160:0" public_text: > - crwdns709874:0crwdne709874:0 + crwdns712162:0crwdne712162:0 errors: - unretrievable_query: "crwdns709876:0crwdne709876:0" - not_found: "crwdns709878:0crwdne709878:0" - duplicate_query_title: "crwdns709880:0crwdne709880:0" - text_no_results: "crwdns709882:0crwdne709882:0" + unretrievable_query: "crwdns712164:0crwdne712164:0" + not_found: "crwdns712166:0crwdne712166:0" + duplicate_query_title: "crwdns712168:0crwdne712168:0" + text_no_results: "crwdns712170:0crwdne712170:0" scheduling: - is_parent: "crwdns709884:0crwdne709884:0" - is_switched_from_manual_to_automatic: "crwdns709886:0crwdne709886:0" + is_parent: "crwdns712172:0crwdne712172:0" + is_switched_from_manual_to_automatic: "crwdns712174:0crwdne712174:0" table: - configure_button: 'crwdns709888:0crwdne709888:0' - summary: "crwdns709890:0crwdne709890:0" - text_inline_edit: "crwdns709892:0crwdne709892:0" - text_sort_hint: "crwdns709894:0crwdne709894:0" - text_select_hint: "crwdns709896:0crwdne709896:0" + configure_button: 'crwdns712176:0crwdne712176:0' + summary: "crwdns712178:0crwdne712178:0" + text_inline_edit: "crwdns712180:0crwdne712180:0" + text_sort_hint: "crwdns712182:0crwdne712182:0" + text_select_hint: "crwdns712184:0crwdne712184:0" table_configuration: - button: 'crwdns709898:0crwdne709898:0' - choose_display_mode: 'crwdns709900:0crwdne709900:0' - modal_title: 'crwdns709902:0crwdne709902:0' - embedded_tab_disabled: "crwdns709904:0crwdne709904:0" - default: "crwdns709906:0crwdne709906:0" - display_settings: 'crwdns709908:0crwdne709908:0' - default_mode: "crwdns709910:0crwdne709910:0" - hierarchy_mode: "crwdns709912:0crwdne709912:0" - hierarchy_hint: "crwdns709914:0crwdne709914:0" - display_sums_hint: "crwdns709916:0crwdne709916:0" - show_timeline_hint: "crwdns709918:0crwdne709918:0" - highlighting: 'crwdns709920:0crwdne709920:0' + button: 'crwdns712186:0crwdne712186:0' + choose_display_mode: 'crwdns712188:0crwdne712188:0' + modal_title: 'crwdns712190:0crwdne712190:0' + embedded_tab_disabled: "crwdns712192:0crwdne712192:0" + default: "crwdns712194:0crwdne712194:0" + display_settings: 'crwdns712196:0crwdne712196:0' + default_mode: "crwdns712198:0crwdne712198:0" + hierarchy_mode: "crwdns712200:0crwdne712200:0" + hierarchy_hint: "crwdns712202:0crwdne712202:0" + display_sums_hint: "crwdns712204:0crwdne712204:0" + show_timeline_hint: "crwdns712206:0crwdne712206:0" + highlighting: 'crwdns712208:0crwdne712208:0' highlighting_mode: - description: "crwdns709922:0crwdne709922:0" - none: "crwdns709924:0crwdne709924:0" - inline: 'crwdns709926:0crwdne709926:0' - inline_all: 'crwdns709928:0crwdne709928:0' - entire_row_by: 'crwdns709930:0crwdne709930:0' - status: 'crwdns709932:0crwdne709932:0' - priority: 'crwdns709934:0crwdne709934:0' - type: 'crwdns709936:0crwdne709936:0' + description: "crwdns712210:0crwdne712210:0" + none: "crwdns712212:0crwdne712212:0" + inline: 'crwdns712214:0crwdne712214:0' + inline_all: 'crwdns712216:0crwdne712216:0' + entire_row_by: 'crwdns712218:0crwdne712218:0' + status: 'crwdns712220:0crwdne712220:0' + priority: 'crwdns712222:0crwdne712222:0' + type: 'crwdns712224:0crwdne712224:0' sorting_mode: - description: 'crwdns709938:0crwdne709938:0' - automatic: 'crwdns709940:0crwdne709940:0' - manually: 'crwdns709942:0crwdne709942:0' - warning: 'crwdns709944:0crwdne709944:0' - columns_help_text: "crwdns709946:0crwdne709946:0" + description: 'crwdns712226:0crwdne712226:0' + automatic: 'crwdns712228:0crwdne712228:0' + manually: 'crwdns712230:0crwdne712230:0' + warning: 'crwdns712232:0crwdne712232:0' + columns_help_text: "crwdns712234:0crwdne712234:0" upsale: - attribute_highlighting: 'crwdns709948:0crwdne709948:0' - relation_columns: 'crwdns709950:0crwdne709950:0' - check_out_link: 'crwdns709952:0crwdne709952:0' + attribute_highlighting: 'crwdns712236:0crwdne712236:0' + relation_columns: 'crwdns712238:0crwdne712238:0' + check_out_link: 'crwdns712240:0crwdne712240:0' relation_filters: - filter_work_packages_by_relation_type: 'crwdns709954:0crwdne709954:0' + filter_work_packages_by_relation_type: 'crwdns712242:0crwdne712242:0' tabs: - overview: crwdns709956:0crwdne709956:0 - activity: crwdns709958:0crwdne709958:0 - relations: crwdns709960:0crwdne709960:0 - watchers: crwdns709962:0crwdne709962:0 - attachments: crwdns709964:0crwdne709964:0 + overview: crwdns712244:0crwdne712244:0 + activity: crwdns712246:0crwdne712246:0 + relations: crwdns712248:0crwdne712248:0 + watchers: crwdns712250:0crwdne712250:0 + attachments: crwdns712252:0crwdne712252:0 time_relative: - days: "crwdns709966:0crwdne709966:0" - weeks: "crwdns709968:0crwdne709968:0" - months: "crwdns709970:0crwdne709970:0" + days: "crwdns712254:0crwdne712254:0" + weeks: "crwdns712256:0crwdne712256:0" + months: "crwdns712258:0crwdne712258:0" toolbar: settings: - configure_view: "crwdns709972:0crwdne709972:0" - columns: "crwdns709974:0crwdne709974:0" - sort_by: "crwdns709976:0crwdne709976:0" - group_by: "crwdns709978:0crwdne709978:0" - display_sums: "crwdns709980:0crwdne709980:0" - display_hierarchy: "crwdns709982:0crwdne709982:0" - hide_hierarchy: "crwdns709984:0crwdne709984:0" - hide_sums: "crwdns709986:0crwdne709986:0" - save: "crwdns709988:0crwdne709988:0" - save_as: "crwdns709990:0crwdne709990:0" - export: "crwdns709992:0crwdne709992:0" - visibility_settings: "crwdns709994:0crwdne709994:0" - page_settings: "crwdns709996:0crwdne709996:0" - delete: "crwdns709998:0crwdne709998:0" - filter: "crwdns710000:0crwdne710000:0" - unselected_title: "crwdns710002:0crwdne710002:0" - search_query_label: "crwdns710004:0crwdne710004:0" - search_query_title: "crwdns710006:0crwdne710006:0" - placeholder_query_title: "crwdns710008:0crwdne710008:0" + configure_view: "crwdns712260:0crwdne712260:0" + columns: "crwdns712262:0crwdne712262:0" + sort_by: "crwdns712264:0crwdne712264:0" + group_by: "crwdns712266:0crwdne712266:0" + display_sums: "crwdns712268:0crwdne712268:0" + display_hierarchy: "crwdns712270:0crwdne712270:0" + hide_hierarchy: "crwdns712272:0crwdne712272:0" + hide_sums: "crwdns712274:0crwdne712274:0" + save: "crwdns712276:0crwdne712276:0" + save_as: "crwdns712278:0crwdne712278:0" + export: "crwdns712280:0crwdne712280:0" + visibility_settings: "crwdns712282:0crwdne712282:0" + page_settings: "crwdns712284:0crwdne712284:0" + delete: "crwdns712286:0crwdne712286:0" + filter: "crwdns712288:0crwdne712288:0" + unselected_title: "crwdns712290:0crwdne712290:0" + search_query_label: "crwdns712292:0crwdne712292:0" + search_query_title: "crwdns712294:0crwdne712294:0" + placeholder_query_title: "crwdns712296:0crwdne712296:0" modals: - label_settings: "crwdns710010:0crwdne710010:0" - label_name: "crwdns710012:0crwdne710012:0" - label_delete_page: "crwdns710014:0crwdne710014:0" - button_apply: "crwdns710016:0crwdne710016:0" - button_save: "crwdns710018:0crwdne710018:0" - button_submit: "crwdns710020:0crwdne710020:0" - button_cancel: "crwdns710022:0crwdne710022:0" + label_settings: "crwdns712298:0crwdne712298:0" + label_name: "crwdns712300:0crwdne712300:0" + label_delete_page: "crwdns712302:0crwdne712302:0" + button_apply: "crwdns712304:0crwdne712304:0" + button_save: "crwdns712306:0crwdne712306:0" + button_submit: "crwdns712308:0crwdne712308:0" + button_cancel: "crwdns712310:0crwdne712310:0" form_submit: - title: 'crwdns710024:0crwdne710024:0' - text: 'crwdns710026:0crwdne710026:0' + title: 'crwdns712312:0crwdne712312:0' + text: 'crwdns712314:0crwdne712314:0' destroy_work_package: - title: "crwdns710028:0%{label}crwdne710028:0" - text: "crwdns710030:0%{label}crwdne710030:0" - has_children: "crwdns710032:0%{childUnits}crwdne710032:0" - confirm_deletion_children: "crwdns710034:0crwdne710034:0" - deletes_children: "crwdns710036:0crwdne710036:0" + title: "crwdns712316:0%{label}crwdne712316:0" + text: "crwdns712318:0%{label}crwdne712318:0" + has_children: "crwdns712320:0%{childUnits}crwdne712320:0" + confirm_deletion_children: "crwdns712322:0crwdne712322:0" + deletes_children: "crwdns712324:0crwdne712324:0" destroy_time_entry: - title: "crwdns710038:0crwdne710038:0" - text: "crwdns710040:0crwdne710040:0" - notice_no_results_to_display: "crwdns710042:0crwdne710042:0" - notice_successful_create: "crwdns710044:0crwdne710044:0" - notice_successful_delete: "crwdns710046:0crwdne710046:0" - notice_successful_update: "crwdns710048:0crwdne710048:0" - notice_job_started: "crwdns710050:0crwdne710050:0" - notice_bad_request: "crwdns710052:0crwdne710052:0" + title: "crwdns712326:0crwdne712326:0" + text: "crwdns712328:0crwdne712328:0" + notice_no_results_to_display: "crwdns712330:0crwdne712330:0" + notice_successful_create: "crwdns712332:0crwdne712332:0" + notice_successful_delete: "crwdns712334:0crwdne712334:0" + notice_successful_update: "crwdns712336:0crwdne712336:0" + notice_job_started: "crwdns712338:0crwdne712338:0" + notice_bad_request: "crwdns712340:0crwdne712340:0" relations: - empty: crwdns710054:0crwdne710054:0 - remove: crwdns710056:0crwdne710056:0 + empty: crwdns712342:0crwdne712342:0 + remove: crwdns712344:0crwdne712344:0 inplace: - button_edit: "crwdns710058:0%{attribute}crwdne710058:0" - button_save: "crwdns710060:0%{attribute}crwdne710060:0" - button_cancel: "crwdns710062:0%{attribute}crwdne710062:0" - button_save_all: "crwdns710064:0crwdne710064:0" - button_cancel_all: "crwdns710066:0crwdne710066:0" - link_formatting_help: "crwdns710068:0crwdne710068:0" - btn_preview_enable: "crwdns710070:0crwdne710070:0" - btn_preview_disable: "crwdns710072:0crwdne710072:0" - null_value_label: "crwdns710074:0crwdne710074:0" - clear_value_label: "crwdns710076:0crwdne710076:0" + button_edit: "crwdns712346:0%{attribute}crwdne712346:0" + button_save: "crwdns712348:0%{attribute}crwdne712348:0" + button_cancel: "crwdns712350:0%{attribute}crwdne712350:0" + button_save_all: "crwdns712352:0crwdne712352:0" + button_cancel_all: "crwdns712354:0crwdne712354:0" + link_formatting_help: "crwdns712356:0crwdne712356:0" + btn_preview_enable: "crwdns712358:0crwdne712358:0" + btn_preview_disable: "crwdns712360:0crwdne712360:0" + null_value_label: "crwdns712362:0crwdne712362:0" + clear_value_label: "crwdns712364:0crwdne712364:0" errors: - required: 'crwdns710078:0%{field}crwdne710078:0' - number: 'crwdns710080:0%{field}crwdne710080:0' - maxlength: 'crwdns710082:0%{field}crwdnd710082:0%{maxLength}crwdne710082:0' - minlength: 'crwdns710084:0%{field}crwdnd710084:0%{minLength}crwdne710084:0' - messages_on_field: 'crwdns710086:0%{messages}crwdne710086:0' - error_could_not_resolve_version_name: "crwdns710088:0crwdne710088:0" - error_could_not_resolve_user_name: "crwdns710090:0crwdne710090:0" - error_attachment_upload: "crwdns710092:0%{error}crwdne710092:0" - error_attachment_upload_permission: "crwdns710094:0crwdne710094:0" + required: 'crwdns712366:0%{field}crwdne712366:0' + number: 'crwdns712368:0%{field}crwdne712368:0' + maxlength: 'crwdns712370:0%{field}crwdnd712370:0%{maxLength}crwdne712370:0' + minlength: 'crwdns712372:0%{field}crwdnd712372:0%{minLength}crwdne712372:0' + messages_on_field: 'crwdns712374:0%{messages}crwdne712374:0' + error_could_not_resolve_version_name: "crwdns712376:0crwdne712376:0" + error_could_not_resolve_user_name: "crwdns712378:0crwdne712378:0" + error_attachment_upload: "crwdns712380:0%{error}crwdne712380:0" + error_attachment_upload_permission: "crwdns712382:0crwdne712382:0" units: workPackage: - one: "crwdns710096:1crwdne710096:1" - other: "crwdns710096:5crwdne710096:5" + one: "crwdns712384:1crwdne712384:1" + other: "crwdns712384:5crwdne712384:5" child_work_packages: - one: "crwdns710098:1crwdne710098:1" - other: "crwdns710098:5%{count}crwdne710098:5" + one: "crwdns712386:1crwdne712386:1" + other: "crwdns712386:5%{count}crwdne712386:5" hour: - one: "crwdns710100:0crwdne710100:0" - other: "crwdns710102:0%{count}crwdne710102:0" - zero: "crwdns710104:0crwdne710104:0" + one: "crwdns712388:0crwdne712388:0" + other: "crwdns712390:0%{count}crwdne712390:0" + zero: "crwdns712392:0crwdne712392:0" zen_mode: - button_activate: 'crwdns710106:0crwdne710106:0' - button_deactivate: 'crwdns710108:0crwdne710108:0' + button_activate: 'crwdns712394:0crwdne712394:0' + button_deactivate: 'crwdns712396:0crwdne712396:0' global_search: - all_projects: "crwdns710110:0crwdne710110:0" - search: "crwdns710112:0crwdne710112:0" - close_search: "crwdns710114:0crwdne710114:0" - current_project: "crwdns710116:0crwdne710116:0" - current_project_and_all_descendants: "crwdns710118:0crwdne710118:0" + all_projects: "crwdns712398:0crwdne712398:0" + search: "crwdns712400:0crwdne712400:0" + close_search: "crwdns712402:0crwdne712402:0" + current_project: "crwdns712404:0crwdne712404:0" + current_project_and_all_descendants: "crwdns712406:0crwdne712406:0" title: - all_projects: "crwdns710120:0crwdne710120:0" - project_and_subprojects: "crwdns710122:0crwdne710122:0" - search_for: "crwdns710124:0crwdne710124:0" + all_projects: "crwdns712408:0crwdne712408:0" + project_and_subprojects: "crwdns712410:0crwdne712410:0" + search_for: "crwdns712412:0crwdne712412:0" views: - card: 'crwdns710126:0crwdne710126:0' - list: 'crwdns710128:0crwdne710128:0' - timeline: 'crwdns710130:0crwdne710130:0' + card: 'crwdns712414:0crwdne712414:0' + list: 'crwdns712416:0crwdne712416:0' + timeline: 'crwdns712418:0crwdne712418:0' invite_user_modal: - back: 'crwdns710132:0crwdne710132:0' - invite: 'crwdns710134:0crwdne710134:0' + back: 'crwdns712420:0crwdne712420:0' + invite: 'crwdns712422:0crwdne712422:0' title: - invite: 'crwdns710136:0crwdne710136:0' - invite_to_project: 'crwdns710138:0%{type}crwdnd710138:0%{project}crwdne710138:0' - User: 'crwdns710140:0crwdne710140:0' - Group: 'crwdns710142:0crwdne710142:0' - PlaceholderUser: 'crwdns710144:0crwdne710144:0' - invite_principal_to_project: 'crwdns710146:0%{principal}crwdnd710146:0%{project}crwdne710146:0' + invite: 'crwdns712424:0crwdne712424:0' + invite_to_project: 'crwdns712426:0%{type}crwdnd712426:0%{project}crwdne712426:0' + User: 'crwdns712428:0crwdne712428:0' + Group: 'crwdns712430:0crwdne712430:0' + PlaceholderUser: 'crwdns712432:0crwdne712432:0' + invite_principal_to_project: 'crwdns712434:0%{principal}crwdnd712434:0%{project}crwdne712434:0' project: - label: 'crwdns710148:0crwdne710148:0' - required: 'crwdns710150:0crwdne710150:0' - lacking_permission: 'crwdns710152:0crwdne710152:0' - lacking_permission_info: 'crwdns710154:0crwdne710154:0' - next_button: 'crwdns710156:0crwdne710156:0' - no_results: 'crwdns710158:0crwdne710158:0' - no_invite_rights: 'crwdns710160:0crwdne710160:0' + label: 'crwdns712436:0crwdne712436:0' + required: 'crwdns712438:0crwdne712438:0' + lacking_permission: 'crwdns712440:0crwdne712440:0' + lacking_permission_info: 'crwdns712442:0crwdne712442:0' + next_button: 'crwdns712444:0crwdne712444:0' + no_results: 'crwdns712446:0crwdne712446:0' + no_invite_rights: 'crwdns712448:0crwdne712448:0' type: - required: 'crwdns710162:0crwdne710162:0' + required: 'crwdns712450:0crwdne712450:0' user: - title: 'crwdns710164:0crwdne710164:0' - description: 'crwdns710166:0crwdne710166:0' + title: 'crwdns712452:0crwdne712452:0' + description: 'crwdns712454:0crwdne712454:0' group: - title: 'crwdns710168:0crwdne710168:0' - description: 'crwdns710170:0crwdne710170:0' + title: 'crwdns712456:0crwdne712456:0' + description: 'crwdns712458:0crwdne712458:0' placeholder: - title: 'crwdns710172:0crwdne710172:0' - title_no_ee: 'crwdns710174:0crwdne710174:0' - description: 'crwdns710176:0crwdne710176:0' - description_no_ee: 'crwdns710178:0%{eeHref}crwdne710178:0' + title: 'crwdns712460:0crwdne712460:0' + title_no_ee: 'crwdns712462:0crwdne712462:0' + description: 'crwdns712464:0crwdne712464:0' + description_no_ee: 'crwdns712466:0%{eeHref}crwdne712466:0' principal: label: - name_or_email: 'crwdns710180:0crwdne710180:0' - name: 'crwdns710182:0crwdne710182:0' - already_member_message: 'crwdns710184:0%{project}crwdne710184:0' - no_results_user: 'crwdns710186:0crwdne710186:0' - invite_user: 'crwdns710188:0crwdne710188:0' - no_results_placeholder: 'crwdns710190:0crwdne710190:0' - create_new_placeholder: 'crwdns710192:0crwdne710192:0' - no_results_group: 'crwdns710194:0crwdne710194:0' - next_button: 'crwdns710196:0crwdne710196:0' + name_or_email: 'crwdns712468:0crwdne712468:0' + name: 'crwdns712470:0crwdne712470:0' + already_member_message: 'crwdns712472:0%{project}crwdne712472:0' + no_results_user: 'crwdns712474:0crwdne712474:0' + invite_user: 'crwdns712476:0crwdne712476:0' + no_results_placeholder: 'crwdns712478:0crwdne712478:0' + create_new_placeholder: 'crwdns712480:0crwdne712480:0' + no_results_group: 'crwdns712482:0crwdne712482:0' + next_button: 'crwdns712484:0crwdne712484:0' required: - user: 'crwdns710198:0crwdne710198:0' - placeholder: 'crwdns710200:0crwdne710200:0' - group: 'crwdns710202:0crwdne710202:0' + user: 'crwdns712486:0crwdne712486:0' + placeholder: 'crwdns712488:0crwdne712488:0' + group: 'crwdns712490:0crwdne712490:0' role: - label: 'crwdns710204:0%{project}crwdne710204:0' - no_roles_found: 'crwdns710206:0crwdne710206:0' - description: 'crwdns710208:0%{principal}crwdne710208:0' - required: 'crwdns710210:0crwdne710210:0' - next_button: 'crwdns710212:0crwdne710212:0' + label: 'crwdns712492:0%{project}crwdne712492:0' + no_roles_found: 'crwdns712494:0crwdne712494:0' + description: 'crwdns712496:0%{principal}crwdne712496:0' + required: 'crwdns712498:0crwdne712498:0' + next_button: 'crwdns712500:0crwdne712500:0' message: - label: 'crwdns710214:0crwdne710214:0' - description: 'crwdns710216:0%{principal}crwdne710216:0' - next_button: 'crwdns710218:0crwdne710218:0' + label: 'crwdns712502:0crwdne712502:0' + description: 'crwdns712504:0%{principal}crwdne712504:0' + next_button: 'crwdns712506:0crwdne712506:0' summary: - next_button: 'crwdns710220:0crwdne710220:0' + next_button: 'crwdns712508:0crwdne712508:0' success: - title: 'crwdns710222:0%{principal}crwdne710222:0' + title: 'crwdns712510:0%{principal}crwdne712510:0' description: - user: 'crwdns710224:0%{project}crwdne710224:0' - placeholder: 'crwdns710226:0%{project}crwdne710226:0' - group: 'crwdns710228:0%{project}crwdne710228:0' - next_button: 'crwdns710230:0crwdne710230:0' + user: 'crwdns712512:0%{project}crwdne712512:0' + placeholder: 'crwdns712514:0%{project}crwdne712514:0' + group: 'crwdns712516:0%{project}crwdne712516:0' + next_button: 'crwdns712518:0crwdne712518:0' forms: - submit_success_message: 'crwdns710232:0crwdne710232:0' - load_error_message: 'crwdns710234:0crwdne710234:0' - validation_error_message: 'crwdns710236:0crwdne710236:0' - advanced_settings: 'crwdns710238:0crwdne710238:0' + submit_success_message: 'crwdns712520:0crwdne712520:0' + load_error_message: 'crwdns712522:0crwdne712522:0' + validation_error_message: 'crwdns712524:0crwdne712524:0' + advanced_settings: 'crwdns712526:0crwdne712526:0' diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index a6f0f05013..88ccd508f2 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -453,9 +453,12 @@ ko: code: '상태' explanation: '상태 설명' codes: + not_started: 'Not started' on_track: '정상 상태' at_risk: '위험 상태' off_track: '비정상 상태' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "컬럼" relations_to_type_column: "%{type}에 대한 관계" diff --git a/config/locales/crowdin/lol.yml b/config/locales/crowdin/lol.yml index 8a137f6c25..b8d1d37658 100644 --- a/config/locales/crowdin/lol.yml +++ b/config/locales/crowdin/lol.yml @@ -436,9 +436,12 @@ lol: code: 'crwdns495237:0crwdne495237:0' explanation: 'crwdns495239:0crwdne495239:0' codes: + not_started: 'crwdns710622:0crwdne710622:0' on_track: 'crwdns495241:0crwdne495241:0' at_risk: 'crwdns495243:0crwdne495243:0' off_track: 'crwdns495245:0crwdne495245:0' + finished: 'crwdns710624:0crwdne710624:0' + discontinued: 'crwdns710626:0crwdne710626:0' query: column_names: "crwdns495247:0crwdne495247:0" relations_to_type_column: "crwdns495249:0%{type}crwdne495249:0" diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index caf57a1a20..8a094538c7 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -454,9 +454,12 @@ lt: code: 'Būsena' explanation: 'Būsenos aprašymas' codes: + not_started: 'Not started' on_track: 'Teisingame kelyje' at_risk: 'Rizikingas' off_track: 'Pasiklydęs' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Stulpeliai" relations_to_type_column: "Ryšiai su %{type}" diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index 36c25b501f..4813330bdf 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -456,9 +456,12 @@ lv: code: 'Statuss' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolonnas" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml index 59237e8ed6..a414779b29 100644 --- a/config/locales/crowdin/ne.yml +++ b/config/locales/crowdin/ne.yml @@ -455,9 +455,12 @@ ne: code: 'Status' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Columns" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index b6e9ed2e8a..4855f97ab0 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -452,9 +452,12 @@ nl: code: 'Status' explanation: 'Status beschrijving' codes: + not_started: 'Not started' on_track: 'Op schema' at_risk: 'In gevaar' off_track: 'Buiten schema' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolommen" relations_to_type_column: "Betrekkingen %{type}" diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index 049de6ab43..90e9e719b3 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -455,9 +455,12 @@ code: 'Status' explanation: 'Statusbeskrivelse' codes: + not_started: 'Not started' on_track: 'På rett spor' at_risk: 'I fare' off_track: 'Sporet av' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolonner" relations_to_type_column: "Forbindelser til %{type}" diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index b0ad066c8f..92141a1d8e 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -454,9 +454,12 @@ pl: code: 'Status' explanation: 'Opis statusu' codes: + not_started: 'Not started' on_track: 'Na ścieżce' at_risk: 'Zagrożony' off_track: 'Poza ścieżką' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolumny" relations_to_type_column: "Relacje %{type}" diff --git a/config/locales/crowdin/pt.yml b/config/locales/crowdin/pt.yml index 2be4b6e508..4f1e75d805 100644 --- a/config/locales/crowdin/pt.yml +++ b/config/locales/crowdin/pt.yml @@ -454,9 +454,12 @@ pt: code: 'Status' explanation: 'Descrição do estado' codes: + not_started: 'Not started' on_track: 'Sob controle' at_risk: 'Em risco' off_track: 'Fora de controle' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Colunas" relations_to_type_column: "Relações com %{type}" diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index 1ed23ec5ad..51317febf3 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -456,9 +456,12 @@ ro: code: 'Stare' explanation: 'Descrierea stării' codes: + not_started: 'Not started' on_track: 'Urmărește' at_risk: 'În pericol' off_track: 'În afara pistei' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Coloane" relations_to_type_column: "Relații cu %{type}" diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index f4438b0943..72b6545bd2 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -453,12 +453,15 @@ ru: work_packages: "Задачи" templated: 'Проект шаблона' projects/status: - code: 'Статус' + code: 'Состояние' explanation: 'Описание статуса' codes: + not_started: 'Not started' on_track: 'В работе' at_risk: 'Есть риск' off_track: 'Приостановлен' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Столбцы" relations_to_type_column: "Отношения к %{type}" @@ -747,7 +750,7 @@ ru: does_not_exist: "Указанная категория не существует." estimated_hours: only_values_greater_or_equal_zeroes_allowed: "должно быть > = 0." - readonly_status: 'Пакет работ находится в статусе только для чтения, поэтому его атрибуты не могут быть изменены.' + readonly_status: 'Пакет работ находится в состоянии только для чтения, поэтому его атрибуты не могут быть изменены.' type: attributes: attribute_groups: @@ -778,7 +781,7 @@ ru: confirm: "Подтвердите новый пароль." description: "«Подтвержденный пароль» должен совпадать с введенным «новым паролем»." status: - invalid_on_create: "не является допустимым статусом для новых пользователей." + invalid_on_create: "для нового пользователя это неподходящий статус." auth_source: error_not_found: "не найдено" member: @@ -809,7 +812,7 @@ ru: custom_field: "Настраиваемое поле" group: "Группа" category: "Категория" - status: "Статусы пакета работ" + status: "Состояние группы работ" member: "Участник" news: "Новости" notification: @@ -886,7 +889,7 @@ ru: role: "Роль" roles: "Роль" start_date: "Дата начала" - status: "Статус" + status: "Состояние" subject: "Тема" summary: "Сводка" title: "Заголовок" @@ -1276,7 +1279,7 @@ ru: error_password_change_failed: 'Произошла ошибка при попытке изменить пароль.' error_scm_command_failed: "Произошла ошибка при попытке доступа к хранилищу: %{value}" error_scm_not_found: "Ни статья, ни ее исправленная версия в репозитории не найдены." - error_unable_delete_status: "Статус пакета работ удалить нельзя, так как он используется по крайней мере одним рабочим пакетом." + error_unable_delete_status: "Состояние работы пакета удалить нельзя, так как оно используется по крайней мере одним рабочим пакетом." error_unable_delete_default_status: "Не удается удалить статус работы пакета по умолчанию. Пожалуйста, выберите другой статус работы пакета по умолчанию перед удалением текущего." error_unable_to_connect: "Не удается подключиться (%{value})" error_unable_delete_wiki: "Не удается удалить вики-страницу." @@ -1546,7 +1549,7 @@ ru: label_disabled: "отключено" label_display: "Отображение" label_display_per_page: "На странице: %{value}" - label_display_used_statuses_only: "Отображать только используемые этим типом статусы" + label_display_used_statuses_only: "Отображать только используемые этим типом состояния" label_download: "%{count} скачать" label_download_plural: "%{count} скачиваний" label_downloads_abbr: "D/L" @@ -1830,7 +1833,7 @@ ru: label_start_to_end: "от начала до конца" label_start_to_start: "Пуск, чтобы начать" label_statistics: "Статистика" - label_status: "Статус" + label_status: "Состояние" label_stay_logged_in: "Запомнить" label_storage_free_space: "Свободное дисковое пространство" label_storage_used_space: "Используемое дисковое пространство" @@ -1921,7 +1924,7 @@ ru: label_work_package_new: "Новый пакет работ" label_work_package_edit: "Редактирование пакета работ %{name}" label_work_package_plural: "Комплекс работ" - label_work_package_status: "Статус пакета работ" + label_work_package_status: "Состояние группы работ" label_work_package_status_new: "Новый статус" label_work_package_status_plural: "Статусы пакета работ" label_work_package_types: "Типы рабочих пакетов" @@ -2710,7 +2713,7 @@ ru: type: "Тип" due_date: "Дате окончания" name: "Имя" - status: "Статус" + status: "Состояние" start_date: "Дата начала" columns: "Столбцы" comparisons: "Сравнения" @@ -2742,7 +2745,7 @@ ru: work_package_responsible: "Показать пакеты работ с подотчетными" work_package_assignee: "Показать пакеты работ с назначениями" types: "Показать типы" - status: "Показать статус" + status: "Показать состояние" project_time_filter: "Проекты пакета работ определенного типа в определенные сроки" project_time_filter_timeframe: "Срок" project_time_filter_historical_from: "от" @@ -2920,7 +2923,7 @@ ru: invalid_signal: embed: "Запрошенное встраивание %{invalid} не поддерживается. Поддерживаемые встраивания: %{supported}." select: "Запрошенный выбор %{invalid} не поддерживается. Поддерживаются варианты %{supported}." - invalid_user_status_transition: "Статус учетной записи текущего пользователя не поддерживает эту операцию." + invalid_user_status_transition: "Состояние учетной записи текущего пользователя не поддерживает эту операцию." missing_content_type: "Не определено" missing_request_body: "Нет тела запроса." missing_or_malformed_parameter: "Параметр запроса «%{parameter}» отсутствует или имеет неправильный формат." diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index ef73df2640..24ca36f774 100644 --- a/config/locales/crowdin/rw.yml +++ b/config/locales/crowdin/rw.yml @@ -455,9 +455,12 @@ rw: code: 'Status' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Columns" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml index 0b0f766a68..352742cb41 100644 --- a/config/locales/crowdin/si.yml +++ b/config/locales/crowdin/si.yml @@ -455,9 +455,12 @@ si: code: 'තත්වය' explanation: 'තත්ව විස්තරය' codes: + not_started: 'Not started' on_track: 'ධාවන පථයේ' at_risk: 'අවදානමට' off_track: 'ධාවන පථය' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "තීරු" relations_to_type_column: "සබඳතා %{type}" diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index a36ac2ec58..0ed7a4a154 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -457,9 +457,12 @@ sk: code: 'Stav' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'Na dobrej ceste' at_risk: 'V riziku' off_track: 'Na zlej ceste' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Stĺpce" relations_to_type_column: "Vzťahy k %{type}" diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index 191919f55d..867657a138 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -454,9 +454,12 @@ sl: code: 'Stanje' explanation: 'Opis stanja' codes: + not_started: 'Not started' on_track: 'Na poti' at_risk: 'Ogroženo' off_track: 'Izven poti' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Stolpci" relations_to_type_column: "Povezave z %{type}" diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml index 791f512fe0..db6689d062 100644 --- a/config/locales/crowdin/sv.yml +++ b/config/locales/crowdin/sv.yml @@ -454,9 +454,12 @@ sv: code: 'Status' explanation: 'Statusbeskrivning' codes: + not_started: 'Not started' on_track: 'På banan' at_risk: 'I riskzonen' off_track: 'Utanför banan' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Kolumner" relations_to_type_column: "Relationer till %{type}" diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index f67d44de45..9eaa64ae0a 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -454,9 +454,12 @@ th: code: 'สถานะ' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "คอลัมน์" relations_to_type_column: "Relations to %{type}" diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index 8ed74d8b8c..b3dbfc138f 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -455,9 +455,12 @@ tr: code: 'Durum' explanation: 'Durum tanımlaması' codes: + not_started: 'Not started' on_track: 'Takipte' at_risk: 'Riskli' off_track: 'Kapalı parça' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Sütunlar" relations_to_type_column: "%{type} ile ilişkileri" diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index 371b120761..f20c05f3b9 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -457,9 +457,12 @@ uk: code: 'Статус' explanation: 'Status description' codes: + not_started: 'Not started' on_track: 'On track' at_risk: 'At risk' off_track: 'Off track' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Стовпці" relations_to_type_column: "Відносини з %{type}" diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index a71c0bae78..44e5b23648 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -456,9 +456,12 @@ vi: code: 'Trạng thái' explanation: 'Mô tả trạng thái' codes: + not_started: 'Not started' on_track: 'Theo dõi' at_risk: 'Có rủi ro' off_track: 'Không theo dõi' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "Cột" relations_to_type_column: "Quan hệ với %{type}" diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index d3c7554c4b..622b90ca50 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -454,9 +454,12 @@ zh-TW: code: '狀態' explanation: '狀態描述' codes: + not_started: 'Not started' on_track: '進度良好' at_risk: '存在風險' off_track: '進度脫軌' + finished: 'Finished' + discontinued: 'Discontinued' query: column_names: "欄" relations_to_type_column: "與 %{type} 的關連" diff --git a/modules/avatars/config/locales/crowdin/js-ru.yml b/modules/avatars/config/locales/crowdin/js-ru.yml index d696c14e57..3cf0f890d5 100644 --- a/modules/avatars/config/locales/crowdin/js-ru.yml +++ b/modules/avatars/config/locales/crowdin/js-ru.yml @@ -1,8 +1,8 @@ #English strings go here ru: js: - label_preview: 'Предварительный просмотр' - button_update: 'Обновление' + label_preview: 'Предпросмотр' + button_update: 'Обновить' avatars: label_choose_avatar: "Выбрать аватар из файла" uploading_avatar: "Загрузка аватара." diff --git a/modules/grids/config/locales/crowdin/js-af.yml b/modules/grids/config/locales/crowdin/js-af.yml index 93ec033f98..a1ebe77d9d 100644 --- a/modules/grids/config/locales/crowdin/js-af.yml +++ b/modules/grids/config/locales/crowdin/js-af.yml @@ -31,10 +31,13 @@ af: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projek status' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojekte' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-ar.yml b/modules/grids/config/locales/crowdin/js-ar.yml index b28dc45d1b..fa1a9095c9 100644 --- a/modules/grids/config/locales/crowdin/js-ar.yml +++ b/modules/grids/config/locales/crowdin/js-ar.yml @@ -31,10 +31,13 @@ ar: no_results: 'No custom fields have been defined for projects.' project_status: title: 'حالة المشروع' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'المشاريع الفرعية' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-az.yml b/modules/grids/config/locales/crowdin/js-az.yml index 15f657fd34..388a59332d 100644 --- a/modules/grids/config/locales/crowdin/js-az.yml +++ b/modules/grids/config/locales/crowdin/js-az.yml @@ -31,10 +31,13 @@ az: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Project status' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojects' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-bg.yml b/modules/grids/config/locales/crowdin/js-bg.yml index 42a8b5119c..018b8439a0 100644 --- a/modules/grids/config/locales/crowdin/js-bg.yml +++ b/modules/grids/config/locales/crowdin/js-bg.yml @@ -31,10 +31,13 @@ bg: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Статус на проекта' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Не е зададено' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Подпроекти' no_results: 'Няма подпроекти.' diff --git a/modules/grids/config/locales/crowdin/js-ca.yml b/modules/grids/config/locales/crowdin/js-ca.yml index e093d5e5f5..71fca39b61 100644 --- a/modules/grids/config/locales/crowdin/js-ca.yml +++ b/modules/grids/config/locales/crowdin/js-ca.yml @@ -31,10 +31,13 @@ ca: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Estat del projecte' + not_started: 'Not started' on_track: 'Pel bon camí' off_track: 'En mal camí' at_risk: 'En risc' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojectes' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-cs.yml b/modules/grids/config/locales/crowdin/js-cs.yml index 3686a677e3..65752a2404 100644 --- a/modules/grids/config/locales/crowdin/js-cs.yml +++ b/modules/grids/config/locales/crowdin/js-cs.yml @@ -31,10 +31,13 @@ cs: no_results: 'Pro projekty nebyla definována žádná vlastní pole.' project_status: title: 'Stav projektu' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Nenastaveno' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Podprojekty' no_results: 'Žádné podprojekty.' diff --git a/modules/grids/config/locales/crowdin/js-da.yml b/modules/grids/config/locales/crowdin/js-da.yml index 3391fcae1a..39ca95edae 100644 --- a/modules/grids/config/locales/crowdin/js-da.yml +++ b/modules/grids/config/locales/crowdin/js-da.yml @@ -31,10 +31,13 @@ da: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projektstatus' + not_started: 'Not started' on_track: 'På sporet' off_track: 'Af sporet' at_risk: 'I fare' not_set: 'Ikke angivet' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Underprojekter' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-de.yml b/modules/grids/config/locales/crowdin/js-de.yml index 99925de8b1..2684bbf710 100644 --- a/modules/grids/config/locales/crowdin/js-de.yml +++ b/modules/grids/config/locales/crowdin/js-de.yml @@ -31,10 +31,13 @@ de: no_results: 'Für Projekte wurden keine benutzerdefinierten Felder definiert.' project_status: title: 'Projekt-Status' + not_started: 'Not started' on_track: 'Planmäßig' off_track: 'Unplanmäßig' at_risk: 'Gefährdet' not_set: 'Nicht gesetzt' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Unterprojekte' no_results: 'Keine Unterprojekte.' diff --git a/modules/grids/config/locales/crowdin/js-el.yml b/modules/grids/config/locales/crowdin/js-el.yml index 196f039a2d..3fb3627336 100644 --- a/modules/grids/config/locales/crowdin/js-el.yml +++ b/modules/grids/config/locales/crowdin/js-el.yml @@ -31,10 +31,13 @@ el: no_results: 'Δεν έχουν οριστεί προσαρμοσμένα πεδία για έργα.' project_status: title: 'Κατάσταση έργου' + not_started: 'Not started' on_track: 'Eντός πορείας' off_track: 'Eκτός πορείας' at_risk: 'Σε κίνδυνο' not_set: 'Μη ορισμένο' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Υποέργα' no_results: 'Δεν υπάρχουν υποέργα.' diff --git a/modules/grids/config/locales/crowdin/js-eo.yml b/modules/grids/config/locales/crowdin/js-eo.yml index 38354f7a12..d58aa92515 100644 --- a/modules/grids/config/locales/crowdin/js-eo.yml +++ b/modules/grids/config/locales/crowdin/js-eo.yml @@ -31,10 +31,13 @@ eo: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projecta statuso' + not_started: 'Not started' on_track: 'Laŭ la plano' off_track: 'Off track' at_risk: 'Riske' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojektoj' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-es.yml b/modules/grids/config/locales/crowdin/js-es.yml index 5800c92b47..c9a31d0e51 100644 --- a/modules/grids/config/locales/crowdin/js-es.yml +++ b/modules/grids/config/locales/crowdin/js-es.yml @@ -31,10 +31,13 @@ es: no_results: 'No se han definido campos personalizados para los proyectos.' project_status: title: 'Estado del proyecto' + not_started: 'Not started' on_track: 'Según lo previsto' off_track: 'Fuera de lo previsto' at_risk: 'En riesgo' not_set: 'No establecido' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subproyectos' no_results: 'No hay subproyectos.' diff --git a/modules/grids/config/locales/crowdin/js-et.yml b/modules/grids/config/locales/crowdin/js-et.yml index bf0d154eb6..c8de27c82c 100644 --- a/modules/grids/config/locales/crowdin/js-et.yml +++ b/modules/grids/config/locales/crowdin/js-et.yml @@ -31,10 +31,13 @@ et: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projekti olek' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Alamprojektid' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-fa.yml b/modules/grids/config/locales/crowdin/js-fa.yml index 7068978cf1..9bae4a65d3 100644 --- a/modules/grids/config/locales/crowdin/js-fa.yml +++ b/modules/grids/config/locales/crowdin/js-fa.yml @@ -31,10 +31,13 @@ fa: no_results: 'No custom fields have been defined for projects.' project_status: title: 'وضعیت پروژه' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'تنظیم نشده' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojects' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-fi.yml b/modules/grids/config/locales/crowdin/js-fi.yml index 73fa6a2ca5..743f461d9a 100644 --- a/modules/grids/config/locales/crowdin/js-fi.yml +++ b/modules/grids/config/locales/crowdin/js-fi.yml @@ -31,10 +31,13 @@ fi: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projektin tila' + not_started: 'Not started' on_track: 'Hyvä' off_track: 'Huono' at_risk: 'Rajalla' not_set: 'Määrittelemätön' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Aliprojektit' no_results: 'Ei aliprojekteja.' diff --git a/modules/grids/config/locales/crowdin/js-fil.yml b/modules/grids/config/locales/crowdin/js-fil.yml index 2d473b69c2..40c5b897ff 100644 --- a/modules/grids/config/locales/crowdin/js-fil.yml +++ b/modules/grids/config/locales/crowdin/js-fil.yml @@ -31,10 +31,13 @@ fil: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Estado ng proyekto' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Ang mga subproject' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-fr.yml b/modules/grids/config/locales/crowdin/js-fr.yml index 502f1c8cf1..95d9a4894a 100644 --- a/modules/grids/config/locales/crowdin/js-fr.yml +++ b/modules/grids/config/locales/crowdin/js-fr.yml @@ -31,10 +31,13 @@ fr: no_results: 'Aucun champ personnalisé n''a été défini pour les projets.' project_status: title: 'État du projet' + not_started: 'Not started' on_track: 'Sur la bonne voie' off_track: 'Sur la mauvaise voie' at_risk: 'À risque' not_set: 'Non défini' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Sous-projets' no_results: 'Aucun sous-projet.' diff --git a/modules/grids/config/locales/crowdin/js-he.yml b/modules/grids/config/locales/crowdin/js-he.yml index b6f6583bfd..83600ddfce 100644 --- a/modules/grids/config/locales/crowdin/js-he.yml +++ b/modules/grids/config/locales/crowdin/js-he.yml @@ -31,10 +31,13 @@ he: no_results: 'No custom fields have been defined for projects.' project_status: title: 'מצב הפרוייקט' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojects' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-hi.yml b/modules/grids/config/locales/crowdin/js-hi.yml index cfc5907d84..0bb5a0bac4 100644 --- a/modules/grids/config/locales/crowdin/js-hi.yml +++ b/modules/grids/config/locales/crowdin/js-hi.yml @@ -31,10 +31,13 @@ hi: no_results: 'No custom fields have been defined for projects.' project_status: title: 'प्रोजेक्ट स्थिति' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'उपपरियोजनाएँ' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-hr.yml b/modules/grids/config/locales/crowdin/js-hr.yml index 211f063cac..c3f2fb24b3 100644 --- a/modules/grids/config/locales/crowdin/js-hr.yml +++ b/modules/grids/config/locales/crowdin/js-hr.yml @@ -31,10 +31,13 @@ hr: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Status projekta' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Potprojekti' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-hu.yml b/modules/grids/config/locales/crowdin/js-hu.yml index 4fb2bd4b85..1d96d3f871 100644 --- a/modules/grids/config/locales/crowdin/js-hu.yml +++ b/modules/grids/config/locales/crowdin/js-hu.yml @@ -31,10 +31,13 @@ hu: no_results: 'A projektekhez nem definiáltak egyedi mezőket.' project_status: title: 'Projekt állapot' + not_started: 'Not started' on_track: 'Terv szerint' off_track: 'Kisiklott' at_risk: 'Veszélyben' not_set: 'Nincs beállítva' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Alprojektek' no_results: "Nincsenek alprojektek\n" diff --git a/modules/grids/config/locales/crowdin/js-id.yml b/modules/grids/config/locales/crowdin/js-id.yml index c27a9e3ce8..5f6fd1e02d 100644 --- a/modules/grids/config/locales/crowdin/js-id.yml +++ b/modules/grids/config/locales/crowdin/js-id.yml @@ -31,10 +31,13 @@ id: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Project status' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Sub Project' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-it.yml b/modules/grids/config/locales/crowdin/js-it.yml index c8875e2f18..cc07b1c7ab 100644 --- a/modules/grids/config/locales/crowdin/js-it.yml +++ b/modules/grids/config/locales/crowdin/js-it.yml @@ -31,10 +31,13 @@ it: no_results: 'Nessun campo personalizzato è stato definito per i progetti.' project_status: title: 'Stato del progetto' + not_started: 'Not started' on_track: 'Nei limiti' off_track: 'Fuori limite' at_risk: 'A rischio' not_set: 'Non impostato' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Sotto-progetti' no_results: 'Nessun sotto-progetto.' diff --git a/modules/grids/config/locales/crowdin/js-ja.yml b/modules/grids/config/locales/crowdin/js-ja.yml index 23efb9eae8..f2aed286e9 100644 --- a/modules/grids/config/locales/crowdin/js-ja.yml +++ b/modules/grids/config/locales/crowdin/js-ja.yml @@ -31,10 +31,13 @@ ja: no_results: 'プロジェクトにカスタムフィールドが定義されていません。' project_status: title: 'プロジェクトの進捗状況' + not_started: 'Not started' on_track: '順調' off_track: '脱線' at_risk: 'リスクあり' not_set: '未設定' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: '子プロジェクト' no_results: '子プロジェクトはありません。' diff --git a/modules/grids/config/locales/crowdin/js-ko.yml b/modules/grids/config/locales/crowdin/js-ko.yml index ee45795f18..2b365f03ba 100644 --- a/modules/grids/config/locales/crowdin/js-ko.yml +++ b/modules/grids/config/locales/crowdin/js-ko.yml @@ -31,10 +31,13 @@ ko: no_results: '프로젝트에 대한 사용자 지정 필드가 정의되지 않았습니다.' project_status: title: '프로젝트 상태' + not_started: 'Not started' on_track: '정상 상태' off_track: '비정상 상태' at_risk: '위험 상태' not_set: '설정되지 않음' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: '하위 프로젝트' no_results: '하위 프로젝트가 없습니다.' diff --git a/modules/grids/config/locales/crowdin/js-lol.yml b/modules/grids/config/locales/crowdin/js-lol.yml index a9edd746fc..14a881d529 100644 --- a/modules/grids/config/locales/crowdin/js-lol.yml +++ b/modules/grids/config/locales/crowdin/js-lol.yml @@ -31,10 +31,13 @@ lol: no_results: 'crwdns500139:0crwdne500139:0' project_status: title: 'crwdns500141:0crwdne500141:0' + not_started: 'crwdns712528:0crwdne712528:0' on_track: 'crwdns500143:0crwdne500143:0' off_track: 'crwdns500145:0crwdne500145:0' at_risk: 'crwdns500147:0crwdne500147:0' not_set: 'crwdns500149:0crwdne500149:0' + finished: 'crwdns712530:0crwdne712530:0' + discontinued: 'crwdns712532:0crwdne712532:0' subprojects: title: 'crwdns500151:0crwdne500151:0' no_results: 'crwdns500153:0crwdne500153:0' diff --git a/modules/grids/config/locales/crowdin/js-lt.yml b/modules/grids/config/locales/crowdin/js-lt.yml index 8c561cf56b..3063e8a7fd 100644 --- a/modules/grids/config/locales/crowdin/js-lt.yml +++ b/modules/grids/config/locales/crowdin/js-lt.yml @@ -31,10 +31,13 @@ lt: no_results: 'Projektui nenurodyti savi laukai.' project_status: title: 'Projekto būsena' + not_started: 'Not started' on_track: 'Teisingame kelyje' off_track: 'Pasiklydęs' at_risk: 'Rizikingas' not_set: 'Nenustatyta' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Sub-projektai' no_results: 'Nėra subprojektų.' diff --git a/modules/grids/config/locales/crowdin/js-lv.yml b/modules/grids/config/locales/crowdin/js-lv.yml index f53143ecf3..e5044113f7 100644 --- a/modules/grids/config/locales/crowdin/js-lv.yml +++ b/modules/grids/config/locales/crowdin/js-lv.yml @@ -31,10 +31,13 @@ lv: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projekta statuss' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Apakšprojekti' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-ne.yml b/modules/grids/config/locales/crowdin/js-ne.yml index c56abbb0c8..ec6b36729d 100644 --- a/modules/grids/config/locales/crowdin/js-ne.yml +++ b/modules/grids/config/locales/crowdin/js-ne.yml @@ -31,10 +31,13 @@ ne: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Project status' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojects' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-nl.yml b/modules/grids/config/locales/crowdin/js-nl.yml index 708c5876d1..9b018b204b 100644 --- a/modules/grids/config/locales/crowdin/js-nl.yml +++ b/modules/grids/config/locales/crowdin/js-nl.yml @@ -31,10 +31,13 @@ nl: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Projectstatus' + not_started: 'Not started' on_track: 'Op schema' off_track: 'Buiten schema' at_risk: 'In gevaar' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojecten' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-no.yml b/modules/grids/config/locales/crowdin/js-no.yml index fe99e41944..7436a877cb 100644 --- a/modules/grids/config/locales/crowdin/js-no.yml +++ b/modules/grids/config/locales/crowdin/js-no.yml @@ -31,10 +31,13 @@ no_results: 'No custom fields have been defined for projects.' project_status: title: 'Prosjektstatus' + not_started: 'Not started' on_track: 'På rett spor' off_track: 'Sporet av' at_risk: 'I fare' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Underprosjekter' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-pl.yml b/modules/grids/config/locales/crowdin/js-pl.yml index c8df532ce6..d08470abd2 100644 --- a/modules/grids/config/locales/crowdin/js-pl.yml +++ b/modules/grids/config/locales/crowdin/js-pl.yml @@ -31,10 +31,13 @@ pl: no_results: 'Nie zdefiniowano żadnych pól niestandardowych dla projektów.' project_status: title: 'Stan projektu' + not_started: 'Not started' on_track: 'Na ścieżce' off_track: 'Poza ścieżką' at_risk: 'Zagrożony' not_set: 'Nie ustawione' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Podprojekty' no_results: 'Brak podprojektów.' diff --git a/modules/grids/config/locales/crowdin/js-pt.yml b/modules/grids/config/locales/crowdin/js-pt.yml index f476c7f068..f0bcf74370 100644 --- a/modules/grids/config/locales/crowdin/js-pt.yml +++ b/modules/grids/config/locales/crowdin/js-pt.yml @@ -31,10 +31,13 @@ pt: no_results: 'Nenhum campo personalizado foi definido para projetos.' project_status: title: 'Situação do projeto' + not_started: 'Not started' on_track: 'Sob controle' off_track: 'Fora de controle' at_risk: 'Em risco' not_set: 'Não definido' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojetos' no_results: 'Nenhum subprojeto.' diff --git a/modules/grids/config/locales/crowdin/js-ro.yml b/modules/grids/config/locales/crowdin/js-ro.yml index 460a7d1b83..9b76db1eb3 100644 --- a/modules/grids/config/locales/crowdin/js-ro.yml +++ b/modules/grids/config/locales/crowdin/js-ro.yml @@ -31,10 +31,13 @@ ro: no_results: 'Nu au fost definite câmpuri personalizate pentru proiecte.' project_status: title: 'Stare proiect' + not_started: 'Not started' on_track: 'Urmărește' off_track: 'În afara pistei' at_risk: 'În pericol' not_set: 'Nesetat' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subproiecte' no_results: 'Cu subproiecte' diff --git a/modules/grids/config/locales/crowdin/js-ru.yml b/modules/grids/config/locales/crowdin/js-ru.yml index 96d80a775b..6612f47eab 100644 --- a/modules/grids/config/locales/crowdin/js-ru.yml +++ b/modules/grids/config/locales/crowdin/js-ru.yml @@ -31,10 +31,13 @@ ru: no_results: 'Для проектов не определены настраиваемые поля.' project_status: title: 'Состояние проекта' + not_started: 'Not started' on_track: 'В работе' off_track: 'Приостановлен' at_risk: 'Есть риск' not_set: 'Не задано' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Подпроекты' no_results: 'Подпроектов нет.' diff --git a/modules/grids/config/locales/crowdin/js-rw.yml b/modules/grids/config/locales/crowdin/js-rw.yml index 4a12262543..a27a965a7c 100644 --- a/modules/grids/config/locales/crowdin/js-rw.yml +++ b/modules/grids/config/locales/crowdin/js-rw.yml @@ -31,10 +31,13 @@ rw: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Project status' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Subprojects' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-si.yml b/modules/grids/config/locales/crowdin/js-si.yml index cc218e4d3e..3f0acc72e2 100644 --- a/modules/grids/config/locales/crowdin/js-si.yml +++ b/modules/grids/config/locales/crowdin/js-si.yml @@ -31,10 +31,13 @@ si: no_results: 'No custom fields have been defined for projects.' project_status: title: 'ව්යාපෘති තත්ත්වය' + not_started: 'Not started' on_track: 'ධාවන පථයේ' off_track: 'ධාවන පථය' at_risk: 'අවදානමට' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'උප ව්යාපෘති' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-sk.yml b/modules/grids/config/locales/crowdin/js-sk.yml index 61a82b5e24..600e6afd30 100644 --- a/modules/grids/config/locales/crowdin/js-sk.yml +++ b/modules/grids/config/locales/crowdin/js-sk.yml @@ -31,10 +31,13 @@ sk: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Stav projektu' + not_started: 'Not started' on_track: 'Na dobrej ceste' off_track: 'Na zlej ceste' at_risk: 'V riziku' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Podprojekty' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-sl.yml b/modules/grids/config/locales/crowdin/js-sl.yml index 5ab03d5ea3..8bea62d440 100644 --- a/modules/grids/config/locales/crowdin/js-sl.yml +++ b/modules/grids/config/locales/crowdin/js-sl.yml @@ -31,10 +31,13 @@ sl: no_results: 'Za projekte niso bila definirana nobena polja po meri. ' project_status: title: 'Status projekta' + not_started: 'Not started' on_track: 'Na poti' off_track: 'Izven poti' at_risk: 'Ogroženo' not_set: 'Ni nastavljeno' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Podprojekti' no_results: 'Ni podprojektov. ' diff --git a/modules/grids/config/locales/crowdin/js-sv.yml b/modules/grids/config/locales/crowdin/js-sv.yml index 5bc1206f44..3ae0025a2b 100644 --- a/modules/grids/config/locales/crowdin/js-sv.yml +++ b/modules/grids/config/locales/crowdin/js-sv.yml @@ -31,10 +31,13 @@ sv: no_results: 'Inga anpassade fält har definierats för projekt.' project_status: title: 'Projektstatus' + not_started: 'Not started' on_track: 'På banan' off_track: 'Utanför banan' at_risk: 'I riskzonen' not_set: 'Ej inställd' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Delprojekt' no_results: 'Inga delprojekt.' diff --git a/modules/grids/config/locales/crowdin/js-th.yml b/modules/grids/config/locales/crowdin/js-th.yml index 1bbbfbed30..78c8f3fe87 100644 --- a/modules/grids/config/locales/crowdin/js-th.yml +++ b/modules/grids/config/locales/crowdin/js-th.yml @@ -31,10 +31,13 @@ th: no_results: 'No custom fields have been defined for projects.' project_status: title: 'สถานะของโครงการ' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'โครงการย่อย' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-tr.yml b/modules/grids/config/locales/crowdin/js-tr.yml index a230e40813..fddd54719d 100644 --- a/modules/grids/config/locales/crowdin/js-tr.yml +++ b/modules/grids/config/locales/crowdin/js-tr.yml @@ -31,10 +31,13 @@ tr: no_results: 'Projeler için özel alan tanımlanmadı.' project_status: title: 'Proje Durumu' + not_started: 'Not started' on_track: 'Takipte' off_track: 'Kapalı parça' at_risk: 'Riskli' not_set: 'Ayarlanmadı' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Alt Projeler' no_results: 'Alt proje yok.' diff --git a/modules/grids/config/locales/crowdin/js-uk.yml b/modules/grids/config/locales/crowdin/js-uk.yml index 6be1e7846c..67103e4682 100644 --- a/modules/grids/config/locales/crowdin/js-uk.yml +++ b/modules/grids/config/locales/crowdin/js-uk.yml @@ -31,10 +31,13 @@ uk: no_results: 'У проектів немає жодних власних полів.' project_status: title: 'Статус Проекту' + not_started: 'Not started' on_track: 'On track' off_track: 'Off track' at_risk: 'At risk' not_set: 'Не встановлено' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Підпроекти' no_results: 'Немає підпроектів.' diff --git a/modules/grids/config/locales/crowdin/js-vi.yml b/modules/grids/config/locales/crowdin/js-vi.yml index cc40fd7a61..dbb79e4c30 100644 --- a/modules/grids/config/locales/crowdin/js-vi.yml +++ b/modules/grids/config/locales/crowdin/js-vi.yml @@ -31,10 +31,13 @@ vi: no_results: 'No custom fields have been defined for projects.' project_status: title: 'Tình trạng dự án' + not_started: 'Not started' on_track: 'Theo dõi' off_track: 'Không theo dõi' at_risk: 'Có rủi ro' not_set: 'Không được thiết lập' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: 'Dự án con' no_results: 'No subprojects.' diff --git a/modules/grids/config/locales/crowdin/js-zh-TW.yml b/modules/grids/config/locales/crowdin/js-zh-TW.yml index a00d32eda8..aa802e542e 100644 --- a/modules/grids/config/locales/crowdin/js-zh-TW.yml +++ b/modules/grids/config/locales/crowdin/js-zh-TW.yml @@ -31,10 +31,13 @@ zh-TW: no_results: 'No custom fields have been defined for projects.' project_status: title: '專案狀態' + not_started: 'Not started' on_track: '進度良好' off_track: '進度脫軌' at_risk: '存在風險' not_set: 'Not set' + finished: 'Finished' + discontinued: 'Discontinued' subprojects: title: '子專案' no_results: 'No subprojects.' From aaeb2dea2cd549df38e904f373b75797377c814e Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Tue, 8 Feb 2022 03:08:09 +0000 Subject: [PATCH 107/118] update locales from crowdin [ci skip] --- config/locales/crowdin/cs.yml | 2 +- config/locales/crowdin/js-cs.yml | 4 ++-- modules/avatars/config/locales/crowdin/js-ru.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 65c5b7473d..64fb873b73 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -1165,7 +1165,7 @@ cs: default_status_in_progress: "Probíhá" default_status_in_specification: "Ve specifikaci" default_status_in_testing: "V testování" - default_status_new: "Nové" + default_status_new: "Nový" default_status_on_hold: "Pozastaven" default_status_rejected: "Odmítnutý" default_status_scheduled: "Naplánováno" diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index e4bbbd0200..edd4942de2 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -419,7 +419,7 @@ cs: label_sort_lower: "Přesunout níž" label_sorting: "Řazení" label_spent_time: "Strávený čas" - label_star_query: "Zabráněno" + label_star_query: "Oblíbená" label_press_enter_to_save: "Stiskněte Enter pro uložení." label_public_query: "Veřejné" label_sum: "Suma" @@ -680,7 +680,7 @@ cs: duplicated: "Duplikováno" blocks: "Bloky" blocked: "Zablokován" - precedes: "Předchází" + precedes: "Je předchúdcem" follows: "Následuje" includes: "Zahrnuje" partof: "Část" diff --git a/modules/avatars/config/locales/crowdin/js-ru.yml b/modules/avatars/config/locales/crowdin/js-ru.yml index d696c14e57..3cf0f890d5 100644 --- a/modules/avatars/config/locales/crowdin/js-ru.yml +++ b/modules/avatars/config/locales/crowdin/js-ru.yml @@ -1,8 +1,8 @@ #English strings go here ru: js: - label_preview: 'Предварительный просмотр' - button_update: 'Обновление' + label_preview: 'Предпросмотр' + button_update: 'Обновить' avatars: label_choose_avatar: "Выбрать аватар из файла" uploading_avatar: "Загрузка аватара." From 8b03d20d9c8c576ae613e613f934f84edb4219bc Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Tue, 8 Feb 2022 12:43:26 +0100 Subject: [PATCH 108/118] Adjust tests to new card design and make id clickable again --- .../features/calendar/op-calendar.service.ts | 4 +++- .../planner/team-planner.component.html | 14 ++------------ .../planner/team-planner.component.ts | 6 ++++-- .../wp-single-card.component.html | 17 +++++++++++------ .../wp-single-card/wp-single-card.component.ts | 7 ++++++- .../global_styles/vendor/_full_calendar.sass | 2 +- .../boards/spec/features/support/board_page.rb | 2 +- .../team_planner_user_interaction_spec.rb | 6 +++--- .../spec/support/pages/team_planner.rb | 2 +- 9 files changed, 32 insertions(+), 28 deletions(-) diff --git a/frontend/src/app/features/calendar/op-calendar.service.ts b/frontend/src/app/features/calendar/op-calendar.service.ts index 8a7b9a8237..6379ac99fa 100644 --- a/frontend/src/app/features/calendar/op-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-calendar.service.ts @@ -274,7 +274,9 @@ export class OpCalendarService extends UntilDestroyedMixin { private openSplitView(event:EventClickArg) { const workPackage = event.event.extendedProps.workPackage as WorkPackageResource; - this.wpTableSelection.setSelection(workPackage.id!, -1); + if (workPackage.id) { + this.wpTableSelection.setSelection(workPackage.id, -1); + } void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html index a3b21e14a9..0461ab3b31 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html @@ -57,11 +57,6 @@ -
-
- - -
-
this.updateEvent(resizeInfo), eventDrop: (dropInfo:EventDropArg) => this.updateEvent(dropInfo), eventReceive: (dropInfo:EventReceiveArg) => this.updateEvent(dropInfo), + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access eventContent: (data:EventContentArg) => this.renderTemplate(this.eventContent, data.event.extendedProps.workPackage.href, data), + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access eventWillUnmount: (data:EventContentArg) => this.unrenderTemplate(data.event.extendedProps.workPackage.href), } as CalendarOptions), ); @@ -385,7 +387,7 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, } } - showResizeHandle(workPackage:WorkPackageResource, date:'start'|'end'):boolean { + isWpDateInCurrentView(workPackage:WorkPackageResource, date:'start'|'end'):boolean { if (workPackage.startDate && workPackage.dueDate) { let dateToCheck; @@ -410,7 +412,7 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, } isStatusClosed(workPackage:WorkPackageResource):boolean { - const status = this.statuses.find((el) => el.id === workPackage.status.id); + const status = this.statuses.find((el) => el.id === (workPackage.status as StatusResource).id); return status ? status.isClosed : false; } diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html index 05ef86d77c..ae452abfc6 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.html @@ -61,14 +61,19 @@
- + - {{wpProjectName(workPackage)}} - - #{{workPackage.id}} - - + + #{{workPackage.id}} + Date: Tue, 8 Feb 2022 05:32:27 +0000 Subject: [PATCH 109/118] Bump i18n-js from 3.9.0 to 3.9.1 Bumps [i18n-js](https://github.com/fnando/i18n-js) from 3.9.0 to 3.9.1. - [Release notes](https://github.com/fnando/i18n-js/releases) - [Changelog](https://github.com/fnando/i18n-js/blob/v3.9.1/CHANGELOG.md) - [Commits](https://github.com/fnando/i18n-js/compare/v3.9.0...v3.9.1) --- updated-dependencies: - dependency-name: i18n-js dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index dde26c73e3..22da2877eb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -544,7 +544,7 @@ GEM httpclient (2.8.3) i18n (1.9.1) concurrent-ruby (~> 1.0) - i18n-js (3.9.0) + i18n-js (3.9.1) i18n (>= 0.6.6) icalendar (2.7.1) ice_cube (~> 0.16) From 20d09cd48921b8172b0925f62969322b78fed781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Tue, 8 Feb 2022 13:28:02 +0100 Subject: [PATCH 110/118] Update README.md --- .../ldap-authentication/ldap-group-synchronization/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/README.md b/docs/system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/README.md index 4b082d123f..bece4611d6 100644 --- a/docs/system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/README.md +++ b/docs/system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/README.md @@ -17,7 +17,7 @@ In OpenProject Enterprise on-premises, you can synchronize LDAP group membership - have set up your LDAP authentication source (See the “[Manage LDAP authentication](../../ldap-authentication/)” guide) - have at least one LDAP entry with a *groupOfNames* object class and at least one *member* reference to an entry within your base DN of your LDAP authentication source. We use the inverse *memberOf* filter to determine the members of a group entry. For the sake of simplicity, we assume that in this guide, your LDAP structure looks like the following: From eeb2b7eefabb593ecc586896896d1357feb48698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Tue, 8 Feb 2022 15:45:01 +0100 Subject: [PATCH 111/118] Fix Generator namespace --- lib/generators/open_project/plugin/plugin_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/open_project/plugin/plugin_generator.rb b/lib/generators/open_project/plugin/plugin_generator.rb index 11bf567c7b..58d1f5c361 100644 --- a/lib/generators/open_project/plugin/plugin_generator.rb +++ b/lib/generators/open_project/plugin/plugin_generator.rb @@ -28,7 +28,7 @@ require 'rails/generators' -class Generators::OpenProject::Plugin::PluginGenerator < Rails::Generators::Base +class OpenProject::PluginGenerator < Rails::Generators::Base source_root File.expand_path('templates', __dir__) argument :plugin_name, type: :string, default: 'openproject-new-plugin' From 5951cf3e5fc8df5c6a212eeb23533f3b85334535 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Tue, 8 Feb 2022 15:28:34 +0100 Subject: [PATCH 112/118] Add lefhook git hooks manager to run rubocop on precommit Install lefthook with `bundle install` Install git hooks with `lefthook install` See https://github.com/evilmartians/lefthook/blob/master/docs/full_guide.md for details --- .gitignore | 3 +++ Gemfile | 3 +++ Gemfile.lock | 2 ++ lefthook.yml | 14 ++++++++++++++ 4 files changed, 22 insertions(+) create mode 100644 lefthook.yml diff --git a/.gitignore b/.gitignore index 0268d401be..902ce45be0 100644 --- a/.gitignore +++ b/.gitignore @@ -118,3 +118,6 @@ structure.sql # Local development direnv files /.envrc /.direnv + +# lefthook.yml user override +lefthook-local.yml diff --git a/Gemfile b/Gemfile index 8c7a4947c0..c8ba282773 100644 --- a/Gemfile +++ b/Gemfile @@ -279,6 +279,9 @@ group :development, :test do gem 'pry-rescue', '~> 1.5.2' gem 'pry-stack_explorer', '~> 0.6.0' + # git hooks manager + gem 'lefthook' + # Brakeman scanner gem 'brakeman', '~> 5.2.0' gem 'danger-brakeman' diff --git a/Gemfile.lock b/Gemfile.lock index 22da2877eb..0e098ceda4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -574,6 +574,7 @@ GEM open4 (~> 1.0) launchy (2.5.0) addressable (~> 2.7) + lefthook (0.7.7) letter_opener (1.7.0) launchy (~> 2.2) listen (3.7.1) @@ -1029,6 +1030,7 @@ DEPENDENCIES json_spec (~> 1.1.4) ladle launchy (~> 2.5.0) + lefthook letter_opener listen (~> 3.7.0) livingstyleguide (~> 2.1.0) diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 0000000000..8fde47c590 --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,14 @@ +# Lefthook configuration +# +# Add commit hooks with `lefthook install` +# +# Refer for explanation to following link: +# https://github.com/evilmartians/lefthook/blob/master/docs/full_guide.md + +pre-commit: + parallel: true + commands: + rubocop: + files: git diff --name-only --staged + glob: "*.rb" + run: bundle exec rubocop --force-exclusion {files} From 3a30d5ee6cf03184aa509ce2738f28d14a419d33 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Tue, 8 Feb 2022 15:59:39 +0100 Subject: [PATCH 113/118] fix command to install lefthook git hooks --- lefthook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lefthook.yml b/lefthook.yml index 8fde47c590..2ab0217702 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -1,6 +1,6 @@ # Lefthook configuration # -# Add commit hooks with `lefthook install` +# Add commit hooks with `bundle exec lefthook install` # # Refer for explanation to following link: # https://github.com/evilmartians/lefthook/blob/master/docs/full_guide.md From fec32c7d60348db21f2aa499aa3789c529ae1375 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Wed, 9 Feb 2022 03:05:10 +0000 Subject: [PATCH 114/118] update locales from crowdin [ci skip] --- config/locales/crowdin/js-lol.yml | 1906 ++++++++--------- config/locales/crowdin/uk.yml | 5 +- .../calendar/config/locales/crowdin/js-uk.yml | 6 +- .../calendar/config/locales/crowdin/uk.yml | 4 +- .../grids/config/locales/crowdin/js-es.yml | 10 +- .../grids/config/locales/crowdin/js-ru.yml | 6 +- .../config/locales/crowdin/js-uk.yml | 26 +- .../config/locales/crowdin/js-af.yml | 4 + .../config/locales/crowdin/js-ar.yml | 4 + .../config/locales/crowdin/js-az.yml | 4 + .../config/locales/crowdin/js-bg.yml | 4 + .../config/locales/crowdin/js-ca.yml | 4 + .../config/locales/crowdin/js-cs.yml | 4 + .../config/locales/crowdin/js-da.yml | 4 + .../config/locales/crowdin/js-de.yml | 4 + .../config/locales/crowdin/js-el.yml | 4 + .../config/locales/crowdin/js-eo.yml | 4 + .../config/locales/crowdin/js-es.yml | 4 + .../config/locales/crowdin/js-et.yml | 4 + .../config/locales/crowdin/js-fa.yml | 4 + .../config/locales/crowdin/js-fi.yml | 4 + .../config/locales/crowdin/js-fil.yml | 4 + .../config/locales/crowdin/js-fr.yml | 4 + .../config/locales/crowdin/js-he.yml | 4 + .../config/locales/crowdin/js-hi.yml | 4 + .../config/locales/crowdin/js-hr.yml | 4 + .../config/locales/crowdin/js-hu.yml | 4 + .../config/locales/crowdin/js-id.yml | 4 + .../config/locales/crowdin/js-it.yml | 4 + .../config/locales/crowdin/js-ja.yml | 4 + .../config/locales/crowdin/js-ko.yml | 4 + .../config/locales/crowdin/js-lol.yml | 4 + .../config/locales/crowdin/js-lt.yml | 4 + .../config/locales/crowdin/js-lv.yml | 4 + .../config/locales/crowdin/js-ne.yml | 4 + .../config/locales/crowdin/js-nl.yml | 4 + .../config/locales/crowdin/js-no.yml | 4 + .../config/locales/crowdin/js-pl.yml | 4 + .../config/locales/crowdin/js-pt.yml | 4 + .../config/locales/crowdin/js-ro.yml | 4 + .../config/locales/crowdin/js-ru.yml | 4 + .../config/locales/crowdin/js-rw.yml | 4 + .../config/locales/crowdin/js-si.yml | 4 + .../config/locales/crowdin/js-sk.yml | 4 + .../config/locales/crowdin/js-sl.yml | 4 + .../config/locales/crowdin/js-sv.yml | 4 + .../config/locales/crowdin/js-th.yml | 4 + .../config/locales/crowdin/js-tr.yml | 4 + .../config/locales/crowdin/js-uk.yml | 4 + .../config/locales/crowdin/js-vi.yml | 4 + .../config/locales/crowdin/js-zh-TW.yml | 4 + 51 files changed, 1158 insertions(+), 981 deletions(-) diff --git a/config/locales/crowdin/js-lol.yml b/config/locales/crowdin/js-lol.yml index dd28b9cfc6..898378d34e 100644 --- a/config/locales/crowdin/js-lol.yml +++ b/config/locales/crowdin/js-lol.yml @@ -22,1140 +22,1140 @@ lol: js: ajax: - hide: "crwdns710628:0crwdne710628:0" - loading: "crwdns710630:0crwdne710630:0" + hide: "crwdns712756:0crwdne712756:0" + loading: "crwdns712758:0crwdne712758:0" attachments: draggable_hint: | - crwdns710632:0crwdne710632:0 + crwdns712760:0crwdne712760:0 autocomplete_select: placeholder: - multi: "crwdns710634:0%{name}crwdne710634:0" - single: "crwdns710636:0%{name}crwdne710636:0" - remove: "crwdns710638:0%{name}crwdne710638:0" - active: "crwdns710640:0%{label}crwdnd710640:0%{name}crwdne710640:0" + multi: "crwdns712762:0%{name}crwdne712762:0" + single: "crwdns712764:0%{name}crwdne712764:0" + remove: "crwdns712766:0%{name}crwdne712766:0" + active: "crwdns712768:0%{label}crwdnd712768:0%{name}crwdne712768:0" backup: - attachments_disabled: crwdns710642:0crwdne710642:0 + attachments_disabled: crwdns712770:0crwdne712770:0 info: > - crwdns710644:0crwdne710644:0 + crwdns712772:0crwdne712772:0 note: > - crwdns710646:0crwdne710646:0 - last_backup: crwdns710648:0crwdne710648:0 - last_backup_from: crwdns710650:0crwdne710650:0 - title: crwdns710652:0crwdne710652:0 - options: crwdns710654:0crwdne710654:0 - include_attachments: crwdns710656:0crwdne710656:0 - download_backup: crwdns710658:0crwdne710658:0 - request_backup: crwdns710660:0crwdne710660:0 - close_popup_title: "crwdns710662:0crwdne710662:0" - close_filter_title: "crwdns710664:0crwdne710664:0" - close_form_title: "crwdns710666:0crwdne710666:0" - button_add_watcher: "crwdns710668:0crwdne710668:0" - button_add: "crwdns710670:0crwdne710670:0" - button_back: "crwdns710672:0crwdne710672:0" - button_back_to_list_view: "crwdns710674:0crwdne710674:0" - button_cancel: "crwdns710676:0crwdne710676:0" - button_close: "crwdns710678:0crwdne710678:0" - button_change_project: "crwdns710680:0crwdne710680:0" - button_check_all: "crwdns710682:0crwdne710682:0" - button_configure-form: "crwdns710684:0crwdne710684:0" - button_confirm: "crwdns710686:0crwdne710686:0" - button_continue: "crwdns710688:0crwdne710688:0" - button_copy: "crwdns710690:0crwdne710690:0" - button_custom-fields: "crwdns710692:0crwdne710692:0" - button_delete: "crwdns710694:0crwdne710694:0" - button_delete_watcher: "crwdns710696:0crwdne710696:0" - button_details_view: "crwdns710698:0crwdne710698:0" - button_duplicate: "crwdns710700:0crwdne710700:0" - button_edit: "crwdns710702:0crwdne710702:0" - button_filter: "crwdns710704:0crwdne710704:0" - button_collapse_all: "crwdns710706:0crwdne710706:0" - button_expand_all: "crwdns710708:0crwdne710708:0" - button_advanced_filter: "crwdns710710:0crwdne710710:0" - button_list_view: "crwdns710712:0crwdne710712:0" - button_show_view: "crwdns710714:0crwdne710714:0" - button_log_time: "crwdns710716:0crwdne710716:0" - button_more: "crwdns710718:0crwdne710718:0" - button_open_details: "crwdns710720:0crwdne710720:0" - button_close_details: "crwdns710722:0crwdne710722:0" - button_open_fullscreen: "crwdns710724:0crwdne710724:0" - button_show_cards: "crwdns710726:0crwdne710726:0" - button_show_list: "crwdns710728:0crwdne710728:0" - button_quote: "crwdns710730:0crwdne710730:0" - button_save: "crwdns710732:0crwdne710732:0" - button_settings: "crwdns710734:0crwdne710734:0" - button_uncheck_all: "crwdns710736:0crwdne710736:0" - button_update: "crwdns710738:0crwdne710738:0" - button_export-pdf: "crwdns710740:0crwdne710740:0" - button_export-atom: "crwdns710742:0crwdne710742:0" - button_create: "crwdns710744:0crwdne710744:0" + crwdns712774:0crwdne712774:0 + last_backup: crwdns712776:0crwdne712776:0 + last_backup_from: crwdns712778:0crwdne712778:0 + title: crwdns712780:0crwdne712780:0 + options: crwdns712782:0crwdne712782:0 + include_attachments: crwdns712784:0crwdne712784:0 + download_backup: crwdns712786:0crwdne712786:0 + request_backup: crwdns712788:0crwdne712788:0 + close_popup_title: "crwdns712790:0crwdne712790:0" + close_filter_title: "crwdns712792:0crwdne712792:0" + close_form_title: "crwdns712794:0crwdne712794:0" + button_add_watcher: "crwdns712796:0crwdne712796:0" + button_add: "crwdns712798:0crwdne712798:0" + button_back: "crwdns712800:0crwdne712800:0" + button_back_to_list_view: "crwdns712802:0crwdne712802:0" + button_cancel: "crwdns712804:0crwdne712804:0" + button_close: "crwdns712806:0crwdne712806:0" + button_change_project: "crwdns712808:0crwdne712808:0" + button_check_all: "crwdns712810:0crwdne712810:0" + button_configure-form: "crwdns712812:0crwdne712812:0" + button_confirm: "crwdns712814:0crwdne712814:0" + button_continue: "crwdns712816:0crwdne712816:0" + button_copy: "crwdns712818:0crwdne712818:0" + button_custom-fields: "crwdns712820:0crwdne712820:0" + button_delete: "crwdns712822:0crwdne712822:0" + button_delete_watcher: "crwdns712824:0crwdne712824:0" + button_details_view: "crwdns712826:0crwdne712826:0" + button_duplicate: "crwdns712828:0crwdne712828:0" + button_edit: "crwdns712830:0crwdne712830:0" + button_filter: "crwdns712832:0crwdne712832:0" + button_collapse_all: "crwdns712834:0crwdne712834:0" + button_expand_all: "crwdns712836:0crwdne712836:0" + button_advanced_filter: "crwdns712838:0crwdne712838:0" + button_list_view: "crwdns712840:0crwdne712840:0" + button_show_view: "crwdns712842:0crwdne712842:0" + button_log_time: "crwdns712844:0crwdne712844:0" + button_more: "crwdns712846:0crwdne712846:0" + button_open_details: "crwdns712848:0crwdne712848:0" + button_close_details: "crwdns712850:0crwdne712850:0" + button_open_fullscreen: "crwdns712852:0crwdne712852:0" + button_show_cards: "crwdns712854:0crwdne712854:0" + button_show_list: "crwdns712856:0crwdne712856:0" + button_quote: "crwdns712858:0crwdne712858:0" + button_save: "crwdns712860:0crwdne712860:0" + button_settings: "crwdns712862:0crwdne712862:0" + button_uncheck_all: "crwdns712864:0crwdne712864:0" + button_update: "crwdns712866:0crwdne712866:0" + button_export-pdf: "crwdns712868:0crwdne712868:0" + button_export-atom: "crwdns712870:0crwdne712870:0" + button_create: "crwdns712872:0crwdne712872:0" card: - add_new: 'crwdns710746:0crwdne710746:0' + add_new: 'crwdns712874:0crwdne712874:0' highlighting: - inline: 'crwdns710748:0crwdne710748:0' - entire_card_by: 'crwdns710750:0crwdne710750:0' - remove_from_list: 'crwdns710752:0crwdne710752:0' - caption_rate_history: "crwdns710754:0crwdne710754:0" + inline: 'crwdns712876:0crwdne712876:0' + entire_card_by: 'crwdns712878:0crwdne712878:0' + remove_from_list: 'crwdns712880:0crwdne712880:0' + caption_rate_history: "crwdns712882:0crwdne712882:0" clipboard: - browser_error: "crwdns710756:0crwdne710756:0" - copied_successful: "crwdns710758:0crwdne710758:0" + browser_error: "crwdns712884:0crwdne712884:0" + copied_successful: "crwdns712886:0crwdne712886:0" chart: - type: 'crwdns710760:0crwdne710760:0' - axis_criteria: 'crwdns710762:0crwdne710762:0' - modal_title: 'crwdns710764:0crwdne710764:0' + type: 'crwdns712888:0crwdne712888:0' + axis_criteria: 'crwdns712890:0crwdne712890:0' + modal_title: 'crwdns712892:0crwdne712892:0' types: - line: 'crwdns710766:0crwdne710766:0' - horizontal_bar: 'crwdns710768:0crwdne710768:0' - bar: 'crwdns710770:0crwdne710770:0' - pie: 'crwdns710772:0crwdne710772:0' - doughnut: 'crwdns710774:0crwdne710774:0' - radar: 'crwdns710776:0crwdne710776:0' - polar_area: 'crwdns710778:0crwdne710778:0' + line: 'crwdns712894:0crwdne712894:0' + horizontal_bar: 'crwdns712896:0crwdne712896:0' + bar: 'crwdns712898:0crwdne712898:0' + pie: 'crwdns712900:0crwdne712900:0' + doughnut: 'crwdns712902:0crwdne712902:0' + radar: 'crwdns712904:0crwdne712904:0' + polar_area: 'crwdns712906:0crwdne712906:0' tabs: - graph_settings: 'crwdns710780:0crwdne710780:0' - dataset: 'crwdns710782:0%{number}crwdne710782:0' + graph_settings: 'crwdns712908:0crwdne712908:0' + dataset: 'crwdns712910:0%{number}crwdne712910:0' errors: - could_not_load: 'crwdns710784:0crwdne710784:0' - description_available_columns: "crwdns710786:0crwdne710786:0" - description_current_position: "crwdns710788:0crwdne710788:0" - description_select_work_package: "crwdns710790:0%{id}crwdne710790:0" - description_selected_columns: "crwdns710792:0crwdne710792:0" - description_subwork_package: "crwdns710794:0%{id}crwdne710794:0" + could_not_load: 'crwdns712912:0crwdne712912:0' + description_available_columns: "crwdns712914:0crwdne712914:0" + description_current_position: "crwdns712916:0crwdne712916:0" + description_select_work_package: "crwdns712918:0%{id}crwdne712918:0" + description_selected_columns: "crwdns712920:0crwdne712920:0" + description_subwork_package: "crwdns712922:0%{id}crwdne712922:0" editor: - preview: 'crwdns710796:0crwdne710796:0' - source_code: 'crwdns710798:0crwdne710798:0' - error_saving_failed: 'crwdns710800:0%{error}crwdne710800:0' - ckeditor_error: 'crwdns710802:0crwdne710802:0' + preview: 'crwdns712924:0crwdne712924:0' + source_code: 'crwdns712926:0crwdne712926:0' + error_saving_failed: 'crwdns712928:0%{error}crwdne712928:0' + ckeditor_error: 'crwdns712930:0crwdne712930:0' mode: - manual: 'crwdns710804:0crwdne710804:0' - wysiwyg: 'crwdns710806:0crwdne710806:0' + manual: 'crwdns712932:0crwdne712932:0' + wysiwyg: 'crwdns712934:0crwdne712934:0' macro: - error: 'crwdns710808:0%{message}crwdne710808:0' + error: 'crwdns712936:0%{message}crwdne712936:0' attribute_reference: - macro_help_tooltip: 'crwdns710810:0crwdne710810:0' - not_found: 'crwdns710812:0crwdne710812:0' - invalid_attribute: "crwdns710814:0%{name}crwdne710814:0" + macro_help_tooltip: 'crwdns712938:0crwdne712938:0' + not_found: 'crwdns712940:0crwdne712940:0' + invalid_attribute: "crwdns712942:0%{name}crwdne712942:0" child_pages: - button: 'crwdns710816:0crwdne710816:0' - include_parent: 'crwdns710818:0crwdne710818:0' - text: 'crwdns710820:0[Placeholder]crwdne710820:0' - page: 'crwdns710822:0crwdne710822:0' - this_page: 'crwdns710824:0crwdne710824:0' + button: 'crwdns712944:0crwdne712944:0' + include_parent: 'crwdns712946:0crwdne712946:0' + text: 'crwdns712948:0[Placeholder]crwdne712948:0' + page: 'crwdns712950:0crwdne712950:0' + this_page: 'crwdns712952:0crwdne712952:0' hint: | - crwdns710826:0crwdne710826:0 + crwdns712954:0crwdne712954:0 code_block: - button: 'crwdns710828:0crwdne710828:0' - title: 'crwdns710830:0crwdne710830:0' - language: 'crwdns710832:0crwdne710832:0' - language_hint: 'crwdns710834:0crwdne710834:0' + button: 'crwdns712956:0crwdne712956:0' + title: 'crwdns712958:0crwdne712958:0' + language: 'crwdns712960:0crwdne712960:0' + language_hint: 'crwdns712962:0crwdne712962:0' dropdown: - macros: 'crwdns710836:0crwdne710836:0' - chose_macro: 'crwdns710838:0crwdne710838:0' - toc: 'crwdns710840:0crwdne710840:0' - toolbar_help: 'crwdns710842:0crwdne710842:0' + macros: 'crwdns712964:0crwdne712964:0' + chose_macro: 'crwdns712966:0crwdne712966:0' + toc: 'crwdns712968:0crwdne712968:0' + toolbar_help: 'crwdns712970:0crwdne712970:0' wiki_page_include: - button: 'crwdns710844:0crwdne710844:0' - text: 'crwdns710846:0[Placeholder]crwdne710846:0' - page: 'crwdns710848:0crwdne710848:0' - not_set: 'crwdns710850:0crwdne710850:0' + button: 'crwdns712972:0crwdne712972:0' + text: 'crwdns712974:0[Placeholder]crwdne712974:0' + page: 'crwdns712976:0crwdne712976:0' + not_set: 'crwdns712978:0crwdne712978:0' hint: | - crwdns710852:0crwdne710852:0 + crwdns712980:0crwdne712980:0 work_package_button: - button: 'crwdns710854:0crwdne710854:0' - type: 'crwdns710856:0crwdne710856:0' - button_style: 'crwdns710858:0crwdne710858:0' - button_style_hint: 'crwdns710860:0crwdne710860:0' - without_type: 'crwdns710862:0crwdne710862:0' - with_type: 'crwdns710864:0%{typename}crwdne710864:0' + button: 'crwdns712982:0crwdne712982:0' + type: 'crwdns712984:0crwdne712984:0' + button_style: 'crwdns712986:0crwdne712986:0' + button_style_hint: 'crwdns712988:0crwdne712988:0' + without_type: 'crwdns712990:0crwdne712990:0' + with_type: 'crwdns712992:0%{typename}crwdne712992:0' embedded_table: - button: 'crwdns710866:0crwdne710866:0' - text: 'crwdns710868:0[Placeholder]crwdne710868:0' + button: 'crwdns712994:0crwdne712994:0' + text: 'crwdns712996:0[Placeholder]crwdne712996:0' embedded_calendar: - text: 'crwdns710870:0[Placeholder]crwdne710870:0' + text: 'crwdns712998:0[Placeholder]crwdne712998:0' admin: type_form: - custom_field: 'crwdns710872:0crwdne710872:0' - inactive: 'crwdns710874:0crwdne710874:0' - drag_to_activate: "crwdns710876:0crwdne710876:0" - add_group: "crwdns710878:0crwdne710878:0" - add_table: "crwdns710880:0crwdne710880:0" - edit_query: 'crwdns710882:0crwdne710882:0' - new_group: 'crwdns710884:0crwdne710884:0' - reset_to_defaults: 'crwdns710886:0crwdne710886:0' + custom_field: 'crwdns713000:0crwdne713000:0' + inactive: 'crwdns713002:0crwdne713002:0' + drag_to_activate: "crwdns713004:0crwdne713004:0" + add_group: "crwdns713006:0crwdne713006:0" + add_table: "crwdns713008:0crwdne713008:0" + edit_query: 'crwdns713010:0crwdne713010:0' + new_group: 'crwdns713012:0crwdne713012:0' + reset_to_defaults: 'crwdns713014:0crwdne713014:0' enterprise: - text_reprieve_days_left: "crwdns710888:0%{days}crwdne710888:0" - text_expired: "crwdns710890:0crwdne710890:0" + text_reprieve_days_left: "crwdns713016:0%{days}crwdne713016:0" + text_expired: "crwdns713018:0crwdne713018:0" trial: - confirmation: "crwdns710892:0crwdne710892:0" + confirmation: "crwdns713020:0crwdne713020:0" confirmation_info: > - crwdns710894:0%{date}crwdnd710894:0%{email}crwdne710894:0 + crwdns713022:0%{date}crwdnd713022:0%{email}crwdne713022:0 form: general_consent: > - crwdns710896:0%{link_terms}crwdnd710896:0%{link_privacy}crwdne710896:0 - invalid_email: "crwdns710898:0crwdne710898:0" - label_company: "crwdns710900:0crwdne710900:0" - label_first_name: "crwdns710902:0crwdne710902:0" - label_last_name: "crwdns710904:0crwdne710904:0" - label_domain: "crwdns710906:0crwdne710906:0" - label_subscriber: "crwdns710908:0crwdne710908:0" - label_maximum_users: "crwdns710910:0crwdne710910:0" - label_starts_at: "crwdns710912:0crwdne710912:0" - label_expires_at: "crwdns710914:0crwdne710914:0" - receive_newsletter: crwdns710916:0%{link}crwdne710916:0 - taken_domain: crwdns710918:0crwdne710918:0 - taken_email: crwdns710920:0crwdne710920:0 - email_not_received: "crwdns710922:0crwdne710922:0" - try_another_email: "crwdns710924:0crwdne710924:0" - next_steps: "crwdns710926:0crwdne710926:0" - resend_link: "crwdns710928:0crwdne710928:0" - resend_success: "crwdns710930:0crwdne710930:0" - resend_warning: "crwdns710932:0crwdne710932:0" - session_timeout: "crwdns710934:0crwdne710934:0" - status_label: "crwdns710936:0crwdne710936:0" - status_confirmed: "crwdns710938:0crwdne710938:0" - status_waiting: "crwdns710940:0crwdne710940:0" - test_ee: "crwdns710942:0crwdne710942:0" - quick_overview: "crwdns710944:0crwdne710944:0" + crwdns713024:0%{link_terms}crwdnd713024:0%{link_privacy}crwdne713024:0 + invalid_email: "crwdns713026:0crwdne713026:0" + label_company: "crwdns713028:0crwdne713028:0" + label_first_name: "crwdns713030:0crwdne713030:0" + label_last_name: "crwdns713032:0crwdne713032:0" + label_domain: "crwdns713034:0crwdne713034:0" + label_subscriber: "crwdns713036:0crwdne713036:0" + label_maximum_users: "crwdns713038:0crwdne713038:0" + label_starts_at: "crwdns713040:0crwdne713040:0" + label_expires_at: "crwdns713042:0crwdne713042:0" + receive_newsletter: crwdns713044:0%{link}crwdne713044:0 + taken_domain: crwdns713046:0crwdne713046:0 + taken_email: crwdns713048:0crwdne713048:0 + email_not_received: "crwdns713050:0crwdne713050:0" + try_another_email: "crwdns713052:0crwdne713052:0" + next_steps: "crwdns713054:0crwdne713054:0" + resend_link: "crwdns713056:0crwdne713056:0" + resend_success: "crwdns713058:0crwdne713058:0" + resend_warning: "crwdns713060:0crwdne713060:0" + session_timeout: "crwdns713062:0crwdne713062:0" + status_label: "crwdns713064:0crwdne713064:0" + status_confirmed: "crwdns713066:0crwdne713066:0" + status_waiting: "crwdns713068:0crwdne713068:0" + test_ee: "crwdns713070:0crwdne713070:0" + quick_overview: "crwdns713072:0crwdne713072:0" upsale: - become_hero: "crwdns710946:0crwdne710946:0" + become_hero: "crwdns713074:0crwdne713074:0" benefits: - description: "crwdns710948:0crwdne710948:0" - high_security: "crwdns710950:0crwdne710950:0" - high_security_text: "crwdns710952:0crwdne710952:0" - installation: "crwdns710954:0crwdne710954:0" - installation_text: "crwdns710956:0crwdne710956:0" - premium_features: "crwdns710958:0crwdne710958:0" - premium_features_text: "crwdns710960:0crwdne710960:0" - professional_support: "crwdns710962:0crwdne710962:0" - professional_support_text: "crwdns710964:0crwdne710964:0" - button_start_trial: "crwdns710966:0crwdne710966:0" - button_book_now: "crwdns710968:0crwdne710968:0" + description: "crwdns713076:0crwdne713076:0" + high_security: "crwdns713078:0crwdne713078:0" + high_security_text: "crwdns713080:0crwdne713080:0" + installation: "crwdns713082:0crwdne713082:0" + installation_text: "crwdns713084:0crwdne713084:0" + premium_features: "crwdns713086:0crwdne713086:0" + premium_features_text: "crwdns713088:0crwdne713088:0" + professional_support: "crwdns713090:0crwdne713090:0" + professional_support_text: "crwdns713092:0crwdne713092:0" + button_start_trial: "crwdns713094:0crwdne713094:0" + button_book_now: "crwdns713096:0crwdne713096:0" confidence: > - crwdns710970:0crwdne710970:0 - link_quote: "crwdns710972:0crwdne710972:0" + crwdns713098:0crwdne713098:0 + link_quote: "crwdns713100:0crwdne713100:0" text: > - crwdns710974:0crwdne710974:0 - unlimited: "crwdns710976:0crwdne710976:0" - you_contribute: "crwdns710978:0crwdne710978:0" + crwdns713102:0crwdne713102:0 + unlimited: "crwdns713104:0crwdne713104:0" + you_contribute: "crwdns713106:0crwdne713106:0" custom_actions: date: - specific: 'crwdns710980:0crwdne710980:0' - current_date: 'crwdns710982:0crwdne710982:0' + specific: 'crwdns713108:0crwdne713108:0' + current_date: 'crwdns713110:0crwdne713110:0' error: - internal: "crwdns710984:0crwdne710984:0" - cannot_save_changes_with_message: "crwdns710986:0%{error}crwdne710986:0" - query_saving: "crwdns710988:0crwdne710988:0" - embedded_table_loading: "crwdns710990:0%{message}crwdne710990:0" - enumeration_activities: "crwdns710992:0crwdne710992:0" - enumeration_doc_categories: "crwdns710994:0crwdne710994:0" - enumeration_work_package_priorities: "crwdns710996:0crwdne710996:0" + internal: "crwdns713112:0crwdne713112:0" + cannot_save_changes_with_message: "crwdns713114:0%{error}crwdne713114:0" + query_saving: "crwdns713116:0crwdne713116:0" + embedded_table_loading: "crwdns713118:0%{message}crwdne713118:0" + enumeration_activities: "crwdns713120:0crwdne713120:0" + enumeration_doc_categories: "crwdns713122:0crwdne713122:0" + enumeration_work_package_priorities: "crwdns713124:0crwdne713124:0" filter: description: - text_open_filter: "crwdns710998:0crwdne710998:0" - text_close_filter: "crwdns711000:0crwdne711000:0" - noneElement: "crwdns711002:0crwdne711002:0" + text_open_filter: "crwdns713126:0crwdne713126:0" + text_close_filter: "crwdns713128:0crwdne713128:0" + noneElement: "crwdns713130:0crwdne713130:0" time_zone_converted: - two_values: "crwdns711004:0%{from}crwdnd711004:0%{to}crwdne711004:0" - only_start: "crwdns711006:0%{from}crwdne711006:0" - only_end: "crwdns711008:0%{to}crwdne711008:0" - value_spacer: "crwdns711010:0crwdne711010:0" + two_values: "crwdns713132:0%{from}crwdnd713132:0%{to}crwdne713132:0" + only_start: "crwdns713134:0%{from}crwdne713134:0" + only_end: "crwdns713136:0%{to}crwdne713136:0" + value_spacer: "crwdns713138:0crwdne713138:0" sorting: criteria: - one: "crwdns711012:0crwdne711012:0" - two: "crwdns711014:0crwdne711014:0" - three: "crwdns711016:0crwdne711016:0" - upsale_for_more: "crwdns711018:0crwdne711018:0" - upsale_link: 'crwdns711020:0crwdne711020:0' - general_text_no: "crwdns711022:0crwdne711022:0" - general_text_yes: "crwdns711024:0crwdne711024:0" - general_text_No: "crwdns711026:0crwdne711026:0" - general_text_Yes: "crwdns711028:0crwdne711028:0" + one: "crwdns713140:0crwdne713140:0" + two: "crwdns713142:0crwdne713142:0" + three: "crwdns713144:0crwdne713144:0" + upsale_for_more: "crwdns713146:0crwdne713146:0" + upsale_link: 'crwdns713148:0crwdne713148:0' + general_text_no: "crwdns713150:0crwdne713150:0" + general_text_yes: "crwdns713152:0crwdne713152:0" + general_text_No: "crwdns713154:0crwdne713154:0" + general_text_Yes: "crwdns713156:0crwdne713156:0" hal: error: - update_conflict_refresh: "crwdns711030:0crwdne711030:0" - edit_prohibited: "crwdns711032:0%{attribute}crwdne711032:0" + update_conflict_refresh: "crwdns713158:0crwdne713158:0" + edit_prohibited: "crwdns713160:0%{attribute}crwdne713160:0" format: - date: "crwdns711034:0%{attribute}crwdne711034:0" - general: "crwdns711036:0crwdne711036:0" + date: "crwdns713162:0%{attribute}crwdne713162:0" + general: "crwdns713164:0crwdne713164:0" homescreen: blocks: new_features: - text_new_features: "crwdns711038:0crwdne711038:0" - learn_about: "crwdns711040:0crwdne711040:0" + text_new_features: "crwdns713166:0crwdne713166:0" + learn_about: "crwdns713168:0crwdne713168:0" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': standard: - learn_about_link: crwdns711042:0crwdne711042:0 + learn_about_link: crwdns713170:0crwdne713170:0 new_features_html: > - crwdns711044:0%{list_styling_class}crwdne711044:0 + crwdns713172:0%{list_styling_class}crwdne713172:0 bim: - learn_about_link: crwdns711046:0crwdne711046:0 + learn_about_link: crwdns713174:0crwdne713174:0 new_features_html: > - crwdns711048:0%{list_styling_class}crwdne711048:0 - label_activate: "crwdns711050:0crwdne711050:0" - label_add_column_after: "crwdns711052:0crwdne711052:0" - label_add_column_before: "crwdns711054:0crwdne711054:0" - label_add_columns: "crwdns711056:0crwdne711056:0" - label_add_comment: "crwdns711058:0crwdne711058:0" - label_add_comment_title: "crwdns711060:0crwdne711060:0" - label_add_row_after: "crwdns711062:0crwdne711062:0" - label_add_row_before: "crwdns711064:0crwdne711064:0" - label_add_selected_columns: "crwdns711066:0crwdne711066:0" - label_added_by: "crwdns711068:0crwdne711068:0" - label_added_time_by: "crwdns711070:0%{authorLink}crwdnd711070:0%{author}crwdnd711070:0%{age}crwdne711070:0" - label_ago: "crwdns711072:0crwdne711072:0" - label_all: "crwdns711074:0crwdne711074:0" - label_all_work_packages: "crwdns711076:0crwdne711076:0" - label_and: "crwdns711078:0crwdne711078:0" - label_ascending: "crwdns711080:0crwdne711080:0" - label_author: "crwdns711082:0%{user}crwdne711082:0" - label_avatar: "crwdns711084:0crwdne711084:0" - label_between: "crwdns711086:0crwdne711086:0" - label_board: "crwdns711088:0crwdne711088:0" - label_board_locked: "crwdns711090:0crwdne711090:0" - label_board_plural: "crwdns711092:0crwdne711092:0" - label_board_sticky: "crwdns711094:0crwdne711094:0" - label_change: "crwdns711096:0crwdne711096:0" - label_create: "crwdns711098:0crwdne711098:0" - label_create_work_package: "crwdns711100:0crwdne711100:0" - label_created_by: "crwdns711102:0crwdne711102:0" - label_date: "crwdns711104:0crwdne711104:0" - label_date_with_format: "crwdns711106:0%{date_attribute}crwdnd711106:0%{format}crwdne711106:0" - label_deactivate: "crwdns711108:0crwdne711108:0" - label_descending: "crwdns711110:0crwdne711110:0" - label_description: "crwdns711112:0crwdne711112:0" - label_details: "crwdns711114:0crwdne711114:0" - label_display: "crwdns711116:0crwdne711116:0" - label_cancel_comment: "crwdns711118:0crwdne711118:0" - label_closed_work_packages: "crwdns711120:0crwdne711120:0" - label_collapse: "crwdns711122:0crwdne711122:0" - label_collapsed: "crwdns711124:0crwdne711124:0" - label_collapse_all: "crwdns711126:0crwdne711126:0" - label_comment: "crwdns711128:0crwdne711128:0" - label_committed_at: "crwdns711130:0%{committed_revision_link}crwdnd711130:0%{date}crwdne711130:0" - label_committed_link: "crwdns711132:0%{revision_identifier}crwdne711132:0" - label_contains: "crwdns711134:0crwdne711134:0" - label_created_on: "crwdns711136:0crwdne711136:0" - label_edit_comment: "crwdns711138:0crwdne711138:0" - label_edit_status: "crwdns711140:0crwdne711140:0" - label_email: "crwdns711142:0crwdne711142:0" - label_equals: "crwdns711144:0crwdne711144:0" - label_expand: "crwdns711146:0crwdne711146:0" - label_expanded: "crwdns711148:0crwdne711148:0" - label_expand_all: "crwdns711150:0crwdne711150:0" - label_expand_project_menu: "crwdns711152:0crwdne711152:0" - label_export: "crwdns711154:0crwdne711154:0" - label_export_preparing: "crwdns711156:0crwdne711156:0" - label_filename: "crwdns711158:0crwdne711158:0" - label_filesize: "crwdns711160:0crwdne711160:0" - label_general: "crwdns711162:0crwdne711162:0" - label_global_roles: "crwdns711164:0crwdne711164:0" - label_greater_or_equal: "crwdns711166:0crwdne711166:0" - label_group: 'crwdns711168:0crwdne711168:0' - label_group_by: "crwdns711170:0crwdne711170:0" - label_group_plural: "crwdns711172:0crwdne711172:0" - label_hide_attributes: "crwdns711174:0crwdne711174:0" - label_hide_column: "crwdns711176:0crwdne711176:0" - label_hide_project_menu: "crwdns711178:0crwdne711178:0" - label_in: "crwdns711180:0crwdne711180:0" - label_in_less_than: "crwdns711182:0crwdne711182:0" - label_in_more_than: "crwdns711184:0crwdne711184:0" - label_incoming_emails: "crwdns711186:0crwdne711186:0" - label_information_plural: "crwdns711188:0crwdne711188:0" - label_import: "crwdns711190:0crwdne711190:0" - label_latest_activity: "crwdns711192:0crwdne711192:0" - label_last_updated_on: "crwdns711194:0crwdne711194:0" - label_learn_more_link: "crwdns711196:0crwdne711196:0" - label_less_or_equal: "crwdns711198:0crwdne711198:0" - label_less_than_ago: "crwdns711200:0crwdne711200:0" - label_loading: "crwdns711202:0crwdne711202:0" - label_mail_notification: "crwdns711204:0crwdne711204:0" - label_me: "crwdns711206:0crwdne711206:0" - label_meeting_agenda: "crwdns711208:0crwdne711208:0" - label_meeting_minutes: "crwdns711210:0crwdne711210:0" - label_menu_collapse: "crwdns711212:0crwdne711212:0" - label_menu_expand: "crwdns711214:0crwdne711214:0" - label_more_than_ago: "crwdns711216:0crwdne711216:0" - label_next: "crwdns711218:0crwdne711218:0" - label_no_color: "crwdns711220:0crwdne711220:0" - label_no_data: "crwdns711222:0crwdne711222:0" - label_no_due_date: "crwdns711224:0crwdne711224:0" - label_no_start_date: "crwdns711226:0crwdne711226:0" - label_no_value: "crwdns711228:0crwdne711228:0" - label_none: "crwdns711230:0crwdne711230:0" - label_not_contains: "crwdns711232:0crwdne711232:0" - label_not_equals: "crwdns711234:0crwdne711234:0" - label_on: "crwdns711236:0crwdne711236:0" - label_open_menu: "crwdns711238:0crwdne711238:0" - label_open_context_menu: "crwdns711240:0crwdne711240:0" - label_open_work_packages: "crwdns711242:0crwdne711242:0" - label_password: "crwdns711244:0crwdne711244:0" - label_previous: "crwdns711246:0crwdne711246:0" - label_per_page: "crwdns711248:0crwdne711248:0" - label_please_wait: "crwdns711250:0crwdne711250:0" - label_project_plural: "crwdns711252:0crwdne711252:0" - label_visibility_settings: "crwdns711254:0crwdne711254:0" - label_quote_comment: "crwdns711256:0crwdne711256:0" - label_recent: "crwdns711258:0crwdne711258:0" - label_reset: "crwdns711260:0crwdne711260:0" - label_remove: "crwdns711262:0crwdne711262:0" - label_remove_column: "crwdns711264:0crwdne711264:0" - label_remove_columns: "crwdns711266:0crwdne711266:0" - label_remove_row: "crwdns711268:0crwdne711268:0" - label_report: "crwdns711270:0crwdne711270:0" - label_repository_plural: "crwdns711272:0crwdne711272:0" - label_save_as: "crwdns711274:0crwdne711274:0" - label_select_watcher: "crwdns711276:0crwdne711276:0" - label_selected_filter_list: "crwdns711278:0crwdne711278:0" - label_show_attributes: "crwdns711280:0crwdne711280:0" - label_show_in_menu: "crwdns711282:0crwdne711282:0" - label_sort_by: "crwdns711284:0crwdne711284:0" - label_sorted_by: "crwdns711286:0crwdne711286:0" - label_sort_higher: "crwdns711288:0crwdne711288:0" - label_sort_lower: "crwdns711290:0crwdne711290:0" - label_sorting: "crwdns711292:0crwdne711292:0" - label_spent_time: "crwdns711294:0crwdne711294:0" - label_star_query: "crwdns711296:0crwdne711296:0" - label_press_enter_to_save: "crwdns711298:0crwdne711298:0" - label_public_query: "crwdns711300:0crwdne711300:0" - label_sum: "crwdns711302:0crwdne711302:0" - label_sum_for: "crwdns711304:0crwdne711304:0" - label_total_sum: "crwdns711306:0crwdne711306:0" - label_subject: "crwdns711308:0crwdne711308:0" - label_this_week: "crwdns711310:0crwdne711310:0" - label_today: "crwdns711312:0crwdne711312:0" - label_time_entry_plural: "crwdns711314:0crwdne711314:0" - label_up: "crwdns711316:0crwdne711316:0" - label_user_plural: "crwdns711318:0crwdne711318:0" - label_activity_show_only_comments: "crwdns711320:0crwdne711320:0" - label_activity_show_all: "crwdns711322:0crwdne711322:0" - label_total_progress: "crwdns711324:0%{percent}crwdne711324:0" - label_total_amount: "crwdns711326:0%{amount}crwdne711326:0" - label_updated_on: "crwdns711328:0crwdne711328:0" - label_value_derived_from_children: "crwdns711330:0crwdne711330:0" - label_children_derived_duration: "crwdns711332:0crwdne711332:0" - label_warning: "crwdns711334:0crwdne711334:0" - label_work_package: "crwdns711336:0crwdne711336:0" - label_work_package_parent: "crwdns711338:0crwdne711338:0" - label_work_package_plural: "crwdns711340:0crwdne711340:0" - label_watch: "crwdns711342:0crwdne711342:0" - label_watch_work_package: "crwdns711344:0crwdne711344:0" - label_watcher_added_successfully: "crwdns711346:0crwdne711346:0" - label_watcher_deleted_successfully: "crwdns711348:0crwdne711348:0" - label_work_package_details_you_are_here: "crwdns711350:0%{tab}crwdnd711350:0%{type}crwdnd711350:0%{subject}crwdne711350:0" - label_unwatch: "crwdns711352:0crwdne711352:0" - label_unwatch_work_package: "crwdns711354:0crwdne711354:0" - label_uploaded_by: "crwdns711356:0crwdne711356:0" - label_default_queries: "crwdns711358:0crwdne711358:0" - label_starred_queries: "crwdns711360:0crwdne711360:0" - label_global_queries: "crwdns711362:0crwdne711362:0" - label_custom_queries: "crwdns711364:0crwdne711364:0" - label_create_new_query: "crwdns711366:0crwdne711366:0" - label_columns: "crwdns711368:0crwdne711368:0" - label_attachments: crwdns711370:0crwdne711370:0 - label_drop_files: crwdns711372:0crwdne711372:0 - label_drop_files_hint: crwdns711374:0crwdne711374:0 - label_drop_folders_hint: crwdns711376:0crwdne711376:0 - label_add_attachments: "crwdns711378:0crwdne711378:0" - label_formattable_attachment_hint: "crwdns711380:0crwdne711380:0" - label_remove_file: "crwdns711382:0%{fileName}crwdne711382:0" - label_remove_watcher: "crwdns711384:0%{name}crwdne711384:0" - label_remove_all_files: crwdns711386:0crwdne711386:0 - label_add_description: "crwdns711388:0%{file}crwdne711388:0" - label_upload_notification: "crwdns711390:0crwdne711390:0" - label_work_package_upload_notification: "crwdns711392:0%{id}crwdnd711392:0%{subject}crwdne711392:0" - label_wp_id_added_by: "crwdns711394:0%{id}crwdnd711394:0%{author}crwdne711394:0" - label_files_to_upload: "crwdns711396:0crwdne711396:0" - label_rejected_files: "crwdns711398:0crwdne711398:0" - label_rejected_files_reason: "crwdns711400:0%{maximumFilesize}crwdne711400:0" - label_wait: "crwdns711402:0crwdne711402:0" - label_upload_counter: "crwdns711404:0%{done}crwdnd711404:0%{count}crwdne711404:0" - label_validation_error: "crwdns711406:0crwdne711406:0" - label_version_plural: "crwdns711408:0crwdne711408:0" - label_view_has_changed: "crwdns711410:0crwdne711410:0" + crwdns713176:0%{list_styling_class}crwdne713176:0 + label_activate: "crwdns713178:0crwdne713178:0" + label_add_column_after: "crwdns713180:0crwdne713180:0" + label_add_column_before: "crwdns713182:0crwdne713182:0" + label_add_columns: "crwdns713184:0crwdne713184:0" + label_add_comment: "crwdns713186:0crwdne713186:0" + label_add_comment_title: "crwdns713188:0crwdne713188:0" + label_add_row_after: "crwdns713190:0crwdne713190:0" + label_add_row_before: "crwdns713192:0crwdne713192:0" + label_add_selected_columns: "crwdns713194:0crwdne713194:0" + label_added_by: "crwdns713196:0crwdne713196:0" + label_added_time_by: "crwdns713198:0%{authorLink}crwdnd713198:0%{author}crwdnd713198:0%{age}crwdne713198:0" + label_ago: "crwdns713200:0crwdne713200:0" + label_all: "crwdns713202:0crwdne713202:0" + label_all_work_packages: "crwdns713204:0crwdne713204:0" + label_and: "crwdns713206:0crwdne713206:0" + label_ascending: "crwdns713208:0crwdne713208:0" + label_author: "crwdns713210:0%{user}crwdne713210:0" + label_avatar: "crwdns713212:0crwdne713212:0" + label_between: "crwdns713214:0crwdne713214:0" + label_board: "crwdns713216:0crwdne713216:0" + label_board_locked: "crwdns713218:0crwdne713218:0" + label_board_plural: "crwdns713220:0crwdne713220:0" + label_board_sticky: "crwdns713222:0crwdne713222:0" + label_change: "crwdns713224:0crwdne713224:0" + label_create: "crwdns713226:0crwdne713226:0" + label_create_work_package: "crwdns713228:0crwdne713228:0" + label_created_by: "crwdns713230:0crwdne713230:0" + label_date: "crwdns713232:0crwdne713232:0" + label_date_with_format: "crwdns713234:0%{date_attribute}crwdnd713234:0%{format}crwdne713234:0" + label_deactivate: "crwdns713236:0crwdne713236:0" + label_descending: "crwdns713238:0crwdne713238:0" + label_description: "crwdns713240:0crwdne713240:0" + label_details: "crwdns713242:0crwdne713242:0" + label_display: "crwdns713244:0crwdne713244:0" + label_cancel_comment: "crwdns713246:0crwdne713246:0" + label_closed_work_packages: "crwdns713248:0crwdne713248:0" + label_collapse: "crwdns713250:0crwdne713250:0" + label_collapsed: "crwdns713252:0crwdne713252:0" + label_collapse_all: "crwdns713254:0crwdne713254:0" + label_comment: "crwdns713256:0crwdne713256:0" + label_committed_at: "crwdns713258:0%{committed_revision_link}crwdnd713258:0%{date}crwdne713258:0" + label_committed_link: "crwdns713260:0%{revision_identifier}crwdne713260:0" + label_contains: "crwdns713262:0crwdne713262:0" + label_created_on: "crwdns713264:0crwdne713264:0" + label_edit_comment: "crwdns713266:0crwdne713266:0" + label_edit_status: "crwdns713268:0crwdne713268:0" + label_email: "crwdns713270:0crwdne713270:0" + label_equals: "crwdns713272:0crwdne713272:0" + label_expand: "crwdns713274:0crwdne713274:0" + label_expanded: "crwdns713276:0crwdne713276:0" + label_expand_all: "crwdns713278:0crwdne713278:0" + label_expand_project_menu: "crwdns713280:0crwdne713280:0" + label_export: "crwdns713282:0crwdne713282:0" + label_export_preparing: "crwdns713284:0crwdne713284:0" + label_filename: "crwdns713286:0crwdne713286:0" + label_filesize: "crwdns713288:0crwdne713288:0" + label_general: "crwdns713290:0crwdne713290:0" + label_global_roles: "crwdns713292:0crwdne713292:0" + label_greater_or_equal: "crwdns713294:0crwdne713294:0" + label_group: 'crwdns713296:0crwdne713296:0' + label_group_by: "crwdns713298:0crwdne713298:0" + label_group_plural: "crwdns713300:0crwdne713300:0" + label_hide_attributes: "crwdns713302:0crwdne713302:0" + label_hide_column: "crwdns713304:0crwdne713304:0" + label_hide_project_menu: "crwdns713306:0crwdne713306:0" + label_in: "crwdns713308:0crwdne713308:0" + label_in_less_than: "crwdns713310:0crwdne713310:0" + label_in_more_than: "crwdns713312:0crwdne713312:0" + label_incoming_emails: "crwdns713314:0crwdne713314:0" + label_information_plural: "crwdns713316:0crwdne713316:0" + label_import: "crwdns713318:0crwdne713318:0" + label_latest_activity: "crwdns713320:0crwdne713320:0" + label_last_updated_on: "crwdns713322:0crwdne713322:0" + label_learn_more_link: "crwdns713324:0crwdne713324:0" + label_less_or_equal: "crwdns713326:0crwdne713326:0" + label_less_than_ago: "crwdns713328:0crwdne713328:0" + label_loading: "crwdns713330:0crwdne713330:0" + label_mail_notification: "crwdns713332:0crwdne713332:0" + label_me: "crwdns713334:0crwdne713334:0" + label_meeting_agenda: "crwdns713336:0crwdne713336:0" + label_meeting_minutes: "crwdns713338:0crwdne713338:0" + label_menu_collapse: "crwdns713340:0crwdne713340:0" + label_menu_expand: "crwdns713342:0crwdne713342:0" + label_more_than_ago: "crwdns713344:0crwdne713344:0" + label_next: "crwdns713346:0crwdne713346:0" + label_no_color: "crwdns713348:0crwdne713348:0" + label_no_data: "crwdns713350:0crwdne713350:0" + label_no_due_date: "crwdns713352:0crwdne713352:0" + label_no_start_date: "crwdns713354:0crwdne713354:0" + label_no_value: "crwdns713356:0crwdne713356:0" + label_none: "crwdns713358:0crwdne713358:0" + label_not_contains: "crwdns713360:0crwdne713360:0" + label_not_equals: "crwdns713362:0crwdne713362:0" + label_on: "crwdns713364:0crwdne713364:0" + label_open_menu: "crwdns713366:0crwdne713366:0" + label_open_context_menu: "crwdns713368:0crwdne713368:0" + label_open_work_packages: "crwdns713370:0crwdne713370:0" + label_password: "crwdns713372:0crwdne713372:0" + label_previous: "crwdns713374:0crwdne713374:0" + label_per_page: "crwdns713376:0crwdne713376:0" + label_please_wait: "crwdns713378:0crwdne713378:0" + label_project_plural: "crwdns713380:0crwdne713380:0" + label_visibility_settings: "crwdns713382:0crwdne713382:0" + label_quote_comment: "crwdns713384:0crwdne713384:0" + label_recent: "crwdns713386:0crwdne713386:0" + label_reset: "crwdns713388:0crwdne713388:0" + label_remove: "crwdns713390:0crwdne713390:0" + label_remove_column: "crwdns713392:0crwdne713392:0" + label_remove_columns: "crwdns713394:0crwdne713394:0" + label_remove_row: "crwdns713396:0crwdne713396:0" + label_report: "crwdns713398:0crwdne713398:0" + label_repository_plural: "crwdns713400:0crwdne713400:0" + label_save_as: "crwdns713402:0crwdne713402:0" + label_select_watcher: "crwdns713404:0crwdne713404:0" + label_selected_filter_list: "crwdns713406:0crwdne713406:0" + label_show_attributes: "crwdns713408:0crwdne713408:0" + label_show_in_menu: "crwdns713410:0crwdne713410:0" + label_sort_by: "crwdns713412:0crwdne713412:0" + label_sorted_by: "crwdns713414:0crwdne713414:0" + label_sort_higher: "crwdns713416:0crwdne713416:0" + label_sort_lower: "crwdns713418:0crwdne713418:0" + label_sorting: "crwdns713420:0crwdne713420:0" + label_spent_time: "crwdns713422:0crwdne713422:0" + label_star_query: "crwdns713424:0crwdne713424:0" + label_press_enter_to_save: "crwdns713426:0crwdne713426:0" + label_public_query: "crwdns713428:0crwdne713428:0" + label_sum: "crwdns713430:0crwdne713430:0" + label_sum_for: "crwdns713432:0crwdne713432:0" + label_total_sum: "crwdns713434:0crwdne713434:0" + label_subject: "crwdns713436:0crwdne713436:0" + label_this_week: "crwdns713438:0crwdne713438:0" + label_today: "crwdns713440:0crwdne713440:0" + label_time_entry_plural: "crwdns713442:0crwdne713442:0" + label_up: "crwdns713444:0crwdne713444:0" + label_user_plural: "crwdns713446:0crwdne713446:0" + label_activity_show_only_comments: "crwdns713448:0crwdne713448:0" + label_activity_show_all: "crwdns713450:0crwdne713450:0" + label_total_progress: "crwdns713452:0%{percent}crwdne713452:0" + label_total_amount: "crwdns713454:0%{amount}crwdne713454:0" + label_updated_on: "crwdns713456:0crwdne713456:0" + label_value_derived_from_children: "crwdns713458:0crwdne713458:0" + label_children_derived_duration: "crwdns713460:0crwdne713460:0" + label_warning: "crwdns713462:0crwdne713462:0" + label_work_package: "crwdns713464:0crwdne713464:0" + label_work_package_parent: "crwdns713466:0crwdne713466:0" + label_work_package_plural: "crwdns713468:0crwdne713468:0" + label_watch: "crwdns713470:0crwdne713470:0" + label_watch_work_package: "crwdns713472:0crwdne713472:0" + label_watcher_added_successfully: "crwdns713474:0crwdne713474:0" + label_watcher_deleted_successfully: "crwdns713476:0crwdne713476:0" + label_work_package_details_you_are_here: "crwdns713478:0%{tab}crwdnd713478:0%{type}crwdnd713478:0%{subject}crwdne713478:0" + label_unwatch: "crwdns713480:0crwdne713480:0" + label_unwatch_work_package: "crwdns713482:0crwdne713482:0" + label_uploaded_by: "crwdns713484:0crwdne713484:0" + label_default_queries: "crwdns713486:0crwdne713486:0" + label_starred_queries: "crwdns713488:0crwdne713488:0" + label_global_queries: "crwdns713490:0crwdne713490:0" + label_custom_queries: "crwdns713492:0crwdne713492:0" + label_create_new_query: "crwdns713494:0crwdne713494:0" + label_columns: "crwdns713496:0crwdne713496:0" + label_attachments: crwdns713498:0crwdne713498:0 + label_drop_files: crwdns713500:0crwdne713500:0 + label_drop_files_hint: crwdns713502:0crwdne713502:0 + label_drop_folders_hint: crwdns713504:0crwdne713504:0 + label_add_attachments: "crwdns713506:0crwdne713506:0" + label_formattable_attachment_hint: "crwdns713508:0crwdne713508:0" + label_remove_file: "crwdns713510:0%{fileName}crwdne713510:0" + label_remove_watcher: "crwdns713512:0%{name}crwdne713512:0" + label_remove_all_files: crwdns713514:0crwdne713514:0 + label_add_description: "crwdns713516:0%{file}crwdne713516:0" + label_upload_notification: "crwdns713518:0crwdne713518:0" + label_work_package_upload_notification: "crwdns713520:0%{id}crwdnd713520:0%{subject}crwdne713520:0" + label_wp_id_added_by: "crwdns713522:0%{id}crwdnd713522:0%{author}crwdne713522:0" + label_files_to_upload: "crwdns713524:0crwdne713524:0" + label_rejected_files: "crwdns713526:0crwdne713526:0" + label_rejected_files_reason: "crwdns713528:0%{maximumFilesize}crwdne713528:0" + label_wait: "crwdns713530:0crwdne713530:0" + label_upload_counter: "crwdns713532:0%{done}crwdnd713532:0%{count}crwdne713532:0" + label_validation_error: "crwdns713534:0crwdne713534:0" + label_version_plural: "crwdns713536:0crwdne713536:0" + label_view_has_changed: "crwdns713538:0crwdne713538:0" help_texts: - show_modal: 'crwdns711412:0crwdne711412:0' + show_modal: 'crwdns713540:0crwdne713540:0' onboarding: buttons: - skip: 'crwdns711414:0crwdne711414:0' - next: 'crwdns711416:0crwdne711416:0' - got_it: 'crwdns711418:0crwdne711418:0' + skip: 'crwdns713542:0crwdne713542:0' + next: 'crwdns713544:0crwdne713544:0' + got_it: 'crwdns713546:0crwdne713546:0' steps: - help_menu: 'crwdns711420:0crwdne711420:0' - members: 'crwdns711422:0crwdne711422:0' - project_selection: 'crwdns711424:0crwdne711424:0' - quick_add_button: 'crwdns711426:0crwdne711426:0' - sidebar_arrow: "crwdns711428:0crwdne711428:0" - welcome: 'crwdns711430:0crwdne711430:0' - wiki: 'crwdns711432:0crwdne711432:0' + help_menu: 'crwdns713548:0crwdne713548:0' + members: 'crwdns713550:0crwdne713550:0' + project_selection: 'crwdns713552:0crwdne713552:0' + quick_add_button: 'crwdns713554:0crwdne713554:0' + sidebar_arrow: "crwdns713556:0crwdne713556:0" + welcome: 'crwdns713558:0crwdne713558:0' + wiki: 'crwdns713560:0crwdne713560:0' backlogs: - overview: "crwdns711434:0crwdne711434:0" - sprints: "crwdns711436:0crwdne711436:0" - task_board_arrow: 'crwdns711438:0crwdne711438:0' - task_board_select: 'crwdns711440:0crwdne711440:0' - task_board: "crwdns711442:0crwdne711442:0" + overview: "crwdns713562:0crwdne713562:0" + sprints: "crwdns713564:0crwdne713564:0" + task_board_arrow: 'crwdns713566:0crwdne713566:0' + task_board_select: 'crwdns713568:0crwdne713568:0' + task_board: "crwdns713570:0crwdne713570:0" boards: - overview: 'crwdns711444:0crwdne711444:0' - lists: 'crwdns711446:0crwdne711446:0' - add: 'crwdns711448:0crwdne711448:0' - drag: 'crwdns711450:0crwdne711450:0' + overview: 'crwdns713572:0crwdne713572:0' + lists: 'crwdns713574:0crwdne713574:0' + add: 'crwdns713576:0crwdne713576:0' + drag: 'crwdns713578:0crwdne713578:0' wp: - toggler: "crwdns711452:0crwdne711452:0" - list: 'crwdns711454:0crwdne711454:0' - full_view: 'crwdns711456:0crwdne711456:0' - back_button: 'crwdns711458:0crwdne711458:0' - create_button: 'crwdns711460:0crwdne711460:0' - timeline_button: 'crwdns711462:0crwdne711462:0' - timeline: 'crwdns711464:0crwdne711464:0' + toggler: "crwdns713580:0crwdne713580:0" + list: 'crwdns713582:0crwdne713582:0' + full_view: 'crwdns713584:0crwdne713584:0' + back_button: 'crwdns713586:0crwdne713586:0' + create_button: 'crwdns713588:0crwdne713588:0' + timeline_button: 'crwdns713590:0crwdne713590:0' + timeline: 'crwdns713592:0crwdne713592:0' notifications: - title: "crwdns711466:0crwdne711466:0" - no_unread: "crwdns711468:0crwdne711468:0" + title: "crwdns713594:0crwdne713594:0" + no_unread: "crwdns713596:0crwdne713596:0" reasons: - mentioned: 'crwdns711470:0crwdne711470:0' - watched: 'crwdns711472:0crwdne711472:0' - assigned: 'crwdns711474:0crwdne711474:0' - responsible: 'crwdns711476:0crwdne711476:0' + mentioned: 'crwdns713598:0crwdne713598:0' + watched: 'crwdns713600:0crwdne713600:0' + assigned: 'crwdns713602:0crwdne713602:0' + responsible: 'crwdns713604:0crwdne713604:0' facets: - unread: 'crwdns711478:0crwdne711478:0' - all: 'crwdns711480:0crwdne711480:0' + unread: 'crwdns713606:0crwdne713606:0' + all: 'crwdns713608:0crwdne713608:0' center: and_more_users: - one: 'crwdns711482:1crwdne711482:1' - other: 'crwdns711482:5%{count}crwdne711482:5' + one: 'crwdns713610:1crwdne713610:1' + other: 'crwdns713610:5%{count}crwdne713610:5' no_results: - at_all: 'crwdns711484:0crwdne711484:0' - with_current_filter: 'crwdns711486:0crwdne711486:0' - mark_all_read: 'crwdns711488:0crwdne711488:0' - mark_as_read: 'crwdns711490:0crwdne711490:0' - text_update_date: "crwdns711492:0%{date}crwdne711492:0" - total_count_warning: "crwdns711494:0%{newest_count}crwdnd711494:0%{more_count}crwdne711494:0" + at_all: 'crwdns713612:0crwdne713612:0' + with_current_filter: 'crwdns713614:0crwdne713614:0' + mark_all_read: 'crwdns713616:0crwdne713616:0' + mark_as_read: 'crwdns713618:0crwdne713618:0' + text_update_date: "crwdns713620:0%{date}crwdne713620:0" + total_count_warning: "crwdns713622:0%{newest_count}crwdnd713622:0%{more_count}crwdne713622:0" empty_state: - no_notification: "crwdns711496:0crwdne711496:0" - no_notification_with_current_filter: "crwdns711498:0crwdne711498:0" - no_selection: "crwdns711500:0crwdne711500:0" + no_notification: "crwdns713624:0crwdne713624:0" + no_notification_with_current_filter: "crwdns713626:0crwdne713626:0" + no_selection: "crwdns713628:0crwdne713628:0" new_notifications: - message: 'crwdns711502:0crwdne711502:0' - link_text: 'crwdns711504:0crwdne711504:0' + message: 'crwdns713630:0crwdne713630:0' + link_text: 'crwdns713632:0crwdne713632:0' menu: - accountable: 'crwdns711506:0crwdne711506:0' - assigned: 'crwdns711508:0crwdne711508:0' - by_project: 'crwdns711510:0crwdne711510:0' - by_reason: 'crwdns711512:0crwdne711512:0' - inbox: 'crwdns711514:0crwdne711514:0' - mentioned: 'crwdns711516:0crwdne711516:0' - watching: 'crwdns711518:0crwdne711518:0' + accountable: 'crwdns713634:0crwdne713634:0' + assigned: 'crwdns713636:0crwdne713636:0' + by_project: 'crwdns713638:0crwdne713638:0' + by_reason: 'crwdns713640:0crwdne713640:0' + inbox: 'crwdns713642:0crwdne713642:0' + mentioned: 'crwdns713644:0crwdne713644:0' + watching: 'crwdns713646:0crwdne713646:0' settings: - change_notification_settings: 'crwdns711520:0%{url}crwdne711520:0' - title: "crwdns711522:0crwdne711522:0" - notify_me: "crwdns711524:0crwdne711524:0" + change_notification_settings: 'crwdns713648:0%{url}crwdne713648:0' + title: "crwdns713650:0crwdne713650:0" + notify_me: "crwdns713652:0crwdne713652:0" reasons: mentioned: - title: 'crwdns711526:0crwdne711526:0' - description: 'crwdns711528:0crwdne711528:0' + title: 'crwdns713654:0crwdne713654:0' + description: 'crwdns713656:0crwdne713656:0' involved: - title: 'crwdns711530:0crwdne711530:0' - description: 'crwdns711532:0crwdne711532:0' - watched: 'crwdns711534:0crwdne711534:0' - work_package_commented: 'crwdns711536:0crwdne711536:0' - work_package_created: 'crwdns711538:0crwdne711538:0' - work_package_processed: 'crwdns711540:0crwdne711540:0' - work_package_prioritized: 'crwdns711542:0crwdne711542:0' - work_package_scheduled: 'crwdns711544:0crwdne711544:0' + title: 'crwdns713658:0crwdne713658:0' + description: 'crwdns713660:0crwdne713660:0' + watched: 'crwdns713662:0crwdne713662:0' + work_package_commented: 'crwdns713664:0crwdne713664:0' + work_package_created: 'crwdns713666:0crwdne713666:0' + work_package_processed: 'crwdns713668:0crwdne713668:0' + work_package_prioritized: 'crwdns713670:0crwdne713670:0' + work_package_scheduled: 'crwdns713672:0crwdne713672:0' global: immediately: - title: 'crwdns711546:0crwdne711546:0' - description: 'crwdns711548:0crwdne711548:0' + title: 'crwdns713674:0crwdne713674:0' + description: 'crwdns713676:0crwdne713676:0' delayed: - title: 'crwdns711550:0crwdne711550:0' - description: 'crwdns711552:0crwdne711552:0' + title: 'crwdns713678:0crwdne713678:0' + description: 'crwdns713680:0crwdne713680:0' project_specific: - title: 'crwdns711554:0crwdne711554:0' - description: 'crwdns711556:0crwdne711556:0' - add: 'crwdns711558:0crwdne711558:0' - already_selected: 'crwdns711560:0crwdne711560:0' - remove: 'crwdns711562:0crwdne711562:0' + title: 'crwdns713682:0crwdne713682:0' + description: 'crwdns713684:0crwdne713684:0' + add: 'crwdns713686:0crwdne713686:0' + already_selected: 'crwdns713688:0crwdne713688:0' + remove: 'crwdns713690:0crwdne713690:0' password_confirmation: - field_description: 'crwdns711564:0crwdne711564:0' - title: 'crwdns711566:0crwdne711566:0' + field_description: 'crwdns713692:0crwdne713692:0' + title: 'crwdns713694:0crwdne713694:0' pagination: - no_other_page: "crwdns711568:0crwdne711568:0" + no_other_page: "crwdns713696:0crwdne713696:0" pages: - next: "crwdns711570:0crwdne711570:0" - previous: "crwdns711572:0crwdne711572:0" + next: "crwdns713698:0crwdne713698:0" + previous: "crwdns713700:0crwdne713700:0" placeholders: - default: 'crwdns711574:0crwdne711574:0' - subject: 'crwdns711576:0crwdne711576:0' - selection: 'crwdns711578:0crwdne711578:0' - relation_description: 'crwdns711580:0crwdne711580:0' + default: 'crwdns713702:0crwdne713702:0' + subject: 'crwdns713704:0crwdne713704:0' + selection: 'crwdns713706:0crwdne713706:0' + relation_description: 'crwdns713708:0crwdne713708:0' project: required_outside_context: > - crwdns711582:0crwdne711582:0 - context: 'crwdns711584:0crwdne711584:0' - work_package_belongs_to: 'crwdns711586:0%{projectname}crwdne711586:0' - click_to_switch_context: 'crwdns711588:0crwdne711588:0' - confirm_template_load: 'crwdns711590:0crwdne711590:0' - use_template: "crwdns711592:0crwdne711592:0" - no_template_selected: "crwdns711594:0crwdne711594:0" + crwdns713710:0crwdne713710:0 + context: 'crwdns713712:0crwdne713712:0' + work_package_belongs_to: 'crwdns713714:0%{projectname}crwdne713714:0' + click_to_switch_context: 'crwdns713716:0crwdne713716:0' + confirm_template_load: 'crwdns713718:0crwdne713718:0' + use_template: "crwdns713720:0crwdne713720:0" + no_template_selected: "crwdns713722:0crwdne713722:0" copy: - copy_options: "crwdns711596:0crwdne711596:0" + copy_options: "crwdns713724:0crwdne713724:0" autocompleter: - label: 'crwdns711598:0crwdne711598:0' + label: 'crwdns713726:0crwdne713726:0' reminders: settings: daily: - add_time: 'crwdns711600:0crwdne711600:0' - enable: 'crwdns711602:0crwdne711602:0' - explanation: 'crwdns711604:0%{no_time_zone}crwdne711604:0' - no_time_zone: 'crwdns711606:0crwdne711606:0' - time_label: 'crwdns711608:0%{counter}crwdne711608:0' - title: 'crwdns711610:0crwdne711610:0' + add_time: 'crwdns713728:0crwdne713728:0' + enable: 'crwdns713730:0crwdne713730:0' + explanation: 'crwdns713732:0%{no_time_zone}crwdne713732:0' + no_time_zone: 'crwdns713734:0crwdne713734:0' + time_label: 'crwdns713736:0%{counter}crwdne713736:0' + title: 'crwdns713738:0crwdne713738:0' workdays: - title: 'crwdns711612:0crwdne711612:0' + title: 'crwdns713740:0crwdne713740:0' immediate: - title: 'crwdns711614:0crwdne711614:0' - mentioned: 'crwdns711616:0crwdne711616:0' + title: 'crwdns713742:0crwdne713742:0' + mentioned: 'crwdns713744:0crwdne713744:0' alerts: - title: 'crwdns711618:0crwdne711618:0' + title: 'crwdns713746:0crwdne713746:0' explanation: > - crwdns711620:0crwdne711620:0 - news_added: 'crwdns711622:0crwdne711622:0' - news_commented: 'crwdns711624:0crwdne711624:0' - document_added: 'crwdns711626:0crwdne711626:0' - forum_messages: 'crwdns711628:0crwdne711628:0' - wiki_page_added: 'crwdns711630:0crwdne711630:0' - wiki_page_updated: 'crwdns711632:0crwdne711632:0' - membership_added: 'crwdns711634:0crwdne711634:0' - membership_updated: 'crwdns711636:0crwdne711636:0' - title: 'crwdns711638:0crwdne711638:0' + crwdns713748:0crwdne713748:0 + news_added: 'crwdns713750:0crwdne713750:0' + news_commented: 'crwdns713752:0crwdne713752:0' + document_added: 'crwdns713754:0crwdne713754:0' + forum_messages: 'crwdns713756:0crwdne713756:0' + wiki_page_added: 'crwdns713758:0crwdne713758:0' + wiki_page_updated: 'crwdns713760:0crwdne713760:0' + membership_added: 'crwdns713762:0crwdne713762:0' + membership_updated: 'crwdns713764:0crwdne713764:0' + title: 'crwdns713766:0crwdne713766:0' pause: - label: 'crwdns711640:0crwdne711640:0' - first_day: 'crwdns711642:0crwdne711642:0' - last_day: 'crwdns711644:0crwdne711644:0' - text_are_you_sure: "crwdns711646:0crwdne711646:0" - text_data_lost: "crwdns711648:0crwdne711648:0" + label: 'crwdns713768:0crwdne713768:0' + first_day: 'crwdns713770:0crwdne713770:0' + last_day: 'crwdns713772:0crwdne713772:0' + text_are_you_sure: "crwdns713774:0crwdne713774:0" + text_data_lost: "crwdns713776:0crwdne713776:0" types: attribute_groups: - error_duplicate_group_name: "crwdns711650:0%{group}crwdne711650:0" - error_no_table_configured: "crwdns711652:0%{group}crwdne711652:0" - reset_title: "crwdns711654:0crwdne711654:0" + error_duplicate_group_name: "crwdns713778:0%{group}crwdne713778:0" + error_no_table_configured: "crwdns713780:0%{group}crwdne713780:0" + reset_title: "crwdns713782:0crwdne713782:0" confirm_reset: > - crwdns711656:0crwdne711656:0 - upgrade_to_ee: "crwdns711658:0crwdne711658:0" - upgrade_to_ee_text: "crwdns711660:0crwdne711660:0" - more_information: "crwdns711662:0crwdne711662:0" - nevermind: "crwdns711664:0crwdne711664:0" + crwdns713784:0crwdne713784:0 + upgrade_to_ee: "crwdns713786:0crwdne713786:0" + upgrade_to_ee_text: "crwdns713788:0crwdne713788:0" + more_information: "crwdns713790:0crwdne713790:0" + nevermind: "crwdns713792:0crwdne713792:0" edit: - form_configuration: "crwdns711666:0crwdne711666:0" - projects: "crwdns711668:0crwdne711668:0" - settings: "crwdns711670:0crwdne711670:0" + form_configuration: "crwdns713794:0crwdne713794:0" + projects: "crwdns713796:0crwdne713796:0" + settings: "crwdns713798:0crwdne713798:0" time_entry: - project: 'crwdns711672:0crwdne711672:0' - work_package: 'crwdns711674:0crwdne711674:0' - work_package_required: 'crwdns711676:0crwdne711676:0' - activity: 'crwdns711678:0crwdne711678:0' - comment: 'crwdns711680:0crwdne711680:0' - duration: 'crwdns711682:0crwdne711682:0' - spent_on: 'crwdns711684:0crwdne711684:0' - hours: 'crwdns711686:0crwdne711686:0' - title: 'crwdns711688:0crwdne711688:0' + project: 'crwdns713800:0crwdne713800:0' + work_package: 'crwdns713802:0crwdne713802:0' + work_package_required: 'crwdns713804:0crwdne713804:0' + activity: 'crwdns713806:0crwdne713806:0' + comment: 'crwdns713808:0crwdne713808:0' + duration: 'crwdns713810:0crwdne713810:0' + spent_on: 'crwdns713812:0crwdne713812:0' + hours: 'crwdns713814:0crwdne713814:0' + title: 'crwdns713816:0crwdne713816:0' two_factor_authentication: - label_two_factor_authentication: 'crwdns711690:0crwdne711690:0' + label_two_factor_authentication: 'crwdns713818:0crwdne713818:0' watchers: - label_loading: crwdns711692:0crwdne711692:0 - label_error_loading: crwdns711694:0crwdne711694:0 - label_search_watchers: crwdns711696:0crwdne711696:0 - label_add: crwdns711698:0crwdne711698:0 - label_discard: crwdns711700:0crwdne711700:0 - typeahead_placeholder: crwdns711702:0crwdne711702:0 + label_loading: crwdns713820:0crwdne713820:0 + label_error_loading: crwdns713822:0crwdne713822:0 + label_search_watchers: crwdns713824:0crwdne713824:0 + label_add: crwdns713826:0crwdne713826:0 + label_discard: crwdns713828:0crwdne713828:0 + typeahead_placeholder: crwdns713830:0crwdne713830:0 relation_labels: - parent: "crwdns711704:0crwdne711704:0" - children: "crwdns711706:0crwdne711706:0" - relates: "crwdns711708:0crwdne711708:0" - duplicates: "crwdns711710:0crwdne711710:0" - duplicated: "crwdns711712:0crwdne711712:0" - blocks: "crwdns711714:0crwdne711714:0" - blocked: "crwdns711716:0crwdne711716:0" - precedes: "crwdns711718:0crwdne711718:0" - follows: "crwdns711720:0crwdne711720:0" - includes: "crwdns711722:0crwdne711722:0" - partof: "crwdns711724:0crwdne711724:0" - requires: "crwdns711726:0crwdne711726:0" - required: "crwdns711728:0crwdne711728:0" - relation_type: "crwdns711730:0crwdne711730:0" + parent: "crwdns713832:0crwdne713832:0" + children: "crwdns713834:0crwdne713834:0" + relates: "crwdns713836:0crwdne713836:0" + duplicates: "crwdns713838:0crwdne713838:0" + duplicated: "crwdns713840:0crwdne713840:0" + blocks: "crwdns713842:0crwdne713842:0" + blocked: "crwdns713844:0crwdne713844:0" + precedes: "crwdns713846:0crwdne713846:0" + follows: "crwdns713848:0crwdne713848:0" + includes: "crwdns713850:0crwdne713850:0" + partof: "crwdns713852:0crwdne713852:0" + requires: "crwdns713854:0crwdne713854:0" + required: "crwdns713856:0crwdne713856:0" + relation_type: "crwdns713858:0crwdne713858:0" relations_hierarchy: - parent_headline: "crwdns711732:0crwdne711732:0" - hierarchy_headline: "crwdns711734:0crwdne711734:0" - children_headline: "crwdns711736:0crwdne711736:0" + parent_headline: "crwdns713860:0crwdne713860:0" + hierarchy_headline: "crwdns713862:0crwdne713862:0" + children_headline: "crwdns713864:0crwdne713864:0" relation_buttons: - set_parent: "crwdns711738:0crwdne711738:0" - change_parent: "crwdns711740:0crwdne711740:0" - remove_parent: "crwdns711742:0crwdne711742:0" - hierarchy_indent: "crwdns711744:0crwdne711744:0" - hierarchy_outdent: "crwdns711746:0crwdne711746:0" - group_by_wp_type: "crwdns711748:0crwdne711748:0" - group_by_relation_type: "crwdns711750:0crwdne711750:0" - add_parent: "crwdns711752:0crwdne711752:0" - add_new_child: "crwdns711754:0crwdne711754:0" - create_new: "crwdns711756:0crwdne711756:0" - add_existing: "crwdns711758:0crwdne711758:0" - add_existing_child: "crwdns711760:0crwdne711760:0" - remove_child: "crwdns711762:0crwdne711762:0" - add_new_relation: "crwdns711764:0crwdne711764:0" - add_existing_relation: "crwdns711766:0crwdne711766:0" - update_description: "crwdns711768:0crwdne711768:0" - toggle_description: "crwdns711770:0crwdne711770:0" - update_relation: "crwdns711772:0crwdne711772:0" - add_follower: "crwdns711774:0crwdne711774:0" - add_predecessor: "crwdns711776:0crwdne711776:0" - remove: "crwdns711778:0crwdne711778:0" - save: "crwdns711780:0crwdne711780:0" - abort: "crwdns711782:0crwdne711782:0" + set_parent: "crwdns713866:0crwdne713866:0" + change_parent: "crwdns713868:0crwdne713868:0" + remove_parent: "crwdns713870:0crwdne713870:0" + hierarchy_indent: "crwdns713872:0crwdne713872:0" + hierarchy_outdent: "crwdns713874:0crwdne713874:0" + group_by_wp_type: "crwdns713876:0crwdne713876:0" + group_by_relation_type: "crwdns713878:0crwdne713878:0" + add_parent: "crwdns713880:0crwdne713880:0" + add_new_child: "crwdns713882:0crwdne713882:0" + create_new: "crwdns713884:0crwdne713884:0" + add_existing: "crwdns713886:0crwdne713886:0" + add_existing_child: "crwdns713888:0crwdne713888:0" + remove_child: "crwdns713890:0crwdne713890:0" + add_new_relation: "crwdns713892:0crwdne713892:0" + add_existing_relation: "crwdns713894:0crwdne713894:0" + update_description: "crwdns713896:0crwdne713896:0" + toggle_description: "crwdns713898:0crwdne713898:0" + update_relation: "crwdns713900:0crwdne713900:0" + add_follower: "crwdns713902:0crwdne713902:0" + add_predecessor: "crwdns713904:0crwdne713904:0" + remove: "crwdns713906:0crwdne713906:0" + save: "crwdns713908:0crwdne713908:0" + abort: "crwdns713910:0crwdne713910:0" relations_autocomplete: - placeholder: "crwdns711784:0crwdne711784:0" - parent_placeholder: "crwdns711786:0crwdne711786:0" + placeholder: "crwdns713912:0crwdne713912:0" + parent_placeholder: "crwdns713914:0crwdne713914:0" autocompleter: - placeholder: "crwdns711788:0crwdne711788:0" - notFoundText: "crwdns711790:0crwdne711790:0" - typeToSearchText: "crwdns711792:0crwdne711792:0" + placeholder: "crwdns713916:0crwdne713916:0" + notFoundText: "crwdns713918:0crwdne713918:0" + typeToSearchText: "crwdns713920:0crwdne713920:0" repositories: - select_tag: 'crwdns711794:0crwdne711794:0' - select_branch: 'crwdns711796:0crwdne711796:0' - field_value_enter_prompt: "crwdns711798:0%{field}crwdne711798:0" - project_menu_details: "crwdns711800:0crwdne711800:0" + select_tag: 'crwdns713922:0crwdne713922:0' + select_branch: 'crwdns713924:0crwdne713924:0' + field_value_enter_prompt: "crwdns713926:0%{field}crwdne713926:0" + project_menu_details: "crwdns713928:0crwdne713928:0" scheduling: - manual: 'crwdns711802:0crwdne711802:0' - automatic: 'crwdns711804:0crwdne711804:0' + manual: 'crwdns713930:0crwdne713930:0' + automatic: 'crwdns713932:0crwdne713932:0' sort: - sorted_asc: 'crwdns711806:0crwdne711806:0' - sorted_dsc: 'crwdns711808:0crwdne711808:0' - sorted_no: 'crwdns711810:0crwdne711810:0' - sorting_disabled: 'crwdns711812:0crwdne711812:0' - activate_asc: 'crwdns711814:0crwdne711814:0' - activate_dsc: 'crwdns711816:0crwdne711816:0' - activate_no: 'crwdns711818:0crwdne711818:0' - text_work_packages_destroy_confirmation: "crwdns711820:0crwdne711820:0" - text_query_destroy_confirmation: "crwdns711822:0crwdne711822:0" - text_attachment_destroy_confirmation: "crwdns711824:0crwdne711824:0" + sorted_asc: 'crwdns713934:0crwdne713934:0' + sorted_dsc: 'crwdns713936:0crwdne713936:0' + sorted_no: 'crwdns713938:0crwdne713938:0' + sorting_disabled: 'crwdns713940:0crwdne713940:0' + activate_asc: 'crwdns713942:0crwdne713942:0' + activate_dsc: 'crwdns713944:0crwdne713944:0' + activate_no: 'crwdns713946:0crwdne713946:0' + text_work_packages_destroy_confirmation: "crwdns713948:0crwdne713948:0" + text_query_destroy_confirmation: "crwdns713950:0crwdne713950:0" + text_attachment_destroy_confirmation: "crwdns713952:0crwdne713952:0" timelines: - quarter_label: 'crwdns711826:0%{quarter_number}crwdne711826:0' - gantt_chart: 'crwdns711828:0crwdne711828:0' + quarter_label: 'crwdns713954:0%{quarter_number}crwdne713954:0' + gantt_chart: 'crwdns713956:0crwdne713956:0' labels: - title: 'crwdns711830:0crwdne711830:0' - bar: 'crwdns711832:0crwdne711832:0' - left: 'crwdns711834:0crwdne711834:0' - right: 'crwdns711836:0crwdne711836:0' - farRight: 'crwdns711838:0crwdne711838:0' - showNone: 'crwdns711840:0crwdne711840:0' + title: 'crwdns713958:0crwdne713958:0' + bar: 'crwdns713960:0crwdne713960:0' + left: 'crwdns713962:0crwdne713962:0' + right: 'crwdns713964:0crwdne713964:0' + farRight: 'crwdns713966:0crwdne713966:0' + showNone: 'crwdns713968:0crwdne713968:0' description: > - crwdns711842:0crwdne711842:0 - button_activate: 'crwdns711844:0crwdne711844:0' - button_deactivate: 'crwdns711846:0crwdne711846:0' - cancel: crwdns711848:0crwdne711848:0 - change: "crwdns711850:0crwdne711850:0" - due_date: "crwdns711852:0crwdne711852:0" - empty: "crwdns711854:0crwdne711854:0" - error: "crwdns711856:0crwdne711856:0" + crwdns713970:0crwdne713970:0 + button_activate: 'crwdns713972:0crwdne713972:0' + button_deactivate: 'crwdns713974:0crwdne713974:0' + cancel: crwdns713976:0crwdne713976:0 + change: "crwdns713978:0crwdne713978:0" + due_date: "crwdns713980:0crwdne713980:0" + empty: "crwdns713982:0crwdne713982:0" + error: "crwdns713984:0crwdne713984:0" errors: - not_implemented: "crwdns711858:0crwdne711858:0" - report_comparison: "crwdns711860:0crwdne711860:0" - report_epicfail: "crwdns711862:0crwdne711862:0" - report_timeout: "crwdns711864:0crwdne711864:0" + not_implemented: "crwdns713986:0crwdne713986:0" + report_comparison: "crwdns713988:0crwdne713988:0" + report_epicfail: "crwdns713990:0crwdne713990:0" + report_timeout: "crwdns713992:0crwdne713992:0" filter: - grouping_other: "crwdns711866:0crwdne711866:0" - noneSelection: "crwdns711868:0crwdne711868:0" - name: "crwdns711870:0crwdne711870:0" - outline: "crwdns711872:0crwdne711872:0" + grouping_other: "crwdns713994:0crwdne713994:0" + noneSelection: "crwdns713996:0crwdne713996:0" + name: "crwdns713998:0crwdne713998:0" + outline: "crwdns714000:0crwdne714000:0" outlines: - aggregation: "crwdns711874:0crwdne711874:0" - level1: "crwdns711876:0crwdne711876:0" - level2: "crwdns711878:0crwdne711878:0" - level3: "crwdns711880:0crwdne711880:0" - level4: "crwdns711882:0crwdne711882:0" - level5: "crwdns711884:0crwdne711884:0" - all: "crwdns711886:0crwdne711886:0" - project_status: "crwdns711888:0crwdne711888:0" - really_close_dialog: "crwdns711890:0crwdne711890:0" - responsible: "crwdns711892:0crwdne711892:0" - save: crwdns711894:0crwdne711894:0 - start_date: "crwdns711896:0crwdne711896:0" - tooManyProjects: "crwdns711898:0%{count}crwdne711898:0" + aggregation: "crwdns714002:0crwdne714002:0" + level1: "crwdns714004:0crwdne714004:0" + level2: "crwdns714006:0crwdne714006:0" + level3: "crwdns714008:0crwdne714008:0" + level4: "crwdns714010:0crwdne714010:0" + level5: "crwdns714012:0crwdne714012:0" + all: "crwdns714014:0crwdne714014:0" + project_status: "crwdns714016:0crwdne714016:0" + really_close_dialog: "crwdns714018:0crwdne714018:0" + responsible: "crwdns714020:0crwdne714020:0" + save: crwdns714022:0crwdne714022:0 + start_date: "crwdns714024:0crwdne714024:0" + tooManyProjects: "crwdns714026:0%{count}crwdne714026:0" selection_mode: - notification: 'crwdns711900:0crwdne711900:0' + notification: 'crwdns714028:0crwdne714028:0' zoom: - in: "crwdns711902:0crwdne711902:0" - out: "crwdns711904:0crwdne711904:0" - auto: "crwdns711906:0crwdne711906:0" - days: "crwdns711908:0crwdne711908:0" - weeks: "crwdns711910:0crwdne711910:0" - months: "crwdns711912:0crwdne711912:0" - quarters: "crwdns711914:0crwdne711914:0" - years: "crwdns711916:0crwdne711916:0" - slider: "crwdns711918:0crwdne711918:0" + in: "crwdns714030:0crwdne714030:0" + out: "crwdns714032:0crwdne714032:0" + auto: "crwdns714034:0crwdne714034:0" + days: "crwdns714036:0crwdne714036:0" + weeks: "crwdns714038:0crwdne714038:0" + months: "crwdns714040:0crwdne714040:0" + quarters: "crwdns714042:0crwdne714042:0" + years: "crwdns714044:0crwdne714044:0" + slider: "crwdns714046:0crwdne714046:0" description: > - crwdns711920:0crwdne711920:0 + crwdns714048:0crwdne714048:0 tl_toolbar: - zooms: "crwdns711922:0crwdne711922:0" - outlines: "crwdns711924:0crwdne711924:0" + zooms: "crwdns714050:0crwdne714050:0" + outlines: "crwdns714052:0crwdne714052:0" upsale: - ee_only: 'crwdns711926:0crwdne711926:0' + ee_only: 'crwdns714054:0crwdne714054:0' wiki_formatting: - strong: "crwdns711928:0crwdne711928:0" - italic: "crwdns711930:0crwdne711930:0" - underline: "crwdns711932:0crwdne711932:0" - deleted: "crwdns711934:0crwdne711934:0" - code: "crwdns711936:0crwdne711936:0" - heading1: "crwdns711938:0crwdne711938:0" - heading2: "crwdns711940:0crwdne711940:0" - heading3: "crwdns711942:0crwdne711942:0" - unordered_list: "crwdns711944:0crwdne711944:0" - ordered_list: "crwdns711946:0crwdne711946:0" - quote: "crwdns711948:0crwdne711948:0" - unquote: "crwdns711950:0crwdne711950:0" - preformatted_text: "crwdns711952:0crwdne711952:0" - wiki_link: "crwdns711954:0crwdne711954:0" - image: "crwdns711956:0crwdne711956:0" + strong: "crwdns714056:0crwdne714056:0" + italic: "crwdns714058:0crwdne714058:0" + underline: "crwdns714060:0crwdne714060:0" + deleted: "crwdns714062:0crwdne714062:0" + code: "crwdns714064:0crwdne714064:0" + heading1: "crwdns714066:0crwdne714066:0" + heading2: "crwdns714068:0crwdne714068:0" + heading3: "crwdns714070:0crwdne714070:0" + unordered_list: "crwdns714072:0crwdne714072:0" + ordered_list: "crwdns714074:0crwdne714074:0" + quote: "crwdns714076:0crwdne714076:0" + unquote: "crwdns714078:0crwdne714078:0" + preformatted_text: "crwdns714080:0crwdne714080:0" + wiki_link: "crwdns714082:0crwdne714082:0" + image: "crwdns714084:0crwdne714084:0" work_packages: bulk_actions: - move: 'crwdns711958:0crwdne711958:0' - edit: 'crwdns711960:0crwdne711960:0' - copy: 'crwdns711962:0crwdne711962:0' - delete: 'crwdns711964:0crwdne711964:0' - button_clear: "crwdns711966:0crwdne711966:0" - comment_added: "crwdns711968:0crwdne711968:0" - comment_send_failed: "crwdns711970:0crwdne711970:0" - comment_updated: "crwdns711972:0crwdne711972:0" - confirm_edit_cancel: "crwdns711974:0crwdne711974:0" - description_filter: "crwdns711976:0crwdne711976:0" - description_enter_text: "crwdns711978:0crwdne711978:0" - description_options_hide: "crwdns711980:0crwdne711980:0" - description_options_show: "crwdns711982:0crwdne711982:0" - edit_attribute: "crwdns711984:0%{attribute}crwdne711984:0" - key_value: "crwdns711986:0%{key}crwdnd711986:0%{value}crwdne711986:0" - label_enable_multi_select: "crwdns711988:0crwdne711988:0" - label_disable_multi_select: "crwdns711990:0crwdne711990:0" - label_filter_add: "crwdns711992:0crwdne711992:0" - label_filter_by_text: "crwdns711994:0crwdne711994:0" - label_options: "crwdns711996:0crwdne711996:0" - label_column_multiselect: "crwdns711998:0crwdne711998:0" - message_error_during_bulk_delete: crwdns712000:0crwdne712000:0 - message_successful_bulk_delete: crwdns712002:0crwdne712002:0 - message_successful_show_in_fullscreen: "crwdns712004:0crwdne712004:0" - message_view_spent_time: "crwdns712006:0crwdne712006:0" - message_work_package_read_only: "crwdns712008:0crwdne712008:0" - message_work_package_status_blocked: "crwdns712010:0crwdne712010:0" - placeholder_filter_by_text: "crwdns712012:0crwdne712012:0" + move: 'crwdns714086:0crwdne714086:0' + edit: 'crwdns714088:0crwdne714088:0' + copy: 'crwdns714090:0crwdne714090:0' + delete: 'crwdns714092:0crwdne714092:0' + button_clear: "crwdns714094:0crwdne714094:0" + comment_added: "crwdns714096:0crwdne714096:0" + comment_send_failed: "crwdns714098:0crwdne714098:0" + comment_updated: "crwdns714100:0crwdne714100:0" + confirm_edit_cancel: "crwdns714102:0crwdne714102:0" + description_filter: "crwdns714104:0crwdne714104:0" + description_enter_text: "crwdns714106:0crwdne714106:0" + description_options_hide: "crwdns714108:0crwdne714108:0" + description_options_show: "crwdns714110:0crwdne714110:0" + edit_attribute: "crwdns714112:0%{attribute}crwdne714112:0" + key_value: "crwdns714114:0%{key}crwdnd714114:0%{value}crwdne714114:0" + label_enable_multi_select: "crwdns714116:0crwdne714116:0" + label_disable_multi_select: "crwdns714118:0crwdne714118:0" + label_filter_add: "crwdns714120:0crwdne714120:0" + label_filter_by_text: "crwdns714122:0crwdne714122:0" + label_options: "crwdns714124:0crwdne714124:0" + label_column_multiselect: "crwdns714126:0crwdne714126:0" + message_error_during_bulk_delete: crwdns714128:0crwdne714128:0 + message_successful_bulk_delete: crwdns714130:0crwdne714130:0 + message_successful_show_in_fullscreen: "crwdns714132:0crwdne714132:0" + message_view_spent_time: "crwdns714134:0crwdne714134:0" + message_work_package_read_only: "crwdns714136:0crwdne714136:0" + message_work_package_status_blocked: "crwdns714138:0crwdne714138:0" + placeholder_filter_by_text: "crwdns714140:0crwdne714140:0" inline_create: - title: 'crwdns712014:0crwdne712014:0' + title: 'crwdns714142:0crwdne714142:0' create: - title: 'crwdns712016:0crwdne712016:0' - header: 'crwdns712018:0%{type}crwdne712018:0' - header_no_type: 'crwdns712020:0crwdne712020:0' - header_with_parent: 'crwdns712022:0%{type}crwdnd712022:0%{parent_type}crwdnd712022:0%{id}crwdne712022:0' - button: 'crwdns712024:0crwdne712024:0' + title: 'crwdns714144:0crwdne714144:0' + header: 'crwdns714146:0%{type}crwdne714146:0' + header_no_type: 'crwdns714148:0crwdne714148:0' + header_with_parent: 'crwdns714150:0%{type}crwdnd714150:0%{parent_type}crwdnd714150:0%{id}crwdne714150:0' + button: 'crwdns714152:0crwdne714152:0' copy: - title: 'crwdns712026:0crwdne712026:0' + title: 'crwdns714154:0crwdne714154:0' hierarchy: - show: "crwdns712028:0crwdne712028:0" - hide: "crwdns712030:0crwdne712030:0" - toggle_button: 'crwdns712032:0crwdne712032:0' - leaf: 'crwdns712034:0%{level}crwdne712034:0' - children_collapsed: 'crwdns712036:0%{level}crwdne712036:0' - children_expanded: 'crwdns712038:0%{level}crwdne712038:0' + show: "crwdns714156:0crwdne714156:0" + hide: "crwdns714158:0crwdne714158:0" + toggle_button: 'crwdns714160:0crwdne714160:0' + leaf: 'crwdns714162:0%{level}crwdne714162:0' + children_collapsed: 'crwdns714164:0%{level}crwdne714164:0' + children_expanded: 'crwdns714166:0%{level}crwdne714166:0' faulty_query: - title: crwdns712040:0crwdne712040:0 - description: crwdns712042:0crwdne712042:0 + title: crwdns714168:0crwdne714168:0 + description: crwdns714170:0crwdne714170:0 no_results: - title: crwdns712044:0crwdne712044:0 - description: crwdns712046:0crwdne712046:0 - limited_results: crwdns712048:0%{count}crwdne712048:0 + title: crwdns714172:0crwdne714172:0 + description: crwdns714174:0crwdne714174:0 + limited_results: crwdns714176:0%{count}crwdne714176:0 property_groups: - details: "crwdns712050:0crwdne712050:0" - people: "crwdns712052:0crwdne712052:0" - estimatesAndTime: "crwdns712054:0crwdne712054:0" - other: "crwdns712056:0crwdne712056:0" + details: "crwdns714178:0crwdne714178:0" + people: "crwdns714180:0crwdne714180:0" + estimatesAndTime: "crwdns714182:0crwdne714182:0" + other: "crwdns714184:0crwdne714184:0" properties: - assignee: "crwdns712058:0crwdne712058:0" - author: "crwdns712060:0crwdne712060:0" - createdAt: "crwdns712062:0crwdne712062:0" - description: "crwdns712064:0crwdne712064:0" - date: "crwdns712066:0crwdne712066:0" - dueDate: "crwdns712068:0crwdne712068:0" - estimatedTime: "crwdns712070:0crwdne712070:0" - spentTime: "crwdns712072:0crwdne712072:0" - category: "crwdns712074:0crwdne712074:0" - percentageDone: "crwdns712076:0crwdne712076:0" - priority: "crwdns712078:0crwdne712078:0" - projectName: "crwdns712080:0crwdne712080:0" - responsible: "crwdns712082:0crwdne712082:0" - startDate: "crwdns712084:0crwdne712084:0" - status: "crwdns712086:0crwdne712086:0" - subject: "crwdns712088:0crwdne712088:0" - subproject: "crwdns712090:0crwdne712090:0" - title: "crwdns712092:0crwdne712092:0" - type: "crwdns712094:0crwdne712094:0" - updatedAt: "crwdns712096:0crwdne712096:0" - versionName: "crwdns712098:0crwdne712098:0" - version: "crwdns712100:0crwdne712100:0" + assignee: "crwdns714186:0crwdne714186:0" + author: "crwdns714188:0crwdne714188:0" + createdAt: "crwdns714190:0crwdne714190:0" + description: "crwdns714192:0crwdne714192:0" + date: "crwdns714194:0crwdne714194:0" + dueDate: "crwdns714196:0crwdne714196:0" + estimatedTime: "crwdns714198:0crwdne714198:0" + spentTime: "crwdns714200:0crwdne714200:0" + category: "crwdns714202:0crwdne714202:0" + percentageDone: "crwdns714204:0crwdne714204:0" + priority: "crwdns714206:0crwdne714206:0" + projectName: "crwdns714208:0crwdne714208:0" + responsible: "crwdns714210:0crwdne714210:0" + startDate: "crwdns714212:0crwdne714212:0" + status: "crwdns714214:0crwdne714214:0" + subject: "crwdns714216:0crwdne714216:0" + subproject: "crwdns714218:0crwdne714218:0" + title: "crwdns714220:0crwdne714220:0" + type: "crwdns714222:0crwdne714222:0" + updatedAt: "crwdns714224:0crwdne714224:0" + versionName: "crwdns714226:0crwdne714226:0" + version: "crwdns714228:0crwdne714228:0" default_queries: - latest_activity: "crwdns712102:0crwdne712102:0" - created_by_me: "crwdns712104:0crwdne712104:0" - assigned_to_me: "crwdns712106:0crwdne712106:0" - recently_created: "crwdns712108:0crwdne712108:0" - all_open: "crwdns712110:0crwdne712110:0" - summary: "crwdns712112:0crwdne712112:0" + latest_activity: "crwdns714230:0crwdne714230:0" + created_by_me: "crwdns714232:0crwdne714232:0" + assigned_to_me: "crwdns714234:0crwdne714234:0" + recently_created: "crwdns714236:0crwdne714236:0" + all_open: "crwdns714238:0crwdne714238:0" + summary: "crwdns714240:0crwdne714240:0" jump_marks: - pagination: "crwdns712114:0crwdne712114:0" - label_pagination: "crwdns712116:0crwdne712116:0" - content: "crwdns712118:0crwdne712118:0" - label_content: "crwdns712120:0crwdne712120:0" + pagination: "crwdns714242:0crwdne714242:0" + label_pagination: "crwdns714244:0crwdne714244:0" + content: "crwdns714246:0crwdne714246:0" + label_content: "crwdns714248:0crwdne714248:0" placeholders: - default: "crwdns712122:0crwdne712122:0" - date: "crwdns712124:0crwdne712124:0" - formattable: "crwdns712126:0%{name}crwdne712126:0" + default: "crwdns714250:0crwdne714250:0" + date: "crwdns714252:0crwdne714252:0" + formattable: "crwdns714254:0%{name}crwdne714254:0" query: - column_names: "crwdns712128:0crwdne712128:0" - group_by: "crwdns712130:0crwdne712130:0" - group: "crwdns712132:0crwdne712132:0" - group_by_disabled_by_hierarchy: "crwdns712134:0crwdne712134:0" - hierarchy_disabled_by_group_by: "crwdns712136:0%{column}crwdne712136:0" - sort_ascending: "crwdns712138:0crwdne712138:0" - sort_descending: "crwdns712140:0crwdne712140:0" - move_column_left: "crwdns712142:0crwdne712142:0" - move_column_right: "crwdns712144:0crwdne712144:0" - hide_column: "crwdns712146:0crwdne712146:0" - insert_columns: "crwdns712148:0crwdne712148:0" - filters: "crwdns712150:0crwdne712150:0" - display_sums: "crwdns712152:0crwdne712152:0" - confirm_edit_cancel: "crwdns712154:0crwdne712154:0" - click_to_edit_query_name: "crwdns712156:0crwdne712156:0" - rename_query_placeholder: "crwdns712158:0crwdne712158:0" - star_text: "crwdns712160:0crwdne712160:0" + column_names: "crwdns714256:0crwdne714256:0" + group_by: "crwdns714258:0crwdne714258:0" + group: "crwdns714260:0crwdne714260:0" + group_by_disabled_by_hierarchy: "crwdns714262:0crwdne714262:0" + hierarchy_disabled_by_group_by: "crwdns714264:0%{column}crwdne714264:0" + sort_ascending: "crwdns714266:0crwdne714266:0" + sort_descending: "crwdns714268:0crwdne714268:0" + move_column_left: "crwdns714270:0crwdne714270:0" + move_column_right: "crwdns714272:0crwdne714272:0" + hide_column: "crwdns714274:0crwdne714274:0" + insert_columns: "crwdns714276:0crwdne714276:0" + filters: "crwdns714278:0crwdne714278:0" + display_sums: "crwdns714280:0crwdne714280:0" + confirm_edit_cancel: "crwdns714282:0crwdne714282:0" + click_to_edit_query_name: "crwdns714284:0crwdne714284:0" + rename_query_placeholder: "crwdns714286:0crwdne714286:0" + star_text: "crwdns714288:0crwdne714288:0" public_text: > - crwdns712162:0crwdne712162:0 + crwdns714290:0crwdne714290:0 errors: - unretrievable_query: "crwdns712164:0crwdne712164:0" - not_found: "crwdns712166:0crwdne712166:0" - duplicate_query_title: "crwdns712168:0crwdne712168:0" - text_no_results: "crwdns712170:0crwdne712170:0" + unretrievable_query: "crwdns714292:0crwdne714292:0" + not_found: "crwdns714294:0crwdne714294:0" + duplicate_query_title: "crwdns714296:0crwdne714296:0" + text_no_results: "crwdns714298:0crwdne714298:0" scheduling: - is_parent: "crwdns712172:0crwdne712172:0" - is_switched_from_manual_to_automatic: "crwdns712174:0crwdne712174:0" + is_parent: "crwdns714300:0crwdne714300:0" + is_switched_from_manual_to_automatic: "crwdns714302:0crwdne714302:0" table: - configure_button: 'crwdns712176:0crwdne712176:0' - summary: "crwdns712178:0crwdne712178:0" - text_inline_edit: "crwdns712180:0crwdne712180:0" - text_sort_hint: "crwdns712182:0crwdne712182:0" - text_select_hint: "crwdns712184:0crwdne712184:0" + configure_button: 'crwdns714304:0crwdne714304:0' + summary: "crwdns714306:0crwdne714306:0" + text_inline_edit: "crwdns714308:0crwdne714308:0" + text_sort_hint: "crwdns714310:0crwdne714310:0" + text_select_hint: "crwdns714312:0crwdne714312:0" table_configuration: - button: 'crwdns712186:0crwdne712186:0' - choose_display_mode: 'crwdns712188:0crwdne712188:0' - modal_title: 'crwdns712190:0crwdne712190:0' - embedded_tab_disabled: "crwdns712192:0crwdne712192:0" - default: "crwdns712194:0crwdne712194:0" - display_settings: 'crwdns712196:0crwdne712196:0' - default_mode: "crwdns712198:0crwdne712198:0" - hierarchy_mode: "crwdns712200:0crwdne712200:0" - hierarchy_hint: "crwdns712202:0crwdne712202:0" - display_sums_hint: "crwdns712204:0crwdne712204:0" - show_timeline_hint: "crwdns712206:0crwdne712206:0" - highlighting: 'crwdns712208:0crwdne712208:0' + button: 'crwdns714314:0crwdne714314:0' + choose_display_mode: 'crwdns714316:0crwdne714316:0' + modal_title: 'crwdns714318:0crwdne714318:0' + embedded_tab_disabled: "crwdns714320:0crwdne714320:0" + default: "crwdns714322:0crwdne714322:0" + display_settings: 'crwdns714324:0crwdne714324:0' + default_mode: "crwdns714326:0crwdne714326:0" + hierarchy_mode: "crwdns714328:0crwdne714328:0" + hierarchy_hint: "crwdns714330:0crwdne714330:0" + display_sums_hint: "crwdns714332:0crwdne714332:0" + show_timeline_hint: "crwdns714334:0crwdne714334:0" + highlighting: 'crwdns714336:0crwdne714336:0' highlighting_mode: - description: "crwdns712210:0crwdne712210:0" - none: "crwdns712212:0crwdne712212:0" - inline: 'crwdns712214:0crwdne712214:0' - inline_all: 'crwdns712216:0crwdne712216:0' - entire_row_by: 'crwdns712218:0crwdne712218:0' - status: 'crwdns712220:0crwdne712220:0' - priority: 'crwdns712222:0crwdne712222:0' - type: 'crwdns712224:0crwdne712224:0' + description: "crwdns714338:0crwdne714338:0" + none: "crwdns714340:0crwdne714340:0" + inline: 'crwdns714342:0crwdne714342:0' + inline_all: 'crwdns714344:0crwdne714344:0' + entire_row_by: 'crwdns714346:0crwdne714346:0' + status: 'crwdns714348:0crwdne714348:0' + priority: 'crwdns714350:0crwdne714350:0' + type: 'crwdns714352:0crwdne714352:0' sorting_mode: - description: 'crwdns712226:0crwdne712226:0' - automatic: 'crwdns712228:0crwdne712228:0' - manually: 'crwdns712230:0crwdne712230:0' - warning: 'crwdns712232:0crwdne712232:0' - columns_help_text: "crwdns712234:0crwdne712234:0" + description: 'crwdns714354:0crwdne714354:0' + automatic: 'crwdns714356:0crwdne714356:0' + manually: 'crwdns714358:0crwdne714358:0' + warning: 'crwdns714360:0crwdne714360:0' + columns_help_text: "crwdns714362:0crwdne714362:0" upsale: - attribute_highlighting: 'crwdns712236:0crwdne712236:0' - relation_columns: 'crwdns712238:0crwdne712238:0' - check_out_link: 'crwdns712240:0crwdne712240:0' + attribute_highlighting: 'crwdns714364:0crwdne714364:0' + relation_columns: 'crwdns714366:0crwdne714366:0' + check_out_link: 'crwdns714368:0crwdne714368:0' relation_filters: - filter_work_packages_by_relation_type: 'crwdns712242:0crwdne712242:0' + filter_work_packages_by_relation_type: 'crwdns714370:0crwdne714370:0' tabs: - overview: crwdns712244:0crwdne712244:0 - activity: crwdns712246:0crwdne712246:0 - relations: crwdns712248:0crwdne712248:0 - watchers: crwdns712250:0crwdne712250:0 - attachments: crwdns712252:0crwdne712252:0 + overview: crwdns714372:0crwdne714372:0 + activity: crwdns714374:0crwdne714374:0 + relations: crwdns714376:0crwdne714376:0 + watchers: crwdns714378:0crwdne714378:0 + attachments: crwdns714380:0crwdne714380:0 time_relative: - days: "crwdns712254:0crwdne712254:0" - weeks: "crwdns712256:0crwdne712256:0" - months: "crwdns712258:0crwdne712258:0" + days: "crwdns714382:0crwdne714382:0" + weeks: "crwdns714384:0crwdne714384:0" + months: "crwdns714386:0crwdne714386:0" toolbar: settings: - configure_view: "crwdns712260:0crwdne712260:0" - columns: "crwdns712262:0crwdne712262:0" - sort_by: "crwdns712264:0crwdne712264:0" - group_by: "crwdns712266:0crwdne712266:0" - display_sums: "crwdns712268:0crwdne712268:0" - display_hierarchy: "crwdns712270:0crwdne712270:0" - hide_hierarchy: "crwdns712272:0crwdne712272:0" - hide_sums: "crwdns712274:0crwdne712274:0" - save: "crwdns712276:0crwdne712276:0" - save_as: "crwdns712278:0crwdne712278:0" - export: "crwdns712280:0crwdne712280:0" - visibility_settings: "crwdns712282:0crwdne712282:0" - page_settings: "crwdns712284:0crwdne712284:0" - delete: "crwdns712286:0crwdne712286:0" - filter: "crwdns712288:0crwdne712288:0" - unselected_title: "crwdns712290:0crwdne712290:0" - search_query_label: "crwdns712292:0crwdne712292:0" - search_query_title: "crwdns712294:0crwdne712294:0" - placeholder_query_title: "crwdns712296:0crwdne712296:0" + configure_view: "crwdns714388:0crwdne714388:0" + columns: "crwdns714390:0crwdne714390:0" + sort_by: "crwdns714392:0crwdne714392:0" + group_by: "crwdns714394:0crwdne714394:0" + display_sums: "crwdns714396:0crwdne714396:0" + display_hierarchy: "crwdns714398:0crwdne714398:0" + hide_hierarchy: "crwdns714400:0crwdne714400:0" + hide_sums: "crwdns714402:0crwdne714402:0" + save: "crwdns714404:0crwdne714404:0" + save_as: "crwdns714406:0crwdne714406:0" + export: "crwdns714408:0crwdne714408:0" + visibility_settings: "crwdns714410:0crwdne714410:0" + page_settings: "crwdns714412:0crwdne714412:0" + delete: "crwdns714414:0crwdne714414:0" + filter: "crwdns714416:0crwdne714416:0" + unselected_title: "crwdns714418:0crwdne714418:0" + search_query_label: "crwdns714420:0crwdne714420:0" + search_query_title: "crwdns714422:0crwdne714422:0" + placeholder_query_title: "crwdns714424:0crwdne714424:0" modals: - label_settings: "crwdns712298:0crwdne712298:0" - label_name: "crwdns712300:0crwdne712300:0" - label_delete_page: "crwdns712302:0crwdne712302:0" - button_apply: "crwdns712304:0crwdne712304:0" - button_save: "crwdns712306:0crwdne712306:0" - button_submit: "crwdns712308:0crwdne712308:0" - button_cancel: "crwdns712310:0crwdne712310:0" + label_settings: "crwdns714426:0crwdne714426:0" + label_name: "crwdns714428:0crwdne714428:0" + label_delete_page: "crwdns714430:0crwdne714430:0" + button_apply: "crwdns714432:0crwdne714432:0" + button_save: "crwdns714434:0crwdne714434:0" + button_submit: "crwdns714436:0crwdne714436:0" + button_cancel: "crwdns714438:0crwdne714438:0" form_submit: - title: 'crwdns712312:0crwdne712312:0' - text: 'crwdns712314:0crwdne712314:0' + title: 'crwdns714440:0crwdne714440:0' + text: 'crwdns714442:0crwdne714442:0' destroy_work_package: - title: "crwdns712316:0%{label}crwdne712316:0" - text: "crwdns712318:0%{label}crwdne712318:0" - has_children: "crwdns712320:0%{childUnits}crwdne712320:0" - confirm_deletion_children: "crwdns712322:0crwdne712322:0" - deletes_children: "crwdns712324:0crwdne712324:0" + title: "crwdns714444:0%{label}crwdne714444:0" + text: "crwdns714446:0%{label}crwdne714446:0" + has_children: "crwdns714448:0%{childUnits}crwdne714448:0" + confirm_deletion_children: "crwdns714450:0crwdne714450:0" + deletes_children: "crwdns714452:0crwdne714452:0" destroy_time_entry: - title: "crwdns712326:0crwdne712326:0" - text: "crwdns712328:0crwdne712328:0" - notice_no_results_to_display: "crwdns712330:0crwdne712330:0" - notice_successful_create: "crwdns712332:0crwdne712332:0" - notice_successful_delete: "crwdns712334:0crwdne712334:0" - notice_successful_update: "crwdns712336:0crwdne712336:0" - notice_job_started: "crwdns712338:0crwdne712338:0" - notice_bad_request: "crwdns712340:0crwdne712340:0" + title: "crwdns714454:0crwdne714454:0" + text: "crwdns714456:0crwdne714456:0" + notice_no_results_to_display: "crwdns714458:0crwdne714458:0" + notice_successful_create: "crwdns714460:0crwdne714460:0" + notice_successful_delete: "crwdns714462:0crwdne714462:0" + notice_successful_update: "crwdns714464:0crwdne714464:0" + notice_job_started: "crwdns714466:0crwdne714466:0" + notice_bad_request: "crwdns714468:0crwdne714468:0" relations: - empty: crwdns712342:0crwdne712342:0 - remove: crwdns712344:0crwdne712344:0 + empty: crwdns714470:0crwdne714470:0 + remove: crwdns714472:0crwdne714472:0 inplace: - button_edit: "crwdns712346:0%{attribute}crwdne712346:0" - button_save: "crwdns712348:0%{attribute}crwdne712348:0" - button_cancel: "crwdns712350:0%{attribute}crwdne712350:0" - button_save_all: "crwdns712352:0crwdne712352:0" - button_cancel_all: "crwdns712354:0crwdne712354:0" - link_formatting_help: "crwdns712356:0crwdne712356:0" - btn_preview_enable: "crwdns712358:0crwdne712358:0" - btn_preview_disable: "crwdns712360:0crwdne712360:0" - null_value_label: "crwdns712362:0crwdne712362:0" - clear_value_label: "crwdns712364:0crwdne712364:0" + button_edit: "crwdns714474:0%{attribute}crwdne714474:0" + button_save: "crwdns714476:0%{attribute}crwdne714476:0" + button_cancel: "crwdns714478:0%{attribute}crwdne714478:0" + button_save_all: "crwdns714480:0crwdne714480:0" + button_cancel_all: "crwdns714482:0crwdne714482:0" + link_formatting_help: "crwdns714484:0crwdne714484:0" + btn_preview_enable: "crwdns714486:0crwdne714486:0" + btn_preview_disable: "crwdns714488:0crwdne714488:0" + null_value_label: "crwdns714490:0crwdne714490:0" + clear_value_label: "crwdns714492:0crwdne714492:0" errors: - required: 'crwdns712366:0%{field}crwdne712366:0' - number: 'crwdns712368:0%{field}crwdne712368:0' - maxlength: 'crwdns712370:0%{field}crwdnd712370:0%{maxLength}crwdne712370:0' - minlength: 'crwdns712372:0%{field}crwdnd712372:0%{minLength}crwdne712372:0' - messages_on_field: 'crwdns712374:0%{messages}crwdne712374:0' - error_could_not_resolve_version_name: "crwdns712376:0crwdne712376:0" - error_could_not_resolve_user_name: "crwdns712378:0crwdne712378:0" - error_attachment_upload: "crwdns712380:0%{error}crwdne712380:0" - error_attachment_upload_permission: "crwdns712382:0crwdne712382:0" + required: 'crwdns714494:0%{field}crwdne714494:0' + number: 'crwdns714496:0%{field}crwdne714496:0' + maxlength: 'crwdns714498:0%{field}crwdnd714498:0%{maxLength}crwdne714498:0' + minlength: 'crwdns714500:0%{field}crwdnd714500:0%{minLength}crwdne714500:0' + messages_on_field: 'crwdns714502:0%{messages}crwdne714502:0' + error_could_not_resolve_version_name: "crwdns714504:0crwdne714504:0" + error_could_not_resolve_user_name: "crwdns714506:0crwdne714506:0" + error_attachment_upload: "crwdns714508:0%{error}crwdne714508:0" + error_attachment_upload_permission: "crwdns714510:0crwdne714510:0" units: workPackage: - one: "crwdns712384:1crwdne712384:1" - other: "crwdns712384:5crwdne712384:5" + one: "crwdns714512:1crwdne714512:1" + other: "crwdns714512:5crwdne714512:5" child_work_packages: - one: "crwdns712386:1crwdne712386:1" - other: "crwdns712386:5%{count}crwdne712386:5" + one: "crwdns714514:1crwdne714514:1" + other: "crwdns714514:5%{count}crwdne714514:5" hour: - one: "crwdns712388:0crwdne712388:0" - other: "crwdns712390:0%{count}crwdne712390:0" - zero: "crwdns712392:0crwdne712392:0" + one: "crwdns714516:0crwdne714516:0" + other: "crwdns714518:0%{count}crwdne714518:0" + zero: "crwdns714520:0crwdne714520:0" zen_mode: - button_activate: 'crwdns712394:0crwdne712394:0' - button_deactivate: 'crwdns712396:0crwdne712396:0' + button_activate: 'crwdns714522:0crwdne714522:0' + button_deactivate: 'crwdns714524:0crwdne714524:0' global_search: - all_projects: "crwdns712398:0crwdne712398:0" - search: "crwdns712400:0crwdne712400:0" - close_search: "crwdns712402:0crwdne712402:0" - current_project: "crwdns712404:0crwdne712404:0" - current_project_and_all_descendants: "crwdns712406:0crwdne712406:0" + all_projects: "crwdns714526:0crwdne714526:0" + search: "crwdns714528:0crwdne714528:0" + close_search: "crwdns714530:0crwdne714530:0" + current_project: "crwdns714532:0crwdne714532:0" + current_project_and_all_descendants: "crwdns714534:0crwdne714534:0" title: - all_projects: "crwdns712408:0crwdne712408:0" - project_and_subprojects: "crwdns712410:0crwdne712410:0" - search_for: "crwdns712412:0crwdne712412:0" + all_projects: "crwdns714536:0crwdne714536:0" + project_and_subprojects: "crwdns714538:0crwdne714538:0" + search_for: "crwdns714540:0crwdne714540:0" views: - card: 'crwdns712414:0crwdne712414:0' - list: 'crwdns712416:0crwdne712416:0' - timeline: 'crwdns712418:0crwdne712418:0' + card: 'crwdns714542:0crwdne714542:0' + list: 'crwdns714544:0crwdne714544:0' + timeline: 'crwdns714546:0crwdne714546:0' invite_user_modal: - back: 'crwdns712420:0crwdne712420:0' - invite: 'crwdns712422:0crwdne712422:0' + back: 'crwdns714548:0crwdne714548:0' + invite: 'crwdns714550:0crwdne714550:0' title: - invite: 'crwdns712424:0crwdne712424:0' - invite_to_project: 'crwdns712426:0%{type}crwdnd712426:0%{project}crwdne712426:0' - User: 'crwdns712428:0crwdne712428:0' - Group: 'crwdns712430:0crwdne712430:0' - PlaceholderUser: 'crwdns712432:0crwdne712432:0' - invite_principal_to_project: 'crwdns712434:0%{principal}crwdnd712434:0%{project}crwdne712434:0' + invite: 'crwdns714552:0crwdne714552:0' + invite_to_project: 'crwdns714554:0%{type}crwdnd714554:0%{project}crwdne714554:0' + User: 'crwdns714556:0crwdne714556:0' + Group: 'crwdns714558:0crwdne714558:0' + PlaceholderUser: 'crwdns714560:0crwdne714560:0' + invite_principal_to_project: 'crwdns714562:0%{principal}crwdnd714562:0%{project}crwdne714562:0' project: - label: 'crwdns712436:0crwdne712436:0' - required: 'crwdns712438:0crwdne712438:0' - lacking_permission: 'crwdns712440:0crwdne712440:0' - lacking_permission_info: 'crwdns712442:0crwdne712442:0' - next_button: 'crwdns712444:0crwdne712444:0' - no_results: 'crwdns712446:0crwdne712446:0' - no_invite_rights: 'crwdns712448:0crwdne712448:0' + label: 'crwdns714564:0crwdne714564:0' + required: 'crwdns714566:0crwdne714566:0' + lacking_permission: 'crwdns714568:0crwdne714568:0' + lacking_permission_info: 'crwdns714570:0crwdne714570:0' + next_button: 'crwdns714572:0crwdne714572:0' + no_results: 'crwdns714574:0crwdne714574:0' + no_invite_rights: 'crwdns714576:0crwdne714576:0' type: - required: 'crwdns712450:0crwdne712450:0' + required: 'crwdns714578:0crwdne714578:0' user: - title: 'crwdns712452:0crwdne712452:0' - description: 'crwdns712454:0crwdne712454:0' + title: 'crwdns714580:0crwdne714580:0' + description: 'crwdns714582:0crwdne714582:0' group: - title: 'crwdns712456:0crwdne712456:0' - description: 'crwdns712458:0crwdne712458:0' + title: 'crwdns714584:0crwdne714584:0' + description: 'crwdns714586:0crwdne714586:0' placeholder: - title: 'crwdns712460:0crwdne712460:0' - title_no_ee: 'crwdns712462:0crwdne712462:0' - description: 'crwdns712464:0crwdne712464:0' - description_no_ee: 'crwdns712466:0%{eeHref}crwdne712466:0' + title: 'crwdns714588:0crwdne714588:0' + title_no_ee: 'crwdns714590:0crwdne714590:0' + description: 'crwdns714592:0crwdne714592:0' + description_no_ee: 'crwdns714594:0%{eeHref}crwdne714594:0' principal: label: - name_or_email: 'crwdns712468:0crwdne712468:0' - name: 'crwdns712470:0crwdne712470:0' - already_member_message: 'crwdns712472:0%{project}crwdne712472:0' - no_results_user: 'crwdns712474:0crwdne712474:0' - invite_user: 'crwdns712476:0crwdne712476:0' - no_results_placeholder: 'crwdns712478:0crwdne712478:0' - create_new_placeholder: 'crwdns712480:0crwdne712480:0' - no_results_group: 'crwdns712482:0crwdne712482:0' - next_button: 'crwdns712484:0crwdne712484:0' + name_or_email: 'crwdns714596:0crwdne714596:0' + name: 'crwdns714598:0crwdne714598:0' + already_member_message: 'crwdns714600:0%{project}crwdne714600:0' + no_results_user: 'crwdns714602:0crwdne714602:0' + invite_user: 'crwdns714604:0crwdne714604:0' + no_results_placeholder: 'crwdns714606:0crwdne714606:0' + create_new_placeholder: 'crwdns714608:0crwdne714608:0' + no_results_group: 'crwdns714610:0crwdne714610:0' + next_button: 'crwdns714612:0crwdne714612:0' required: - user: 'crwdns712486:0crwdne712486:0' - placeholder: 'crwdns712488:0crwdne712488:0' - group: 'crwdns712490:0crwdne712490:0' + user: 'crwdns714614:0crwdne714614:0' + placeholder: 'crwdns714616:0crwdne714616:0' + group: 'crwdns714618:0crwdne714618:0' role: - label: 'crwdns712492:0%{project}crwdne712492:0' - no_roles_found: 'crwdns712494:0crwdne712494:0' - description: 'crwdns712496:0%{principal}crwdne712496:0' - required: 'crwdns712498:0crwdne712498:0' - next_button: 'crwdns712500:0crwdne712500:0' + label: 'crwdns714620:0%{project}crwdne714620:0' + no_roles_found: 'crwdns714622:0crwdne714622:0' + description: 'crwdns714624:0%{principal}crwdne714624:0' + required: 'crwdns714626:0crwdne714626:0' + next_button: 'crwdns714628:0crwdne714628:0' message: - label: 'crwdns712502:0crwdne712502:0' - description: 'crwdns712504:0%{principal}crwdne712504:0' - next_button: 'crwdns712506:0crwdne712506:0' + label: 'crwdns714630:0crwdne714630:0' + description: 'crwdns714632:0%{principal}crwdne714632:0' + next_button: 'crwdns714634:0crwdne714634:0' summary: - next_button: 'crwdns712508:0crwdne712508:0' + next_button: 'crwdns714636:0crwdne714636:0' success: - title: 'crwdns712510:0%{principal}crwdne712510:0' + title: 'crwdns714638:0%{principal}crwdne714638:0' description: - user: 'crwdns712512:0%{project}crwdne712512:0' - placeholder: 'crwdns712514:0%{project}crwdne712514:0' - group: 'crwdns712516:0%{project}crwdne712516:0' - next_button: 'crwdns712518:0crwdne712518:0' + user: 'crwdns714640:0%{project}crwdne714640:0' + placeholder: 'crwdns714642:0%{project}crwdne714642:0' + group: 'crwdns714644:0%{project}crwdne714644:0' + next_button: 'crwdns714646:0crwdne714646:0' forms: - submit_success_message: 'crwdns712520:0crwdne712520:0' - load_error_message: 'crwdns712522:0crwdne712522:0' - validation_error_message: 'crwdns712524:0crwdne712524:0' - advanced_settings: 'crwdns712526:0crwdne712526:0' + submit_success_message: 'crwdns714648:0crwdne714648:0' + load_error_message: 'crwdns714650:0crwdne714650:0' + validation_error_message: 'crwdns714652:0crwdne714652:0' + advanced_settings: 'crwdns714654:0crwdne714654:0' diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index f20c05f3b9..2d1c98bde8 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -2389,9 +2389,10 @@ uk: setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" setting_apiv3_cors_origins_text_html: > If CORS is enabled, these are the origins that are allowed to access OpenProject API.
Please check the Documentation on the Origin header on how to specify the expected values. - setting_apiv3_max_page_size: "Maximum API page size" + setting_apiv3_max_page_size: "Максимальний розмір сторінки API" setting_apiv3_max_page_instructions_html: > - Set the maximum page size the API will respond with. It will not be possible to perform API requests that return more values on a single page.
Warning: Please only change this value if you are sure why you need it. Setting to a high value will result in significant performance impacts, while a value lower than the per page options will cause errors in paginated views. + Встановіть максимальний розмір сторінки, яка відповідатиме API. Неможливо виконати запити API, які повертають більше значень на сторінці. + Увага: Будь ласка, змінюйте значення тільки у тому разі, якщо ви впевнені у необхідності цієї дії. Внаслідок встановлення високого значення спостерігатиметься значний вплив на продуктивність, тоді як значення, що є меншим за сторінку, призведе до появи помилок у переглядах сторінок. setting_apiv3_docs: "Документація" setting_apiv3_docs_enabled: "Enable docs page" setting_apiv3_docs_enabled_instructions_html: > diff --git a/modules/calendar/config/locales/crowdin/js-uk.yml b/modules/calendar/config/locales/crowdin/js-uk.yml index d1245f4440..d126e84584 100644 --- a/modules/calendar/config/locales/crowdin/js-uk.yml +++ b/modules/calendar/config/locales/crowdin/js-uk.yml @@ -2,6 +2,6 @@ uk: js: calendar: - title: 'Calendar' - too_many: 'There are %{count} work packages in total, but only %{max} can be shown.' - unsaved_title: 'Unnamed calendar' + title: 'Календар' + too_many: 'Усього існує %{count} робочих пакетів, з яких лише %{max} можуть бути показані.' + unsaved_title: 'Неназваний календар' diff --git a/modules/calendar/config/locales/crowdin/uk.yml b/modules/calendar/config/locales/crowdin/uk.yml index 4ff7dc6c93..92b47797b9 100644 --- a/modules/calendar/config/locales/crowdin/uk.yml +++ b/modules/calendar/config/locales/crowdin/uk.yml @@ -1,4 +1,4 @@ #English strings go here uk: - permission_view_calendar: "View calendar" - project_module_calendar_view: "Calendar" + permission_view_calendar: "Переглянути календар" + project_module_calendar_view: "Календар" diff --git a/modules/grids/config/locales/crowdin/js-es.yml b/modules/grids/config/locales/crowdin/js-es.yml index c9a31d0e51..a616e9c147 100644 --- a/modules/grids/config/locales/crowdin/js-es.yml +++ b/modules/grids/config/locales/crowdin/js-es.yml @@ -31,13 +31,13 @@ es: no_results: 'No se han definido campos personalizados para los proyectos.' project_status: title: 'Estado del proyecto' - not_started: 'Not started' + not_started: 'No empezado' on_track: 'Según lo previsto' off_track: 'Fuera de lo previsto' at_risk: 'En riesgo' not_set: 'No establecido' - finished: 'Finished' - discontinued: 'Discontinued' + finished: 'Terminado' + discontinued: 'Discontinuado' subprojects: title: 'Subproyectos' no_results: 'No hay subproyectos.' @@ -45,12 +45,12 @@ es: title: 'Tiempo que he invertido' displayed_days: 'Días mostrados en el widget:' time_entries_list: - title: 'Tiempo de gastos (últimos 7 días)' + title: 'Tiempo gastado (últimos 7 días)' no_results: 'Sin entradas temporales en los últimos 7 días.' work_packages_accountable: title: "Paquetes de trabajo de los que soy responsable" work_packages_assigned: - title: 'Paquetes de trabajo asignados a mí' + title: 'Paquetes de trabajo asignados para mí' work_packages_created: title: 'Paquetes de trabajo creados por mí' work_packages_watched: diff --git a/modules/grids/config/locales/crowdin/js-ru.yml b/modules/grids/config/locales/crowdin/js-ru.yml index 6612f47eab..d7d406909e 100644 --- a/modules/grids/config/locales/crowdin/js-ru.yml +++ b/modules/grids/config/locales/crowdin/js-ru.yml @@ -31,13 +31,13 @@ ru: no_results: 'Для проектов не определены настраиваемые поля.' project_status: title: 'Состояние проекта' - not_started: 'Not started' + not_started: 'Не начато' on_track: 'В работе' off_track: 'Приостановлен' at_risk: 'Есть риск' not_set: 'Не задано' - finished: 'Finished' - discontinued: 'Discontinued' + finished: 'Завершено' + discontinued: 'Прекращено' subprojects: title: 'Подпроекты' no_results: 'Подпроектов нет.' diff --git a/modules/job_status/config/locales/crowdin/js-uk.yml b/modules/job_status/config/locales/crowdin/js-uk.yml index a70680402e..37bea6797a 100644 --- a/modules/job_status/config/locales/crowdin/js-uk.yml +++ b/modules/job_status/config/locales/crowdin/js-uk.yml @@ -1,17 +1,17 @@ uk: js: job_status: - download_starts: 'The download should start automatically.' - click_to_download: 'Or click here to download.' - title: 'Background job status' - redirect: 'You are being redirected.' - redirect_link: 'Please click here to continue.' - redirect_errors: 'Due to these errors, you will not be redirected automatically.' - errors: 'Some errors have occurred' + download_starts: 'Завантаження починатиметься автоматично.' + click_to_download: 'Або натисніть тут для завантаження.' + title: 'Статус фонового завдання' + redirect: 'Вас буде перенаправлено.' + redirect_link: 'Будь ласка, натисніть тут для того, щоб продовжити.' + redirect_errors: 'Внаслідок цих помилок, вас не буде перенаправлено автоматично.' + errors: 'Виникли деякі помилки' generic_messages: - not_found: 'This job could not be found.' - in_queue: 'The job has been queued and will be processed shortly.' - in_process: 'The job is currently being processed.' - error: 'The job has failed to complete.' - cancelled: 'The job has been cancelled due to an error.' - success: 'The job completed successfully.' + not_found: 'Завдання не знайдено.' + in_queue: 'Завдання було поставлено у чергу та найближчим часом буде оброблено.' + in_process: 'Наразі завдання обробляється.' + error: 'Завдання не було виконано.' + cancelled: 'Через помилку завдання було скасовано.' + success: 'Завдання успішно виконано.' diff --git a/modules/team_planner/config/locales/crowdin/js-af.yml b/modules/team_planner/config/locales/crowdin/js-af.yml index eb31330ca4..27f27ab3e2 100644 --- a/modules/team_planner/config/locales/crowdin/js-af.yml +++ b/modules/team_planner/config/locales/crowdin/js-af.yml @@ -14,3 +14,7 @@ af: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-ar.yml b/modules/team_planner/config/locales/crowdin/js-ar.yml index 996cb214c8..2dbdc78369 100644 --- a/modules/team_planner/config/locales/crowdin/js-ar.yml +++ b/modules/team_planner/config/locales/crowdin/js-ar.yml @@ -14,3 +14,7 @@ ar: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-az.yml b/modules/team_planner/config/locales/crowdin/js-az.yml index 3f62e72536..6e1e358f6b 100644 --- a/modules/team_planner/config/locales/crowdin/js-az.yml +++ b/modules/team_planner/config/locales/crowdin/js-az.yml @@ -14,3 +14,7 @@ az: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-bg.yml b/modules/team_planner/config/locales/crowdin/js-bg.yml index 4b4f02c5d9..ab52e45473 100644 --- a/modules/team_planner/config/locales/crowdin/js-bg.yml +++ b/modules/team_planner/config/locales/crowdin/js-bg.yml @@ -14,3 +14,7 @@ bg: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-ca.yml b/modules/team_planner/config/locales/crowdin/js-ca.yml index 2667d38592..8ab0c3874c 100644 --- a/modules/team_planner/config/locales/crowdin/js-ca.yml +++ b/modules/team_planner/config/locales/crowdin/js-ca.yml @@ -14,3 +14,7 @@ ca: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-cs.yml b/modules/team_planner/config/locales/crowdin/js-cs.yml index fe3d99d5e2..62ffbe2b57 100644 --- a/modules/team_planner/config/locales/crowdin/js-cs.yml +++ b/modules/team_planner/config/locales/crowdin/js-cs.yml @@ -14,3 +14,7 @@ cs: quick_add: empty_state: 'Použijte vyhledávací pole pro nalezení pracovních balíčků a přetáhněte je do plánovače, aby někomu přiřadil a definoval datum začátku a konce.' search_placeholder: 'Hledat...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-da.yml b/modules/team_planner/config/locales/crowdin/js-da.yml index 19d5b2a086..37e4b0d153 100644 --- a/modules/team_planner/config/locales/crowdin/js-da.yml +++ b/modules/team_planner/config/locales/crowdin/js-da.yml @@ -14,3 +14,7 @@ da: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-de.yml b/modules/team_planner/config/locales/crowdin/js-de.yml index 59300af715..fd45aae722 100644 --- a/modules/team_planner/config/locales/crowdin/js-de.yml +++ b/modules/team_planner/config/locales/crowdin/js-de.yml @@ -14,3 +14,7 @@ de: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-el.yml b/modules/team_planner/config/locales/crowdin/js-el.yml index 2f7d287ddd..d0304090b8 100644 --- a/modules/team_planner/config/locales/crowdin/js-el.yml +++ b/modules/team_planner/config/locales/crowdin/js-el.yml @@ -14,3 +14,7 @@ el: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-eo.yml b/modules/team_planner/config/locales/crowdin/js-eo.yml index 9219f81ec3..d9fe011daf 100644 --- a/modules/team_planner/config/locales/crowdin/js-eo.yml +++ b/modules/team_planner/config/locales/crowdin/js-eo.yml @@ -14,3 +14,7 @@ eo: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-es.yml b/modules/team_planner/config/locales/crowdin/js-es.yml index a2be5012a0..5b2573711d 100644 --- a/modules/team_planner/config/locales/crowdin/js-es.yml +++ b/modules/team_planner/config/locales/crowdin/js-es.yml @@ -14,3 +14,7 @@ es: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-et.yml b/modules/team_planner/config/locales/crowdin/js-et.yml index ddad05da0d..52e5c103d0 100644 --- a/modules/team_planner/config/locales/crowdin/js-et.yml +++ b/modules/team_planner/config/locales/crowdin/js-et.yml @@ -14,3 +14,7 @@ et: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-fa.yml b/modules/team_planner/config/locales/crowdin/js-fa.yml index 4b4dbb356b..adb529b451 100644 --- a/modules/team_planner/config/locales/crowdin/js-fa.yml +++ b/modules/team_planner/config/locales/crowdin/js-fa.yml @@ -14,3 +14,7 @@ fa: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-fi.yml b/modules/team_planner/config/locales/crowdin/js-fi.yml index 2bda920517..436eba7024 100644 --- a/modules/team_planner/config/locales/crowdin/js-fi.yml +++ b/modules/team_planner/config/locales/crowdin/js-fi.yml @@ -14,3 +14,7 @@ fi: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-fil.yml b/modules/team_planner/config/locales/crowdin/js-fil.yml index 883d94d8fb..9f97742b2b 100644 --- a/modules/team_planner/config/locales/crowdin/js-fil.yml +++ b/modules/team_planner/config/locales/crowdin/js-fil.yml @@ -14,3 +14,7 @@ fil: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-fr.yml b/modules/team_planner/config/locales/crowdin/js-fr.yml index c9ebcdec1f..6e433bf4fa 100644 --- a/modules/team_planner/config/locales/crowdin/js-fr.yml +++ b/modules/team_planner/config/locales/crowdin/js-fr.yml @@ -14,3 +14,7 @@ fr: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-he.yml b/modules/team_planner/config/locales/crowdin/js-he.yml index 871bae6514..c436d8aa67 100644 --- a/modules/team_planner/config/locales/crowdin/js-he.yml +++ b/modules/team_planner/config/locales/crowdin/js-he.yml @@ -14,3 +14,7 @@ he: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-hi.yml b/modules/team_planner/config/locales/crowdin/js-hi.yml index 38edc7710e..06865838fa 100644 --- a/modules/team_planner/config/locales/crowdin/js-hi.yml +++ b/modules/team_planner/config/locales/crowdin/js-hi.yml @@ -14,3 +14,7 @@ hi: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-hr.yml b/modules/team_planner/config/locales/crowdin/js-hr.yml index 91c751fd35..1eec0bc4ad 100644 --- a/modules/team_planner/config/locales/crowdin/js-hr.yml +++ b/modules/team_planner/config/locales/crowdin/js-hr.yml @@ -14,3 +14,7 @@ hr: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-hu.yml b/modules/team_planner/config/locales/crowdin/js-hu.yml index bbfdfbc473..78d0d1c734 100644 --- a/modules/team_planner/config/locales/crowdin/js-hu.yml +++ b/modules/team_planner/config/locales/crowdin/js-hu.yml @@ -14,3 +14,7 @@ hu: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-id.yml b/modules/team_planner/config/locales/crowdin/js-id.yml index cb1112a869..ffefc657e3 100644 --- a/modules/team_planner/config/locales/crowdin/js-id.yml +++ b/modules/team_planner/config/locales/crowdin/js-id.yml @@ -14,3 +14,7 @@ id: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-it.yml b/modules/team_planner/config/locales/crowdin/js-it.yml index fbfd43fbcf..b316ec6e98 100644 --- a/modules/team_planner/config/locales/crowdin/js-it.yml +++ b/modules/team_planner/config/locales/crowdin/js-it.yml @@ -14,3 +14,7 @@ it: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-ja.yml b/modules/team_planner/config/locales/crowdin/js-ja.yml index 3c01cedef1..f0c8b2f1e6 100644 --- a/modules/team_planner/config/locales/crowdin/js-ja.yml +++ b/modules/team_planner/config/locales/crowdin/js-ja.yml @@ -14,3 +14,7 @@ ja: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-ko.yml b/modules/team_planner/config/locales/crowdin/js-ko.yml index bbd8903a6d..4f47462053 100644 --- a/modules/team_planner/config/locales/crowdin/js-ko.yml +++ b/modules/team_planner/config/locales/crowdin/js-ko.yml @@ -14,3 +14,7 @@ ko: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-lol.yml b/modules/team_planner/config/locales/crowdin/js-lol.yml index 1799fd53e0..96593ad1b3 100644 --- a/modules/team_planner/config/locales/crowdin/js-lol.yml +++ b/modules/team_planner/config/locales/crowdin/js-lol.yml @@ -14,3 +14,7 @@ lol: quick_add: empty_state: 'crwdns653319:0crwdne653319:0' search_placeholder: 'crwdns653321:0crwdne653321:0' + modify: + errors: + permission_denied: 'crwdns714656:0crwdne714656:0' + fallback: 'crwdns714658:0crwdne714658:0' diff --git a/modules/team_planner/config/locales/crowdin/js-lt.yml b/modules/team_planner/config/locales/crowdin/js-lt.yml index ecfb80fc22..b1ef3c36bd 100644 --- a/modules/team_planner/config/locales/crowdin/js-lt.yml +++ b/modules/team_planner/config/locales/crowdin/js-lt.yml @@ -14,3 +14,7 @@ lt: quick_add: empty_state: 'Naudokite paieškos lauką darbo paketų paieškai, nutempkite juos į planą, kad priskirtumėte kažkam ir nustatytumėte pradžios bei pabaigos datas.' search_placeholder: 'Ieškoti...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-lv.yml b/modules/team_planner/config/locales/crowdin/js-lv.yml index 1ff2bc4cd1..5192e8f5ca 100644 --- a/modules/team_planner/config/locales/crowdin/js-lv.yml +++ b/modules/team_planner/config/locales/crowdin/js-lv.yml @@ -14,3 +14,7 @@ lv: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-ne.yml b/modules/team_planner/config/locales/crowdin/js-ne.yml index a9e22a8365..6717f8093c 100644 --- a/modules/team_planner/config/locales/crowdin/js-ne.yml +++ b/modules/team_planner/config/locales/crowdin/js-ne.yml @@ -14,3 +14,7 @@ ne: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-nl.yml b/modules/team_planner/config/locales/crowdin/js-nl.yml index 729946562d..a134495779 100644 --- a/modules/team_planner/config/locales/crowdin/js-nl.yml +++ b/modules/team_planner/config/locales/crowdin/js-nl.yml @@ -14,3 +14,7 @@ nl: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-no.yml b/modules/team_planner/config/locales/crowdin/js-no.yml index 6ef27b232e..171bdb6eea 100644 --- a/modules/team_planner/config/locales/crowdin/js-no.yml +++ b/modules/team_planner/config/locales/crowdin/js-no.yml @@ -14,3 +14,7 @@ quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-pl.yml b/modules/team_planner/config/locales/crowdin/js-pl.yml index 8bd08a223d..598674427e 100644 --- a/modules/team_planner/config/locales/crowdin/js-pl.yml +++ b/modules/team_planner/config/locales/crowdin/js-pl.yml @@ -14,3 +14,7 @@ pl: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-pt.yml b/modules/team_planner/config/locales/crowdin/js-pt.yml index 350a044a1b..023c719111 100644 --- a/modules/team_planner/config/locales/crowdin/js-pt.yml +++ b/modules/team_planner/config/locales/crowdin/js-pt.yml @@ -14,3 +14,7 @@ pt: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-ro.yml b/modules/team_planner/config/locales/crowdin/js-ro.yml index 74ef097498..1defa43d30 100644 --- a/modules/team_planner/config/locales/crowdin/js-ro.yml +++ b/modules/team_planner/config/locales/crowdin/js-ro.yml @@ -14,3 +14,7 @@ ro: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-ru.yml b/modules/team_planner/config/locales/crowdin/js-ru.yml index 6efac32a54..02b4163447 100644 --- a/modules/team_planner/config/locales/crowdin/js-ru.yml +++ b/modules/team_planner/config/locales/crowdin/js-ru.yml @@ -14,3 +14,7 @@ ru: quick_add: empty_state: 'Используйте поле поиска для поиска пакетов работ и перетаскивания их в планировщик для назначения их кому-либо и определения даты начала и окончания.' search_placeholder: 'Поиск...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-rw.yml b/modules/team_planner/config/locales/crowdin/js-rw.yml index 21b9fc1d0a..398ddcbd8b 100644 --- a/modules/team_planner/config/locales/crowdin/js-rw.yml +++ b/modules/team_planner/config/locales/crowdin/js-rw.yml @@ -14,3 +14,7 @@ rw: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-si.yml b/modules/team_planner/config/locales/crowdin/js-si.yml index 887eca4345..041d4f6de0 100644 --- a/modules/team_planner/config/locales/crowdin/js-si.yml +++ b/modules/team_planner/config/locales/crowdin/js-si.yml @@ -14,3 +14,7 @@ si: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-sk.yml b/modules/team_planner/config/locales/crowdin/js-sk.yml index 8acc50ffa3..f0367deb31 100644 --- a/modules/team_planner/config/locales/crowdin/js-sk.yml +++ b/modules/team_planner/config/locales/crowdin/js-sk.yml @@ -14,3 +14,7 @@ sk: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-sl.yml b/modules/team_planner/config/locales/crowdin/js-sl.yml index 41c5076ff0..ceba2bb282 100644 --- a/modules/team_planner/config/locales/crowdin/js-sl.yml +++ b/modules/team_planner/config/locales/crowdin/js-sl.yml @@ -14,3 +14,7 @@ sl: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-sv.yml b/modules/team_planner/config/locales/crowdin/js-sv.yml index 4005f30a98..6d5e9a4ebd 100644 --- a/modules/team_planner/config/locales/crowdin/js-sv.yml +++ b/modules/team_planner/config/locales/crowdin/js-sv.yml @@ -14,3 +14,7 @@ sv: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-th.yml b/modules/team_planner/config/locales/crowdin/js-th.yml index 0f654f7c6a..727cc22944 100644 --- a/modules/team_planner/config/locales/crowdin/js-th.yml +++ b/modules/team_planner/config/locales/crowdin/js-th.yml @@ -14,3 +14,7 @@ th: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-tr.yml b/modules/team_planner/config/locales/crowdin/js-tr.yml index 28a05c6044..e2a0c33b25 100644 --- a/modules/team_planner/config/locales/crowdin/js-tr.yml +++ b/modules/team_planner/config/locales/crowdin/js-tr.yml @@ -14,3 +14,7 @@ tr: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-uk.yml b/modules/team_planner/config/locales/crowdin/js-uk.yml index 3924ee03e6..bee55f983b 100644 --- a/modules/team_planner/config/locales/crowdin/js-uk.yml +++ b/modules/team_planner/config/locales/crowdin/js-uk.yml @@ -14,3 +14,7 @@ uk: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-vi.yml b/modules/team_planner/config/locales/crowdin/js-vi.yml index 32062d704a..f9649f515c 100644 --- a/modules/team_planner/config/locales/crowdin/js-vi.yml +++ b/modules/team_planner/config/locales/crowdin/js-vi.yml @@ -14,3 +14,7 @@ vi: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' diff --git a/modules/team_planner/config/locales/crowdin/js-zh-TW.yml b/modules/team_planner/config/locales/crowdin/js-zh-TW.yml index a42a565648..ebce3d83d6 100644 --- a/modules/team_planner/config/locales/crowdin/js-zh-TW.yml +++ b/modules/team_planner/config/locales/crowdin/js-zh-TW.yml @@ -14,3 +14,7 @@ zh-TW: quick_add: empty_state: 'Use the search field to find work packages and drag them to the planner to assign it to someone and define start and end dates.' search_placeholder: 'Search...' + modify: + errors: + permission_denied: 'You do not have the necessary permissions to modify this.' + fallback: 'This work package cannot be edited.' From a3b862d5a674f6923e19283366eded3112f3c32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Wed, 9 Feb 2022 08:32:08 +0100 Subject: [PATCH 115/118] Allow copying work packages to other projects --- config/locales/js-en.yml | 1 + .../wp-context-menu/wp-static-context-menu-actions.ts | 6 ++++++ .../wp-context-menu/wp-view-context-menu.directive.ts | 8 ++++++++ spec/features/work_packages/copy_spec.rb | 2 +- spec/features/work_packages/table/context_menu_spec.rb | 6 ++++++ spec/support/components/work_packages/context_menu.rb | 2 +- 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/config/locales/js-en.yml b/config/locales/js-en.yml index d6aa73e062..84ba517218 100644 --- a/config/locales/js-en.yml +++ b/config/locales/js-en.yml @@ -78,6 +78,7 @@ en: button_confirm: "Confirm" button_continue: "Continue" button_copy: "Copy" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-static-context-menu-actions.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-static-context-menu-actions.ts index 41d5e2c7f2..8ca7d5ef3a 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-static-context-menu-actions.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-static-context-menu-actions.ts @@ -15,6 +15,12 @@ export const PERMITTED_CONTEXT_MENU_ACTIONS = [ link: 'copy', resource: 'workPackage', }, + { + key: 'copy_to_other_project', + link: 'copy', + icon: 'icon-project-types', + resource: 'workPackage', + }, { key: 'delete', link: 'delete', diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts index c7437ca3e8..6f1797f2c8 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts @@ -21,6 +21,7 @@ import { TimeEntryCreateService } from 'core-app/shared/components/time_entries/ import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; import { WpDestroyModalComponent } from 'core-app/shared/components/modals/wp-destroy-modal/wp-destroy.modal'; import isNewResource from 'core-app/features/hal/helpers/is-new-resource'; +import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; export class WorkPackageViewContextMenu extends OpContextMenuHandler { @InjectField() protected states!:States; @@ -37,6 +38,8 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { @InjectField() protected timeEntryCreateService:TimeEntryCreateService; + @InjectField() protected pathHelper:PathHelperService; + protected workPackage = this.states.workPackages.get(this.workPackageId).value!; protected selectedWorkPackages = this.getSelectedWorkPackages(); @@ -73,6 +76,7 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { public triggerContextMenuAction(action:WorkPackageAction) { const { link } = action; + const id = this.workPackage.id as string; switch (action.key) { case 'delete': @@ -87,6 +91,10 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { this.copySelectedWorkPackages(link!); break; + case 'copy_to_other_project': + window.location.href = `${this.pathHelper.staticBase}/work_packages/move/new?copy=true&ids[]=${id}`; + break; + case 'relation-new-child': this.wpRelationsHierarchyService.addNewChildWp(this.baseRoute, this.workPackage); break; diff --git a/spec/features/work_packages/copy_spec.rb b/spec/features/work_packages/copy_spec.rb index 24b72a9a0e..24e93adf67 100644 --- a/spec/features/work_packages/copy_spec.rb +++ b/spec/features/work_packages/copy_spec.rb @@ -138,7 +138,7 @@ RSpec.feature 'Work package copy', js: true, selenium: true do # Go to add cost entry page find('#action-show-more-dropdown-menu .button').click - find('.menu-item', text: 'Copy').click + find('.menu-item', text: 'Copy', exact_text: true).click to_copy_work_package_page = Pages::FullWorkPackageCreate.new original_work_package: original_work_package to_copy_work_package_page.update_attributes Description: 'Copied WP Description' diff --git a/spec/features/work_packages/table/context_menu_spec.rb b/spec/features/work_packages/table/context_menu_spec.rb index 637876fc3e..cedebb56c4 100644 --- a/spec/features/work_packages/table/context_menu_spec.rb +++ b/spec/features/work_packages/table/context_menu_spec.rb @@ -84,6 +84,12 @@ describe 'Work package table context menu', js: true do goto_context_menu list_view menu.expect_no_options 'Add predecessor', 'Add follower' + + # Copy to other project + goto_context_menu list_view + menu.choose('Copy to other project') + expect(page).to have_selector('h2', text: I18n.t(:button_copy)) + expect(page).to have_selector('a.work_package', text: "##{work_package.id}") end end diff --git a/spec/support/components/work_packages/context_menu.rb b/spec/support/components/work_packages/context_menu.rb index ef746c3159..d53f56172f 100644 --- a/spec/support/components/work_packages/context_menu.rb +++ b/spec/support/components/work_packages/context_menu.rb @@ -55,7 +55,7 @@ module Components end def choose(target) - find("#{selector} .menu-item", text: target).click + find("#{selector} .menu-item", text: target, exact_text: true).click end def expect_no_options(*options) From 3ba029fe169fba84c467dc15a81ecf0481acf8cc Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Tue, 8 Feb 2022 12:05:28 +0100 Subject: [PATCH 116/118] Make the lookup of Contracts and Services in longer namespaces possible --- lib/api/utilities/endpoints/bodied.rb | 34 ++++++------- lib/api/utilities/endpoints/delete.rb | 20 +++----- lib/api/utilities/endpoints/modify.rb | 2 +- .../utilities/endpoints/namespaced_lookup.rb | 49 +++++++++++++++++++ .../bim/bcf/api/v2_1/endpoints/delete.rb | 4 -- .../bcf/api/v2_1/endpoints/modify_mixin.rb | 4 -- .../bim/bcf/api/v2_1/projects_api.rb | 3 +- 7 files changed, 72 insertions(+), 44 deletions(-) create mode 100644 lib/api/utilities/endpoints/namespaced_lookup.rb diff --git a/lib/api/utilities/endpoints/bodied.rb b/lib/api/utilities/endpoints/bodied.rb index 07fad6b6e8..225b8c2da9 100644 --- a/lib/api/utilities/endpoints/bodied.rb +++ b/lib/api/utilities/endpoints/bodied.rb @@ -30,6 +30,8 @@ module API module Utilities module Endpoints class Bodied + include NamespacedLookup + def default_instance_generator(_model) raise NotImplementedError end @@ -53,11 +55,11 @@ module API end def initialize(model:, - api_name: model.name.demodulize, - instance_generator: default_instance_generator(model), - params_modifier: default_params_modifier, - params_source: default_params_source, - process_state: default_process_state, + api_name: nil, + instance_generator: nil, + params_modifier: nil, + params_source: nil, + process_state: nil, before_hook: nil, parse_representer: nil, render_representer: nil, @@ -65,11 +67,11 @@ module API process_contract: nil, parse_service: nil) self.model = model - self.api_name = api_name - self.instance_generator = instance_generator - self.params_modifier = params_modifier - self.params_source = params_source - self.process_state = process_state + self.api_name = api_name || model.name.demodulize + self.instance_generator = instance_generator || default_instance_generator(model) + self.params_modifier = params_modifier || default_params_modifier + self.params_source = params_source || default_params_source + self.process_state = process_state || default_process_state self.parse_representer = parse_representer || deduce_parse_representer self.render_representer = render_representer || deduce_render_representer self.process_contract = process_contract || deduce_process_contract @@ -155,11 +157,11 @@ module API end def deduce_process_service - "::#{deduce_backend_namespace}::SetAttributesService".constantize + lookup_namespaced_class("SetAttributesService") end def deduce_process_contract - "::#{deduce_backend_namespace}::#{update_or_create}Contract".constantize + lookup_namespaced_class("#{update_or_create}Contract") end def deduce_parse_representer @@ -178,14 +180,6 @@ module API api_name.pluralize end - def backend_name - model.name.demodulize - end - - def deduce_backend_namespace - backend_name.pluralize - end - def update_or_create raise NotImplementedError end diff --git a/lib/api/utilities/endpoints/delete.rb b/lib/api/utilities/endpoints/delete.rb index 0f9965820a..8209d329aa 100644 --- a/lib/api/utilities/endpoints/delete.rb +++ b/lib/api/utilities/endpoints/delete.rb @@ -30,6 +30,8 @@ module API module Utilities module Endpoints class Delete + include NamespacedLookup + def default_instance_generator(model) ->(_params) do instance_variable_get("@#{model.name.demodulize.underscore}") @@ -37,14 +39,14 @@ module API end def initialize(model:, - instance_generator: default_instance_generator(model), + instance_generator: nil, process_service: nil, success_status: 204, - api_name: model.name.demodulize) + api_name: nil) self.model = model - self.instance_generator = instance_generator + self.instance_generator = instance_generator || default_instance_generator(model) self.process_service = process_service || deduce_process_service - self.api_name = api_name + self.api_name = api_name || model.name.demodulize self.success_status = success_status end @@ -97,15 +99,7 @@ module API end def deduce_process_service - "::#{deduce_backend_namespace}::DeleteService".constantize - end - - def deduce_backend_namespace - demodulized_name.pluralize - end - - def demodulized_name - model.name.demodulize + lookup_namespaced_class("DeleteService") end def deduce_api_namespace diff --git a/lib/api/utilities/endpoints/modify.rb b/lib/api/utilities/endpoints/modify.rb index 34ff7f09e9..33e62ffbd5 100644 --- a/lib/api/utilities/endpoints/modify.rb +++ b/lib/api/utilities/endpoints/modify.rb @@ -78,7 +78,7 @@ module API end def deduce_process_service - "::#{deduce_backend_namespace}::#{update_or_create}Service".constantize + lookup_namespaced_class("#{update_or_create}Service") end def deduce_process_contract diff --git a/lib/api/utilities/endpoints/namespaced_lookup.rb b/lib/api/utilities/endpoints/namespaced_lookup.rb new file mode 100644 index 0000000000..41645e6b5c --- /dev/null +++ b/lib/api/utilities/endpoints/namespaced_lookup.rb @@ -0,0 +1,49 @@ +#-- encoding: UTF-8 + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2021 the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module API::Utilities::Endpoints::NamespacedLookup + private + + def lookup_namespaced_class(class_name) + possible_namespaces.each do |namespace| + return "::#{namespace}::#{class_name}".constantize + rescue NameError + next + end + raise "Unable to lookup #{class_name} class for model #{model} in namespaces #{possible_namespaces.inspect}" + end + + def possible_namespaces + [ + model.name.pluralize, + model.name.demodulize.pluralize + ].uniq + end +end diff --git a/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/delete.rb b/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/delete.rb index c36850bd0d..876e7df0e8 100644 --- a/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/delete.rb +++ b/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/delete.rb @@ -42,9 +42,5 @@ module Bim::Bcf::API::V2_1::Endpoints def render_representer "::Bim::Bcf::API::V2_1::#{deduce_api_namespace}::SingleRepresenter".constantize end - - def deduce_process_service - "::Bim::Bcf::#{deduce_backend_namespace}::DeleteService".constantize - end end end diff --git a/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/modify_mixin.rb b/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/modify_mixin.rb index e0fa4c8dd9..e3cf3521f4 100644 --- a/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/modify_mixin.rb +++ b/modules/bim/app/controllers/bim/bcf/api/v2_1/endpoints/modify_mixin.rb @@ -36,10 +36,6 @@ module Bim::Bcf::API::V2_1::Endpoints ::Bim::Bcf::API::V2_1::ParseResourceParamsService end - def deduce_process_service - "::Bim::Bcf::#{deduce_backend_namespace}::#{update_or_create}Service".constantize - end - def deduce_in_and_out_representer "::Bim::Bcf::API::V2_1::#{deduce_api_namespace}::SingleRepresenter".constantize end diff --git a/modules/bim/app/controllers/bim/bcf/api/v2_1/projects_api.rb b/modules/bim/app/controllers/bim/bcf/api/v2_1/projects_api.rb index f549a6dc87..721cf9960a 100644 --- a/modules/bim/app/controllers/bim/bcf/api/v2_1/projects_api.rb +++ b/modules/bim/app/controllers/bim/bcf/api/v2_1/projects_api.rb @@ -49,8 +49,7 @@ module Bim::Bcf::API::V2_1 get &::Bim::Bcf::API::V2_1::Endpoints::Show.new(model: Project).mount put &::Bim::Bcf::API::V2_1::Endpoints::Update - .new(model: Project, - process_service: ::Projects::UpdateService) + .new(model: Project) .mount mount ::Bim::Bcf::API::V2_1::TopicsAPI From fb955880999505a8bc35c66425b9bc9a04d386d7 Mon Sep 17 00:00:00 2001 From: Christophe Bliard Date: Wed, 9 Feb 2022 14:34:03 +0100 Subject: [PATCH 117/118] deep merge nested configuration keys from configuration.yml (#10153) * make rubocop happier * deep merge nested configuration keys from configuration.yml --- lib/open_project/configuration.rb | 6 +- spec/lib/open_project/configuration_spec.rb | 218 ++++++++++++-------- 2 files changed, 131 insertions(+), 93 deletions(-) diff --git a/lib/open_project/configuration.rb b/lib/open_project/configuration.rb index b5558ba771..ea4ab75735 100644 --- a/lib/open_project/configuration.rb +++ b/lib/open_project/configuration.rb @@ -495,7 +495,7 @@ module OpenProject if File.file?(filename) file_config = YAML::load(ERB.new(File.read(filename)).result) if file_config.is_a? Hash - config.merge!(load_env_from_config(file_config, env)) + config.deep_merge!(load_env_from_config(file_config, env)) else warn "#{filename} is not a valid OpenProject configuration file, ignoring." end @@ -506,10 +506,10 @@ module OpenProject merged_config = {} if config['default'] - merged_config.merge!(config['default']) + merged_config.deep_merge!(config['default']) end if config[env] - merged_config.merge!(config[env]) + merged_config.deep_merge!(config[env]) end merged_config end diff --git a/spec/lib/open_project/configuration_spec.rb b/spec/lib/open_project/configuration_spec.rb index 13c538bcbc..7da8a6c192 100644 --- a/spec/lib/open_project/configuration_spec.rb +++ b/spec/lib/open_project/configuration_spec.rb @@ -31,67 +31,104 @@ require 'spec_helper' describe OpenProject::Configuration do describe '.load_config_from_file' do let(:file_contents) do - <<-EOS + <<-CONTENT default: test: somesetting: foo - EOS + CONTENT end + before do allow(File).to receive(:read).and_call_original allow(File).to receive(:read).with('configfilename').and_return(file_contents) allow(File).to receive(:file?).with('configfilename').and_return(true) - OpenProject::Configuration.load(file: 'configfilename') + described_class.load(file: 'configfilename') + end + + it 'merges the config from the file into the given config hash' do + expect(described_class['somesetting']).to eq('foo') + expect(described_class[:somesetting]).to eq('foo') + expect(described_class.somesetting).to eq('foo') end - it 'should merge the config from the file into the given config hash' do - expect(OpenProject::Configuration['somesetting']).to eq('foo') - expect(OpenProject::Configuration[:somesetting]).to eq('foo') - expect(OpenProject::Configuration.somesetting).to eq('foo') + context 'with deep nesting' do + let(:file_contents) do + <<-CONTENT + default: + web: + timeout: 42 + CONTENT + end + + it 'deepmerges the config from the file into the given config hash' do + expect(described_class['web']['workers']).not_to be_nil + expect(described_class['web']['timeout']).to eq(42) + end end end describe '.load_env_from_config' do describe 'with a default setting' do let(:config) do - OpenProject::Configuration.send(:load_env_from_config, { - 'default' => { 'somesetting' => 'foo' }, - 'test' => {}, - 'someother' => { 'somesetting' => 'bar' } - }, 'test') + described_class.send(:load_env_from_config, { + 'default' => { 'somesetting' => 'foo' }, + 'test' => {}, + 'someother' => { 'somesetting' => 'bar' } + }, 'test') end - it 'should load a default setting' do + it 'loads a default setting' do expect(config['somesetting']).to eq('foo') end end describe 'with an environment-specific setting' do let(:config) do - OpenProject::Configuration.send(:load_env_from_config, { - 'default' => {}, - 'test' => { 'somesetting' => 'foo' } - }, 'test') + described_class.send(:load_env_from_config, { + 'default' => {}, + 'test' => { 'somesetting' => 'foo' } + }, 'test') end - it 'should load a setting' do + it 'loads a setting' do expect(config['somesetting']).to eq('foo') end end describe 'with a default and an overriding environment-specific setting' do let(:config) do - OpenProject::Configuration.send(:load_env_from_config, { - 'default' => { 'somesetting' => 'foo' }, - 'test' => { 'somesetting' => 'bar' } - }, 'test') + described_class.send(:load_env_from_config, { + 'default' => { 'somesetting' => 'foo' }, + 'test' => { 'somesetting' => 'bar' } + }, 'test') end - it 'should load the overriding value' do + it 'loads the overriding value' do expect(config['somesetting']).to eq('bar') end + + context 'with deep nesting' do + let(:config) do + described_class.send(:load_env_from_config, { + 'default' => { 'web' => { + 'overridensetting' => 'unseen!', + 'somesetting' => 'foo' + } }, + 'test' => { 'web' => { + 'overridensetting' => 'env wins', + 'someothersetting' => 'bar' + } } + }, 'test') + end + + it 'deepmerges configs together' do + expect(config['web']['overridensetting']).to eq('env wins') + expect(config['web']['somesetting']).to eq('foo') + expect(config['web']['someothersetting']).to eq('bar') + end + end end end @@ -113,7 +150,7 @@ describe OpenProject::Configuration do }, 'foo' => { 'bar' => { - 'hash_with_symbols': 1234 + hash_with_symbols: 1234 } } } @@ -136,42 +173,42 @@ describe OpenProject::Configuration do before do stub_const('OpenProject::Configuration::ENV_PREFIX', 'OPTEST') - OpenProject::Configuration.send :override_config!, config, env_vars + described_class.send :override_config!, config, env_vars end it 'returns the original string, not the invalid YAML one' do expect(config['invalid_yaml']).to eq env_vars['INVALID_YAML'] end - it 'should not parse the empty value' do + it 'does not parse the empty value' do expect(config['someemptysetting']).to eq('') end - it 'should parse the null identifier' do + it 'parses the null identifier' do expect(config['nil']).to be_nil end - it 'should override the previous setting value' do + it 'overrides the previous setting value' do expect(config['somesetting']).to eq('bar') end - it 'should override a nested value' do + it 'overrides a nested value' do expect(config['nested']['key']).to eq('baz') end - it 'should override values nested several levels deep' do + it 'overrides values nested several levels deep' do expect(config['nested']['deeply_nested']['key']).to eq(42) end - it 'should parse simple comma-separated lists' do + it 'parses simple comma-separated lists' do expect(config['some_list_entry']).to eq(['foo', 'bar', 'xyz', 'whut wat']) end - it 'should parse simple hashes' do + it 'parses simple hashes' do expect(config['nested']['hash']).to eq('foo' => 'bar', 'xyz' => 'bla') end - it 'should parse hashes with symbols and non-string values' do + it 'parses hashes with symbols and non-string values' do expect(config['foo']['bar']['hash_with_symbols']).to eq('foo' => :foobar) expect(config['foo']['bar']['hash_with_symbols'][:foo]).to eq(:foobar) end @@ -179,20 +216,20 @@ describe OpenProject::Configuration do describe '.with' do before do - expect(OpenProject::Configuration).to receive(:load_config_from_file) do |_filename, _env, config| + allow(described_class).to receive(:load_config_from_file) do |_filename, _env, config| config.merge!('somesetting' => 'foo') end - OpenProject::Configuration.load(env: 'test') + described_class.load(env: 'test') end - it 'should return the overridden the setting within the block' do - expect(OpenProject::Configuration['somesetting']).to eq('foo') + it 'returns the overridden the setting within the block' do + expect(described_class['somesetting']).to eq('foo') - OpenProject::Configuration.with 'somesetting' => 'bar' do - expect(OpenProject::Configuration['somesetting']).to eq('bar') + described_class.with 'somesetting' => 'bar' do + expect(described_class['somesetting']).to eq('bar') end - expect(OpenProject::Configuration['somesetting']).to eq('foo') + expect(described_class['somesetting']).to eq('foo') end end @@ -213,15 +250,15 @@ describe OpenProject::Configuration do context 'with delivery_method' do before do - OpenProject::Configuration.send(:convert_old_email_settings, settings, - disable_deprecation_message: true) + described_class.send(:convert_old_email_settings, settings, + disable_deprecation_message: true) end - it 'should adopt the delivery method' do + it 'adopts the delivery method' do expect(settings['email_delivery_method']).to eq(:smtp) end - it 'should convert smtp settings' do + it 'converts smtp settings' do expect(settings['smtp_address']).to eq('smtp.example.net') expect(settings['smtp_port']).to eq(25) expect(settings['smtp_domain']).to eq('example.net') @@ -231,11 +268,11 @@ describe OpenProject::Configuration do context 'without delivery_method' do before do settings['email_delivery'].delete('delivery_method') - OpenProject::Configuration.send(:convert_old_email_settings, settings, - disable_deprecation_message: true) + described_class.send(:convert_old_email_settings, settings, + disable_deprecation_message: true) end - it 'should convert smtp settings' do + it 'converts smtp settings' do expect(settings['smtp_address']).to eq('smtp.example.net') expect(settings['smtp_port']).to eq(25) expect(settings['smtp_domain']).to eq('example.net') @@ -248,40 +285,40 @@ describe OpenProject::Configuration do # reset this setting value Setting[:email_delivery_method] = nil # reload configuration to isolate specs - OpenProject::Configuration.load + described_class.load # clear settings cache to isolate specs Setting.clear_cache end it 'does nothing if no legacy configuration given' do - OpenProject::Configuration['email_delivery_method'] = nil - expect(Setting).to_not receive(:email_delivery_method=) - expect(OpenProject::Configuration.migrate_mailer_configuration!).to eq(true) + described_class['email_delivery_method'] = nil + expect(Setting).not_to receive(:email_delivery_method=) + expect(described_class.migrate_mailer_configuration!).to eq(true) end it 'does nothing if email_delivery_configuration forced to legacy' do - OpenProject::Configuration['email_delivery_configuration'] = 'legacy' - expect(Setting).to_not receive(:email_delivery_method=) - expect(OpenProject::Configuration.migrate_mailer_configuration!).to eq(true) + described_class['email_delivery_configuration'] = 'legacy' + expect(Setting).not_to receive(:email_delivery_method=) + expect(described_class.migrate_mailer_configuration!).to eq(true) end it 'does nothing if setting already set' do - OpenProject::Configuration['email_delivery_method'] = :sendmail + described_class['email_delivery_method'] = :sendmail Setting.email_delivery_method = :sendmail - expect(Setting).to_not receive(:email_delivery_method=) - expect(OpenProject::Configuration.migrate_mailer_configuration!).to eq(true) + expect(Setting).not_to receive(:email_delivery_method=) + expect(described_class.migrate_mailer_configuration!).to eq(true) end it 'migrates the existing configuration to the settings table' do - OpenProject::Configuration['email_delivery_method'] = :smtp - OpenProject::Configuration['smtp_password'] = 'p4ssw0rd' - OpenProject::Configuration['smtp_address'] = 'smtp.example.com' - OpenProject::Configuration['smtp_port'] = 587 - OpenProject::Configuration['smtp_user_name'] = 'username' - OpenProject::Configuration['smtp_enable_starttls_auto'] = true - OpenProject::Configuration['smtp_ssl'] = true - - expect(OpenProject::Configuration.migrate_mailer_configuration!).to eq(true) + described_class['email_delivery_method'] = :smtp + described_class['smtp_password'] = 'p4ssw0rd' + described_class['smtp_address'] = 'smtp.example.com' + described_class['smtp_port'] = 587 + described_class['smtp_user_name'] = 'username' + described_class['smtp_enable_starttls_auto'] = true + described_class['smtp_ssl'] = true + + expect(described_class.migrate_mailer_configuration!).to eq(true) expect(Setting.email_delivery_method).to eq(:smtp) expect(Setting.smtp_password).to eq('p4ssw0rd') expect(Setting.smtp_address).to eq('smtp.example.com') @@ -301,15 +338,15 @@ describe OpenProject::Configuration do after do # reload configuration to isolate specs - OpenProject::Configuration.load + described_class.load # clear settings cache to isolate specs Setting.clear_cache end it 'uses the legacy method to configure email settings' do - OpenProject::Configuration['email_delivery_configuration'] = 'legacy' - expect(OpenProject::Configuration).to receive(:configure_legacy_action_mailer) - OpenProject::Configuration.reload_mailer_configuration! + described_class['email_delivery_configuration'] = 'legacy' + expect(described_class).to receive(:configure_legacy_action_mailer) + described_class.reload_mailer_configuration! end it 'allows settings smtp_authentication to none' do @@ -325,7 +362,7 @@ describe OpenProject::Configuration do expect(action_mailer).to receive(:perform_deliveries=).with(true) expect(action_mailer).to receive(:delivery_method=).with(:smtp) - OpenProject::Configuration.reload_mailer_configuration! + described_class.reload_mailer_configuration! expect(action_mailer.smtp_settings[:smtp_authentication]).to be_nil expect(action_mailer.smtp_settings).to eq(address: 'smtp.example.com', port: 25, @@ -345,7 +382,7 @@ describe OpenProject::Configuration do expect(action_mailer).to receive(:perform_deliveries=).with(true) expect(action_mailer).to receive(:delivery_method=).with(:smtp) - OpenProject::Configuration.reload_mailer_configuration! + described_class.reload_mailer_configuration! expect(action_mailer.smtp_settings[:smtp_authentication]).to be_nil expect(action_mailer.smtp_settings).to eq(address: 'smtp.example.com', port: 25, @@ -366,7 +403,7 @@ describe OpenProject::Configuration do expect(action_mailer).to receive(:perform_deliveries=).with(true) expect(action_mailer).to receive(:delivery_method=).with(:smtp) - OpenProject::Configuration.reload_mailer_configuration! + described_class.reload_mailer_configuration! expect(action_mailer.smtp_settings).to eq(address: 'smtp.example.com', port: 587, domain: 'example.com', @@ -387,7 +424,7 @@ describe OpenProject::Configuration do expect(action_mailer).to receive(:perform_deliveries=).with(true) expect(action_mailer).to receive(:delivery_method=).with(:smtp) - OpenProject::Configuration.reload_mailer_configuration! + described_class.reload_mailer_configuration! expect(action_mailer.smtp_settings).to eq(address: 'smtp.example.com', port: 587, domain: 'example.com', @@ -411,12 +448,12 @@ describe OpenProject::Configuration do stub_const('ActionMailer::Base', action_mailer) end - it 'should enable deliveries and configure ActionMailer smtp delivery' do + it 'enables deliveries and configure ActionMailer smtp delivery' do expect(action_mailer).to receive(:perform_deliveries=).with(true) expect(action_mailer).to receive(:delivery_method=).with(:smtp) expect(action_mailer).to receive(:smtp_settings=).with(address: 'smtp.example.net', port: '25') - OpenProject::Configuration.send(:configure_legacy_action_mailer, config) + described_class.send(:configure_legacy_action_mailer, config) end end @@ -427,7 +464,7 @@ describe OpenProject::Configuration do after do # reload configuration to isolate specs - OpenProject::Configuration.load + described_class.load end context 'with cache store already set' do @@ -437,22 +474,22 @@ describe OpenProject::Configuration do context 'with additional cache store configuration' do before do - OpenProject::Configuration['rails_cache_store'] = 'bar' + described_class['rails_cache_store'] = 'bar' end it 'changes the cache store' do - OpenProject::Configuration.send(:configure_cache, application_config) + described_class.send(:configure_cache, application_config) expect(application_config.cache_store).to eq([:bar]) end end context 'without additional cache store configuration' do before do - OpenProject::Configuration['rails_cache_store'] = nil + described_class['rails_cache_store'] = nil end it 'does not change the cache store' do - OpenProject::Configuration.send(:configure_cache, application_config) + described_class.send(:configure_cache, application_config) expect(application_config.cache_store).to eq('foo') end end @@ -465,32 +502,33 @@ describe OpenProject::Configuration do context 'with additional cache store configuration' do before do - OpenProject::Configuration['rails_cache_store'] = 'bar' + described_class['rails_cache_store'] = 'bar' end it 'changes the cache store' do - OpenProject::Configuration.send(:configure_cache, application_config) + described_class.send(:configure_cache, application_config) expect(application_config.cache_store).to eq([:bar]) end end context 'without additional cache store configuration' do before do - OpenProject::Configuration['rails_cache_store'] = nil + described_class['rails_cache_store'] = nil end + it 'defaults the cache store to :file_store' do - OpenProject::Configuration.send(:configure_cache, application_config) + described_class.send(:configure_cache, application_config) expect(application_config.cache_store.first).to eq(:file_store) end end end end - context 'helpers' do + describe 'helpers' do describe '#direct_uploads?' do - let(:value) { OpenProject::Configuration.direct_uploads? } + let(:value) { described_class.direct_uploads? } - it 'should be false by default' do + it 'is false by default' do expect(value).to be false end @@ -507,13 +545,13 @@ describe OpenProject::Configuration do end context 'AWS', with_config: storage('AWS') do - it 'should be true' do + it 'is true' do expect(value).to be true end end context 'Azure', with_config: storage('azure') do - it 'should be false' do + it 'is false' do expect(value).to be false end end From d88f0fb25706c6d9407c2869c3ba1ee150b97f9a Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Thu, 10 Feb 2022 03:04:55 +0000 Subject: [PATCH 118/118] update locales from crowdin [ci skip] --- config/locales/crowdin/js-af.yml | 1 + config/locales/crowdin/js-ar.yml | 1 + config/locales/crowdin/js-az.yml | 1 + config/locales/crowdin/js-bg.yml | 1 + config/locales/crowdin/js-ca.yml | 1 + config/locales/crowdin/js-cs.yml | 1 + config/locales/crowdin/js-da.yml | 1 + config/locales/crowdin/js-de.yml | 1 + config/locales/crowdin/js-el.yml | 1 + config/locales/crowdin/js-eo.yml | 1 + config/locales/crowdin/js-es.yml | 1 + config/locales/crowdin/js-et.yml | 1 + config/locales/crowdin/js-fa.yml | 1 + config/locales/crowdin/js-fi.yml | 1 + config/locales/crowdin/js-fil.yml | 1 + config/locales/crowdin/js-fr.yml | 1 + config/locales/crowdin/js-he.yml | 1 + config/locales/crowdin/js-hi.yml | 1 + config/locales/crowdin/js-hr.yml | 1 + config/locales/crowdin/js-hu.yml | 1 + config/locales/crowdin/js-id.yml | 1 + config/locales/crowdin/js-it.yml | 1 + config/locales/crowdin/js-ja.yml | 1 + config/locales/crowdin/js-ko.yml | 1 + config/locales/crowdin/js-lol.yml | 1907 +++++++++-------- config/locales/crowdin/js-lt.yml | 1 + config/locales/crowdin/js-lv.yml | 1 + config/locales/crowdin/js-ne.yml | 1 + config/locales/crowdin/js-nl.yml | 1 + config/locales/crowdin/js-no.yml | 1 + config/locales/crowdin/js-pl.yml | 1 + config/locales/crowdin/js-pt.yml | 1 + config/locales/crowdin/js-ro.yml | 1 + config/locales/crowdin/js-ru.yml | 1 + config/locales/crowdin/js-rw.yml | 1 + config/locales/crowdin/js-si.yml | 1 + config/locales/crowdin/js-sk.yml | 1 + config/locales/crowdin/js-sl.yml | 1 + config/locales/crowdin/js-sv.yml | 1 + config/locales/crowdin/js-th.yml | 1 + config/locales/crowdin/js-tr.yml | 1 + config/locales/crowdin/js-uk.yml | 1 + config/locales/crowdin/js-vi.yml | 1 + config/locales/crowdin/js-zh-TW.yml | 1 + .../config/locales/crowdin/js-ru.yml | 4 +- 45 files changed, 999 insertions(+), 955 deletions(-) diff --git a/config/locales/crowdin/js-af.yml b/config/locales/crowdin/js-af.yml index 7ee30bf7f2..233645588c 100644 --- a/config/locales/crowdin/js-af.yml +++ b/config/locales/crowdin/js-af.yml @@ -61,6 +61,7 @@ af: button_confirm: "Confirm" button_continue: "Continue" button_copy: "Kopieer" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Pasgemaakte velde" button_delete: "Skrap" button_delete_watcher: "Delete watcher" diff --git a/config/locales/crowdin/js-ar.yml b/config/locales/crowdin/js-ar.yml index b6f5c5c69c..d51129ff8d 100644 --- a/config/locales/crowdin/js-ar.yml +++ b/config/locales/crowdin/js-ar.yml @@ -61,6 +61,7 @@ ar: button_confirm: "تأكيد" button_continue: "Continue" button_copy: "انسخ" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "الحقول المخصصة" button_delete: "احذف" button_delete_watcher: "احذف المراقب" diff --git a/config/locales/crowdin/js-az.yml b/config/locales/crowdin/js-az.yml index 7dba94e57f..94976b9346 100644 --- a/config/locales/crowdin/js-az.yml +++ b/config/locales/crowdin/js-az.yml @@ -61,6 +61,7 @@ az: button_confirm: "Confirm" button_continue: "Continue" button_copy: "Copy" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "İzləyicini sil" diff --git a/config/locales/crowdin/js-bg.yml b/config/locales/crowdin/js-bg.yml index 881b03fc39..832b0835e9 100644 --- a/config/locales/crowdin/js-bg.yml +++ b/config/locales/crowdin/js-bg.yml @@ -61,6 +61,7 @@ bg: button_confirm: "Confirm" button_continue: "Продължаване" button_copy: "Копиране" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "допълнителни полета" button_delete: "Изтрий" button_delete_watcher: "Премахни наблюдаващ" diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml index e7693898b7..9f5320be77 100644 --- a/config/locales/crowdin/js-ca.yml +++ b/config/locales/crowdin/js-ca.yml @@ -61,6 +61,7 @@ ca: button_confirm: "Confirmar" button_continue: "Continue" button_copy: "Copiar" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Camps personalitzats" button_delete: "Esborrar" button_delete_watcher: "Suprimir l'observador" diff --git a/config/locales/crowdin/js-cs.yml b/config/locales/crowdin/js-cs.yml index 4efcc8ff8b..84a545b33c 100644 --- a/config/locales/crowdin/js-cs.yml +++ b/config/locales/crowdin/js-cs.yml @@ -61,6 +61,7 @@ cs: button_confirm: "Potvrdit" button_continue: "Pokračovat" button_copy: "Kopírovat" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Vlastní pole" button_delete: "Odstranit" button_delete_watcher: "Smazat sledujícího uživatele" diff --git a/config/locales/crowdin/js-da.yml b/config/locales/crowdin/js-da.yml index aef8c8619b..45bd5b2889 100644 --- a/config/locales/crowdin/js-da.yml +++ b/config/locales/crowdin/js-da.yml @@ -61,6 +61,7 @@ da: button_confirm: "Bekræft" button_continue: "Fortsæt" button_copy: "Kopier" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Selvvalgte felter" button_delete: "Slet" button_delete_watcher: "Slet tilsynsførende" diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml index 649067770f..2fa8f501c8 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -61,6 +61,7 @@ de: button_confirm: "Bestätigen" button_continue: "Fortfahren" button_copy: "Kopieren" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Benutzerdefinierte Felder" button_delete: "Lösche" button_delete_watcher: "Beobachter löschen" diff --git a/config/locales/crowdin/js-el.yml b/config/locales/crowdin/js-el.yml index bd73a055df..ced7e39e64 100644 --- a/config/locales/crowdin/js-el.yml +++ b/config/locales/crowdin/js-el.yml @@ -61,6 +61,7 @@ el: button_confirm: "Επιβεβαίωση" button_continue: "Συνέχεια" button_copy: "Αντιγραφή" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Προσαρμοσμένα πεδία" button_delete: "Διαγραφή" button_delete_watcher: "Διαγραφή παρατηρητή" diff --git a/config/locales/crowdin/js-eo.yml b/config/locales/crowdin/js-eo.yml index cf3195e57a..be223a29ba 100644 --- a/config/locales/crowdin/js-eo.yml +++ b/config/locales/crowdin/js-eo.yml @@ -61,6 +61,7 @@ eo: button_confirm: "Konfirmi" button_continue: "Daŭrigi" button_copy: "Kopii" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Propraj kampoj" button_delete: "Forigi" button_delete_watcher: "Forigi observantojn" diff --git a/config/locales/crowdin/js-es.yml b/config/locales/crowdin/js-es.yml index cf699ef9b9..8b98274f9b 100644 --- a/config/locales/crowdin/js-es.yml +++ b/config/locales/crowdin/js-es.yml @@ -61,6 +61,7 @@ es: button_confirm: "Confirmar" button_continue: "Continuar" button_copy: "Copiar" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Campos Personalizados" button_delete: "Borrar" button_delete_watcher: "Eliminar los observadores" diff --git a/config/locales/crowdin/js-et.yml b/config/locales/crowdin/js-et.yml index f5fe341e92..47ffeab13f 100644 --- a/config/locales/crowdin/js-et.yml +++ b/config/locales/crowdin/js-et.yml @@ -61,6 +61,7 @@ et: button_confirm: "Confirm" button_continue: "Jätka" button_copy: "Kopeeri" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Lisaväljad" button_delete: "Kustuta" button_delete_watcher: "Kustuta jäligja" diff --git a/config/locales/crowdin/js-fa.yml b/config/locales/crowdin/js-fa.yml index 224eb55a81..3aa404f0c0 100644 --- a/config/locales/crowdin/js-fa.yml +++ b/config/locales/crowdin/js-fa.yml @@ -61,6 +61,7 @@ fa: button_confirm: "تایید" button_continue: "Continue" button_copy: "کپی" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Custom fields" button_delete: "حذف" button_delete_watcher: "حذف ناظر" diff --git a/config/locales/crowdin/js-fi.yml b/config/locales/crowdin/js-fi.yml index 9bb3e72228..dfe8c37ab0 100644 --- a/config/locales/crowdin/js-fi.yml +++ b/config/locales/crowdin/js-fi.yml @@ -61,6 +61,7 @@ fi: button_confirm: "Vahvista" button_continue: "Jatka" button_copy: "Kopioi" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Mukautetut kentät" button_delete: "Poista" button_delete_watcher: "Poista seuraaja" diff --git a/config/locales/crowdin/js-fil.yml b/config/locales/crowdin/js-fil.yml index 33d1cbe4e6..b18099ad4f 100644 --- a/config/locales/crowdin/js-fil.yml +++ b/config/locales/crowdin/js-fil.yml @@ -61,6 +61,7 @@ fil: button_confirm: "Kumpirmahin" button_continue: "Magpatuloy" button_copy: "Kopyahin" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Mga pasadyang patlang" button_delete: "Burahin" button_delete_watcher: "Burahin ang manunuod" diff --git a/config/locales/crowdin/js-fr.yml b/config/locales/crowdin/js-fr.yml index ef930181ab..b4a9c60a59 100644 --- a/config/locales/crowdin/js-fr.yml +++ b/config/locales/crowdin/js-fr.yml @@ -61,6 +61,7 @@ fr: button_confirm: "Confirmer" button_continue: "Continuer" button_copy: "Copier" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Champs personnalisés" button_delete: "Supprimer" button_delete_watcher: "Supprimer observateur" diff --git a/config/locales/crowdin/js-he.yml b/config/locales/crowdin/js-he.yml index 9872b33f69..296b10563a 100644 --- a/config/locales/crowdin/js-he.yml +++ b/config/locales/crowdin/js-he.yml @@ -61,6 +61,7 @@ he: button_confirm: "אשר" button_continue: "Continue" button_copy: "העתק" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "שדות מותאמים אישית" button_delete: "מחק" button_delete_watcher: "הסרת צופה" diff --git a/config/locales/crowdin/js-hi.yml b/config/locales/crowdin/js-hi.yml index 4aa49df0a8..08da8f491e 100644 --- a/config/locales/crowdin/js-hi.yml +++ b/config/locales/crowdin/js-hi.yml @@ -61,6 +61,7 @@ hi: button_confirm: "Confirm" button_continue: "Continue" button_copy: "प्रतिलिपि बनाएँ" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Custom fields" button_delete: "मिटाएँ" button_delete_watcher: "द्रष्टा हटाएँ" diff --git a/config/locales/crowdin/js-hr.yml b/config/locales/crowdin/js-hr.yml index 357e700106..a89c017353 100644 --- a/config/locales/crowdin/js-hr.yml +++ b/config/locales/crowdin/js-hr.yml @@ -61,6 +61,7 @@ hr: button_confirm: "Potvrdi" button_continue: "Nastavi" button_copy: "Kopiraj" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Prilagođena polja" button_delete: "Obriši" button_delete_watcher: "Izbrišite nadglednika" diff --git a/config/locales/crowdin/js-hu.yml b/config/locales/crowdin/js-hu.yml index 9ce136a939..fbf23965ae 100644 --- a/config/locales/crowdin/js-hu.yml +++ b/config/locales/crowdin/js-hu.yml @@ -63,6 +63,7 @@ hu: button_confirm: "Jóváhagy" button_continue: "Folytatás" button_copy: "Másol" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Választható mezők" button_delete: "Törlés" button_delete_watcher: "Megfigyelő törlése" diff --git a/config/locales/crowdin/js-id.yml b/config/locales/crowdin/js-id.yml index 5df8b3283f..d9acfc74a9 100644 --- a/config/locales/crowdin/js-id.yml +++ b/config/locales/crowdin/js-id.yml @@ -61,6 +61,7 @@ id: button_confirm: "Konfirmasi" button_continue: "Lanjut" button_copy: "Salin" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Isian kustom" button_delete: "Hapus" button_delete_watcher: "Hapus pemantau" diff --git a/config/locales/crowdin/js-it.yml b/config/locales/crowdin/js-it.yml index 54e32e4f01..ab40b92871 100644 --- a/config/locales/crowdin/js-it.yml +++ b/config/locales/crowdin/js-it.yml @@ -61,6 +61,7 @@ it: button_confirm: "Conferma" button_continue: "Continua" button_copy: "Copia" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Campo personalizzato" button_delete: "Cancella" button_delete_watcher: "Elimina osservatore" diff --git a/config/locales/crowdin/js-ja.yml b/config/locales/crowdin/js-ja.yml index 2d791960c7..624b1e3437 100644 --- a/config/locales/crowdin/js-ja.yml +++ b/config/locales/crowdin/js-ja.yml @@ -62,6 +62,7 @@ ja: button_confirm: "確認" button_continue: "続行" button_copy: "コピー" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "カスタムフィールド" button_delete: "削除" button_delete_watcher: "ウォッチャーを削除" diff --git a/config/locales/crowdin/js-ko.yml b/config/locales/crowdin/js-ko.yml index 28cacfdca6..75fd3755d7 100644 --- a/config/locales/crowdin/js-ko.yml +++ b/config/locales/crowdin/js-ko.yml @@ -61,6 +61,7 @@ ko: button_confirm: "확인" button_continue: "계속" button_copy: "복사" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "사용자 정의 필드" button_delete: "삭제" button_delete_watcher: "주시자 삭제" diff --git a/config/locales/crowdin/js-lol.yml b/config/locales/crowdin/js-lol.yml index 898378d34e..af5e80afdc 100644 --- a/config/locales/crowdin/js-lol.yml +++ b/config/locales/crowdin/js-lol.yml @@ -22,1140 +22,1141 @@ lol: js: ajax: - hide: "crwdns712756:0crwdne712756:0" - loading: "crwdns712758:0crwdne712758:0" + hide: "crwdns714886:0crwdne714886:0" + loading: "crwdns714888:0crwdne714888:0" attachments: draggable_hint: | - crwdns712760:0crwdne712760:0 + crwdns714890:0crwdne714890:0 autocomplete_select: placeholder: - multi: "crwdns712762:0%{name}crwdne712762:0" - single: "crwdns712764:0%{name}crwdne712764:0" - remove: "crwdns712766:0%{name}crwdne712766:0" - active: "crwdns712768:0%{label}crwdnd712768:0%{name}crwdne712768:0" + multi: "crwdns714892:0%{name}crwdne714892:0" + single: "crwdns714894:0%{name}crwdne714894:0" + remove: "crwdns714896:0%{name}crwdne714896:0" + active: "crwdns714898:0%{label}crwdnd714898:0%{name}crwdne714898:0" backup: - attachments_disabled: crwdns712770:0crwdne712770:0 + attachments_disabled: crwdns714900:0crwdne714900:0 info: > - crwdns712772:0crwdne712772:0 + crwdns714902:0crwdne714902:0 note: > - crwdns712774:0crwdne712774:0 - last_backup: crwdns712776:0crwdne712776:0 - last_backup_from: crwdns712778:0crwdne712778:0 - title: crwdns712780:0crwdne712780:0 - options: crwdns712782:0crwdne712782:0 - include_attachments: crwdns712784:0crwdne712784:0 - download_backup: crwdns712786:0crwdne712786:0 - request_backup: crwdns712788:0crwdne712788:0 - close_popup_title: "crwdns712790:0crwdne712790:0" - close_filter_title: "crwdns712792:0crwdne712792:0" - close_form_title: "crwdns712794:0crwdne712794:0" - button_add_watcher: "crwdns712796:0crwdne712796:0" - button_add: "crwdns712798:0crwdne712798:0" - button_back: "crwdns712800:0crwdne712800:0" - button_back_to_list_view: "crwdns712802:0crwdne712802:0" - button_cancel: "crwdns712804:0crwdne712804:0" - button_close: "crwdns712806:0crwdne712806:0" - button_change_project: "crwdns712808:0crwdne712808:0" - button_check_all: "crwdns712810:0crwdne712810:0" - button_configure-form: "crwdns712812:0crwdne712812:0" - button_confirm: "crwdns712814:0crwdne712814:0" - button_continue: "crwdns712816:0crwdne712816:0" - button_copy: "crwdns712818:0crwdne712818:0" - button_custom-fields: "crwdns712820:0crwdne712820:0" - button_delete: "crwdns712822:0crwdne712822:0" - button_delete_watcher: "crwdns712824:0crwdne712824:0" - button_details_view: "crwdns712826:0crwdne712826:0" - button_duplicate: "crwdns712828:0crwdne712828:0" - button_edit: "crwdns712830:0crwdne712830:0" - button_filter: "crwdns712832:0crwdne712832:0" - button_collapse_all: "crwdns712834:0crwdne712834:0" - button_expand_all: "crwdns712836:0crwdne712836:0" - button_advanced_filter: "crwdns712838:0crwdne712838:0" - button_list_view: "crwdns712840:0crwdne712840:0" - button_show_view: "crwdns712842:0crwdne712842:0" - button_log_time: "crwdns712844:0crwdne712844:0" - button_more: "crwdns712846:0crwdne712846:0" - button_open_details: "crwdns712848:0crwdne712848:0" - button_close_details: "crwdns712850:0crwdne712850:0" - button_open_fullscreen: "crwdns712852:0crwdne712852:0" - button_show_cards: "crwdns712854:0crwdne712854:0" - button_show_list: "crwdns712856:0crwdne712856:0" - button_quote: "crwdns712858:0crwdne712858:0" - button_save: "crwdns712860:0crwdne712860:0" - button_settings: "crwdns712862:0crwdne712862:0" - button_uncheck_all: "crwdns712864:0crwdne712864:0" - button_update: "crwdns712866:0crwdne712866:0" - button_export-pdf: "crwdns712868:0crwdne712868:0" - button_export-atom: "crwdns712870:0crwdne712870:0" - button_create: "crwdns712872:0crwdne712872:0" + crwdns714904:0crwdne714904:0 + last_backup: crwdns714906:0crwdne714906:0 + last_backup_from: crwdns714908:0crwdne714908:0 + title: crwdns714910:0crwdne714910:0 + options: crwdns714912:0crwdne714912:0 + include_attachments: crwdns714914:0crwdne714914:0 + download_backup: crwdns714916:0crwdne714916:0 + request_backup: crwdns714918:0crwdne714918:0 + close_popup_title: "crwdns714920:0crwdne714920:0" + close_filter_title: "crwdns714922:0crwdne714922:0" + close_form_title: "crwdns714924:0crwdne714924:0" + button_add_watcher: "crwdns714926:0crwdne714926:0" + button_add: "crwdns714928:0crwdne714928:0" + button_back: "crwdns714930:0crwdne714930:0" + button_back_to_list_view: "crwdns714932:0crwdne714932:0" + button_cancel: "crwdns714934:0crwdne714934:0" + button_close: "crwdns714936:0crwdne714936:0" + button_change_project: "crwdns714938:0crwdne714938:0" + button_check_all: "crwdns714940:0crwdne714940:0" + button_configure-form: "crwdns714942:0crwdne714942:0" + button_confirm: "crwdns714944:0crwdne714944:0" + button_continue: "crwdns714946:0crwdne714946:0" + button_copy: "crwdns714948:0crwdne714948:0" + button_copy_to_other_project: "crwdns714950:0crwdne714950:0" + button_custom-fields: "crwdns714952:0crwdne714952:0" + button_delete: "crwdns714954:0crwdne714954:0" + button_delete_watcher: "crwdns714956:0crwdne714956:0" + button_details_view: "crwdns714958:0crwdne714958:0" + button_duplicate: "crwdns714960:0crwdne714960:0" + button_edit: "crwdns714962:0crwdne714962:0" + button_filter: "crwdns714964:0crwdne714964:0" + button_collapse_all: "crwdns714966:0crwdne714966:0" + button_expand_all: "crwdns714968:0crwdne714968:0" + button_advanced_filter: "crwdns714970:0crwdne714970:0" + button_list_view: "crwdns714972:0crwdne714972:0" + button_show_view: "crwdns714974:0crwdne714974:0" + button_log_time: "crwdns714976:0crwdne714976:0" + button_more: "crwdns714978:0crwdne714978:0" + button_open_details: "crwdns714980:0crwdne714980:0" + button_close_details: "crwdns714982:0crwdne714982:0" + button_open_fullscreen: "crwdns714984:0crwdne714984:0" + button_show_cards: "crwdns714986:0crwdne714986:0" + button_show_list: "crwdns714988:0crwdne714988:0" + button_quote: "crwdns714990:0crwdne714990:0" + button_save: "crwdns714992:0crwdne714992:0" + button_settings: "crwdns714994:0crwdne714994:0" + button_uncheck_all: "crwdns714996:0crwdne714996:0" + button_update: "crwdns714998:0crwdne714998:0" + button_export-pdf: "crwdns715000:0crwdne715000:0" + button_export-atom: "crwdns715002:0crwdne715002:0" + button_create: "crwdns715004:0crwdne715004:0" card: - add_new: 'crwdns712874:0crwdne712874:0' + add_new: 'crwdns715006:0crwdne715006:0' highlighting: - inline: 'crwdns712876:0crwdne712876:0' - entire_card_by: 'crwdns712878:0crwdne712878:0' - remove_from_list: 'crwdns712880:0crwdne712880:0' - caption_rate_history: "crwdns712882:0crwdne712882:0" + inline: 'crwdns715008:0crwdne715008:0' + entire_card_by: 'crwdns715010:0crwdne715010:0' + remove_from_list: 'crwdns715012:0crwdne715012:0' + caption_rate_history: "crwdns715014:0crwdne715014:0" clipboard: - browser_error: "crwdns712884:0crwdne712884:0" - copied_successful: "crwdns712886:0crwdne712886:0" + browser_error: "crwdns715016:0crwdne715016:0" + copied_successful: "crwdns715018:0crwdne715018:0" chart: - type: 'crwdns712888:0crwdne712888:0' - axis_criteria: 'crwdns712890:0crwdne712890:0' - modal_title: 'crwdns712892:0crwdne712892:0' + type: 'crwdns715020:0crwdne715020:0' + axis_criteria: 'crwdns715022:0crwdne715022:0' + modal_title: 'crwdns715024:0crwdne715024:0' types: - line: 'crwdns712894:0crwdne712894:0' - horizontal_bar: 'crwdns712896:0crwdne712896:0' - bar: 'crwdns712898:0crwdne712898:0' - pie: 'crwdns712900:0crwdne712900:0' - doughnut: 'crwdns712902:0crwdne712902:0' - radar: 'crwdns712904:0crwdne712904:0' - polar_area: 'crwdns712906:0crwdne712906:0' + line: 'crwdns715026:0crwdne715026:0' + horizontal_bar: 'crwdns715028:0crwdne715028:0' + bar: 'crwdns715030:0crwdne715030:0' + pie: 'crwdns715032:0crwdne715032:0' + doughnut: 'crwdns715034:0crwdne715034:0' + radar: 'crwdns715036:0crwdne715036:0' + polar_area: 'crwdns715038:0crwdne715038:0' tabs: - graph_settings: 'crwdns712908:0crwdne712908:0' - dataset: 'crwdns712910:0%{number}crwdne712910:0' + graph_settings: 'crwdns715040:0crwdne715040:0' + dataset: 'crwdns715042:0%{number}crwdne715042:0' errors: - could_not_load: 'crwdns712912:0crwdne712912:0' - description_available_columns: "crwdns712914:0crwdne712914:0" - description_current_position: "crwdns712916:0crwdne712916:0" - description_select_work_package: "crwdns712918:0%{id}crwdne712918:0" - description_selected_columns: "crwdns712920:0crwdne712920:0" - description_subwork_package: "crwdns712922:0%{id}crwdne712922:0" + could_not_load: 'crwdns715044:0crwdne715044:0' + description_available_columns: "crwdns715046:0crwdne715046:0" + description_current_position: "crwdns715048:0crwdne715048:0" + description_select_work_package: "crwdns715050:0%{id}crwdne715050:0" + description_selected_columns: "crwdns715052:0crwdne715052:0" + description_subwork_package: "crwdns715054:0%{id}crwdne715054:0" editor: - preview: 'crwdns712924:0crwdne712924:0' - source_code: 'crwdns712926:0crwdne712926:0' - error_saving_failed: 'crwdns712928:0%{error}crwdne712928:0' - ckeditor_error: 'crwdns712930:0crwdne712930:0' + preview: 'crwdns715056:0crwdne715056:0' + source_code: 'crwdns715058:0crwdne715058:0' + error_saving_failed: 'crwdns715060:0%{error}crwdne715060:0' + ckeditor_error: 'crwdns715062:0crwdne715062:0' mode: - manual: 'crwdns712932:0crwdne712932:0' - wysiwyg: 'crwdns712934:0crwdne712934:0' + manual: 'crwdns715064:0crwdne715064:0' + wysiwyg: 'crwdns715066:0crwdne715066:0' macro: - error: 'crwdns712936:0%{message}crwdne712936:0' + error: 'crwdns715068:0%{message}crwdne715068:0' attribute_reference: - macro_help_tooltip: 'crwdns712938:0crwdne712938:0' - not_found: 'crwdns712940:0crwdne712940:0' - invalid_attribute: "crwdns712942:0%{name}crwdne712942:0" + macro_help_tooltip: 'crwdns715070:0crwdne715070:0' + not_found: 'crwdns715072:0crwdne715072:0' + invalid_attribute: "crwdns715074:0%{name}crwdne715074:0" child_pages: - button: 'crwdns712944:0crwdne712944:0' - include_parent: 'crwdns712946:0crwdne712946:0' - text: 'crwdns712948:0[Placeholder]crwdne712948:0' - page: 'crwdns712950:0crwdne712950:0' - this_page: 'crwdns712952:0crwdne712952:0' + button: 'crwdns715076:0crwdne715076:0' + include_parent: 'crwdns715078:0crwdne715078:0' + text: 'crwdns715080:0[Placeholder]crwdne715080:0' + page: 'crwdns715082:0crwdne715082:0' + this_page: 'crwdns715084:0crwdne715084:0' hint: | - crwdns712954:0crwdne712954:0 + crwdns715086:0crwdne715086:0 code_block: - button: 'crwdns712956:0crwdne712956:0' - title: 'crwdns712958:0crwdne712958:0' - language: 'crwdns712960:0crwdne712960:0' - language_hint: 'crwdns712962:0crwdne712962:0' + button: 'crwdns715088:0crwdne715088:0' + title: 'crwdns715090:0crwdne715090:0' + language: 'crwdns715092:0crwdne715092:0' + language_hint: 'crwdns715094:0crwdne715094:0' dropdown: - macros: 'crwdns712964:0crwdne712964:0' - chose_macro: 'crwdns712966:0crwdne712966:0' - toc: 'crwdns712968:0crwdne712968:0' - toolbar_help: 'crwdns712970:0crwdne712970:0' + macros: 'crwdns715096:0crwdne715096:0' + chose_macro: 'crwdns715098:0crwdne715098:0' + toc: 'crwdns715100:0crwdne715100:0' + toolbar_help: 'crwdns715102:0crwdne715102:0' wiki_page_include: - button: 'crwdns712972:0crwdne712972:0' - text: 'crwdns712974:0[Placeholder]crwdne712974:0' - page: 'crwdns712976:0crwdne712976:0' - not_set: 'crwdns712978:0crwdne712978:0' + button: 'crwdns715104:0crwdne715104:0' + text: 'crwdns715106:0[Placeholder]crwdne715106:0' + page: 'crwdns715108:0crwdne715108:0' + not_set: 'crwdns715110:0crwdne715110:0' hint: | - crwdns712980:0crwdne712980:0 + crwdns715112:0crwdne715112:0 work_package_button: - button: 'crwdns712982:0crwdne712982:0' - type: 'crwdns712984:0crwdne712984:0' - button_style: 'crwdns712986:0crwdne712986:0' - button_style_hint: 'crwdns712988:0crwdne712988:0' - without_type: 'crwdns712990:0crwdne712990:0' - with_type: 'crwdns712992:0%{typename}crwdne712992:0' + button: 'crwdns715114:0crwdne715114:0' + type: 'crwdns715116:0crwdne715116:0' + button_style: 'crwdns715118:0crwdne715118:0' + button_style_hint: 'crwdns715120:0crwdne715120:0' + without_type: 'crwdns715122:0crwdne715122:0' + with_type: 'crwdns715124:0%{typename}crwdne715124:0' embedded_table: - button: 'crwdns712994:0crwdne712994:0' - text: 'crwdns712996:0[Placeholder]crwdne712996:0' + button: 'crwdns715126:0crwdne715126:0' + text: 'crwdns715128:0[Placeholder]crwdne715128:0' embedded_calendar: - text: 'crwdns712998:0[Placeholder]crwdne712998:0' + text: 'crwdns715130:0[Placeholder]crwdne715130:0' admin: type_form: - custom_field: 'crwdns713000:0crwdne713000:0' - inactive: 'crwdns713002:0crwdne713002:0' - drag_to_activate: "crwdns713004:0crwdne713004:0" - add_group: "crwdns713006:0crwdne713006:0" - add_table: "crwdns713008:0crwdne713008:0" - edit_query: 'crwdns713010:0crwdne713010:0' - new_group: 'crwdns713012:0crwdne713012:0' - reset_to_defaults: 'crwdns713014:0crwdne713014:0' + custom_field: 'crwdns715132:0crwdne715132:0' + inactive: 'crwdns715134:0crwdne715134:0' + drag_to_activate: "crwdns715136:0crwdne715136:0" + add_group: "crwdns715138:0crwdne715138:0" + add_table: "crwdns715140:0crwdne715140:0" + edit_query: 'crwdns715142:0crwdne715142:0' + new_group: 'crwdns715144:0crwdne715144:0' + reset_to_defaults: 'crwdns715146:0crwdne715146:0' enterprise: - text_reprieve_days_left: "crwdns713016:0%{days}crwdne713016:0" - text_expired: "crwdns713018:0crwdne713018:0" + text_reprieve_days_left: "crwdns715148:0%{days}crwdne715148:0" + text_expired: "crwdns715150:0crwdne715150:0" trial: - confirmation: "crwdns713020:0crwdne713020:0" + confirmation: "crwdns715152:0crwdne715152:0" confirmation_info: > - crwdns713022:0%{date}crwdnd713022:0%{email}crwdne713022:0 + crwdns715154:0%{date}crwdnd715154:0%{email}crwdne715154:0 form: general_consent: > - crwdns713024:0%{link_terms}crwdnd713024:0%{link_privacy}crwdne713024:0 - invalid_email: "crwdns713026:0crwdne713026:0" - label_company: "crwdns713028:0crwdne713028:0" - label_first_name: "crwdns713030:0crwdne713030:0" - label_last_name: "crwdns713032:0crwdne713032:0" - label_domain: "crwdns713034:0crwdne713034:0" - label_subscriber: "crwdns713036:0crwdne713036:0" - label_maximum_users: "crwdns713038:0crwdne713038:0" - label_starts_at: "crwdns713040:0crwdne713040:0" - label_expires_at: "crwdns713042:0crwdne713042:0" - receive_newsletter: crwdns713044:0%{link}crwdne713044:0 - taken_domain: crwdns713046:0crwdne713046:0 - taken_email: crwdns713048:0crwdne713048:0 - email_not_received: "crwdns713050:0crwdne713050:0" - try_another_email: "crwdns713052:0crwdne713052:0" - next_steps: "crwdns713054:0crwdne713054:0" - resend_link: "crwdns713056:0crwdne713056:0" - resend_success: "crwdns713058:0crwdne713058:0" - resend_warning: "crwdns713060:0crwdne713060:0" - session_timeout: "crwdns713062:0crwdne713062:0" - status_label: "crwdns713064:0crwdne713064:0" - status_confirmed: "crwdns713066:0crwdne713066:0" - status_waiting: "crwdns713068:0crwdne713068:0" - test_ee: "crwdns713070:0crwdne713070:0" - quick_overview: "crwdns713072:0crwdne713072:0" + crwdns715156:0%{link_terms}crwdnd715156:0%{link_privacy}crwdne715156:0 + invalid_email: "crwdns715158:0crwdne715158:0" + label_company: "crwdns715160:0crwdne715160:0" + label_first_name: "crwdns715162:0crwdne715162:0" + label_last_name: "crwdns715164:0crwdne715164:0" + label_domain: "crwdns715166:0crwdne715166:0" + label_subscriber: "crwdns715168:0crwdne715168:0" + label_maximum_users: "crwdns715170:0crwdne715170:0" + label_starts_at: "crwdns715172:0crwdne715172:0" + label_expires_at: "crwdns715174:0crwdne715174:0" + receive_newsletter: crwdns715176:0%{link}crwdne715176:0 + taken_domain: crwdns715178:0crwdne715178:0 + taken_email: crwdns715180:0crwdne715180:0 + email_not_received: "crwdns715182:0crwdne715182:0" + try_another_email: "crwdns715184:0crwdne715184:0" + next_steps: "crwdns715186:0crwdne715186:0" + resend_link: "crwdns715188:0crwdne715188:0" + resend_success: "crwdns715190:0crwdne715190:0" + resend_warning: "crwdns715192:0crwdne715192:0" + session_timeout: "crwdns715194:0crwdne715194:0" + status_label: "crwdns715196:0crwdne715196:0" + status_confirmed: "crwdns715198:0crwdne715198:0" + status_waiting: "crwdns715200:0crwdne715200:0" + test_ee: "crwdns715202:0crwdne715202:0" + quick_overview: "crwdns715204:0crwdne715204:0" upsale: - become_hero: "crwdns713074:0crwdne713074:0" + become_hero: "crwdns715206:0crwdne715206:0" benefits: - description: "crwdns713076:0crwdne713076:0" - high_security: "crwdns713078:0crwdne713078:0" - high_security_text: "crwdns713080:0crwdne713080:0" - installation: "crwdns713082:0crwdne713082:0" - installation_text: "crwdns713084:0crwdne713084:0" - premium_features: "crwdns713086:0crwdne713086:0" - premium_features_text: "crwdns713088:0crwdne713088:0" - professional_support: "crwdns713090:0crwdne713090:0" - professional_support_text: "crwdns713092:0crwdne713092:0" - button_start_trial: "crwdns713094:0crwdne713094:0" - button_book_now: "crwdns713096:0crwdne713096:0" + description: "crwdns715208:0crwdne715208:0" + high_security: "crwdns715210:0crwdne715210:0" + high_security_text: "crwdns715212:0crwdne715212:0" + installation: "crwdns715214:0crwdne715214:0" + installation_text: "crwdns715216:0crwdne715216:0" + premium_features: "crwdns715218:0crwdne715218:0" + premium_features_text: "crwdns715220:0crwdne715220:0" + professional_support: "crwdns715222:0crwdne715222:0" + professional_support_text: "crwdns715224:0crwdne715224:0" + button_start_trial: "crwdns715226:0crwdne715226:0" + button_book_now: "crwdns715228:0crwdne715228:0" confidence: > - crwdns713098:0crwdne713098:0 - link_quote: "crwdns713100:0crwdne713100:0" + crwdns715230:0crwdne715230:0 + link_quote: "crwdns715232:0crwdne715232:0" text: > - crwdns713102:0crwdne713102:0 - unlimited: "crwdns713104:0crwdne713104:0" - you_contribute: "crwdns713106:0crwdne713106:0" + crwdns715234:0crwdne715234:0 + unlimited: "crwdns715236:0crwdne715236:0" + you_contribute: "crwdns715238:0crwdne715238:0" custom_actions: date: - specific: 'crwdns713108:0crwdne713108:0' - current_date: 'crwdns713110:0crwdne713110:0' + specific: 'crwdns715240:0crwdne715240:0' + current_date: 'crwdns715242:0crwdne715242:0' error: - internal: "crwdns713112:0crwdne713112:0" - cannot_save_changes_with_message: "crwdns713114:0%{error}crwdne713114:0" - query_saving: "crwdns713116:0crwdne713116:0" - embedded_table_loading: "crwdns713118:0%{message}crwdne713118:0" - enumeration_activities: "crwdns713120:0crwdne713120:0" - enumeration_doc_categories: "crwdns713122:0crwdne713122:0" - enumeration_work_package_priorities: "crwdns713124:0crwdne713124:0" + internal: "crwdns715244:0crwdne715244:0" + cannot_save_changes_with_message: "crwdns715246:0%{error}crwdne715246:0" + query_saving: "crwdns715248:0crwdne715248:0" + embedded_table_loading: "crwdns715250:0%{message}crwdne715250:0" + enumeration_activities: "crwdns715252:0crwdne715252:0" + enumeration_doc_categories: "crwdns715254:0crwdne715254:0" + enumeration_work_package_priorities: "crwdns715256:0crwdne715256:0" filter: description: - text_open_filter: "crwdns713126:0crwdne713126:0" - text_close_filter: "crwdns713128:0crwdne713128:0" - noneElement: "crwdns713130:0crwdne713130:0" + text_open_filter: "crwdns715258:0crwdne715258:0" + text_close_filter: "crwdns715260:0crwdne715260:0" + noneElement: "crwdns715262:0crwdne715262:0" time_zone_converted: - two_values: "crwdns713132:0%{from}crwdnd713132:0%{to}crwdne713132:0" - only_start: "crwdns713134:0%{from}crwdne713134:0" - only_end: "crwdns713136:0%{to}crwdne713136:0" - value_spacer: "crwdns713138:0crwdne713138:0" + two_values: "crwdns715264:0%{from}crwdnd715264:0%{to}crwdne715264:0" + only_start: "crwdns715266:0%{from}crwdne715266:0" + only_end: "crwdns715268:0%{to}crwdne715268:0" + value_spacer: "crwdns715270:0crwdne715270:0" sorting: criteria: - one: "crwdns713140:0crwdne713140:0" - two: "crwdns713142:0crwdne713142:0" - three: "crwdns713144:0crwdne713144:0" - upsale_for_more: "crwdns713146:0crwdne713146:0" - upsale_link: 'crwdns713148:0crwdne713148:0' - general_text_no: "crwdns713150:0crwdne713150:0" - general_text_yes: "crwdns713152:0crwdne713152:0" - general_text_No: "crwdns713154:0crwdne713154:0" - general_text_Yes: "crwdns713156:0crwdne713156:0" + one: "crwdns715272:0crwdne715272:0" + two: "crwdns715274:0crwdne715274:0" + three: "crwdns715276:0crwdne715276:0" + upsale_for_more: "crwdns715278:0crwdne715278:0" + upsale_link: 'crwdns715280:0crwdne715280:0' + general_text_no: "crwdns715282:0crwdne715282:0" + general_text_yes: "crwdns715284:0crwdne715284:0" + general_text_No: "crwdns715286:0crwdne715286:0" + general_text_Yes: "crwdns715288:0crwdne715288:0" hal: error: - update_conflict_refresh: "crwdns713158:0crwdne713158:0" - edit_prohibited: "crwdns713160:0%{attribute}crwdne713160:0" + update_conflict_refresh: "crwdns715290:0crwdne715290:0" + edit_prohibited: "crwdns715292:0%{attribute}crwdne715292:0" format: - date: "crwdns713162:0%{attribute}crwdne713162:0" - general: "crwdns713164:0crwdne713164:0" + date: "crwdns715294:0%{attribute}crwdne715294:0" + general: "crwdns715296:0crwdne715296:0" homescreen: blocks: new_features: - text_new_features: "crwdns713166:0crwdne713166:0" - learn_about: "crwdns713168:0crwdne713168:0" + text_new_features: "crwdns715298:0crwdne715298:0" + learn_about: "crwdns715300:0crwdne715300:0" #Include the version to invalidate outdated translations in other locales. #Otherwise, e.g. chinese might still have the translations for 10.0 in the 12.0 release. '12_0': standard: - learn_about_link: crwdns713170:0crwdne713170:0 + learn_about_link: crwdns715302:0crwdne715302:0 new_features_html: > - crwdns713172:0%{list_styling_class}crwdne713172:0 + crwdns715304:0%{list_styling_class}crwdne715304:0 bim: - learn_about_link: crwdns713174:0crwdne713174:0 + learn_about_link: crwdns715306:0crwdne715306:0 new_features_html: > - crwdns713176:0%{list_styling_class}crwdne713176:0 - label_activate: "crwdns713178:0crwdne713178:0" - label_add_column_after: "crwdns713180:0crwdne713180:0" - label_add_column_before: "crwdns713182:0crwdne713182:0" - label_add_columns: "crwdns713184:0crwdne713184:0" - label_add_comment: "crwdns713186:0crwdne713186:0" - label_add_comment_title: "crwdns713188:0crwdne713188:0" - label_add_row_after: "crwdns713190:0crwdne713190:0" - label_add_row_before: "crwdns713192:0crwdne713192:0" - label_add_selected_columns: "crwdns713194:0crwdne713194:0" - label_added_by: "crwdns713196:0crwdne713196:0" - label_added_time_by: "crwdns713198:0%{authorLink}crwdnd713198:0%{author}crwdnd713198:0%{age}crwdne713198:0" - label_ago: "crwdns713200:0crwdne713200:0" - label_all: "crwdns713202:0crwdne713202:0" - label_all_work_packages: "crwdns713204:0crwdne713204:0" - label_and: "crwdns713206:0crwdne713206:0" - label_ascending: "crwdns713208:0crwdne713208:0" - label_author: "crwdns713210:0%{user}crwdne713210:0" - label_avatar: "crwdns713212:0crwdne713212:0" - label_between: "crwdns713214:0crwdne713214:0" - label_board: "crwdns713216:0crwdne713216:0" - label_board_locked: "crwdns713218:0crwdne713218:0" - label_board_plural: "crwdns713220:0crwdne713220:0" - label_board_sticky: "crwdns713222:0crwdne713222:0" - label_change: "crwdns713224:0crwdne713224:0" - label_create: "crwdns713226:0crwdne713226:0" - label_create_work_package: "crwdns713228:0crwdne713228:0" - label_created_by: "crwdns713230:0crwdne713230:0" - label_date: "crwdns713232:0crwdne713232:0" - label_date_with_format: "crwdns713234:0%{date_attribute}crwdnd713234:0%{format}crwdne713234:0" - label_deactivate: "crwdns713236:0crwdne713236:0" - label_descending: "crwdns713238:0crwdne713238:0" - label_description: "crwdns713240:0crwdne713240:0" - label_details: "crwdns713242:0crwdne713242:0" - label_display: "crwdns713244:0crwdne713244:0" - label_cancel_comment: "crwdns713246:0crwdne713246:0" - label_closed_work_packages: "crwdns713248:0crwdne713248:0" - label_collapse: "crwdns713250:0crwdne713250:0" - label_collapsed: "crwdns713252:0crwdne713252:0" - label_collapse_all: "crwdns713254:0crwdne713254:0" - label_comment: "crwdns713256:0crwdne713256:0" - label_committed_at: "crwdns713258:0%{committed_revision_link}crwdnd713258:0%{date}crwdne713258:0" - label_committed_link: "crwdns713260:0%{revision_identifier}crwdne713260:0" - label_contains: "crwdns713262:0crwdne713262:0" - label_created_on: "crwdns713264:0crwdne713264:0" - label_edit_comment: "crwdns713266:0crwdne713266:0" - label_edit_status: "crwdns713268:0crwdne713268:0" - label_email: "crwdns713270:0crwdne713270:0" - label_equals: "crwdns713272:0crwdne713272:0" - label_expand: "crwdns713274:0crwdne713274:0" - label_expanded: "crwdns713276:0crwdne713276:0" - label_expand_all: "crwdns713278:0crwdne713278:0" - label_expand_project_menu: "crwdns713280:0crwdne713280:0" - label_export: "crwdns713282:0crwdne713282:0" - label_export_preparing: "crwdns713284:0crwdne713284:0" - label_filename: "crwdns713286:0crwdne713286:0" - label_filesize: "crwdns713288:0crwdne713288:0" - label_general: "crwdns713290:0crwdne713290:0" - label_global_roles: "crwdns713292:0crwdne713292:0" - label_greater_or_equal: "crwdns713294:0crwdne713294:0" - label_group: 'crwdns713296:0crwdne713296:0' - label_group_by: "crwdns713298:0crwdne713298:0" - label_group_plural: "crwdns713300:0crwdne713300:0" - label_hide_attributes: "crwdns713302:0crwdne713302:0" - label_hide_column: "crwdns713304:0crwdne713304:0" - label_hide_project_menu: "crwdns713306:0crwdne713306:0" - label_in: "crwdns713308:0crwdne713308:0" - label_in_less_than: "crwdns713310:0crwdne713310:0" - label_in_more_than: "crwdns713312:0crwdne713312:0" - label_incoming_emails: "crwdns713314:0crwdne713314:0" - label_information_plural: "crwdns713316:0crwdne713316:0" - label_import: "crwdns713318:0crwdne713318:0" - label_latest_activity: "crwdns713320:0crwdne713320:0" - label_last_updated_on: "crwdns713322:0crwdne713322:0" - label_learn_more_link: "crwdns713324:0crwdne713324:0" - label_less_or_equal: "crwdns713326:0crwdne713326:0" - label_less_than_ago: "crwdns713328:0crwdne713328:0" - label_loading: "crwdns713330:0crwdne713330:0" - label_mail_notification: "crwdns713332:0crwdne713332:0" - label_me: "crwdns713334:0crwdne713334:0" - label_meeting_agenda: "crwdns713336:0crwdne713336:0" - label_meeting_minutes: "crwdns713338:0crwdne713338:0" - label_menu_collapse: "crwdns713340:0crwdne713340:0" - label_menu_expand: "crwdns713342:0crwdne713342:0" - label_more_than_ago: "crwdns713344:0crwdne713344:0" - label_next: "crwdns713346:0crwdne713346:0" - label_no_color: "crwdns713348:0crwdne713348:0" - label_no_data: "crwdns713350:0crwdne713350:0" - label_no_due_date: "crwdns713352:0crwdne713352:0" - label_no_start_date: "crwdns713354:0crwdne713354:0" - label_no_value: "crwdns713356:0crwdne713356:0" - label_none: "crwdns713358:0crwdne713358:0" - label_not_contains: "crwdns713360:0crwdne713360:0" - label_not_equals: "crwdns713362:0crwdne713362:0" - label_on: "crwdns713364:0crwdne713364:0" - label_open_menu: "crwdns713366:0crwdne713366:0" - label_open_context_menu: "crwdns713368:0crwdne713368:0" - label_open_work_packages: "crwdns713370:0crwdne713370:0" - label_password: "crwdns713372:0crwdne713372:0" - label_previous: "crwdns713374:0crwdne713374:0" - label_per_page: "crwdns713376:0crwdne713376:0" - label_please_wait: "crwdns713378:0crwdne713378:0" - label_project_plural: "crwdns713380:0crwdne713380:0" - label_visibility_settings: "crwdns713382:0crwdne713382:0" - label_quote_comment: "crwdns713384:0crwdne713384:0" - label_recent: "crwdns713386:0crwdne713386:0" - label_reset: "crwdns713388:0crwdne713388:0" - label_remove: "crwdns713390:0crwdne713390:0" - label_remove_column: "crwdns713392:0crwdne713392:0" - label_remove_columns: "crwdns713394:0crwdne713394:0" - label_remove_row: "crwdns713396:0crwdne713396:0" - label_report: "crwdns713398:0crwdne713398:0" - label_repository_plural: "crwdns713400:0crwdne713400:0" - label_save_as: "crwdns713402:0crwdne713402:0" - label_select_watcher: "crwdns713404:0crwdne713404:0" - label_selected_filter_list: "crwdns713406:0crwdne713406:0" - label_show_attributes: "crwdns713408:0crwdne713408:0" - label_show_in_menu: "crwdns713410:0crwdne713410:0" - label_sort_by: "crwdns713412:0crwdne713412:0" - label_sorted_by: "crwdns713414:0crwdne713414:0" - label_sort_higher: "crwdns713416:0crwdne713416:0" - label_sort_lower: "crwdns713418:0crwdne713418:0" - label_sorting: "crwdns713420:0crwdne713420:0" - label_spent_time: "crwdns713422:0crwdne713422:0" - label_star_query: "crwdns713424:0crwdne713424:0" - label_press_enter_to_save: "crwdns713426:0crwdne713426:0" - label_public_query: "crwdns713428:0crwdne713428:0" - label_sum: "crwdns713430:0crwdne713430:0" - label_sum_for: "crwdns713432:0crwdne713432:0" - label_total_sum: "crwdns713434:0crwdne713434:0" - label_subject: "crwdns713436:0crwdne713436:0" - label_this_week: "crwdns713438:0crwdne713438:0" - label_today: "crwdns713440:0crwdne713440:0" - label_time_entry_plural: "crwdns713442:0crwdne713442:0" - label_up: "crwdns713444:0crwdne713444:0" - label_user_plural: "crwdns713446:0crwdne713446:0" - label_activity_show_only_comments: "crwdns713448:0crwdne713448:0" - label_activity_show_all: "crwdns713450:0crwdne713450:0" - label_total_progress: "crwdns713452:0%{percent}crwdne713452:0" - label_total_amount: "crwdns713454:0%{amount}crwdne713454:0" - label_updated_on: "crwdns713456:0crwdne713456:0" - label_value_derived_from_children: "crwdns713458:0crwdne713458:0" - label_children_derived_duration: "crwdns713460:0crwdne713460:0" - label_warning: "crwdns713462:0crwdne713462:0" - label_work_package: "crwdns713464:0crwdne713464:0" - label_work_package_parent: "crwdns713466:0crwdne713466:0" - label_work_package_plural: "crwdns713468:0crwdne713468:0" - label_watch: "crwdns713470:0crwdne713470:0" - label_watch_work_package: "crwdns713472:0crwdne713472:0" - label_watcher_added_successfully: "crwdns713474:0crwdne713474:0" - label_watcher_deleted_successfully: "crwdns713476:0crwdne713476:0" - label_work_package_details_you_are_here: "crwdns713478:0%{tab}crwdnd713478:0%{type}crwdnd713478:0%{subject}crwdne713478:0" - label_unwatch: "crwdns713480:0crwdne713480:0" - label_unwatch_work_package: "crwdns713482:0crwdne713482:0" - label_uploaded_by: "crwdns713484:0crwdne713484:0" - label_default_queries: "crwdns713486:0crwdne713486:0" - label_starred_queries: "crwdns713488:0crwdne713488:0" - label_global_queries: "crwdns713490:0crwdne713490:0" - label_custom_queries: "crwdns713492:0crwdne713492:0" - label_create_new_query: "crwdns713494:0crwdne713494:0" - label_columns: "crwdns713496:0crwdne713496:0" - label_attachments: crwdns713498:0crwdne713498:0 - label_drop_files: crwdns713500:0crwdne713500:0 - label_drop_files_hint: crwdns713502:0crwdne713502:0 - label_drop_folders_hint: crwdns713504:0crwdne713504:0 - label_add_attachments: "crwdns713506:0crwdne713506:0" - label_formattable_attachment_hint: "crwdns713508:0crwdne713508:0" - label_remove_file: "crwdns713510:0%{fileName}crwdne713510:0" - label_remove_watcher: "crwdns713512:0%{name}crwdne713512:0" - label_remove_all_files: crwdns713514:0crwdne713514:0 - label_add_description: "crwdns713516:0%{file}crwdne713516:0" - label_upload_notification: "crwdns713518:0crwdne713518:0" - label_work_package_upload_notification: "crwdns713520:0%{id}crwdnd713520:0%{subject}crwdne713520:0" - label_wp_id_added_by: "crwdns713522:0%{id}crwdnd713522:0%{author}crwdne713522:0" - label_files_to_upload: "crwdns713524:0crwdne713524:0" - label_rejected_files: "crwdns713526:0crwdne713526:0" - label_rejected_files_reason: "crwdns713528:0%{maximumFilesize}crwdne713528:0" - label_wait: "crwdns713530:0crwdne713530:0" - label_upload_counter: "crwdns713532:0%{done}crwdnd713532:0%{count}crwdne713532:0" - label_validation_error: "crwdns713534:0crwdne713534:0" - label_version_plural: "crwdns713536:0crwdne713536:0" - label_view_has_changed: "crwdns713538:0crwdne713538:0" + crwdns715308:0%{list_styling_class}crwdne715308:0 + label_activate: "crwdns715310:0crwdne715310:0" + label_add_column_after: "crwdns715312:0crwdne715312:0" + label_add_column_before: "crwdns715314:0crwdne715314:0" + label_add_columns: "crwdns715316:0crwdne715316:0" + label_add_comment: "crwdns715318:0crwdne715318:0" + label_add_comment_title: "crwdns715320:0crwdne715320:0" + label_add_row_after: "crwdns715322:0crwdne715322:0" + label_add_row_before: "crwdns715324:0crwdne715324:0" + label_add_selected_columns: "crwdns715326:0crwdne715326:0" + label_added_by: "crwdns715328:0crwdne715328:0" + label_added_time_by: "crwdns715330:0%{authorLink}crwdnd715330:0%{author}crwdnd715330:0%{age}crwdne715330:0" + label_ago: "crwdns715332:0crwdne715332:0" + label_all: "crwdns715334:0crwdne715334:0" + label_all_work_packages: "crwdns715336:0crwdne715336:0" + label_and: "crwdns715338:0crwdne715338:0" + label_ascending: "crwdns715340:0crwdne715340:0" + label_author: "crwdns715342:0%{user}crwdne715342:0" + label_avatar: "crwdns715344:0crwdne715344:0" + label_between: "crwdns715346:0crwdne715346:0" + label_board: "crwdns715348:0crwdne715348:0" + label_board_locked: "crwdns715350:0crwdne715350:0" + label_board_plural: "crwdns715352:0crwdne715352:0" + label_board_sticky: "crwdns715354:0crwdne715354:0" + label_change: "crwdns715356:0crwdne715356:0" + label_create: "crwdns715358:0crwdne715358:0" + label_create_work_package: "crwdns715360:0crwdne715360:0" + label_created_by: "crwdns715362:0crwdne715362:0" + label_date: "crwdns715364:0crwdne715364:0" + label_date_with_format: "crwdns715366:0%{date_attribute}crwdnd715366:0%{format}crwdne715366:0" + label_deactivate: "crwdns715368:0crwdne715368:0" + label_descending: "crwdns715370:0crwdne715370:0" + label_description: "crwdns715372:0crwdne715372:0" + label_details: "crwdns715374:0crwdne715374:0" + label_display: "crwdns715376:0crwdne715376:0" + label_cancel_comment: "crwdns715378:0crwdne715378:0" + label_closed_work_packages: "crwdns715380:0crwdne715380:0" + label_collapse: "crwdns715382:0crwdne715382:0" + label_collapsed: "crwdns715384:0crwdne715384:0" + label_collapse_all: "crwdns715386:0crwdne715386:0" + label_comment: "crwdns715388:0crwdne715388:0" + label_committed_at: "crwdns715390:0%{committed_revision_link}crwdnd715390:0%{date}crwdne715390:0" + label_committed_link: "crwdns715392:0%{revision_identifier}crwdne715392:0" + label_contains: "crwdns715394:0crwdne715394:0" + label_created_on: "crwdns715396:0crwdne715396:0" + label_edit_comment: "crwdns715398:0crwdne715398:0" + label_edit_status: "crwdns715400:0crwdne715400:0" + label_email: "crwdns715402:0crwdne715402:0" + label_equals: "crwdns715404:0crwdne715404:0" + label_expand: "crwdns715406:0crwdne715406:0" + label_expanded: "crwdns715408:0crwdne715408:0" + label_expand_all: "crwdns715410:0crwdne715410:0" + label_expand_project_menu: "crwdns715412:0crwdne715412:0" + label_export: "crwdns715414:0crwdne715414:0" + label_export_preparing: "crwdns715416:0crwdne715416:0" + label_filename: "crwdns715418:0crwdne715418:0" + label_filesize: "crwdns715420:0crwdne715420:0" + label_general: "crwdns715422:0crwdne715422:0" + label_global_roles: "crwdns715424:0crwdne715424:0" + label_greater_or_equal: "crwdns715426:0crwdne715426:0" + label_group: 'crwdns715428:0crwdne715428:0' + label_group_by: "crwdns715430:0crwdne715430:0" + label_group_plural: "crwdns715432:0crwdne715432:0" + label_hide_attributes: "crwdns715434:0crwdne715434:0" + label_hide_column: "crwdns715436:0crwdne715436:0" + label_hide_project_menu: "crwdns715438:0crwdne715438:0" + label_in: "crwdns715440:0crwdne715440:0" + label_in_less_than: "crwdns715442:0crwdne715442:0" + label_in_more_than: "crwdns715444:0crwdne715444:0" + label_incoming_emails: "crwdns715446:0crwdne715446:0" + label_information_plural: "crwdns715448:0crwdne715448:0" + label_import: "crwdns715450:0crwdne715450:0" + label_latest_activity: "crwdns715452:0crwdne715452:0" + label_last_updated_on: "crwdns715454:0crwdne715454:0" + label_learn_more_link: "crwdns715456:0crwdne715456:0" + label_less_or_equal: "crwdns715458:0crwdne715458:0" + label_less_than_ago: "crwdns715460:0crwdne715460:0" + label_loading: "crwdns715462:0crwdne715462:0" + label_mail_notification: "crwdns715464:0crwdne715464:0" + label_me: "crwdns715466:0crwdne715466:0" + label_meeting_agenda: "crwdns715468:0crwdne715468:0" + label_meeting_minutes: "crwdns715470:0crwdne715470:0" + label_menu_collapse: "crwdns715472:0crwdne715472:0" + label_menu_expand: "crwdns715474:0crwdne715474:0" + label_more_than_ago: "crwdns715476:0crwdne715476:0" + label_next: "crwdns715478:0crwdne715478:0" + label_no_color: "crwdns715480:0crwdne715480:0" + label_no_data: "crwdns715482:0crwdne715482:0" + label_no_due_date: "crwdns715484:0crwdne715484:0" + label_no_start_date: "crwdns715486:0crwdne715486:0" + label_no_value: "crwdns715488:0crwdne715488:0" + label_none: "crwdns715490:0crwdne715490:0" + label_not_contains: "crwdns715492:0crwdne715492:0" + label_not_equals: "crwdns715494:0crwdne715494:0" + label_on: "crwdns715496:0crwdne715496:0" + label_open_menu: "crwdns715498:0crwdne715498:0" + label_open_context_menu: "crwdns715500:0crwdne715500:0" + label_open_work_packages: "crwdns715502:0crwdne715502:0" + label_password: "crwdns715504:0crwdne715504:0" + label_previous: "crwdns715506:0crwdne715506:0" + label_per_page: "crwdns715508:0crwdne715508:0" + label_please_wait: "crwdns715510:0crwdne715510:0" + label_project_plural: "crwdns715512:0crwdne715512:0" + label_visibility_settings: "crwdns715514:0crwdne715514:0" + label_quote_comment: "crwdns715516:0crwdne715516:0" + label_recent: "crwdns715518:0crwdne715518:0" + label_reset: "crwdns715520:0crwdne715520:0" + label_remove: "crwdns715522:0crwdne715522:0" + label_remove_column: "crwdns715524:0crwdne715524:0" + label_remove_columns: "crwdns715526:0crwdne715526:0" + label_remove_row: "crwdns715528:0crwdne715528:0" + label_report: "crwdns715530:0crwdne715530:0" + label_repository_plural: "crwdns715532:0crwdne715532:0" + label_save_as: "crwdns715534:0crwdne715534:0" + label_select_watcher: "crwdns715536:0crwdne715536:0" + label_selected_filter_list: "crwdns715538:0crwdne715538:0" + label_show_attributes: "crwdns715540:0crwdne715540:0" + label_show_in_menu: "crwdns715542:0crwdne715542:0" + label_sort_by: "crwdns715544:0crwdne715544:0" + label_sorted_by: "crwdns715546:0crwdne715546:0" + label_sort_higher: "crwdns715548:0crwdne715548:0" + label_sort_lower: "crwdns715550:0crwdne715550:0" + label_sorting: "crwdns715552:0crwdne715552:0" + label_spent_time: "crwdns715554:0crwdne715554:0" + label_star_query: "crwdns715556:0crwdne715556:0" + label_press_enter_to_save: "crwdns715558:0crwdne715558:0" + label_public_query: "crwdns715560:0crwdne715560:0" + label_sum: "crwdns715562:0crwdne715562:0" + label_sum_for: "crwdns715564:0crwdne715564:0" + label_total_sum: "crwdns715566:0crwdne715566:0" + label_subject: "crwdns715568:0crwdne715568:0" + label_this_week: "crwdns715570:0crwdne715570:0" + label_today: "crwdns715572:0crwdne715572:0" + label_time_entry_plural: "crwdns715574:0crwdne715574:0" + label_up: "crwdns715576:0crwdne715576:0" + label_user_plural: "crwdns715578:0crwdne715578:0" + label_activity_show_only_comments: "crwdns715580:0crwdne715580:0" + label_activity_show_all: "crwdns715582:0crwdne715582:0" + label_total_progress: "crwdns715584:0%{percent}crwdne715584:0" + label_total_amount: "crwdns715586:0%{amount}crwdne715586:0" + label_updated_on: "crwdns715588:0crwdne715588:0" + label_value_derived_from_children: "crwdns715590:0crwdne715590:0" + label_children_derived_duration: "crwdns715592:0crwdne715592:0" + label_warning: "crwdns715594:0crwdne715594:0" + label_work_package: "crwdns715596:0crwdne715596:0" + label_work_package_parent: "crwdns715598:0crwdne715598:0" + label_work_package_plural: "crwdns715600:0crwdne715600:0" + label_watch: "crwdns715602:0crwdne715602:0" + label_watch_work_package: "crwdns715604:0crwdne715604:0" + label_watcher_added_successfully: "crwdns715606:0crwdne715606:0" + label_watcher_deleted_successfully: "crwdns715608:0crwdne715608:0" + label_work_package_details_you_are_here: "crwdns715610:0%{tab}crwdnd715610:0%{type}crwdnd715610:0%{subject}crwdne715610:0" + label_unwatch: "crwdns715612:0crwdne715612:0" + label_unwatch_work_package: "crwdns715614:0crwdne715614:0" + label_uploaded_by: "crwdns715616:0crwdne715616:0" + label_default_queries: "crwdns715618:0crwdne715618:0" + label_starred_queries: "crwdns715620:0crwdne715620:0" + label_global_queries: "crwdns715622:0crwdne715622:0" + label_custom_queries: "crwdns715624:0crwdne715624:0" + label_create_new_query: "crwdns715626:0crwdne715626:0" + label_columns: "crwdns715628:0crwdne715628:0" + label_attachments: crwdns715630:0crwdne715630:0 + label_drop_files: crwdns715632:0crwdne715632:0 + label_drop_files_hint: crwdns715634:0crwdne715634:0 + label_drop_folders_hint: crwdns715636:0crwdne715636:0 + label_add_attachments: "crwdns715638:0crwdne715638:0" + label_formattable_attachment_hint: "crwdns715640:0crwdne715640:0" + label_remove_file: "crwdns715642:0%{fileName}crwdne715642:0" + label_remove_watcher: "crwdns715644:0%{name}crwdne715644:0" + label_remove_all_files: crwdns715646:0crwdne715646:0 + label_add_description: "crwdns715648:0%{file}crwdne715648:0" + label_upload_notification: "crwdns715650:0crwdne715650:0" + label_work_package_upload_notification: "crwdns715652:0%{id}crwdnd715652:0%{subject}crwdne715652:0" + label_wp_id_added_by: "crwdns715654:0%{id}crwdnd715654:0%{author}crwdne715654:0" + label_files_to_upload: "crwdns715656:0crwdne715656:0" + label_rejected_files: "crwdns715658:0crwdne715658:0" + label_rejected_files_reason: "crwdns715660:0%{maximumFilesize}crwdne715660:0" + label_wait: "crwdns715662:0crwdne715662:0" + label_upload_counter: "crwdns715664:0%{done}crwdnd715664:0%{count}crwdne715664:0" + label_validation_error: "crwdns715666:0crwdne715666:0" + label_version_plural: "crwdns715668:0crwdne715668:0" + label_view_has_changed: "crwdns715670:0crwdne715670:0" help_texts: - show_modal: 'crwdns713540:0crwdne713540:0' + show_modal: 'crwdns715672:0crwdne715672:0' onboarding: buttons: - skip: 'crwdns713542:0crwdne713542:0' - next: 'crwdns713544:0crwdne713544:0' - got_it: 'crwdns713546:0crwdne713546:0' + skip: 'crwdns715674:0crwdne715674:0' + next: 'crwdns715676:0crwdne715676:0' + got_it: 'crwdns715678:0crwdne715678:0' steps: - help_menu: 'crwdns713548:0crwdne713548:0' - members: 'crwdns713550:0crwdne713550:0' - project_selection: 'crwdns713552:0crwdne713552:0' - quick_add_button: 'crwdns713554:0crwdne713554:0' - sidebar_arrow: "crwdns713556:0crwdne713556:0" - welcome: 'crwdns713558:0crwdne713558:0' - wiki: 'crwdns713560:0crwdne713560:0' + help_menu: 'crwdns715680:0crwdne715680:0' + members: 'crwdns715682:0crwdne715682:0' + project_selection: 'crwdns715684:0crwdne715684:0' + quick_add_button: 'crwdns715686:0crwdne715686:0' + sidebar_arrow: "crwdns715688:0crwdne715688:0" + welcome: 'crwdns715690:0crwdne715690:0' + wiki: 'crwdns715692:0crwdne715692:0' backlogs: - overview: "crwdns713562:0crwdne713562:0" - sprints: "crwdns713564:0crwdne713564:0" - task_board_arrow: 'crwdns713566:0crwdne713566:0' - task_board_select: 'crwdns713568:0crwdne713568:0' - task_board: "crwdns713570:0crwdne713570:0" + overview: "crwdns715694:0crwdne715694:0" + sprints: "crwdns715696:0crwdne715696:0" + task_board_arrow: 'crwdns715698:0crwdne715698:0' + task_board_select: 'crwdns715700:0crwdne715700:0' + task_board: "crwdns715702:0crwdne715702:0" boards: - overview: 'crwdns713572:0crwdne713572:0' - lists: 'crwdns713574:0crwdne713574:0' - add: 'crwdns713576:0crwdne713576:0' - drag: 'crwdns713578:0crwdne713578:0' + overview: 'crwdns715704:0crwdne715704:0' + lists: 'crwdns715706:0crwdne715706:0' + add: 'crwdns715708:0crwdne715708:0' + drag: 'crwdns715710:0crwdne715710:0' wp: - toggler: "crwdns713580:0crwdne713580:0" - list: 'crwdns713582:0crwdne713582:0' - full_view: 'crwdns713584:0crwdne713584:0' - back_button: 'crwdns713586:0crwdne713586:0' - create_button: 'crwdns713588:0crwdne713588:0' - timeline_button: 'crwdns713590:0crwdne713590:0' - timeline: 'crwdns713592:0crwdne713592:0' + toggler: "crwdns715712:0crwdne715712:0" + list: 'crwdns715714:0crwdne715714:0' + full_view: 'crwdns715716:0crwdne715716:0' + back_button: 'crwdns715718:0crwdne715718:0' + create_button: 'crwdns715720:0crwdne715720:0' + timeline_button: 'crwdns715722:0crwdne715722:0' + timeline: 'crwdns715724:0crwdne715724:0' notifications: - title: "crwdns713594:0crwdne713594:0" - no_unread: "crwdns713596:0crwdne713596:0" + title: "crwdns715726:0crwdne715726:0" + no_unread: "crwdns715728:0crwdne715728:0" reasons: - mentioned: 'crwdns713598:0crwdne713598:0' - watched: 'crwdns713600:0crwdne713600:0' - assigned: 'crwdns713602:0crwdne713602:0' - responsible: 'crwdns713604:0crwdne713604:0' + mentioned: 'crwdns715730:0crwdne715730:0' + watched: 'crwdns715732:0crwdne715732:0' + assigned: 'crwdns715734:0crwdne715734:0' + responsible: 'crwdns715736:0crwdne715736:0' facets: - unread: 'crwdns713606:0crwdne713606:0' - all: 'crwdns713608:0crwdne713608:0' + unread: 'crwdns715738:0crwdne715738:0' + all: 'crwdns715740:0crwdne715740:0' center: and_more_users: - one: 'crwdns713610:1crwdne713610:1' - other: 'crwdns713610:5%{count}crwdne713610:5' + one: 'crwdns715742:1crwdne715742:1' + other: 'crwdns715742:5%{count}crwdne715742:5' no_results: - at_all: 'crwdns713612:0crwdne713612:0' - with_current_filter: 'crwdns713614:0crwdne713614:0' - mark_all_read: 'crwdns713616:0crwdne713616:0' - mark_as_read: 'crwdns713618:0crwdne713618:0' - text_update_date: "crwdns713620:0%{date}crwdne713620:0" - total_count_warning: "crwdns713622:0%{newest_count}crwdnd713622:0%{more_count}crwdne713622:0" + at_all: 'crwdns715744:0crwdne715744:0' + with_current_filter: 'crwdns715746:0crwdne715746:0' + mark_all_read: 'crwdns715748:0crwdne715748:0' + mark_as_read: 'crwdns715750:0crwdne715750:0' + text_update_date: "crwdns715752:0%{date}crwdne715752:0" + total_count_warning: "crwdns715754:0%{newest_count}crwdnd715754:0%{more_count}crwdne715754:0" empty_state: - no_notification: "crwdns713624:0crwdne713624:0" - no_notification_with_current_filter: "crwdns713626:0crwdne713626:0" - no_selection: "crwdns713628:0crwdne713628:0" + no_notification: "crwdns715756:0crwdne715756:0" + no_notification_with_current_filter: "crwdns715758:0crwdne715758:0" + no_selection: "crwdns715760:0crwdne715760:0" new_notifications: - message: 'crwdns713630:0crwdne713630:0' - link_text: 'crwdns713632:0crwdne713632:0' + message: 'crwdns715762:0crwdne715762:0' + link_text: 'crwdns715764:0crwdne715764:0' menu: - accountable: 'crwdns713634:0crwdne713634:0' - assigned: 'crwdns713636:0crwdne713636:0' - by_project: 'crwdns713638:0crwdne713638:0' - by_reason: 'crwdns713640:0crwdne713640:0' - inbox: 'crwdns713642:0crwdne713642:0' - mentioned: 'crwdns713644:0crwdne713644:0' - watching: 'crwdns713646:0crwdne713646:0' + accountable: 'crwdns715766:0crwdne715766:0' + assigned: 'crwdns715768:0crwdne715768:0' + by_project: 'crwdns715770:0crwdne715770:0' + by_reason: 'crwdns715772:0crwdne715772:0' + inbox: 'crwdns715774:0crwdne715774:0' + mentioned: 'crwdns715776:0crwdne715776:0' + watching: 'crwdns715778:0crwdne715778:0' settings: - change_notification_settings: 'crwdns713648:0%{url}crwdne713648:0' - title: "crwdns713650:0crwdne713650:0" - notify_me: "crwdns713652:0crwdne713652:0" + change_notification_settings: 'crwdns715780:0%{url}crwdne715780:0' + title: "crwdns715782:0crwdne715782:0" + notify_me: "crwdns715784:0crwdne715784:0" reasons: mentioned: - title: 'crwdns713654:0crwdne713654:0' - description: 'crwdns713656:0crwdne713656:0' + title: 'crwdns715786:0crwdne715786:0' + description: 'crwdns715788:0crwdne715788:0' involved: - title: 'crwdns713658:0crwdne713658:0' - description: 'crwdns713660:0crwdne713660:0' - watched: 'crwdns713662:0crwdne713662:0' - work_package_commented: 'crwdns713664:0crwdne713664:0' - work_package_created: 'crwdns713666:0crwdne713666:0' - work_package_processed: 'crwdns713668:0crwdne713668:0' - work_package_prioritized: 'crwdns713670:0crwdne713670:0' - work_package_scheduled: 'crwdns713672:0crwdne713672:0' + title: 'crwdns715790:0crwdne715790:0' + description: 'crwdns715792:0crwdne715792:0' + watched: 'crwdns715794:0crwdne715794:0' + work_package_commented: 'crwdns715796:0crwdne715796:0' + work_package_created: 'crwdns715798:0crwdne715798:0' + work_package_processed: 'crwdns715800:0crwdne715800:0' + work_package_prioritized: 'crwdns715802:0crwdne715802:0' + work_package_scheduled: 'crwdns715804:0crwdne715804:0' global: immediately: - title: 'crwdns713674:0crwdne713674:0' - description: 'crwdns713676:0crwdne713676:0' + title: 'crwdns715806:0crwdne715806:0' + description: 'crwdns715808:0crwdne715808:0' delayed: - title: 'crwdns713678:0crwdne713678:0' - description: 'crwdns713680:0crwdne713680:0' + title: 'crwdns715810:0crwdne715810:0' + description: 'crwdns715812:0crwdne715812:0' project_specific: - title: 'crwdns713682:0crwdne713682:0' - description: 'crwdns713684:0crwdne713684:0' - add: 'crwdns713686:0crwdne713686:0' - already_selected: 'crwdns713688:0crwdne713688:0' - remove: 'crwdns713690:0crwdne713690:0' + title: 'crwdns715814:0crwdne715814:0' + description: 'crwdns715816:0crwdne715816:0' + add: 'crwdns715818:0crwdne715818:0' + already_selected: 'crwdns715820:0crwdne715820:0' + remove: 'crwdns715822:0crwdne715822:0' password_confirmation: - field_description: 'crwdns713692:0crwdne713692:0' - title: 'crwdns713694:0crwdne713694:0' + field_description: 'crwdns715824:0crwdne715824:0' + title: 'crwdns715826:0crwdne715826:0' pagination: - no_other_page: "crwdns713696:0crwdne713696:0" + no_other_page: "crwdns715828:0crwdne715828:0" pages: - next: "crwdns713698:0crwdne713698:0" - previous: "crwdns713700:0crwdne713700:0" + next: "crwdns715830:0crwdne715830:0" + previous: "crwdns715832:0crwdne715832:0" placeholders: - default: 'crwdns713702:0crwdne713702:0' - subject: 'crwdns713704:0crwdne713704:0' - selection: 'crwdns713706:0crwdne713706:0' - relation_description: 'crwdns713708:0crwdne713708:0' + default: 'crwdns715834:0crwdne715834:0' + subject: 'crwdns715836:0crwdne715836:0' + selection: 'crwdns715838:0crwdne715838:0' + relation_description: 'crwdns715840:0crwdne715840:0' project: required_outside_context: > - crwdns713710:0crwdne713710:0 - context: 'crwdns713712:0crwdne713712:0' - work_package_belongs_to: 'crwdns713714:0%{projectname}crwdne713714:0' - click_to_switch_context: 'crwdns713716:0crwdne713716:0' - confirm_template_load: 'crwdns713718:0crwdne713718:0' - use_template: "crwdns713720:0crwdne713720:0" - no_template_selected: "crwdns713722:0crwdne713722:0" + crwdns715842:0crwdne715842:0 + context: 'crwdns715844:0crwdne715844:0' + work_package_belongs_to: 'crwdns715846:0%{projectname}crwdne715846:0' + click_to_switch_context: 'crwdns715848:0crwdne715848:0' + confirm_template_load: 'crwdns715850:0crwdne715850:0' + use_template: "crwdns715852:0crwdne715852:0" + no_template_selected: "crwdns715854:0crwdne715854:0" copy: - copy_options: "crwdns713724:0crwdne713724:0" + copy_options: "crwdns715856:0crwdne715856:0" autocompleter: - label: 'crwdns713726:0crwdne713726:0' + label: 'crwdns715858:0crwdne715858:0' reminders: settings: daily: - add_time: 'crwdns713728:0crwdne713728:0' - enable: 'crwdns713730:0crwdne713730:0' - explanation: 'crwdns713732:0%{no_time_zone}crwdne713732:0' - no_time_zone: 'crwdns713734:0crwdne713734:0' - time_label: 'crwdns713736:0%{counter}crwdne713736:0' - title: 'crwdns713738:0crwdne713738:0' + add_time: 'crwdns715860:0crwdne715860:0' + enable: 'crwdns715862:0crwdne715862:0' + explanation: 'crwdns715864:0%{no_time_zone}crwdne715864:0' + no_time_zone: 'crwdns715866:0crwdne715866:0' + time_label: 'crwdns715868:0%{counter}crwdne715868:0' + title: 'crwdns715870:0crwdne715870:0' workdays: - title: 'crwdns713740:0crwdne713740:0' + title: 'crwdns715872:0crwdne715872:0' immediate: - title: 'crwdns713742:0crwdne713742:0' - mentioned: 'crwdns713744:0crwdne713744:0' + title: 'crwdns715874:0crwdne715874:0' + mentioned: 'crwdns715876:0crwdne715876:0' alerts: - title: 'crwdns713746:0crwdne713746:0' + title: 'crwdns715878:0crwdne715878:0' explanation: > - crwdns713748:0crwdne713748:0 - news_added: 'crwdns713750:0crwdne713750:0' - news_commented: 'crwdns713752:0crwdne713752:0' - document_added: 'crwdns713754:0crwdne713754:0' - forum_messages: 'crwdns713756:0crwdne713756:0' - wiki_page_added: 'crwdns713758:0crwdne713758:0' - wiki_page_updated: 'crwdns713760:0crwdne713760:0' - membership_added: 'crwdns713762:0crwdne713762:0' - membership_updated: 'crwdns713764:0crwdne713764:0' - title: 'crwdns713766:0crwdne713766:0' + crwdns715880:0crwdne715880:0 + news_added: 'crwdns715882:0crwdne715882:0' + news_commented: 'crwdns715884:0crwdne715884:0' + document_added: 'crwdns715886:0crwdne715886:0' + forum_messages: 'crwdns715888:0crwdne715888:0' + wiki_page_added: 'crwdns715890:0crwdne715890:0' + wiki_page_updated: 'crwdns715892:0crwdne715892:0' + membership_added: 'crwdns715894:0crwdne715894:0' + membership_updated: 'crwdns715896:0crwdne715896:0' + title: 'crwdns715898:0crwdne715898:0' pause: - label: 'crwdns713768:0crwdne713768:0' - first_day: 'crwdns713770:0crwdne713770:0' - last_day: 'crwdns713772:0crwdne713772:0' - text_are_you_sure: "crwdns713774:0crwdne713774:0" - text_data_lost: "crwdns713776:0crwdne713776:0" + label: 'crwdns715900:0crwdne715900:0' + first_day: 'crwdns715902:0crwdne715902:0' + last_day: 'crwdns715904:0crwdne715904:0' + text_are_you_sure: "crwdns715906:0crwdne715906:0" + text_data_lost: "crwdns715908:0crwdne715908:0" types: attribute_groups: - error_duplicate_group_name: "crwdns713778:0%{group}crwdne713778:0" - error_no_table_configured: "crwdns713780:0%{group}crwdne713780:0" - reset_title: "crwdns713782:0crwdne713782:0" + error_duplicate_group_name: "crwdns715910:0%{group}crwdne715910:0" + error_no_table_configured: "crwdns715912:0%{group}crwdne715912:0" + reset_title: "crwdns715914:0crwdne715914:0" confirm_reset: > - crwdns713784:0crwdne713784:0 - upgrade_to_ee: "crwdns713786:0crwdne713786:0" - upgrade_to_ee_text: "crwdns713788:0crwdne713788:0" - more_information: "crwdns713790:0crwdne713790:0" - nevermind: "crwdns713792:0crwdne713792:0" + crwdns715916:0crwdne715916:0 + upgrade_to_ee: "crwdns715918:0crwdne715918:0" + upgrade_to_ee_text: "crwdns715920:0crwdne715920:0" + more_information: "crwdns715922:0crwdne715922:0" + nevermind: "crwdns715924:0crwdne715924:0" edit: - form_configuration: "crwdns713794:0crwdne713794:0" - projects: "crwdns713796:0crwdne713796:0" - settings: "crwdns713798:0crwdne713798:0" + form_configuration: "crwdns715926:0crwdne715926:0" + projects: "crwdns715928:0crwdne715928:0" + settings: "crwdns715930:0crwdne715930:0" time_entry: - project: 'crwdns713800:0crwdne713800:0' - work_package: 'crwdns713802:0crwdne713802:0' - work_package_required: 'crwdns713804:0crwdne713804:0' - activity: 'crwdns713806:0crwdne713806:0' - comment: 'crwdns713808:0crwdne713808:0' - duration: 'crwdns713810:0crwdne713810:0' - spent_on: 'crwdns713812:0crwdne713812:0' - hours: 'crwdns713814:0crwdne713814:0' - title: 'crwdns713816:0crwdne713816:0' + project: 'crwdns715932:0crwdne715932:0' + work_package: 'crwdns715934:0crwdne715934:0' + work_package_required: 'crwdns715936:0crwdne715936:0' + activity: 'crwdns715938:0crwdne715938:0' + comment: 'crwdns715940:0crwdne715940:0' + duration: 'crwdns715942:0crwdne715942:0' + spent_on: 'crwdns715944:0crwdne715944:0' + hours: 'crwdns715946:0crwdne715946:0' + title: 'crwdns715948:0crwdne715948:0' two_factor_authentication: - label_two_factor_authentication: 'crwdns713818:0crwdne713818:0' + label_two_factor_authentication: 'crwdns715950:0crwdne715950:0' watchers: - label_loading: crwdns713820:0crwdne713820:0 - label_error_loading: crwdns713822:0crwdne713822:0 - label_search_watchers: crwdns713824:0crwdne713824:0 - label_add: crwdns713826:0crwdne713826:0 - label_discard: crwdns713828:0crwdne713828:0 - typeahead_placeholder: crwdns713830:0crwdne713830:0 + label_loading: crwdns715952:0crwdne715952:0 + label_error_loading: crwdns715954:0crwdne715954:0 + label_search_watchers: crwdns715956:0crwdne715956:0 + label_add: crwdns715958:0crwdne715958:0 + label_discard: crwdns715960:0crwdne715960:0 + typeahead_placeholder: crwdns715962:0crwdne715962:0 relation_labels: - parent: "crwdns713832:0crwdne713832:0" - children: "crwdns713834:0crwdne713834:0" - relates: "crwdns713836:0crwdne713836:0" - duplicates: "crwdns713838:0crwdne713838:0" - duplicated: "crwdns713840:0crwdne713840:0" - blocks: "crwdns713842:0crwdne713842:0" - blocked: "crwdns713844:0crwdne713844:0" - precedes: "crwdns713846:0crwdne713846:0" - follows: "crwdns713848:0crwdne713848:0" - includes: "crwdns713850:0crwdne713850:0" - partof: "crwdns713852:0crwdne713852:0" - requires: "crwdns713854:0crwdne713854:0" - required: "crwdns713856:0crwdne713856:0" - relation_type: "crwdns713858:0crwdne713858:0" + parent: "crwdns715964:0crwdne715964:0" + children: "crwdns715966:0crwdne715966:0" + relates: "crwdns715968:0crwdne715968:0" + duplicates: "crwdns715970:0crwdne715970:0" + duplicated: "crwdns715972:0crwdne715972:0" + blocks: "crwdns715974:0crwdne715974:0" + blocked: "crwdns715976:0crwdne715976:0" + precedes: "crwdns715978:0crwdne715978:0" + follows: "crwdns715980:0crwdne715980:0" + includes: "crwdns715982:0crwdne715982:0" + partof: "crwdns715984:0crwdne715984:0" + requires: "crwdns715986:0crwdne715986:0" + required: "crwdns715988:0crwdne715988:0" + relation_type: "crwdns715990:0crwdne715990:0" relations_hierarchy: - parent_headline: "crwdns713860:0crwdne713860:0" - hierarchy_headline: "crwdns713862:0crwdne713862:0" - children_headline: "crwdns713864:0crwdne713864:0" + parent_headline: "crwdns715992:0crwdne715992:0" + hierarchy_headline: "crwdns715994:0crwdne715994:0" + children_headline: "crwdns715996:0crwdne715996:0" relation_buttons: - set_parent: "crwdns713866:0crwdne713866:0" - change_parent: "crwdns713868:0crwdne713868:0" - remove_parent: "crwdns713870:0crwdne713870:0" - hierarchy_indent: "crwdns713872:0crwdne713872:0" - hierarchy_outdent: "crwdns713874:0crwdne713874:0" - group_by_wp_type: "crwdns713876:0crwdne713876:0" - group_by_relation_type: "crwdns713878:0crwdne713878:0" - add_parent: "crwdns713880:0crwdne713880:0" - add_new_child: "crwdns713882:0crwdne713882:0" - create_new: "crwdns713884:0crwdne713884:0" - add_existing: "crwdns713886:0crwdne713886:0" - add_existing_child: "crwdns713888:0crwdne713888:0" - remove_child: "crwdns713890:0crwdne713890:0" - add_new_relation: "crwdns713892:0crwdne713892:0" - add_existing_relation: "crwdns713894:0crwdne713894:0" - update_description: "crwdns713896:0crwdne713896:0" - toggle_description: "crwdns713898:0crwdne713898:0" - update_relation: "crwdns713900:0crwdne713900:0" - add_follower: "crwdns713902:0crwdne713902:0" - add_predecessor: "crwdns713904:0crwdne713904:0" - remove: "crwdns713906:0crwdne713906:0" - save: "crwdns713908:0crwdne713908:0" - abort: "crwdns713910:0crwdne713910:0" + set_parent: "crwdns715998:0crwdne715998:0" + change_parent: "crwdns716000:0crwdne716000:0" + remove_parent: "crwdns716002:0crwdne716002:0" + hierarchy_indent: "crwdns716004:0crwdne716004:0" + hierarchy_outdent: "crwdns716006:0crwdne716006:0" + group_by_wp_type: "crwdns716008:0crwdne716008:0" + group_by_relation_type: "crwdns716010:0crwdne716010:0" + add_parent: "crwdns716012:0crwdne716012:0" + add_new_child: "crwdns716014:0crwdne716014:0" + create_new: "crwdns716016:0crwdne716016:0" + add_existing: "crwdns716018:0crwdne716018:0" + add_existing_child: "crwdns716020:0crwdne716020:0" + remove_child: "crwdns716022:0crwdne716022:0" + add_new_relation: "crwdns716024:0crwdne716024:0" + add_existing_relation: "crwdns716026:0crwdne716026:0" + update_description: "crwdns716028:0crwdne716028:0" + toggle_description: "crwdns716030:0crwdne716030:0" + update_relation: "crwdns716032:0crwdne716032:0" + add_follower: "crwdns716034:0crwdne716034:0" + add_predecessor: "crwdns716036:0crwdne716036:0" + remove: "crwdns716038:0crwdne716038:0" + save: "crwdns716040:0crwdne716040:0" + abort: "crwdns716042:0crwdne716042:0" relations_autocomplete: - placeholder: "crwdns713912:0crwdne713912:0" - parent_placeholder: "crwdns713914:0crwdne713914:0" + placeholder: "crwdns716044:0crwdne716044:0" + parent_placeholder: "crwdns716046:0crwdne716046:0" autocompleter: - placeholder: "crwdns713916:0crwdne713916:0" - notFoundText: "crwdns713918:0crwdne713918:0" - typeToSearchText: "crwdns713920:0crwdne713920:0" + placeholder: "crwdns716048:0crwdne716048:0" + notFoundText: "crwdns716050:0crwdne716050:0" + typeToSearchText: "crwdns716052:0crwdne716052:0" repositories: - select_tag: 'crwdns713922:0crwdne713922:0' - select_branch: 'crwdns713924:0crwdne713924:0' - field_value_enter_prompt: "crwdns713926:0%{field}crwdne713926:0" - project_menu_details: "crwdns713928:0crwdne713928:0" + select_tag: 'crwdns716054:0crwdne716054:0' + select_branch: 'crwdns716056:0crwdne716056:0' + field_value_enter_prompt: "crwdns716058:0%{field}crwdne716058:0" + project_menu_details: "crwdns716060:0crwdne716060:0" scheduling: - manual: 'crwdns713930:0crwdne713930:0' - automatic: 'crwdns713932:0crwdne713932:0' + manual: 'crwdns716062:0crwdne716062:0' + automatic: 'crwdns716064:0crwdne716064:0' sort: - sorted_asc: 'crwdns713934:0crwdne713934:0' - sorted_dsc: 'crwdns713936:0crwdne713936:0' - sorted_no: 'crwdns713938:0crwdne713938:0' - sorting_disabled: 'crwdns713940:0crwdne713940:0' - activate_asc: 'crwdns713942:0crwdne713942:0' - activate_dsc: 'crwdns713944:0crwdne713944:0' - activate_no: 'crwdns713946:0crwdne713946:0' - text_work_packages_destroy_confirmation: "crwdns713948:0crwdne713948:0" - text_query_destroy_confirmation: "crwdns713950:0crwdne713950:0" - text_attachment_destroy_confirmation: "crwdns713952:0crwdne713952:0" + sorted_asc: 'crwdns716066:0crwdne716066:0' + sorted_dsc: 'crwdns716068:0crwdne716068:0' + sorted_no: 'crwdns716070:0crwdne716070:0' + sorting_disabled: 'crwdns716072:0crwdne716072:0' + activate_asc: 'crwdns716074:0crwdne716074:0' + activate_dsc: 'crwdns716076:0crwdne716076:0' + activate_no: 'crwdns716078:0crwdne716078:0' + text_work_packages_destroy_confirmation: "crwdns716080:0crwdne716080:0" + text_query_destroy_confirmation: "crwdns716082:0crwdne716082:0" + text_attachment_destroy_confirmation: "crwdns716084:0crwdne716084:0" timelines: - quarter_label: 'crwdns713954:0%{quarter_number}crwdne713954:0' - gantt_chart: 'crwdns713956:0crwdne713956:0' + quarter_label: 'crwdns716086:0%{quarter_number}crwdne716086:0' + gantt_chart: 'crwdns716088:0crwdne716088:0' labels: - title: 'crwdns713958:0crwdne713958:0' - bar: 'crwdns713960:0crwdne713960:0' - left: 'crwdns713962:0crwdne713962:0' - right: 'crwdns713964:0crwdne713964:0' - farRight: 'crwdns713966:0crwdne713966:0' - showNone: 'crwdns713968:0crwdne713968:0' + title: 'crwdns716090:0crwdne716090:0' + bar: 'crwdns716092:0crwdne716092:0' + left: 'crwdns716094:0crwdne716094:0' + right: 'crwdns716096:0crwdne716096:0' + farRight: 'crwdns716098:0crwdne716098:0' + showNone: 'crwdns716100:0crwdne716100:0' description: > - crwdns713970:0crwdne713970:0 - button_activate: 'crwdns713972:0crwdne713972:0' - button_deactivate: 'crwdns713974:0crwdne713974:0' - cancel: crwdns713976:0crwdne713976:0 - change: "crwdns713978:0crwdne713978:0" - due_date: "crwdns713980:0crwdne713980:0" - empty: "crwdns713982:0crwdne713982:0" - error: "crwdns713984:0crwdne713984:0" + crwdns716102:0crwdne716102:0 + button_activate: 'crwdns716104:0crwdne716104:0' + button_deactivate: 'crwdns716106:0crwdne716106:0' + cancel: crwdns716108:0crwdne716108:0 + change: "crwdns716110:0crwdne716110:0" + due_date: "crwdns716112:0crwdne716112:0" + empty: "crwdns716114:0crwdne716114:0" + error: "crwdns716116:0crwdne716116:0" errors: - not_implemented: "crwdns713986:0crwdne713986:0" - report_comparison: "crwdns713988:0crwdne713988:0" - report_epicfail: "crwdns713990:0crwdne713990:0" - report_timeout: "crwdns713992:0crwdne713992:0" + not_implemented: "crwdns716118:0crwdne716118:0" + report_comparison: "crwdns716120:0crwdne716120:0" + report_epicfail: "crwdns716122:0crwdne716122:0" + report_timeout: "crwdns716124:0crwdne716124:0" filter: - grouping_other: "crwdns713994:0crwdne713994:0" - noneSelection: "crwdns713996:0crwdne713996:0" - name: "crwdns713998:0crwdne713998:0" - outline: "crwdns714000:0crwdne714000:0" + grouping_other: "crwdns716126:0crwdne716126:0" + noneSelection: "crwdns716128:0crwdne716128:0" + name: "crwdns716130:0crwdne716130:0" + outline: "crwdns716132:0crwdne716132:0" outlines: - aggregation: "crwdns714002:0crwdne714002:0" - level1: "crwdns714004:0crwdne714004:0" - level2: "crwdns714006:0crwdne714006:0" - level3: "crwdns714008:0crwdne714008:0" - level4: "crwdns714010:0crwdne714010:0" - level5: "crwdns714012:0crwdne714012:0" - all: "crwdns714014:0crwdne714014:0" - project_status: "crwdns714016:0crwdne714016:0" - really_close_dialog: "crwdns714018:0crwdne714018:0" - responsible: "crwdns714020:0crwdne714020:0" - save: crwdns714022:0crwdne714022:0 - start_date: "crwdns714024:0crwdne714024:0" - tooManyProjects: "crwdns714026:0%{count}crwdne714026:0" + aggregation: "crwdns716134:0crwdne716134:0" + level1: "crwdns716136:0crwdne716136:0" + level2: "crwdns716138:0crwdne716138:0" + level3: "crwdns716140:0crwdne716140:0" + level4: "crwdns716142:0crwdne716142:0" + level5: "crwdns716144:0crwdne716144:0" + all: "crwdns716146:0crwdne716146:0" + project_status: "crwdns716148:0crwdne716148:0" + really_close_dialog: "crwdns716150:0crwdne716150:0" + responsible: "crwdns716152:0crwdne716152:0" + save: crwdns716154:0crwdne716154:0 + start_date: "crwdns716156:0crwdne716156:0" + tooManyProjects: "crwdns716158:0%{count}crwdne716158:0" selection_mode: - notification: 'crwdns714028:0crwdne714028:0' + notification: 'crwdns716160:0crwdne716160:0' zoom: - in: "crwdns714030:0crwdne714030:0" - out: "crwdns714032:0crwdne714032:0" - auto: "crwdns714034:0crwdne714034:0" - days: "crwdns714036:0crwdne714036:0" - weeks: "crwdns714038:0crwdne714038:0" - months: "crwdns714040:0crwdne714040:0" - quarters: "crwdns714042:0crwdne714042:0" - years: "crwdns714044:0crwdne714044:0" - slider: "crwdns714046:0crwdne714046:0" + in: "crwdns716162:0crwdne716162:0" + out: "crwdns716164:0crwdne716164:0" + auto: "crwdns716166:0crwdne716166:0" + days: "crwdns716168:0crwdne716168:0" + weeks: "crwdns716170:0crwdne716170:0" + months: "crwdns716172:0crwdne716172:0" + quarters: "crwdns716174:0crwdne716174:0" + years: "crwdns716176:0crwdne716176:0" + slider: "crwdns716178:0crwdne716178:0" description: > - crwdns714048:0crwdne714048:0 + crwdns716180:0crwdne716180:0 tl_toolbar: - zooms: "crwdns714050:0crwdne714050:0" - outlines: "crwdns714052:0crwdne714052:0" + zooms: "crwdns716182:0crwdne716182:0" + outlines: "crwdns716184:0crwdne716184:0" upsale: - ee_only: 'crwdns714054:0crwdne714054:0' + ee_only: 'crwdns716186:0crwdne716186:0' wiki_formatting: - strong: "crwdns714056:0crwdne714056:0" - italic: "crwdns714058:0crwdne714058:0" - underline: "crwdns714060:0crwdne714060:0" - deleted: "crwdns714062:0crwdne714062:0" - code: "crwdns714064:0crwdne714064:0" - heading1: "crwdns714066:0crwdne714066:0" - heading2: "crwdns714068:0crwdne714068:0" - heading3: "crwdns714070:0crwdne714070:0" - unordered_list: "crwdns714072:0crwdne714072:0" - ordered_list: "crwdns714074:0crwdne714074:0" - quote: "crwdns714076:0crwdne714076:0" - unquote: "crwdns714078:0crwdne714078:0" - preformatted_text: "crwdns714080:0crwdne714080:0" - wiki_link: "crwdns714082:0crwdne714082:0" - image: "crwdns714084:0crwdne714084:0" + strong: "crwdns716188:0crwdne716188:0" + italic: "crwdns716190:0crwdne716190:0" + underline: "crwdns716192:0crwdne716192:0" + deleted: "crwdns716194:0crwdne716194:0" + code: "crwdns716196:0crwdne716196:0" + heading1: "crwdns716198:0crwdne716198:0" + heading2: "crwdns716200:0crwdne716200:0" + heading3: "crwdns716202:0crwdne716202:0" + unordered_list: "crwdns716204:0crwdne716204:0" + ordered_list: "crwdns716206:0crwdne716206:0" + quote: "crwdns716208:0crwdne716208:0" + unquote: "crwdns716210:0crwdne716210:0" + preformatted_text: "crwdns716212:0crwdne716212:0" + wiki_link: "crwdns716214:0crwdne716214:0" + image: "crwdns716216:0crwdne716216:0" work_packages: bulk_actions: - move: 'crwdns714086:0crwdne714086:0' - edit: 'crwdns714088:0crwdne714088:0' - copy: 'crwdns714090:0crwdne714090:0' - delete: 'crwdns714092:0crwdne714092:0' - button_clear: "crwdns714094:0crwdne714094:0" - comment_added: "crwdns714096:0crwdne714096:0" - comment_send_failed: "crwdns714098:0crwdne714098:0" - comment_updated: "crwdns714100:0crwdne714100:0" - confirm_edit_cancel: "crwdns714102:0crwdne714102:0" - description_filter: "crwdns714104:0crwdne714104:0" - description_enter_text: "crwdns714106:0crwdne714106:0" - description_options_hide: "crwdns714108:0crwdne714108:0" - description_options_show: "crwdns714110:0crwdne714110:0" - edit_attribute: "crwdns714112:0%{attribute}crwdne714112:0" - key_value: "crwdns714114:0%{key}crwdnd714114:0%{value}crwdne714114:0" - label_enable_multi_select: "crwdns714116:0crwdne714116:0" - label_disable_multi_select: "crwdns714118:0crwdne714118:0" - label_filter_add: "crwdns714120:0crwdne714120:0" - label_filter_by_text: "crwdns714122:0crwdne714122:0" - label_options: "crwdns714124:0crwdne714124:0" - label_column_multiselect: "crwdns714126:0crwdne714126:0" - message_error_during_bulk_delete: crwdns714128:0crwdne714128:0 - message_successful_bulk_delete: crwdns714130:0crwdne714130:0 - message_successful_show_in_fullscreen: "crwdns714132:0crwdne714132:0" - message_view_spent_time: "crwdns714134:0crwdne714134:0" - message_work_package_read_only: "crwdns714136:0crwdne714136:0" - message_work_package_status_blocked: "crwdns714138:0crwdne714138:0" - placeholder_filter_by_text: "crwdns714140:0crwdne714140:0" + move: 'crwdns716218:0crwdne716218:0' + edit: 'crwdns716220:0crwdne716220:0' + copy: 'crwdns716222:0crwdne716222:0' + delete: 'crwdns716224:0crwdne716224:0' + button_clear: "crwdns716226:0crwdne716226:0" + comment_added: "crwdns716228:0crwdne716228:0" + comment_send_failed: "crwdns716230:0crwdne716230:0" + comment_updated: "crwdns716232:0crwdne716232:0" + confirm_edit_cancel: "crwdns716234:0crwdne716234:0" + description_filter: "crwdns716236:0crwdne716236:0" + description_enter_text: "crwdns716238:0crwdne716238:0" + description_options_hide: "crwdns716240:0crwdne716240:0" + description_options_show: "crwdns716242:0crwdne716242:0" + edit_attribute: "crwdns716244:0%{attribute}crwdne716244:0" + key_value: "crwdns716246:0%{key}crwdnd716246:0%{value}crwdne716246:0" + label_enable_multi_select: "crwdns716248:0crwdne716248:0" + label_disable_multi_select: "crwdns716250:0crwdne716250:0" + label_filter_add: "crwdns716252:0crwdne716252:0" + label_filter_by_text: "crwdns716254:0crwdne716254:0" + label_options: "crwdns716256:0crwdne716256:0" + label_column_multiselect: "crwdns716258:0crwdne716258:0" + message_error_during_bulk_delete: crwdns716260:0crwdne716260:0 + message_successful_bulk_delete: crwdns716262:0crwdne716262:0 + message_successful_show_in_fullscreen: "crwdns716264:0crwdne716264:0" + message_view_spent_time: "crwdns716266:0crwdne716266:0" + message_work_package_read_only: "crwdns716268:0crwdne716268:0" + message_work_package_status_blocked: "crwdns716270:0crwdne716270:0" + placeholder_filter_by_text: "crwdns716272:0crwdne716272:0" inline_create: - title: 'crwdns714142:0crwdne714142:0' + title: 'crwdns716274:0crwdne716274:0' create: - title: 'crwdns714144:0crwdne714144:0' - header: 'crwdns714146:0%{type}crwdne714146:0' - header_no_type: 'crwdns714148:0crwdne714148:0' - header_with_parent: 'crwdns714150:0%{type}crwdnd714150:0%{parent_type}crwdnd714150:0%{id}crwdne714150:0' - button: 'crwdns714152:0crwdne714152:0' + title: 'crwdns716276:0crwdne716276:0' + header: 'crwdns716278:0%{type}crwdne716278:0' + header_no_type: 'crwdns716280:0crwdne716280:0' + header_with_parent: 'crwdns716282:0%{type}crwdnd716282:0%{parent_type}crwdnd716282:0%{id}crwdne716282:0' + button: 'crwdns716284:0crwdne716284:0' copy: - title: 'crwdns714154:0crwdne714154:0' + title: 'crwdns716286:0crwdne716286:0' hierarchy: - show: "crwdns714156:0crwdne714156:0" - hide: "crwdns714158:0crwdne714158:0" - toggle_button: 'crwdns714160:0crwdne714160:0' - leaf: 'crwdns714162:0%{level}crwdne714162:0' - children_collapsed: 'crwdns714164:0%{level}crwdne714164:0' - children_expanded: 'crwdns714166:0%{level}crwdne714166:0' + show: "crwdns716288:0crwdne716288:0" + hide: "crwdns716290:0crwdne716290:0" + toggle_button: 'crwdns716292:0crwdne716292:0' + leaf: 'crwdns716294:0%{level}crwdne716294:0' + children_collapsed: 'crwdns716296:0%{level}crwdne716296:0' + children_expanded: 'crwdns716298:0%{level}crwdne716298:0' faulty_query: - title: crwdns714168:0crwdne714168:0 - description: crwdns714170:0crwdne714170:0 + title: crwdns716300:0crwdne716300:0 + description: crwdns716302:0crwdne716302:0 no_results: - title: crwdns714172:0crwdne714172:0 - description: crwdns714174:0crwdne714174:0 - limited_results: crwdns714176:0%{count}crwdne714176:0 + title: crwdns716304:0crwdne716304:0 + description: crwdns716306:0crwdne716306:0 + limited_results: crwdns716308:0%{count}crwdne716308:0 property_groups: - details: "crwdns714178:0crwdne714178:0" - people: "crwdns714180:0crwdne714180:0" - estimatesAndTime: "crwdns714182:0crwdne714182:0" - other: "crwdns714184:0crwdne714184:0" + details: "crwdns716310:0crwdne716310:0" + people: "crwdns716312:0crwdne716312:0" + estimatesAndTime: "crwdns716314:0crwdne716314:0" + other: "crwdns716316:0crwdne716316:0" properties: - assignee: "crwdns714186:0crwdne714186:0" - author: "crwdns714188:0crwdne714188:0" - createdAt: "crwdns714190:0crwdne714190:0" - description: "crwdns714192:0crwdne714192:0" - date: "crwdns714194:0crwdne714194:0" - dueDate: "crwdns714196:0crwdne714196:0" - estimatedTime: "crwdns714198:0crwdne714198:0" - spentTime: "crwdns714200:0crwdne714200:0" - category: "crwdns714202:0crwdne714202:0" - percentageDone: "crwdns714204:0crwdne714204:0" - priority: "crwdns714206:0crwdne714206:0" - projectName: "crwdns714208:0crwdne714208:0" - responsible: "crwdns714210:0crwdne714210:0" - startDate: "crwdns714212:0crwdne714212:0" - status: "crwdns714214:0crwdne714214:0" - subject: "crwdns714216:0crwdne714216:0" - subproject: "crwdns714218:0crwdne714218:0" - title: "crwdns714220:0crwdne714220:0" - type: "crwdns714222:0crwdne714222:0" - updatedAt: "crwdns714224:0crwdne714224:0" - versionName: "crwdns714226:0crwdne714226:0" - version: "crwdns714228:0crwdne714228:0" + assignee: "crwdns716318:0crwdne716318:0" + author: "crwdns716320:0crwdne716320:0" + createdAt: "crwdns716322:0crwdne716322:0" + description: "crwdns716324:0crwdne716324:0" + date: "crwdns716326:0crwdne716326:0" + dueDate: "crwdns716328:0crwdne716328:0" + estimatedTime: "crwdns716330:0crwdne716330:0" + spentTime: "crwdns716332:0crwdne716332:0" + category: "crwdns716334:0crwdne716334:0" + percentageDone: "crwdns716336:0crwdne716336:0" + priority: "crwdns716338:0crwdne716338:0" + projectName: "crwdns716340:0crwdne716340:0" + responsible: "crwdns716342:0crwdne716342:0" + startDate: "crwdns716344:0crwdne716344:0" + status: "crwdns716346:0crwdne716346:0" + subject: "crwdns716348:0crwdne716348:0" + subproject: "crwdns716350:0crwdne716350:0" + title: "crwdns716352:0crwdne716352:0" + type: "crwdns716354:0crwdne716354:0" + updatedAt: "crwdns716356:0crwdne716356:0" + versionName: "crwdns716358:0crwdne716358:0" + version: "crwdns716360:0crwdne716360:0" default_queries: - latest_activity: "crwdns714230:0crwdne714230:0" - created_by_me: "crwdns714232:0crwdne714232:0" - assigned_to_me: "crwdns714234:0crwdne714234:0" - recently_created: "crwdns714236:0crwdne714236:0" - all_open: "crwdns714238:0crwdne714238:0" - summary: "crwdns714240:0crwdne714240:0" + latest_activity: "crwdns716362:0crwdne716362:0" + created_by_me: "crwdns716364:0crwdne716364:0" + assigned_to_me: "crwdns716366:0crwdne716366:0" + recently_created: "crwdns716368:0crwdne716368:0" + all_open: "crwdns716370:0crwdne716370:0" + summary: "crwdns716372:0crwdne716372:0" jump_marks: - pagination: "crwdns714242:0crwdne714242:0" - label_pagination: "crwdns714244:0crwdne714244:0" - content: "crwdns714246:0crwdne714246:0" - label_content: "crwdns714248:0crwdne714248:0" + pagination: "crwdns716374:0crwdne716374:0" + label_pagination: "crwdns716376:0crwdne716376:0" + content: "crwdns716378:0crwdne716378:0" + label_content: "crwdns716380:0crwdne716380:0" placeholders: - default: "crwdns714250:0crwdne714250:0" - date: "crwdns714252:0crwdne714252:0" - formattable: "crwdns714254:0%{name}crwdne714254:0" + default: "crwdns716382:0crwdne716382:0" + date: "crwdns716384:0crwdne716384:0" + formattable: "crwdns716386:0%{name}crwdne716386:0" query: - column_names: "crwdns714256:0crwdne714256:0" - group_by: "crwdns714258:0crwdne714258:0" - group: "crwdns714260:0crwdne714260:0" - group_by_disabled_by_hierarchy: "crwdns714262:0crwdne714262:0" - hierarchy_disabled_by_group_by: "crwdns714264:0%{column}crwdne714264:0" - sort_ascending: "crwdns714266:0crwdne714266:0" - sort_descending: "crwdns714268:0crwdne714268:0" - move_column_left: "crwdns714270:0crwdne714270:0" - move_column_right: "crwdns714272:0crwdne714272:0" - hide_column: "crwdns714274:0crwdne714274:0" - insert_columns: "crwdns714276:0crwdne714276:0" - filters: "crwdns714278:0crwdne714278:0" - display_sums: "crwdns714280:0crwdne714280:0" - confirm_edit_cancel: "crwdns714282:0crwdne714282:0" - click_to_edit_query_name: "crwdns714284:0crwdne714284:0" - rename_query_placeholder: "crwdns714286:0crwdne714286:0" - star_text: "crwdns714288:0crwdne714288:0" + column_names: "crwdns716388:0crwdne716388:0" + group_by: "crwdns716390:0crwdne716390:0" + group: "crwdns716392:0crwdne716392:0" + group_by_disabled_by_hierarchy: "crwdns716394:0crwdne716394:0" + hierarchy_disabled_by_group_by: "crwdns716396:0%{column}crwdne716396:0" + sort_ascending: "crwdns716398:0crwdne716398:0" + sort_descending: "crwdns716400:0crwdne716400:0" + move_column_left: "crwdns716402:0crwdne716402:0" + move_column_right: "crwdns716404:0crwdne716404:0" + hide_column: "crwdns716406:0crwdne716406:0" + insert_columns: "crwdns716408:0crwdne716408:0" + filters: "crwdns716410:0crwdne716410:0" + display_sums: "crwdns716412:0crwdne716412:0" + confirm_edit_cancel: "crwdns716414:0crwdne716414:0" + click_to_edit_query_name: "crwdns716416:0crwdne716416:0" + rename_query_placeholder: "crwdns716418:0crwdne716418:0" + star_text: "crwdns716420:0crwdne716420:0" public_text: > - crwdns714290:0crwdne714290:0 + crwdns716422:0crwdne716422:0 errors: - unretrievable_query: "crwdns714292:0crwdne714292:0" - not_found: "crwdns714294:0crwdne714294:0" - duplicate_query_title: "crwdns714296:0crwdne714296:0" - text_no_results: "crwdns714298:0crwdne714298:0" + unretrievable_query: "crwdns716424:0crwdne716424:0" + not_found: "crwdns716426:0crwdne716426:0" + duplicate_query_title: "crwdns716428:0crwdne716428:0" + text_no_results: "crwdns716430:0crwdne716430:0" scheduling: - is_parent: "crwdns714300:0crwdne714300:0" - is_switched_from_manual_to_automatic: "crwdns714302:0crwdne714302:0" + is_parent: "crwdns716432:0crwdne716432:0" + is_switched_from_manual_to_automatic: "crwdns716434:0crwdne716434:0" table: - configure_button: 'crwdns714304:0crwdne714304:0' - summary: "crwdns714306:0crwdne714306:0" - text_inline_edit: "crwdns714308:0crwdne714308:0" - text_sort_hint: "crwdns714310:0crwdne714310:0" - text_select_hint: "crwdns714312:0crwdne714312:0" + configure_button: 'crwdns716436:0crwdne716436:0' + summary: "crwdns716438:0crwdne716438:0" + text_inline_edit: "crwdns716440:0crwdne716440:0" + text_sort_hint: "crwdns716442:0crwdne716442:0" + text_select_hint: "crwdns716444:0crwdne716444:0" table_configuration: - button: 'crwdns714314:0crwdne714314:0' - choose_display_mode: 'crwdns714316:0crwdne714316:0' - modal_title: 'crwdns714318:0crwdne714318:0' - embedded_tab_disabled: "crwdns714320:0crwdne714320:0" - default: "crwdns714322:0crwdne714322:0" - display_settings: 'crwdns714324:0crwdne714324:0' - default_mode: "crwdns714326:0crwdne714326:0" - hierarchy_mode: "crwdns714328:0crwdne714328:0" - hierarchy_hint: "crwdns714330:0crwdne714330:0" - display_sums_hint: "crwdns714332:0crwdne714332:0" - show_timeline_hint: "crwdns714334:0crwdne714334:0" - highlighting: 'crwdns714336:0crwdne714336:0' + button: 'crwdns716446:0crwdne716446:0' + choose_display_mode: 'crwdns716448:0crwdne716448:0' + modal_title: 'crwdns716450:0crwdne716450:0' + embedded_tab_disabled: "crwdns716452:0crwdne716452:0" + default: "crwdns716454:0crwdne716454:0" + display_settings: 'crwdns716456:0crwdne716456:0' + default_mode: "crwdns716458:0crwdne716458:0" + hierarchy_mode: "crwdns716460:0crwdne716460:0" + hierarchy_hint: "crwdns716462:0crwdne716462:0" + display_sums_hint: "crwdns716464:0crwdne716464:0" + show_timeline_hint: "crwdns716466:0crwdne716466:0" + highlighting: 'crwdns716468:0crwdne716468:0' highlighting_mode: - description: "crwdns714338:0crwdne714338:0" - none: "crwdns714340:0crwdne714340:0" - inline: 'crwdns714342:0crwdne714342:0' - inline_all: 'crwdns714344:0crwdne714344:0' - entire_row_by: 'crwdns714346:0crwdne714346:0' - status: 'crwdns714348:0crwdne714348:0' - priority: 'crwdns714350:0crwdne714350:0' - type: 'crwdns714352:0crwdne714352:0' + description: "crwdns716470:0crwdne716470:0" + none: "crwdns716472:0crwdne716472:0" + inline: 'crwdns716474:0crwdne716474:0' + inline_all: 'crwdns716476:0crwdne716476:0' + entire_row_by: 'crwdns716478:0crwdne716478:0' + status: 'crwdns716480:0crwdne716480:0' + priority: 'crwdns716482:0crwdne716482:0' + type: 'crwdns716484:0crwdne716484:0' sorting_mode: - description: 'crwdns714354:0crwdne714354:0' - automatic: 'crwdns714356:0crwdne714356:0' - manually: 'crwdns714358:0crwdne714358:0' - warning: 'crwdns714360:0crwdne714360:0' - columns_help_text: "crwdns714362:0crwdne714362:0" + description: 'crwdns716486:0crwdne716486:0' + automatic: 'crwdns716488:0crwdne716488:0' + manually: 'crwdns716490:0crwdne716490:0' + warning: 'crwdns716492:0crwdne716492:0' + columns_help_text: "crwdns716494:0crwdne716494:0" upsale: - attribute_highlighting: 'crwdns714364:0crwdne714364:0' - relation_columns: 'crwdns714366:0crwdne714366:0' - check_out_link: 'crwdns714368:0crwdne714368:0' + attribute_highlighting: 'crwdns716496:0crwdne716496:0' + relation_columns: 'crwdns716498:0crwdne716498:0' + check_out_link: 'crwdns716500:0crwdne716500:0' relation_filters: - filter_work_packages_by_relation_type: 'crwdns714370:0crwdne714370:0' + filter_work_packages_by_relation_type: 'crwdns716502:0crwdne716502:0' tabs: - overview: crwdns714372:0crwdne714372:0 - activity: crwdns714374:0crwdne714374:0 - relations: crwdns714376:0crwdne714376:0 - watchers: crwdns714378:0crwdne714378:0 - attachments: crwdns714380:0crwdne714380:0 + overview: crwdns716504:0crwdne716504:0 + activity: crwdns716506:0crwdne716506:0 + relations: crwdns716508:0crwdne716508:0 + watchers: crwdns716510:0crwdne716510:0 + attachments: crwdns716512:0crwdne716512:0 time_relative: - days: "crwdns714382:0crwdne714382:0" - weeks: "crwdns714384:0crwdne714384:0" - months: "crwdns714386:0crwdne714386:0" + days: "crwdns716514:0crwdne716514:0" + weeks: "crwdns716516:0crwdne716516:0" + months: "crwdns716518:0crwdne716518:0" toolbar: settings: - configure_view: "crwdns714388:0crwdne714388:0" - columns: "crwdns714390:0crwdne714390:0" - sort_by: "crwdns714392:0crwdne714392:0" - group_by: "crwdns714394:0crwdne714394:0" - display_sums: "crwdns714396:0crwdne714396:0" - display_hierarchy: "crwdns714398:0crwdne714398:0" - hide_hierarchy: "crwdns714400:0crwdne714400:0" - hide_sums: "crwdns714402:0crwdne714402:0" - save: "crwdns714404:0crwdne714404:0" - save_as: "crwdns714406:0crwdne714406:0" - export: "crwdns714408:0crwdne714408:0" - visibility_settings: "crwdns714410:0crwdne714410:0" - page_settings: "crwdns714412:0crwdne714412:0" - delete: "crwdns714414:0crwdne714414:0" - filter: "crwdns714416:0crwdne714416:0" - unselected_title: "crwdns714418:0crwdne714418:0" - search_query_label: "crwdns714420:0crwdne714420:0" - search_query_title: "crwdns714422:0crwdne714422:0" - placeholder_query_title: "crwdns714424:0crwdne714424:0" + configure_view: "crwdns716520:0crwdne716520:0" + columns: "crwdns716522:0crwdne716522:0" + sort_by: "crwdns716524:0crwdne716524:0" + group_by: "crwdns716526:0crwdne716526:0" + display_sums: "crwdns716528:0crwdne716528:0" + display_hierarchy: "crwdns716530:0crwdne716530:0" + hide_hierarchy: "crwdns716532:0crwdne716532:0" + hide_sums: "crwdns716534:0crwdne716534:0" + save: "crwdns716536:0crwdne716536:0" + save_as: "crwdns716538:0crwdne716538:0" + export: "crwdns716540:0crwdne716540:0" + visibility_settings: "crwdns716542:0crwdne716542:0" + page_settings: "crwdns716544:0crwdne716544:0" + delete: "crwdns716546:0crwdne716546:0" + filter: "crwdns716548:0crwdne716548:0" + unselected_title: "crwdns716550:0crwdne716550:0" + search_query_label: "crwdns716552:0crwdne716552:0" + search_query_title: "crwdns716554:0crwdne716554:0" + placeholder_query_title: "crwdns716556:0crwdne716556:0" modals: - label_settings: "crwdns714426:0crwdne714426:0" - label_name: "crwdns714428:0crwdne714428:0" - label_delete_page: "crwdns714430:0crwdne714430:0" - button_apply: "crwdns714432:0crwdne714432:0" - button_save: "crwdns714434:0crwdne714434:0" - button_submit: "crwdns714436:0crwdne714436:0" - button_cancel: "crwdns714438:0crwdne714438:0" + label_settings: "crwdns716558:0crwdne716558:0" + label_name: "crwdns716560:0crwdne716560:0" + label_delete_page: "crwdns716562:0crwdne716562:0" + button_apply: "crwdns716564:0crwdne716564:0" + button_save: "crwdns716566:0crwdne716566:0" + button_submit: "crwdns716568:0crwdne716568:0" + button_cancel: "crwdns716570:0crwdne716570:0" form_submit: - title: 'crwdns714440:0crwdne714440:0' - text: 'crwdns714442:0crwdne714442:0' + title: 'crwdns716572:0crwdne716572:0' + text: 'crwdns716574:0crwdne716574:0' destroy_work_package: - title: "crwdns714444:0%{label}crwdne714444:0" - text: "crwdns714446:0%{label}crwdne714446:0" - has_children: "crwdns714448:0%{childUnits}crwdne714448:0" - confirm_deletion_children: "crwdns714450:0crwdne714450:0" - deletes_children: "crwdns714452:0crwdne714452:0" + title: "crwdns716576:0%{label}crwdne716576:0" + text: "crwdns716578:0%{label}crwdne716578:0" + has_children: "crwdns716580:0%{childUnits}crwdne716580:0" + confirm_deletion_children: "crwdns716582:0crwdne716582:0" + deletes_children: "crwdns716584:0crwdne716584:0" destroy_time_entry: - title: "crwdns714454:0crwdne714454:0" - text: "crwdns714456:0crwdne714456:0" - notice_no_results_to_display: "crwdns714458:0crwdne714458:0" - notice_successful_create: "crwdns714460:0crwdne714460:0" - notice_successful_delete: "crwdns714462:0crwdne714462:0" - notice_successful_update: "crwdns714464:0crwdne714464:0" - notice_job_started: "crwdns714466:0crwdne714466:0" - notice_bad_request: "crwdns714468:0crwdne714468:0" + title: "crwdns716586:0crwdne716586:0" + text: "crwdns716588:0crwdne716588:0" + notice_no_results_to_display: "crwdns716590:0crwdne716590:0" + notice_successful_create: "crwdns716592:0crwdne716592:0" + notice_successful_delete: "crwdns716594:0crwdne716594:0" + notice_successful_update: "crwdns716596:0crwdne716596:0" + notice_job_started: "crwdns716598:0crwdne716598:0" + notice_bad_request: "crwdns716600:0crwdne716600:0" relations: - empty: crwdns714470:0crwdne714470:0 - remove: crwdns714472:0crwdne714472:0 + empty: crwdns716602:0crwdne716602:0 + remove: crwdns716604:0crwdne716604:0 inplace: - button_edit: "crwdns714474:0%{attribute}crwdne714474:0" - button_save: "crwdns714476:0%{attribute}crwdne714476:0" - button_cancel: "crwdns714478:0%{attribute}crwdne714478:0" - button_save_all: "crwdns714480:0crwdne714480:0" - button_cancel_all: "crwdns714482:0crwdne714482:0" - link_formatting_help: "crwdns714484:0crwdne714484:0" - btn_preview_enable: "crwdns714486:0crwdne714486:0" - btn_preview_disable: "crwdns714488:0crwdne714488:0" - null_value_label: "crwdns714490:0crwdne714490:0" - clear_value_label: "crwdns714492:0crwdne714492:0" + button_edit: "crwdns716606:0%{attribute}crwdne716606:0" + button_save: "crwdns716608:0%{attribute}crwdne716608:0" + button_cancel: "crwdns716610:0%{attribute}crwdne716610:0" + button_save_all: "crwdns716612:0crwdne716612:0" + button_cancel_all: "crwdns716614:0crwdne716614:0" + link_formatting_help: "crwdns716616:0crwdne716616:0" + btn_preview_enable: "crwdns716618:0crwdne716618:0" + btn_preview_disable: "crwdns716620:0crwdne716620:0" + null_value_label: "crwdns716622:0crwdne716622:0" + clear_value_label: "crwdns716624:0crwdne716624:0" errors: - required: 'crwdns714494:0%{field}crwdne714494:0' - number: 'crwdns714496:0%{field}crwdne714496:0' - maxlength: 'crwdns714498:0%{field}crwdnd714498:0%{maxLength}crwdne714498:0' - minlength: 'crwdns714500:0%{field}crwdnd714500:0%{minLength}crwdne714500:0' - messages_on_field: 'crwdns714502:0%{messages}crwdne714502:0' - error_could_not_resolve_version_name: "crwdns714504:0crwdne714504:0" - error_could_not_resolve_user_name: "crwdns714506:0crwdne714506:0" - error_attachment_upload: "crwdns714508:0%{error}crwdne714508:0" - error_attachment_upload_permission: "crwdns714510:0crwdne714510:0" + required: 'crwdns716626:0%{field}crwdne716626:0' + number: 'crwdns716628:0%{field}crwdne716628:0' + maxlength: 'crwdns716630:0%{field}crwdnd716630:0%{maxLength}crwdne716630:0' + minlength: 'crwdns716632:0%{field}crwdnd716632:0%{minLength}crwdne716632:0' + messages_on_field: 'crwdns716634:0%{messages}crwdne716634:0' + error_could_not_resolve_version_name: "crwdns716636:0crwdne716636:0" + error_could_not_resolve_user_name: "crwdns716638:0crwdne716638:0" + error_attachment_upload: "crwdns716640:0%{error}crwdne716640:0" + error_attachment_upload_permission: "crwdns716642:0crwdne716642:0" units: workPackage: - one: "crwdns714512:1crwdne714512:1" - other: "crwdns714512:5crwdne714512:5" + one: "crwdns716644:1crwdne716644:1" + other: "crwdns716644:5crwdne716644:5" child_work_packages: - one: "crwdns714514:1crwdne714514:1" - other: "crwdns714514:5%{count}crwdne714514:5" + one: "crwdns716646:1crwdne716646:1" + other: "crwdns716646:5%{count}crwdne716646:5" hour: - one: "crwdns714516:0crwdne714516:0" - other: "crwdns714518:0%{count}crwdne714518:0" - zero: "crwdns714520:0crwdne714520:0" + one: "crwdns716648:0crwdne716648:0" + other: "crwdns716650:0%{count}crwdne716650:0" + zero: "crwdns716652:0crwdne716652:0" zen_mode: - button_activate: 'crwdns714522:0crwdne714522:0' - button_deactivate: 'crwdns714524:0crwdne714524:0' + button_activate: 'crwdns716654:0crwdne716654:0' + button_deactivate: 'crwdns716656:0crwdne716656:0' global_search: - all_projects: "crwdns714526:0crwdne714526:0" - search: "crwdns714528:0crwdne714528:0" - close_search: "crwdns714530:0crwdne714530:0" - current_project: "crwdns714532:0crwdne714532:0" - current_project_and_all_descendants: "crwdns714534:0crwdne714534:0" + all_projects: "crwdns716658:0crwdne716658:0" + search: "crwdns716660:0crwdne716660:0" + close_search: "crwdns716662:0crwdne716662:0" + current_project: "crwdns716664:0crwdne716664:0" + current_project_and_all_descendants: "crwdns716666:0crwdne716666:0" title: - all_projects: "crwdns714536:0crwdne714536:0" - project_and_subprojects: "crwdns714538:0crwdne714538:0" - search_for: "crwdns714540:0crwdne714540:0" + all_projects: "crwdns716668:0crwdne716668:0" + project_and_subprojects: "crwdns716670:0crwdne716670:0" + search_for: "crwdns716672:0crwdne716672:0" views: - card: 'crwdns714542:0crwdne714542:0' - list: 'crwdns714544:0crwdne714544:0' - timeline: 'crwdns714546:0crwdne714546:0' + card: 'crwdns716674:0crwdne716674:0' + list: 'crwdns716676:0crwdne716676:0' + timeline: 'crwdns716678:0crwdne716678:0' invite_user_modal: - back: 'crwdns714548:0crwdne714548:0' - invite: 'crwdns714550:0crwdne714550:0' + back: 'crwdns716680:0crwdne716680:0' + invite: 'crwdns716682:0crwdne716682:0' title: - invite: 'crwdns714552:0crwdne714552:0' - invite_to_project: 'crwdns714554:0%{type}crwdnd714554:0%{project}crwdne714554:0' - User: 'crwdns714556:0crwdne714556:0' - Group: 'crwdns714558:0crwdne714558:0' - PlaceholderUser: 'crwdns714560:0crwdne714560:0' - invite_principal_to_project: 'crwdns714562:0%{principal}crwdnd714562:0%{project}crwdne714562:0' + invite: 'crwdns716684:0crwdne716684:0' + invite_to_project: 'crwdns716686:0%{type}crwdnd716686:0%{project}crwdne716686:0' + User: 'crwdns716688:0crwdne716688:0' + Group: 'crwdns716690:0crwdne716690:0' + PlaceholderUser: 'crwdns716692:0crwdne716692:0' + invite_principal_to_project: 'crwdns716694:0%{principal}crwdnd716694:0%{project}crwdne716694:0' project: - label: 'crwdns714564:0crwdne714564:0' - required: 'crwdns714566:0crwdne714566:0' - lacking_permission: 'crwdns714568:0crwdne714568:0' - lacking_permission_info: 'crwdns714570:0crwdne714570:0' - next_button: 'crwdns714572:0crwdne714572:0' - no_results: 'crwdns714574:0crwdne714574:0' - no_invite_rights: 'crwdns714576:0crwdne714576:0' + label: 'crwdns716696:0crwdne716696:0' + required: 'crwdns716698:0crwdne716698:0' + lacking_permission: 'crwdns716700:0crwdne716700:0' + lacking_permission_info: 'crwdns716702:0crwdne716702:0' + next_button: 'crwdns716704:0crwdne716704:0' + no_results: 'crwdns716706:0crwdne716706:0' + no_invite_rights: 'crwdns716708:0crwdne716708:0' type: - required: 'crwdns714578:0crwdne714578:0' + required: 'crwdns716710:0crwdne716710:0' user: - title: 'crwdns714580:0crwdne714580:0' - description: 'crwdns714582:0crwdne714582:0' + title: 'crwdns716712:0crwdne716712:0' + description: 'crwdns716714:0crwdne716714:0' group: - title: 'crwdns714584:0crwdne714584:0' - description: 'crwdns714586:0crwdne714586:0' + title: 'crwdns716716:0crwdne716716:0' + description: 'crwdns716718:0crwdne716718:0' placeholder: - title: 'crwdns714588:0crwdne714588:0' - title_no_ee: 'crwdns714590:0crwdne714590:0' - description: 'crwdns714592:0crwdne714592:0' - description_no_ee: 'crwdns714594:0%{eeHref}crwdne714594:0' + title: 'crwdns716720:0crwdne716720:0' + title_no_ee: 'crwdns716722:0crwdne716722:0' + description: 'crwdns716724:0crwdne716724:0' + description_no_ee: 'crwdns716726:0%{eeHref}crwdne716726:0' principal: label: - name_or_email: 'crwdns714596:0crwdne714596:0' - name: 'crwdns714598:0crwdne714598:0' - already_member_message: 'crwdns714600:0%{project}crwdne714600:0' - no_results_user: 'crwdns714602:0crwdne714602:0' - invite_user: 'crwdns714604:0crwdne714604:0' - no_results_placeholder: 'crwdns714606:0crwdne714606:0' - create_new_placeholder: 'crwdns714608:0crwdne714608:0' - no_results_group: 'crwdns714610:0crwdne714610:0' - next_button: 'crwdns714612:0crwdne714612:0' + name_or_email: 'crwdns716728:0crwdne716728:0' + name: 'crwdns716730:0crwdne716730:0' + already_member_message: 'crwdns716732:0%{project}crwdne716732:0' + no_results_user: 'crwdns716734:0crwdne716734:0' + invite_user: 'crwdns716736:0crwdne716736:0' + no_results_placeholder: 'crwdns716738:0crwdne716738:0' + create_new_placeholder: 'crwdns716740:0crwdne716740:0' + no_results_group: 'crwdns716742:0crwdne716742:0' + next_button: 'crwdns716744:0crwdne716744:0' required: - user: 'crwdns714614:0crwdne714614:0' - placeholder: 'crwdns714616:0crwdne714616:0' - group: 'crwdns714618:0crwdne714618:0' + user: 'crwdns716746:0crwdne716746:0' + placeholder: 'crwdns716748:0crwdne716748:0' + group: 'crwdns716750:0crwdne716750:0' role: - label: 'crwdns714620:0%{project}crwdne714620:0' - no_roles_found: 'crwdns714622:0crwdne714622:0' - description: 'crwdns714624:0%{principal}crwdne714624:0' - required: 'crwdns714626:0crwdne714626:0' - next_button: 'crwdns714628:0crwdne714628:0' + label: 'crwdns716752:0%{project}crwdne716752:0' + no_roles_found: 'crwdns716754:0crwdne716754:0' + description: 'crwdns716756:0%{principal}crwdne716756:0' + required: 'crwdns716758:0crwdne716758:0' + next_button: 'crwdns716760:0crwdne716760:0' message: - label: 'crwdns714630:0crwdne714630:0' - description: 'crwdns714632:0%{principal}crwdne714632:0' - next_button: 'crwdns714634:0crwdne714634:0' + label: 'crwdns716762:0crwdne716762:0' + description: 'crwdns716764:0%{principal}crwdne716764:0' + next_button: 'crwdns716766:0crwdne716766:0' summary: - next_button: 'crwdns714636:0crwdne714636:0' + next_button: 'crwdns716768:0crwdne716768:0' success: - title: 'crwdns714638:0%{principal}crwdne714638:0' + title: 'crwdns716770:0%{principal}crwdne716770:0' description: - user: 'crwdns714640:0%{project}crwdne714640:0' - placeholder: 'crwdns714642:0%{project}crwdne714642:0' - group: 'crwdns714644:0%{project}crwdne714644:0' - next_button: 'crwdns714646:0crwdne714646:0' + user: 'crwdns716772:0%{project}crwdne716772:0' + placeholder: 'crwdns716774:0%{project}crwdne716774:0' + group: 'crwdns716776:0%{project}crwdne716776:0' + next_button: 'crwdns716778:0crwdne716778:0' forms: - submit_success_message: 'crwdns714648:0crwdne714648:0' - load_error_message: 'crwdns714650:0crwdne714650:0' - validation_error_message: 'crwdns714652:0crwdne714652:0' - advanced_settings: 'crwdns714654:0crwdne714654:0' + submit_success_message: 'crwdns716780:0crwdne716780:0' + load_error_message: 'crwdns716782:0crwdne716782:0' + validation_error_message: 'crwdns716784:0crwdne716784:0' + advanced_settings: 'crwdns716786:0crwdne716786:0' diff --git a/config/locales/crowdin/js-lt.yml b/config/locales/crowdin/js-lt.yml index 52ce48dbf7..b9bc4c3eb0 100644 --- a/config/locales/crowdin/js-lt.yml +++ b/config/locales/crowdin/js-lt.yml @@ -61,6 +61,7 @@ lt: button_confirm: "Patvirtinti" button_continue: "Tęsti" button_copy: "Kopijuoti" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Savi laukai" button_delete: "Trinti" button_delete_watcher: "Trinti stebėtoją" diff --git a/config/locales/crowdin/js-lv.yml b/config/locales/crowdin/js-lv.yml index cd13fee4e6..feda5940b7 100644 --- a/config/locales/crowdin/js-lv.yml +++ b/config/locales/crowdin/js-lv.yml @@ -61,6 +61,7 @@ lv: button_confirm: "Confirm" button_continue: "Continue" button_copy: "Copy" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Pielāgotie lauki" button_delete: "Dzēst" button_delete_watcher: "Dzēst vērotāju" diff --git a/config/locales/crowdin/js-ne.yml b/config/locales/crowdin/js-ne.yml index 2544f6930f..7b40d8ec5c 100644 --- a/config/locales/crowdin/js-ne.yml +++ b/config/locales/crowdin/js-ne.yml @@ -61,6 +61,7 @@ ne: button_confirm: "निश्चित गर्नुहोस्" button_continue: "Continue" button_copy: "Copy" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "वाचक हटाउनुहोस् " diff --git a/config/locales/crowdin/js-nl.yml b/config/locales/crowdin/js-nl.yml index 39e1e39572..fc9c6e0ac1 100644 --- a/config/locales/crowdin/js-nl.yml +++ b/config/locales/crowdin/js-nl.yml @@ -61,6 +61,7 @@ nl: button_confirm: "Accepteren" button_continue: "Ga verder" button_copy: "Kopieer" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Aangepaste velden" button_delete: "Verwijderen" button_delete_watcher: "Kijkers verwijderen" diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml index 288aeba990..18a8be3203 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -61,6 +61,7 @@ button_confirm: "Bekreft" button_continue: "Fortsett" button_copy: "Kopier" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Egendefinerte felter" button_delete: "Slett" button_delete_watcher: "Slett overvåker" diff --git a/config/locales/crowdin/js-pl.yml b/config/locales/crowdin/js-pl.yml index edfb857bf3..8f4f32c28a 100644 --- a/config/locales/crowdin/js-pl.yml +++ b/config/locales/crowdin/js-pl.yml @@ -61,6 +61,7 @@ pl: button_confirm: "Potwierdź" button_continue: "Kontynuuj" button_copy: "Kopiuj" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Pola niestandardowe" button_delete: "Usuń" button_delete_watcher: "Usuń obserwatora" diff --git a/config/locales/crowdin/js-pt.yml b/config/locales/crowdin/js-pt.yml index e602382d15..ff77ab1885 100644 --- a/config/locales/crowdin/js-pt.yml +++ b/config/locales/crowdin/js-pt.yml @@ -61,6 +61,7 @@ pt: button_confirm: "Confirmar" button_continue: "Continuar" button_copy: "Copiar" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Campos personalizados" button_delete: "Excluir" button_delete_watcher: "Excluir observador" diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml index e7214c77f7..de52ae79ee 100644 --- a/config/locales/crowdin/js-ro.yml +++ b/config/locales/crowdin/js-ro.yml @@ -61,6 +61,7 @@ ro: button_confirm: "Confirmă" button_continue: "Continuaţi" button_copy: "Copiere" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Câmpuri personalizate" button_delete: "Ștergere" button_delete_watcher: "Ştergere observator" diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index b38fac235a..7cbe3e9a1e 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -61,6 +61,7 @@ ru: button_confirm: "Подтвердить" button_continue: "Продолжить" button_copy: "Копировать" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Настраиваемые поля" button_delete: "Удалить" button_delete_watcher: "Удалить наблюдателя" diff --git a/config/locales/crowdin/js-rw.yml b/config/locales/crowdin/js-rw.yml index 421e39b13e..50dd4dd623 100644 --- a/config/locales/crowdin/js-rw.yml +++ b/config/locales/crowdin/js-rw.yml @@ -61,6 +61,7 @@ rw: button_confirm: "Confirm" button_continue: "Continue" button_copy: "Copy" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Custom fields" button_delete: "Delete" button_delete_watcher: "Delete watcher" diff --git a/config/locales/crowdin/js-si.yml b/config/locales/crowdin/js-si.yml index c67dbc1d4d..84b567e15f 100644 --- a/config/locales/crowdin/js-si.yml +++ b/config/locales/crowdin/js-si.yml @@ -61,6 +61,7 @@ si: button_confirm: "තහවුරු කරන්න" button_continue: "ඉදිරියට යන්න" button_copy: "පිටපත් කරන්න" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "අභිරුචි ක්ෂේත්ර" button_delete: "මකන්න" button_delete_watcher: "මුරකරු මකන්න" diff --git a/config/locales/crowdin/js-sk.yml b/config/locales/crowdin/js-sk.yml index eb67285b90..9d5b00e0f7 100644 --- a/config/locales/crowdin/js-sk.yml +++ b/config/locales/crowdin/js-sk.yml @@ -61,6 +61,7 @@ sk: button_confirm: "Potvrdiť" button_continue: "Pokračovať" button_copy: "Kopírovať" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Vlastné polia" button_delete: "Odstrániť" button_delete_watcher: "Odstrániť pozorovateľa" diff --git a/config/locales/crowdin/js-sl.yml b/config/locales/crowdin/js-sl.yml index fdf1de110e..fe7be1d6d5 100644 --- a/config/locales/crowdin/js-sl.yml +++ b/config/locales/crowdin/js-sl.yml @@ -61,6 +61,7 @@ sl: button_confirm: "Potrdi" button_continue: "Nadaljuj" button_copy: "Kopiraj" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Polja po meri" button_delete: "Izbriši" button_delete_watcher: "Izbriši opazovalca" diff --git a/config/locales/crowdin/js-sv.yml b/config/locales/crowdin/js-sv.yml index 988630f2ce..26495c849a 100644 --- a/config/locales/crowdin/js-sv.yml +++ b/config/locales/crowdin/js-sv.yml @@ -61,6 +61,7 @@ sv: button_confirm: "Bekräfta" button_continue: "Fortsätt" button_copy: "Kopiera" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Anpassade fält" button_delete: "Ta bort" button_delete_watcher: "Ta bort bevakare" diff --git a/config/locales/crowdin/js-th.yml b/config/locales/crowdin/js-th.yml index 9c160423ec..79cc9dadfe 100644 --- a/config/locales/crowdin/js-th.yml +++ b/config/locales/crowdin/js-th.yml @@ -61,6 +61,7 @@ th: button_confirm: "ยืนยัน" button_continue: "Continue" button_copy: "คัดลอก" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "ฟิลด์ที่กำหนดเอง" button_delete: "ลบ" button_delete_watcher: "ลบผู้ดูข้อมูล" diff --git a/config/locales/crowdin/js-tr.yml b/config/locales/crowdin/js-tr.yml index 88f4883df2..ae25dd7b73 100644 --- a/config/locales/crowdin/js-tr.yml +++ b/config/locales/crowdin/js-tr.yml @@ -61,6 +61,7 @@ tr: button_confirm: "Onaylamak" button_continue: "Devam et" button_copy: "Kopyalamak" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Özel Alanlar" button_delete: "silmek" button_delete_watcher: "Takipçi sil" diff --git a/config/locales/crowdin/js-uk.yml b/config/locales/crowdin/js-uk.yml index 5a922043e3..4de55177fc 100644 --- a/config/locales/crowdin/js-uk.yml +++ b/config/locales/crowdin/js-uk.yml @@ -61,6 +61,7 @@ uk: button_confirm: "Підтвердити" button_continue: "Продовжити" button_copy: "Копіювати" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Індивідуальні поля" button_delete: "Видалити" button_delete_watcher: "Видалити спостерігача" diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml index 0da24b8f4c..c555be5ab1 100644 --- a/config/locales/crowdin/js-vi.yml +++ b/config/locales/crowdin/js-vi.yml @@ -61,6 +61,7 @@ vi: button_confirm: "Xác nhận" button_continue: "Tiếp tục" button_copy: "Sao chép" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "Tùy chỉnh mục" button_delete: "Xoá" button_delete_watcher: "Xóa người xem" diff --git a/config/locales/crowdin/js-zh-TW.yml b/config/locales/crowdin/js-zh-TW.yml index 3862f5fb8a..f16233cf02 100644 --- a/config/locales/crowdin/js-zh-TW.yml +++ b/config/locales/crowdin/js-zh-TW.yml @@ -61,6 +61,7 @@ zh-TW: button_confirm: "確認" button_continue: "繼續" button_copy: "複製" + button_copy_to_other_project: "Copy to other project" button_custom-fields: "自訂欄位" button_delete: "删除" button_delete_watcher: "刪除關注者" diff --git a/modules/team_planner/config/locales/crowdin/js-ru.yml b/modules/team_planner/config/locales/crowdin/js-ru.yml index 02b4163447..be6879d41c 100644 --- a/modules/team_planner/config/locales/crowdin/js-ru.yml +++ b/modules/team_planner/config/locales/crowdin/js-ru.yml @@ -16,5 +16,5 @@ ru: search_placeholder: 'Поиск...' modify: errors: - permission_denied: 'You do not have the necessary permissions to modify this.' - fallback: 'This work package cannot be edited.' + permission_denied: 'У вас нет необходимых прав для изменения этого.' + fallback: 'Этот пакет работ не может быть отредактирован.'