chore(i18n): sort all locale source files into yamllint key order

Mechanical reorder into yamllint key-ordering; no translation data changed
(verified by sort_locales.py's content invariant: identical key-paths and
values). License headers preserved verbatim.

Side effects of the ruamel round-trip (data-equivalent, yamllint-clean):
multi-line flow arrays collapse onto one line; `~` renders as `null`.

Editorial touch-ups in en.yml:
- "common attributes of all models" kept as an end-of-line comment on the
  attributes: key, so it travels with the key on future sorts.
- removed the four OAuth/Doorkeeper error category headers whose grouping
  cannot survive alphabetical ordering.

Generated by script/i18n/sort_locales.py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
David F
2026-06-11 10:41:45 +02:00
parent 29de1eaeb3
commit 9f3e3ef804
38 changed files with 6624 additions and 6682 deletions
+3892 -3945
View File
File diff suppressed because it is too large Load Diff
+716 -717
View File
File diff suppressed because it is too large Load Diff
+127 -127
View File
@@ -3,150 +3,93 @@ en:
activerecord:
attributes:
saml/provider:
display_name: Name
identifier: Identifier
secret: Secret
scope: Scope
assertion_consumer_service_url: ACS (Assertion consumer service) URL
limit_self_registration: Limit self registration
sp_entity_id: Service entity ID
metadata_url: Identity provider metadata URL
name_identifier_format: Name identifier format
idp_entity_id: Identity provider entity ID
idp_sso_service_url: Identity provider login endpoint
idp_slo_service_url: Identity provider logout endpoint
idp_cert: Public certificate of identity provider
authn_requests_signed: Sign SAML AuthnRequests
want_assertions_signed: Require signed responses
want_assertions_encrypted: Require encrypted responses
certificate: Certificate used by OpenProject for SAML requests
private_key: Corresponding private key for OpenProject SAML requests
signature_method: Signature algorithm
digest_method: Digest algorithm
display_name: Name
format: "Format"
icon: "Custom icon"
identifier: Identifier
idp_cert: Public certificate of identity provider
idp_entity_id: Identity provider entity ID
idp_slo_service_url: Identity provider logout endpoint
idp_sso_service_url: Identity provider login endpoint
limit_self_registration: Limit self registration
metadata_url: Identity provider metadata URL
name_identifier_format: Name identifier format
private_key: Corresponding private key for OpenProject SAML requests
scope: Scope
secret: Secret
signature_method: Signature algorithm
sp_entity_id: Service entity ID
want_assertions_encrypted: Require encrypted responses
want_assertions_signed: Require signed responses
errors:
models:
saml/provider:
certificate_expired: "is expired and can no longer be used."
invalid_certificate: "is not a valid PEM-formatted certificate: %{additional_message}"
invalid_private_key: "is not a valid PEM-formatted private key: %{additional_message}"
certificate_expired: "is expired and can no longer be used."
unmatched_private_key: "does not belong to the given certificate"
saml:
menu_title: SAML providers
delete_title: Delete SAML provider
delete_heading: Delete this SAML provider?
delete_title: Delete SAML provider
info:
title: "SAML Protocol Configuration Parameters"
description: >
Use these parameters to configure your identity provider connection to OpenProject.
metadata_parser:
success: "Successfully updated the configuration using the identity provider metadata."
invalid_url: "Provided metadata URL is invalid. Provide a HTTP(s) URL."
error: "Failed to retrieve the identity provider metadata: %{error}"
federation_metadata: >
The metadata URL points to a federation aggregate (many identity providers).
Use your institution's direct metadata URL, or enter your institution's IdP entity ID in the metadata form and try again.
metadata_too_large: "The metadata file exceeds the maximum allowed size."
providers:
label_empty_title: "No SAML providers configured yet."
label_empty_description: "Add a provider to see them here."
label_automatic_configuration: Automatic configuration
label_metadata: Metadata
label_metadata_endpoint: OpenProject metadata endpoint
label_openproject_information: OpenProject information
label_configuration_details: "Identity provider endpoints and certificates"
label_configuration_encryption: "Signatures and Encryption"
label_add_new: New SAML identity provider
label_edit: Edit SAML identity provider %{name}
label_uid: Internal user id
label_mapping: Mapping
label_requested_attribute_for: "Requested attribute for: %{attribute}"
no_results_table: No SAML identity providers have been defined yet.
notice_created: A new SAML identity provider was successfully created.
plural: SAML identity providers
singular: SAML identity provider
requested_attributes: Requested attributes
attribute_mapping: Attribute mapping
attribute_mapping_text: >
The following fields control which attributes provided by the SAML identity provider
are used to provide user attributes in OpenProject
metadata:
dialog: "This is the URL where the OpenProject SAML metadata is available. Optionally use it to configure your identity provider:"
upsell:
title: "Single Sign-On (SSO) with SAML"
description: Connect OpenProject to a SAML identity provider
request_attributes:
title: 'Requested attributes'
legend: >
These attributes are added to the SAML XML metadata to signify to the identify provider which attributes OpenProject requires.
You may still need to explicitly configure your identity provider to send these attributes. Please refer to your IdP's documentation.
name: 'Requested attribute key'
format: 'Attribute format'
section_headers:
configuration: "Primary configuration"
attributes: "Attributes"
section_texts:
display_name: "Configure the display name of the SAML provider."
metadata: "Pre-fill configuration using a metadata URL or by pasting metadata XML"
metadata_form: "If your identity provider has a metadata endpoint or XML download, add it below to pre-fill the configuration."
metadata_form_banner: "Editing the metadata may override existing values in other sections. "
configuration: "Configure the endpoint URLs for the identity provider, certificates, and further SAML options."
configuration_metadata: "This information has been pre-filled using the supplied metadata. In most cases, they do not require editing."
encryption: "Configure assertion signatures and encryption for SAML requests and responses."
encryption_form: "You may optionally want to encrypt the assertion response, or have requests from OpenProject signed."
mapping: "Manually adjust the mapping between the SAML response and user attributes in OpenProject."
requested_attributes: "Define the set of attributes to be requested in the SAML request sent to your identity provider."
seeded_from_env: "This provider was seeded from the environment configuration. It cannot be edited."
settings:
metadata_none: "I don't have metadata"
metadata_url: "Metadata URL"
metadata_xml: "Metadata XML"
title: "SAML Protocol Configuration Parameters"
instructions:
documentation_link: >
Please refer to our [documentation on configuring SAML providers](docs_url) for more information on these configuration options.
authn_requests_signed: >
If checked, OpenProject will sign the SAML AuthnRequest. You will have to provide a signing certificate and private key using the fields below.
certificate: >
Enter the X509 PEM-formatted certificate used by OpenProject for signing SAML requests.
digest_method: >
Select the digest algorithm to use for the SAML request signature performed by OpenProject (Default: %{default_option}).
display_name: >
The name of the provider. This will be displayed as the login button and in the list of providers.
metadata_none: >
Your identity provider does not have a metadata endpoint or XML download option. You can configure it manually.
metadata_url: >
Your identity provider provides a metadata URL.
idp_entity_id: >
Optional: Useful when the metadata URL points to a federation aggregate with a lot of entries.
Enter the entity ID of your institution's identity provider. Leave blank for single-entity metadata URLs.
metadata_xml: >
Your identity provider provides a metadata XML download.
limit_self_registration: >
If enabled users can only register using this provider if the self registration setting allows for it.
sp_entity_id: >
The entity ID of the service provider (SP). Sometimes also referred to as Audience. This is the unique client identifier of the OpenProject instance.
idp_sso_service_url: >
The URL of the identity provider login endpoint.
idp_slo_service_url: >
The URL of the identity provider logout endpoint.
documentation_link: >
Please refer to our [documentation on configuring SAML providers](docs_url) for more information on these configuration options.
icon: >
Optionally provide a public URL to an icon graphic that will be displayed next to the provider name.
idp_cert: >
Enter the X509 PEM-formatted public certificate of the identity provider.
You can enter multiple certificates by separating them with a newline.
name_identifier_format: >
Set the name identifier format to be used for the SAML assertion.
sp_metadata_endpoint: >
This is the URL where the OpenProject SAML metadata is available.
Optionally use it to configure your identity provider.
idp_entity_id: >
Optional: Useful when the metadata URL points to a federation aggregate with a lot of entries.
Enter the entity ID of your institution's identity provider. Leave blank for single-entity metadata URLs.
idp_slo_service_url: >
The URL of the identity provider logout endpoint.
idp_sso_service_url: >
The URL of the identity provider login endpoint.
limit_self_registration: >
If enabled users can only register using this provider if the self registration setting allows for it.
mapping: >
Configure the mapping between the SAML response and user attributes in OpenProject.
You can configure multiple attribute names to look for. OpenProject will choose the first available attribute
from the SAML response.
mapping_login: >
SAML attributes from the response used for the login.
mapping_mail: >
SAML attributes from the response used for the email of the user.
mapping_firstname: >
SAML attributes from the response used for the given name.
mapping_lastname: >
SAML attributes from the response used for the last name.
mapping_login: >
SAML attributes from the response used for the login.
mapping_mail: >
SAML attributes from the response used for the email of the user.
mapping_uid: >
SAML attribute to use for the internal user ID. Leave empty to use the name_id attribute instead
metadata_for_idp: >
This information might be requested by your SAML identity provider.
metadata_none: >
Your identity provider does not have a metadata endpoint or XML download option. You can configure it manually.
metadata_url: >
Your identity provider provides a metadata URL.
metadata_xml: >
Your identity provider provides a metadata XML download.
name_identifier_format: >
Set the name identifier format to be used for the SAML assertion.
private_key: >
Enter the X509 PEM-formatted private key for the above certificate. This needs to be an RSA private key.
request_uid: >
SAML attribute to request for the internal user ID. By default, the name_id will be used for this field.
requested_attributes: >
@@ -154,22 +97,79 @@ en:
requested_format: >
The format of the requested attribute. This is used to specify the format of the attribute in the SAML request.
Please see [documentation on configuring requested attributes](docs_url) for more information.
authn_requests_signed: >
If checked, OpenProject will sign the SAML AuthnRequest. You will have to provide a signing certificate and private key using the fields below.
signature_method: >
Select the signature algorithm to use for the SAML request signature performed by OpenProject (Default: %{default_option}).
sp_entity_id: >
The entity ID of the service provider (SP). Sometimes also referred to as Audience. This is the unique client identifier of the OpenProject instance.
sp_metadata_endpoint: >
This is the URL where the OpenProject SAML metadata is available.
Optionally use it to configure your identity provider.
want_assertions_encrypted: >
If enabled, require the identity provider to encrypt the assertion response using the certificate pair that you provide.
want_assertions_signed: >
If checked, OpenProject will required signed responses from the identity provider using its own certificate keypair.
OpenProject will verify the signature against the certificate from the basic configuration section.
want_assertions_encrypted: >
If enabled, require the identity provider to encrypt the assertion response using the certificate pair that you provide.
certificate: >
Enter the X509 PEM-formatted certificate used by OpenProject for signing SAML requests.
private_key: >
Enter the X509 PEM-formatted private key for the above certificate. This needs to be an RSA private key.
signature_method: >
Select the signature algorithm to use for the SAML request signature performed by OpenProject (Default: %{default_option}).
digest_method: >
Select the digest algorithm to use for the SAML request signature performed by OpenProject (Default: %{default_option}).
icon: >
Optionally provide a public URL to an icon graphic that will be displayed next to the provider name.
metadata_for_idp: >
This information might be requested by your SAML identity provider.
menu_title: SAML providers
metadata_parser:
error: "Failed to retrieve the identity provider metadata: %{error}"
federation_metadata: >
The metadata URL points to a federation aggregate (many identity providers).
Use your institution's direct metadata URL, or enter your institution's IdP entity ID in the metadata form and try again.
invalid_url: "Provided metadata URL is invalid. Provide a HTTP(s) URL."
metadata_too_large: "The metadata file exceeds the maximum allowed size."
success: "Successfully updated the configuration using the identity provider metadata."
providers:
attribute_mapping: Attribute mapping
attribute_mapping_text: >
The following fields control which attributes provided by the SAML identity provider
are used to provide user attributes in OpenProject
label_add_new: New SAML identity provider
label_automatic_configuration: Automatic configuration
label_configuration_details: "Identity provider endpoints and certificates"
label_configuration_encryption: "Signatures and Encryption"
label_edit: Edit SAML identity provider %{name}
label_empty_description: "Add a provider to see them here."
label_empty_title: "No SAML providers configured yet."
label_mapping: Mapping
label_metadata: Metadata
label_metadata_endpoint: OpenProject metadata endpoint
label_openproject_information: OpenProject information
label_requested_attribute_for: "Requested attribute for: %{attribute}"
label_uid: Internal user id
metadata:
dialog: "This is the URL where the OpenProject SAML metadata is available. Optionally use it to configure your identity provider:"
no_results_table: No SAML identity providers have been defined yet.
notice_created: A new SAML identity provider was successfully created.
plural: SAML identity providers
request_attributes:
format: 'Attribute format'
legend: >
These attributes are added to the SAML XML metadata to signify to the identify provider which attributes OpenProject requires.
You may still need to explicitly configure your identity provider to send these attributes. Please refer to your IdP's documentation.
name: 'Requested attribute key'
title: 'Requested attributes'
requested_attributes: Requested attributes
section_headers:
attributes: "Attributes"
configuration: "Primary configuration"
section_texts:
configuration: "Configure the endpoint URLs for the identity provider, certificates, and further SAML options."
configuration_metadata: "This information has been pre-filled using the supplied metadata. In most cases, they do not require editing."
display_name: "Configure the display name of the SAML provider."
encryption: "Configure assertion signatures and encryption for SAML requests and responses."
encryption_form: "You may optionally want to encrypt the assertion response, or have requests from OpenProject signed."
mapping: "Manually adjust the mapping between the SAML response and user attributes in OpenProject."
metadata: "Pre-fill configuration using a metadata URL or by pasting metadata XML"
metadata_form: "If your identity provider has a metadata endpoint or XML download, add it below to pre-fill the configuration."
metadata_form_banner: "Editing the metadata may override existing values in other sections. "
requested_attributes: "Define the set of attributes to be requested in the SAML request sent to your identity provider."
seeded_from_env: "This provider was seeded from the environment configuration. It cannot be edited."
singular: SAML identity provider
upsell:
description: Connect OpenProject to a SAML identity provider
title: "Single Sign-On (SSO) with SAML"
settings:
metadata_none: "I don't have metadata"
metadata_url: "Metadata URL"
metadata_xml: "Metadata XML"
+34 -34
View File
@@ -1,44 +1,44 @@
# English strings go here
---
en:
are_you_sure_delete_avatar: "Are you sure you want to delete your avatar?"
avatar_deleted: "Avatar deleted successfully."
avatars:
label_avatar: "Avatar"
label_current_avatar: 'Current avatar'
label_gravatar: 'Gravatar'
label_local_avatar: 'Custom avatar'
settings:
enable_gravatars: 'Enable user gravatars'
enable_local_avatars: 'Enable user custom avatars'
gravatar_default: "Default Gravatar image"
text_change_gravatar_html: 'To change or add the Gravatar for your mail address, go to %{gravatar_url}.'
text_current_avatar: |
The following image shows the current avatar.
text_local_avatar_over_gravatar: |
If you set one, this custom avatar is used in precedence over the gravatar above.
text_upload_instructions: |
Upload your own custom avatar of 128 by 128 pixels. Larger files will be resized and cropped to match.
A preview of your avatar will be shown before uploading, once you selected an image.
text_your_current_gravatar: |
OpenProject uses your gravatar if you registered one, or a default image or icon if one exists.
The current gravatar is as follows:
text_your_local_avatar: |
OpenProject allows you to upload your own custom avatar.
empty_file_error: "Please upload a valid image (jpg, png, gif)"
error_image_size: "The image is too large."
error_image_upload: "Error saving the image."
label_avatar: "Avatar"
label_avatar_plural: "Avatars"
label_choose_avatar: "Choose Avatar from file"
label_current_avatar: "Current Avatar"
message_avatar_uploaded: "Avatar changed successfully."
plugin_openproject_avatars:
name: "Avatars"
description: >-
This plugin allows OpenProject users to upload a picture to be used as an avatar or use
registered images from Gravatar.
label_avatar: "Avatar"
label_avatar_plural: "Avatars"
label_current_avatar: "Current Avatar"
label_choose_avatar: "Choose Avatar from file"
message_avatar_uploaded: "Avatar changed successfully."
error_image_upload: "Error saving the image."
error_image_size: "The image is too large."
are_you_sure_delete_avatar: "Are you sure you want to delete your avatar?"
avatar_deleted: "Avatar deleted successfully."
name: "Avatars"
unable_to_delete_avatar: "Avatar could not be deleted."
wrong_file_format: "Allowed formats are jpg, png, gif"
empty_file_error: "Please upload a valid image (jpg, png, gif)"
avatars:
label_avatar: "Avatar"
label_gravatar: 'Gravatar'
label_current_avatar: 'Current avatar'
label_local_avatar: 'Custom avatar'
text_current_avatar: |
The following image shows the current avatar.
text_upload_instructions: |
Upload your own custom avatar of 128 by 128 pixels. Larger files will be resized and cropped to match.
A preview of your avatar will be shown before uploading, once you selected an image.
text_change_gravatar_html: 'To change or add the Gravatar for your mail address, go to %{gravatar_url}.'
text_your_local_avatar: |
OpenProject allows you to upload your own custom avatar.
text_local_avatar_over_gravatar: |
If you set one, this custom avatar is used in precedence over the gravatar above.
text_your_current_gravatar: |
OpenProject uses your gravatar if you registered one, or a default image or icon if one exists.
The current gravatar is as follows:
settings:
enable_gravatars: 'Enable user gravatars'
gravatar_default: "Default Gravatar image"
enable_local_avatars: 'Enable user custom avatars'
+5 -5
View File
@@ -2,15 +2,15 @@
---
en:
js:
label_preview: 'Preview'
button_update: 'Update'
avatars:
empty_file_error: "Please upload a valid image (jpg, png, gif)"
error_image_too_large: "Image is too large."
label_choose_avatar: "Choose Avatar from file"
uploading_avatar: "Uploading your avatar."
text_upload_instructions: |
Upload your own custom avatar of 128 by 128 pixels. Larger files will be resized and cropped to match.
A preview of your avatar will be shown before uploading, once you selected an image.
error_image_too_large: "Image is too large."
uploading_avatar: "Uploading your avatar."
wrong_file_format: "Allowed formats are jpg, png, gif"
empty_file_error: "Please upload a valid image (jpg, png, gif)"
button_update: 'Update'
label_preview: 'Preview'
+62 -62
View File
@@ -28,15 +28,11 @@
---
en:
plugin_openproject_backlogs:
name: "OpenProject Backlogs"
description: "This module adds features enabling agile teams to work with OpenProject in Scrum projects."
activerecord:
attributes:
project:
sprint_sharing: "Sprint sharing"
backlog_excluded_types: "Excluded work package types"
sprint_sharing: "Sprint sharing"
statuses_considered_closed: "Statuses considered closed"
sprint:
duration: "Duration"
@@ -45,9 +41,9 @@ en:
name: "Sprint name"
sharing: "Sharing"
statuses:
in_planning: "In planning"
active: "Active"
completed: "Completed"
in_planning: "In planning"
work_packages: "Work packages"
work_package:
backlog_bucket: "Backlog Bucket"
@@ -58,87 +54,87 @@ en:
errors:
messages:
dates_required: "Start and finish dates are required in order to start the sprint."
must_be_in_planning: "must be in planning to start."
only_one_active_sprint_allowed: "only one active sprint is allowed per project."
dates_required: "Start and finish dates are required in order to start the sprint."
models:
project:
receiving_sprints: "is receiving shared sprints. Own sprints cannot be created."
attributes:
sprint_sharing:
share_all_projects_already_taken: "cannot be set because project \"%{name}\" is already sharing with all projects."
share_all_projects_already_taken_anonymous: "cannot be set because another project is already sharing with all projects."
receiving_sprints: "is receiving shared sprints. Own sprints cannot be created."
sprint:
attributes:
base:
format: "%{message}"
unfinished_work_packages:
one: "There is one work package that was not completed in this sprint."
other: "There are %{count} work packages that were not completed in this sprint."
format: "%{message}"
status:
not_active: "is not active so it cannot be closed."
work_package:
backlog_bucket_xor_sprint: "cannot be assigned to both a sprint and a backlog bucket."
attributes:
backlog_bucket:
backlog_bucket_from_another_project: "must belong to the same project as the work package."
blocks_ids:
can_only_contain_work_packages_of_current_sprint: "can only contain IDs of work packages in the current sprint."
must_block_at_least_one_work_package: "must contain the ID of at least one ticket."
version_id:
task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version."
sprint:
not_assignable: "is not assignable since it is either not shared with the project or already finished."
not_eligible_for_moving: "is not an active sprint in the project which holds the sprint the work package is moved out of."
version_id:
task_version_must_be_the_same_as_story_version: "must be the same as the parent story's version."
backlog_bucket_xor_sprint: "cannot be assigned to both a sprint and a backlog bucket."
models:
sprint: "Sprint"
backlogs:
administration_blankslate:
title: "Backlog admin settings are evolving"
text: "We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available."
bucket_destroy_modal_component:
title: "Delete backlog bucket?"
details: "The backlog bucket '%{name}' will be deleted and all work packages will be moved to the backlog inbox. No work package will be deleted."
title: "Backlog admin settings are evolving"
bucket_component:
blankslate_title: "Backlog bucket is empty"
blankslate_description: "Drag items here to add them."
label_actions: "Backlog bucket actions"
action_menu:
edit_backlog_bucket: "Edit backlog bucket"
delete_backlog_bucket: "Delete backlog bucket"
edit_backlog_bucket: "Edit backlog bucket"
blankslate_description: "Drag items here to add them."
blankslate_title: "Backlog bucket is empty"
label_actions: "Backlog bucket actions"
bucket_destroy_modal_component:
details: "The backlog bucket '%{name}' will be deleted and all work packages will be moved to the backlog inbox. No work package will be deleted."
title: "Delete backlog bucket?"
burndown_chart:
show:
blankslate_title: "No burndown data available"
blankslate_description: "Set start and end date for the sprint to generate a burndown chart."
blankslate_title: "No burndown data available"
excluded_work_package_types_caption: >
Choose which work package types to hide from the backlog. Items of the selected types will not appear in the backlog automatically,
keeping it focused on the work that matters to your team.
For example, types like Epics or Milestones that are managed at a higher level can be hidden to keep the backlog focused on actionable items.
finish_sprint_dialog_component:
title: "There are work in progress items"
body: "%{message} What would you like to do with these?"
legend: "Action for unfinished work packages"
actions:
move_to_top_of_backlog: "Move them to the top of the backlog"
move_to_bottom_of_backlog: "Move them to the bottom of the backlog"
move_to_sprint: "Move them to another sprint"
select_sprint_label: "Select sprint"
move_to_top_of_backlog: "Move them to the top of the backlog"
body: "%{message} What would you like to do with these?"
button_complete_sprint: "Complete sprint"
legend: "Action for unfinished work packages"
select_sprint_label: "Select sprint"
title: "There are work in progress items"
inbox_component:
title: "Inbox"
blankslate_title: "Backlog inbox is empty"
blankslate_description: "All open work packages in this project will automatically appear here."
blankslate_title: "Backlog inbox is empty"
show_more:
one: "Show 1 more item"
other: "Show %{count} more items"
title: "Inbox"
label_burndown_chart: "Burndown chart"
label_is_done_status: "Status %{status_name} means done"
label_sprint_board: "Sprint board"
@@ -147,9 +143,9 @@ en:
title: "Move to backlog bucket"
move_to_sprint_dialog_component:
title: "Move to sprint"
label_sprint: "Sprint"
title: "Move to sprint"
points_label:
one: "point"
other: "points"
@@ -163,50 +159,50 @@ en:
show_burndown_chart: "Burndown chart"
sprint_component:
blankslate_title: "%{name} is empty"
blankslate_description: "No items planned yet. Drag items here to add them."
label_actions: "Sprint actions"
label_start_sprint: "Start sprint"
label_complete_sprint: "Complete sprint"
start_sprint_disabled_reason_active_sprint: "Another sprint is already active."
start_sprint_disabled_reason_missing_dates: "Start and finish dates are required in order to start the sprint."
action_menu:
edit_sprint: "Edit sprint"
add_work_package: "Add work package"
edit_sprint: "Edit sprint"
blankslate_description: "No items planned yet. Drag items here to add them."
blankslate_title: "%{name} is empty"
label_actions: "Sprint actions"
label_complete_sprint: "Complete sprint"
label_start_sprint: "Start sprint"
start_sprint_disabled_reason_active_sprint: "Another sprint is already active."
start_sprint_disabled_reason_missing_dates: "Start and finish dates are required in order to start the sprint."
sprints_component:
blankslate:
title: "No sprints present yet"
settings_link_text: "project settings"
receive_and_manage_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}."
receive_description_text: "This project receives shared sprints from a different project, but none are available right now."
create_and_manage_description_html: "To start planning your sprint, create one here or go to the %{settings_link} to receive sprints from a different project."
create_description_text: "To start planning your sprint, create one here."
manage_description_html: "To start planning your sprint, go to the %{settings_link} to receive sprints from a different project."
no_actions_description_text: "No sprints are available for this project yet."
story_points:
one: "%{count} story point"
other: "%{count} story points"
receive_and_manage_description_html: "This project receives sprints from a different project. Manage this in the %{settings_link}."
receive_description_text: "This project receives shared sprints from a different project, but none are available right now."
settings_link_text: "project settings"
title: "No sprints present yet"
statuses_considered_closed_caption: >
Choose the statuses that represent a closed or finished state in your workflow.
These will be treated as the "Closed" state across reporting (e.g. burndown) and sprint planning.
For example, statuses like Done, Resolved, or Won't Fix may all represent a closed work item in your process.
stories:
update_service:
ambiguous_target: "target_id and direction cannot both be present."
invalid_direction: "direction must be one of: higher, highest, lower, lowest."
invalid_target_type: "target_type must be one of: backlog_bucket:<backlog_bucket_id>, sprint:<sprint_id>, inbox."
missing_target: "target_id or direction must be present."
story_points:
one: "%{count} story point"
other: "%{count} story points"
types_and_statuses: "Types and statuses"
unassigned: "Unassigned"
user_preference:
header_backlogs: "Backlogs module"
button_update_backlogs: "Update backlogs module"
stories:
update_service:
missing_target: "target_id or direction must be present."
ambiguous_target: "target_id and direction cannot both be present."
invalid_target_type: "target_type must be one of: backlog_bucket:<backlog_bucket_id>, sprint:<sprint_id>, inbox."
invalid_direction: "direction must be one of: higher, highest, lower, lowest."
header_backlogs: "Backlogs module"
work_package_card_menu_component:
action_menu:
copy_url_to_clipboard: "Copy URL to clipboard"
@@ -231,24 +227,24 @@ en:
label_all_sprints: "All sprints"
label_backlog: "Backlog"
label_backlogs: "Backlogs"
label_backlog_and_sprints: "Backlog and sprints"
label_backlog_bucket_edit: "Edit backlog bucket"
label_backlog_bucket_new: "New backlog bucket"
label_backlogs: "Backlogs"
label_burndown_chart: "Burndown chart"
label_inbox: "Inbox"
label_sprint_board: "Sprint board"
label_points_burn_down: "Down"
label_points_burn_up: "Up"
label_sprint_board: "Sprint board"
label_sprint_edit: "Edit sprint"
label_sprint_new: "New sprint"
label_task_board: "Task board"
notice_successful_start: "The sprint was started."
notice_successful_finish: "The sprint was completed."
notice_unsuccessful_start: "The sprint could not be started."
notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}"
notice_successful_start: "The sprint was started."
notice_unsuccessful_finish: "The sprint could not be completed."
notice_unsuccessful_finish_with_reason: "The sprint could not be completed: %{reason}"
notice_unsuccessful_start: "The sprint could not be started."
notice_unsuccessful_start_with_reason: "The sprint could not be started: %{reason}"
notice_work_package_invisible_after_move: >
The work package was moved to %{backlog} but is not visible because its type or status is excluded from the backlog.
permission_create_sprints: "Create sprints"
@@ -261,6 +257,10 @@ en:
permission_start_complete_sprint: "Start/complete sprint"
permission_view_sprints: "View sprints"
plugin_openproject_backlogs:
description: "This module adds features enabling agile teams to work with OpenProject in Scrum projects."
name: "OpenProject Backlogs"
project_module_backlogs: "Backlogs"
projects:
@@ -268,21 +268,21 @@ en:
backlog_sharing:
options:
no_sharing:
label: "Don't share"
caption: "Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects."
label: "Don't share"
receive_shared:
label: "Receive shared sprints"
caption: "This project can only use sprints shared by other projects."
label: "Receive shared sprints"
warning: "This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible."
share_all_projects:
label: "All projects"
caption: "Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects."
disabled_caption: "Option not available since project \"%{name}\" is currently sharing with all projects and only one project can do this."
disabled_caption_anonymous: "Option not available since another project is currently sharing with all projects and only one project can do this."
label: "All projects"
share_subprojects:
label: "Subprojects"
caption: "Sprints created in this project will be available to all subprojects of the current project."
info: "Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints."
label: "Subprojects"
sprint_sharing: Share sprints
backlogs:
+3 -3
View File
@@ -29,9 +29,9 @@
---
en:
js:
work_packages:
properties:
storyPoints: "Story Points"
burndown:
day: "Day"
points: "Points"
work_packages:
properties:
storyPoints: "Story Points"
+130 -130
View File
@@ -1,117 +1,22 @@
# English strings go here for Rails i18n
---
en:
plugin_openproject_bim:
name: "OpenProject BIM and BCF functionality"
description: "This OpenProject plugin introduces BIM and BCF functionality."
bim:
label_bim: 'BIM'
error_direct_upload_failed: 'Direct upload failed.'
bcf:
label_bcf: 'BCF'
label_imported_failed: 'Failed imports of BCF topics'
label_imported_successfully: 'Successfully imported BCF topics'
label_bcf_issue_associated: "BCF issue associated"
issues: "Issues"
recommended: 'recommended'
not_recommended: 'not recommended'
no_viewpoints: 'No viewpoints'
new_badge: "New"
exceptions:
file_invalid: "BCF file invalid"
x_bcf_issues:
zero: 'No BCF issues'
one: 'One BCF issue'
other: '%{count} BCF issues'
bcf_xml:
xml_file: 'BCF XML File'
import_title: 'Import'
export: 'Export'
import_update_comment: '(Updated in BCF import)'
import_failed: 'Cannot import BCF file: %{error}'
import_failed_unsupported_bcf_version: 'Failed to read the BCF file: The BCF version is not supported. Please ensure the version is at least %{minimal_version} or higher.'
import_successful: 'Imported %{count} BCF issues'
import_canceled: 'BCF-XML import canceled.'
type_not_active: "The issue type is not activated for this project."
import:
num_issues_found: '%{x_bcf_issues} are contained in the BCF-XML file, their details are listed below.'
button_prepare: 'Prepare import'
button_perform_import: 'Confirm import'
button_proceed: 'Proceed with import'
button_back_to_list: 'Back to list'
no_permission_to_add_members: 'You do not have sufficient permissions to add them as members to the project.'
contact_project_admin: 'Contact your project admin to add them as members and start this import again.'
continue_anyways: 'Do you want to proceed and finish the import anyways?'
description: "Provide a BCF-XML v2.1 file to import into this project. You can examine its contents before performing the import."
invalid_types_found: 'Invalid topic type names found'
invalid_statuses_found: 'Invalid status names found'
invalid_priorities_found: 'Invalid priority names found'
invalid_emails_found: 'Invalid email addresses found'
unknown_emails_found: 'Unknown email addresses found'
unknown_property: 'Unknown property'
non_members_found: 'Non project members found'
import_types_as: 'Set all these types to'
import_statuses_as: 'Set all these statuses to'
import_priorities_as: 'Set all these priorities to'
invite_as_members_with_role: 'Invite them as members to the project "%{project}" with role'
add_as_members_with_role: 'Add them as members to the project "%{project}" with role'
no_type_provided: 'No type provided'
no_status_provided: 'No status provided'
no_priority_provided: 'No priority provided'
perform_description: "Do you want to import or update the issues listed above?"
replace_with_system_user: 'Replace them with "System" user'
import_as_system_user: 'Import them as "System" user.'
what_to_do: "What do you want to do?"
work_package_has_newer_changes: "Outdated! This topic was not updated as the latest changes on the server were newer than the \"ModifiedDate\" of the imported topic. However, comments to the topic were imported."
bcf_file_not_found: "Failed to locate BCF file. Please start the upload process again."
export:
format:
bcf: "BCF-XML"
attributes:
bcf_thumbnail: "BCF snapshot"
project_module_bcf: "BCF"
project_module_bim: "BCF"
permission_view_linked_issues: "View BCF issues"
permission_manage_bcf: "Import and manage BCF issues"
permission_manage_bcf_explanation: |
Allows managing BCF issues, including bulk import and updates.
BCF import maps file metadata to project resources and can create or update work packages
and comments using author and timestamp values from the imported file, effectively acting on behalf of users.
permission_delete_bcf: "Delete BCF issues"
oauth:
scopes:
bcf_v2_1: "Full access to the BCF v2.1 API"
bcf_v2_1_text: "Application will receive full read & write access to the OpenProject BCF API v2.1 to perform actions on your behalf."
activerecord:
models:
bim/ifc_models/ifc_model: "IFC model"
attributes:
bim/ifc_models/ifc_model:
ifc_attachment: "IFC file"
is_default: "Default model"
attachments: "IFC file"
bim/bcf/issue:
bcf_comment: "BCF comment"
bim_snippet: "BIM snippet"
reference_links: "Reference links"
stage: "Stage"
viewpoint: "Viewpoint"
bim/ifc_models/ifc_model:
attachments: "IFC file"
ifc_attachment: "IFC file"
is_default: "Default model"
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."
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?"
bim/bcf/viewpoint:
bitmaps_not_writable: "bitmaps is not writable as it is not yet implemented."
index_not_integer: "index is not an integer."
@@ -122,37 +27,132 @@ en:
invalid_perspective_camera: "perspective_camera is invalid."
mismatching_guid: "The guid in the json_viewpoint does not match the model's guid."
no_json: "Is not a well structured json."
snapshot_type_unsupported: "snapshot_type needs to be either 'png' or 'jpg'."
snapshot_data_blank: "snapshot_data needs to be provided."
snapshot_type_unsupported: "snapshot_type needs to be either 'png' or 'jpg'."
unsupported_key: "An unsupported json property is included."
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'
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."
conversion_status:
label: 'Processing?'
pending: 'Pending'
processing: 'Processing'
completed: 'Completed'
error: 'Error'
processing_notice:
processing_default: 'The following default IFC models are still being processed and are thus not available, yet:'
flash_messages:
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"
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."
models:
bim/ifc_models/ifc_model: "IFC model"
attributes:
bcf_thumbnail: "BCF snapshot"
bcf:
bcf_xml:
export: 'Export'
import:
add_as_members_with_role: 'Add them as members to the project "%{project}" with role'
bcf_file_not_found: "Failed to locate BCF file. Please start the upload process again."
button_back_to_list: 'Back to list'
button_perform_import: 'Confirm import'
button_prepare: 'Prepare import'
button_proceed: 'Proceed with import'
contact_project_admin: 'Contact your project admin to add them as members and start this import again.'
continue_anyways: 'Do you want to proceed and finish the import anyways?'
description: "Provide a BCF-XML v2.1 file to import into this project. You can examine its contents before performing the import."
import_as_system_user: 'Import them as "System" user.'
import_priorities_as: 'Set all these priorities to'
import_statuses_as: 'Set all these statuses to'
import_types_as: 'Set all these types to'
invalid_emails_found: 'Invalid email addresses found'
invalid_priorities_found: 'Invalid priority names found'
invalid_statuses_found: 'Invalid status names found'
invalid_types_found: 'Invalid topic type names found'
invite_as_members_with_role: 'Invite them as members to the project "%{project}" with role'
no_permission_to_add_members: 'You do not have sufficient permissions to add them as members to the project.'
no_priority_provided: 'No priority provided'
no_status_provided: 'No status provided'
no_type_provided: 'No type provided'
non_members_found: 'Non project members found'
num_issues_found: '%{x_bcf_issues} are contained in the BCF-XML file, their details are listed below.'
perform_description: "Do you want to import or update the issues listed above?"
replace_with_system_user: 'Replace them with "System" user'
unknown_emails_found: 'Unknown email addresses found'
unknown_property: 'Unknown property'
what_to_do: "What do you want to do?"
work_package_has_newer_changes: "Outdated! This topic was not updated as the latest changes on the server were newer than the \"ModifiedDate\" of the imported topic. However, comments to the topic were imported."
import_canceled: 'BCF-XML import canceled.'
import_failed: 'Cannot import BCF file: %{error}'
import_failed_unsupported_bcf_version: 'Failed to read the BCF file: The BCF version is not supported. Please ensure the version is at least %{minimal_version} or higher.'
import_successful: 'Imported %{count} BCF issues'
import_title: 'Import'
import_update_comment: '(Updated in BCF import)'
type_not_active: "The issue type is not activated for this project."
xml_file: 'BCF XML File'
exceptions:
file_invalid: "BCF file invalid"
issues: "Issues"
label_bcf: 'BCF'
label_bcf_issue_associated: "BCF issue associated"
label_imported_failed: 'Failed imports of BCF topics'
label_imported_successfully: 'Successfully imported BCF topics'
new_badge: "New"
no_viewpoints: 'No viewpoints'
not_recommended: 'not recommended'
recommended: 'recommended'
x_bcf_issues:
one: 'One BCF issue'
other: '%{count} BCF issues'
zero: 'No BCF issues'
bim:
error_direct_upload_failed: 'Direct upload failed.'
label_bim: 'BIM'
export:
format:
bcf: "BCF-XML"
extraction:
available:
ifc_convert: "IFC conversion pipeline available"
ifc_models:
conversion:
missing_commands: "The following IFC converter commands are missing on this system: %{names}"
conversion_status:
completed: 'Completed'
error: 'Error'
label: 'Processing?'
pending: 'Pending'
processing: 'Processing'
flash_messages:
upload_successful: 'Upload succeeded. It will now get processed and will be ready to use in a couple of minutes.'
label_default_ifc_models: 'Default IFC models'
label_edit_defaults: 'Edit defaults'
label_ifc_models: 'IFC models'
label_new_ifc_model: 'New IFC model'
label_show_defaults: 'Show defaults'
no_defaults_warning:
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".'
title: 'No IFC model was set as default for this project.'
no_results: "No IFC models have been uploaded in this project."
processing_notice:
processing_default: 'The following default IFC models are still being processed and are thus not available, yet:'
oauth:
scopes:
bcf_v2_1: "Full access to the BCF v2.1 API"
bcf_v2_1_text: "Application will receive full read & write access to the OpenProject BCF API v2.1 to perform actions on your behalf."
permission_delete_bcf: "Delete BCF issues"
permission_manage_bcf: "Import and manage BCF issues"
permission_manage_bcf_explanation: |
Allows managing BCF issues, including bulk import and updates.
BCF import maps file metadata to project resources and can create or update work packages
and comments using author and timestamp values from the imported file, effectively acting on behalf of users.
permission_manage_ifc_models: "Import and manage IFC models"
permission_view_ifc_models: "View IFC models"
permission_view_linked_issues: "View BCF issues"
plugin_openproject_bim:
description: "This OpenProject plugin introduces BIM and BCF functionality."
name: "OpenProject BIM and BCF functionality"
project_module_bcf: "BCF"
project_module_bim: "BCF"
project_module_ifc_models: "IFC models"
+9 -9
View File
@@ -3,28 +3,28 @@
en:
js:
bcf:
label_bcf: 'BCF'
import: 'Import'
import_bcf_xml_file: 'Import BCF XML file (BCF version 2.1)'
add_viewpoint: 'Add viewpoint'
delete_viewpoint: 'Delete viewpoint'
export: 'Export'
export_bcf_xml_file: 'Export BCF XML file (BCF version 2.1)'
viewpoint: 'Viewpoint'
add_viewpoint: 'Add viewpoint'
show_viewpoint: 'Show viewpoint'
delete_viewpoint: 'Delete viewpoint'
import: 'Import'
import_bcf_xml_file: 'Import BCF XML file (BCF version 2.1)'
label_bcf: 'BCF'
management: 'BCF management'
refresh: 'Refresh'
refresh_work_package: 'Refresh work package'
show_viewpoint: 'Show viewpoint'
viewpoint: 'Viewpoint'
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"
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'
use_this_link_to_manage: "Use this link to upload and manage your IFC models"
views:
viewer: 'Viewer'
split: 'Viewer and table'
split_cards: 'Viewer and cards'
viewer: 'Viewer'
revit:
revit_add_in: "Revit Add-In"
revit_add_in_settings: "Revit Add-In settings"
+26 -27
View File
@@ -1,48 +1,47 @@
# English strings go here
---
en:
plugin_openproject_boards:
name: "OpenProject Boards"
description: "Provides board views."
permission_show_board_views: "View boards"
permission_manage_board_views: "Manage boards"
project_module_board_view: "Boards"
ee:
upsell:
board_view:
description: 'Would you like to automate your workflows with Boards? Advanced boards are an Enterprise add-on. Please upgrade to a paid plan.'
boards:
label_board: "Board"
label_boards: "Boards"
label_create_new_board: "Create new board"
label_board_type: "Board type"
board_types:
free: Basic
action: "Action board (%{attribute})"
board_type_attributes:
assignee: Assignee
basic: Basic
status: Kanban
version: Version
subproject: Subproject
subtasks: Parent-child
basic: Basic
version: Version
board_type_descriptions:
assignee: >
Board with automated columns based on assigned users.
Ideal for dispatching work packages.
basic: >
Start from scratch with a blank board.
Manually add cards and columns to this board.
status: >
Basic kanban style board with columns for status such as To Do, In Progress, Done.
assignee: >
Board with automated columns based on assigned users.
Ideal for dispatching work packages.
version: >
Board with automated columns based on the version attribute.
Ideal for planning product development.
subproject: >
Board with automated columns for subprojects.
Dragging work packages to other lists updates the (sub-)project accordingly.
subtasks: >
Board with automated columns for sub-elements.
Dragging work packages to other lists updates the parent accordingly.
version: >
Board with automated columns based on the version attribute.
Ideal for planning product development.
board_types:
action: "Action board (%{attribute})"
free: Basic
label_board: "Board"
label_board_type: "Board type"
label_boards: "Boards"
label_create_new_board: "Create new board"
ee:
upsell:
board_view:
description: 'Would you like to automate your workflows with Boards? Advanced boards are an Enterprise add-on. Please upgrade to a paid plan.'
permission_manage_board_views: "Manage boards"
permission_show_board_views: "View boards"
plugin_openproject_boards:
description: "Provides board views."
name: "OpenProject Boards"
project_module_board_view: "Boards"
+56 -56
View File
@@ -7,91 +7,91 @@ en:
description: 'Would you like to automate your workflows with Boards? Advanced boards are an Enterprise add-on. Please upgrade to a paid plan.'
js:
boards:
create_new: 'Create new board'
label_unnamed_board: 'Unnamed board'
label_unnamed_list: 'Unnamed list'
label_board_type: 'Board type'
lists:
delete: 'Delete list'
version:
is_locked: 'Version is locked. No items can be added to this version.'
is_closed: 'Version is closed. No items can be added to this version.'
close_version: 'Close version'
open_version: 'Open version'
lock_version: 'Lock version'
unlock_version: 'Unlock version'
edit_version: 'Edit version'
show_version: 'Show version'
locked: 'Locked'
closed: 'Closed'
new_board: 'New board'
add_list: 'Add list to board'
add_card: 'Add card'
error_attribute_not_writable: "Cannot move the work package, %{attribute} is not writable."
error_loading_the_list: "Error loading the list: %{error_message}"
error_permission_missing: "The permission to create public queries is missing"
error_cannot_move_into_self: "You can not move a work package into its own column."
text_hidden_list_warning: "Not all lists are displayed because you lack the permission. Contact your admin for more information."
click_to_remove_list: "Click to remove this list"
add_list: 'Add list to board'
add_list_modal:
labels:
assignee: Select user to add as a new assignee list
status: Select status to add as a new list
subproject: Select subproject to add as a new list
subtasks: Select work package to add as a new list
version: Select version to add as a new list
warning:
add_members: <a href="%{link}">Add a new member to this project</a> to select users again.
assignee: There isn't any member matched with your filter value. <br>
no_member: This project currently does not have any members that can be added. <br>
status: |
There is currently no status available. <br>
Either there are none or they have all already been added to the board.
board_type:
text: 'Board type'
free: 'basic'
select_board_type: 'Please choose the type of board you need.'
free_text: >
Start from scratch with a blank board.
Manually add cards and columns to this board.
action: 'Action board'
action_by_attribute: 'Action board (%{attribute})'
action_text: >
A board with filtered lists on %{attribute} attribute. Moving work packages to other lists
will update their attribute.
action_text_assignee: >
Board with automated columns based on assigned users.
Ideal for dispatching work packages.
action_text_status: >
Basic kanban style board with columns for status such as To Do, In Progress, Done.
action_text_subprojects: >
Board with automated columns for subprojects.
Dragging work packages to other lists updates the (sub-)project accordingly.
action_text_subtasks: >
Board with automated columns for sub-elements.
Dragging work packages to other lists updates the parent accordingly.
action_text_status: >
Basic kanban style board with columns for status such as To Do, In Progress, Done.
action_text_assignee: >
Board with automated columns based on assigned users.
Ideal for dispatching work packages.
action_text_version: >
Board with automated columns based on the version attribute.
Ideal for planning product development.
action_type:
assignee: assignee
status: status
version: version
subproject: subproject
subtasks: parent-child
version: version
board_type_title:
assignee: Assignee
basic: Basic
status: Status
version: Version
subproject: Subproject
subtasks: Parent-child
basic: Basic
version: Version
free: 'basic'
free_text: >
Start from scratch with a blank board.
Manually add cards and columns to this board.
select_attribute: "Action attribute"
add_list_modal:
labels:
assignee: Select user to add as a new assignee list
status: Select status to add as a new list
version: Select version to add as a new list
subproject: Select subproject to add as a new list
subtasks: Select work package to add as a new list
warning:
status: |
There is currently no status available. <br>
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. <br>
no_member: This project currently does not have any members that can be added. <br>
add_members: <a href="%{link}">Add a new member to this project</a> to select users again.
select_board_type: 'Please choose the type of board you need.'
text: 'Board type'
click_to_remove_list: "Click to remove this list"
configuration_modal:
title: 'Configure this board'
display_settings:
card_mode: "Display as cards"
table_mode: "Display as table"
title: 'Configure this board'
create_new: 'Create new board'
error_attribute_not_writable: "Cannot move the work package, %{attribute} is not writable."
error_cannot_move_into_self: "You can not move a work package into its own column."
error_loading_the_list: "Error loading the list: %{error_message}"
error_permission_missing: "The permission to create public queries is missing"
label_board_type: 'Board type'
label_unnamed_board: 'Unnamed board'
label_unnamed_list: 'Unnamed list'
lists:
delete: 'Delete list'
new_board: 'New board'
text_hidden_list_warning: "Not all lists are displayed because you lack the permission. Contact your admin for more information."
version:
close_version: 'Close version'
closed: 'Closed'
edit_version: 'Edit version'
is_closed: 'Version is closed. No items can be added to this version.'
is_locked: 'Version is locked. No items can be added to this version.'
lock_version: 'Lock version'
locked: 'Locked'
open_version: 'Open version'
show_version: 'Show version'
unlock_version: 'Unlock version'
+49 -49
View File
@@ -28,25 +28,22 @@
---
en:
plugin_budgets_engine:
name: "Budgets"
activerecord:
attributes:
budget:
author: "Author"
available: "Available"
base_amount: "Base amount"
budget: "Planned"
budget_ratio: "Spent (ratio)"
description: "Description"
labor_budget: "Planned labor costs"
labor_budget_items: "Planned labor costs"
material_budget: "Planned unit costs"
spent: "Spent"
status: "Status"
subject: "Subject"
type: "Cost type"
labor_budget: "Planned labor costs"
labor_budget_items: "Planned labor costs"
material_budget: "Planned unit costs"
base_amount: "Base amount"
work_package:
budget_subject: "Budget title"
errors:
@@ -67,8 +64,45 @@ en:
attributes:
budget: "Budget"
button_add_budget_item: "Add planned costs"
budgets:
widgets:
budget_by_cost_type:
blankslate:
description: "Get an overview of your budgets and costs to efficiently track the health status of your project"
heading: "Start project controlling"
blankslate_zero:
description: "Add details about your planned budget to see data here"
heading: "Budget details missing"
count_caption:
one: "Data aggregated from %{count} budget"
other: "Data aggregated from %{count} budgets"
zero: "No budget data."
count_caption_with_subitems:
portfolio:
one: "Data aggregated from %{count} budget included in this portfolio and its subitems."
other: "Data aggregated from %{count} budgets included in this portfolio and its subitems."
zero: "No budget data."
program:
one: "Data aggregated from %{count} budget included in this program and its subitems."
other: "Data aggregated from %{count} budgets included in this program and its subitems."
zero: "No budget data."
project:
one: "Data aggregated from %{count} budget included in this project and its subitems."
other: "Data aggregated from %{count} budgets included in this project and its subitems."
zero: "No budget data."
title: "Budget by cost type"
view_details: "View budget details"
budget_totals:
remaining_budget: "Remaining budget"
spent_budget: "Spent budget"
title: "Budget totals"
total_actual_costs: "Total actual costs"
total_planned_budget: "Total planned budget"
budgets_title: "Budgets"
button_add_budget: "Add budget"
button_add_budget_item: "Add planned costs"
button_add_cost_type: "Add cost type"
button_cancel_edit_budget: "Cancel editing budget"
button_cancel_edit_costs: "Cancel editing costs"
@@ -76,43 +110,6 @@ en:
caption_labor: "Labor"
caption_labor_costs: "Actual labor costs"
caption_material_costs: "Actual unit costs"
budgets_title: "Budgets"
budgets:
widgets:
budget_totals:
title: "Budget totals"
remaining_budget: "Remaining budget"
spent_budget: "Spent budget"
total_actual_costs: "Total actual costs"
total_planned_budget: "Total planned budget"
budget_by_cost_type:
title: "Budget by cost type"
blankslate:
heading: "Start project controlling"
description: "Get an overview of your budgets and costs to efficiently track the health status of your project"
blankslate_zero:
heading: "Budget details missing"
description: "Add details about your planned budget to see data here"
count_caption:
zero: "No budget data."
one: "Data aggregated from %{count} budget"
other: "Data aggregated from %{count} budgets"
count_caption_with_subitems:
project:
zero: "No budget data."
one: "Data aggregated from %{count} budget included in this project and its subitems."
other: "Data aggregated from %{count} budgets included in this project and its subitems."
program:
zero: "No budget data."
one: "Data aggregated from %{count} budget included in this program and its subitems."
other: "Data aggregated from %{count} budgets included in this program and its subitems."
portfolio:
zero: "No budget data."
one: "Data aggregated from %{count} budget included in this portfolio and its subitems."
other: "Data aggregated from %{count} budgets included in this portfolio and its subitems."
view_details: "View budget details"
events:
budget: "Budget edited"
@@ -122,26 +119,29 @@ en:
label_budget: "Budget"
label_budget_available: "Budget available"
label_budget_details: "Budget details"
label_budget_id: "Budget #%{id}"
label_budget_new: "New budget"
label_budget_planned: "Budget planned"
label_budget_plural: "Budgets"
label_budget_spent: "Budget spent"
label_budget_spent_ratio: "Budget spent ratio"
label_budget_totals: "Totals"
label_deliverable: "Budget"
label_example_placeholder: "e.g., %{decimal}"
label_view_all_budgets: "View all budgets"
label_yes: "Yes"
label_budget_totals: "Totals"
label_budget_details: "Budget details"
notice_budget_conflict: "Work packages must be of the same project."
notice_no_budgets_available: "No budgets available."
permission_edit_budgets: "Edit budgets"
permission_view_budgets: "View budgets"
plugin_budgets_engine:
name: "Budgets"
project_module_budgets: "Budgets"
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_reassign_to: "Reassign them to this budget:"
+5 -5
View File
@@ -1,14 +1,14 @@
# English strings go here
---
en:
plugin_openproject_calendar:
name: "OpenProject Calendar"
description: "Provides calendar views."
label_calendar: "Calendar"
label_calendar_plural: "Calendars"
label_new_calendar: "New calendar"
permission_view_calendar: "View calendars"
permission_manage_calendars: "Manage calendars"
permission_share_calendars: "Subscribe to iCalendars"
permission_view_calendar: "View calendars"
plugin_openproject_calendar:
description: "Provides calendar views."
name: "OpenProject Calendar"
project_module_calendar_view: "Calendars"
+1 -1
View File
@@ -4,7 +4,7 @@ en:
js:
calendar:
create_new: 'Create new calendar'
label_calendar_plural: 'Calendars'
title: 'Calendar'
too_many: 'There are %{count} work packages in total, but only %{max} can be shown.'
unsaved_title: 'Unnamed calendar'
label_calendar_plural: 'Calendars'
+138 -139
View File
@@ -28,27 +28,42 @@
---
en:
plugin_costs:
name: "Time and costs"
description: "This module adds features for planning and tracking costs of projects."
activerecord:
attributes:
cost_entry:
work_package: "Work package"
entity: Logged for
entity_gid: Logged for
entity_id: Logged for
logged_by: "Logged by"
overridden_costs: "Overridden costs"
spent: "Spent"
spent_on: "Date"
logged_by: "Logged by"
entity: Logged for
entity_id: Logged for
entity_gid: Logged for
work_package: "Work package"
cost_type:
unit: "Unit name"
unit_plural: "Pluralized unit name"
default: "Cost type by default"
for_all_projects: "For all projects"
rates: "Rates"
unit: "Unit name"
unit_plural: "Pluralized unit name"
rate:
rate: "Rate"
time_entry:
activity: Activity
comments: Comment
end_time: Finish time
entity: Logged for
entity_gid: Logged for
entity_id: Logged for
hours: Hours
project: Project
spent_on: Date
start_time: Start time
subject: Subject
time: Time
user: User
work_package: Work package
user:
default_rates: "Default rates"
work_package:
costs_by_type: "Spent units"
labor_costs: "Labor costs"
@@ -56,73 +71,61 @@ en:
overall_costs: "Overall costs"
spent_costs: "Spent costs"
spent_units: "Spent units"
rate:
rate: "Rate"
user:
default_rates: "Default rates"
time_entry:
project: Project
user: User
work_package: Work package
subject: Subject
hours: Hours
comments: Comment
activity: Activity
spent_on: Date
start_time: Start time
end_time: Finish time
time: Time
entity: Logged for
entity_id: Logged for
entity_gid: Logged for
errors:
models:
cost_types_project:
attributes:
project_ids:
blank: "Please select a project."
time_entry:
cannot_log_for_this_work_package: "Cannot log time for this work package."
duplicate_ongoing: "An ongoing time entry already exists for this user."
invalid_time: "must be between 00:00 and 23:59."
work_package:
is_not_a_valid_target_for_cost_entries: "Work package #%{id} is not a valid target for reassigning the cost entries."
nullify_is_not_valid_for_cost_entries: "Cost entries can not be assigned to a project."
models:
time_entry:
one: "Time entry"
other: "Time entries"
cost_entry:
one: "Cost entry"
other: "Cost entries"
cost_type:
one: "Cost type"
other: "Cost types"
rate: "Rate"
time_entry:
one: "Time entry"
other: "Time entries"
time_entry_activity:
one: "Time tracking activity"
other: "Time tracking activities"
rate: "Rate"
api_v3:
errors:
models:
time_entry:
invalid_time: "must be between 00:00 and 23:59."
cannot_log_for_this_work_package: "Cannot log time for this work package."
duplicate_ongoing: "An ongoing time entry already exists for this user."
work_package:
is_not_a_valid_target_for_cost_entries: "Work package #%{id} is not a valid target for reassigning the cost entries."
nullify_is_not_valid_for_cost_entries: "Cost entries can not be assigned to a project."
cost_types_project:
attributes:
project_ids:
blank: "Please select a project."
validation:
start_time_different_date: "Date part of startTime (%{start_time}) must be the same as the spentOn (%{spent_on}) date."
attributes:
comment: "Comment"
cost_type: "Cost type"
costs: "Costs"
current_rate: "Current rate"
fixed_date: "Fixed date"
hours: "Hours"
units: "Units"
valid_from: "Valid from"
fixed_date: "Fixed date"
button_add_activity: "Activity"
button_add_rate: "Add rate"
button_add_time_entry: "Log time"
button_log_costs: "Log unit costs"
button_log_time: "Log"
button_add_activity: "Activity"
button_add_time_entry: "Log time"
button_stop_timer: "Stop timer"
caption_booked_on_project: "Booked on project"
caption_default: "Default"
caption_default_rate_history_for: "Default rate history for %{user}"
caption_locked_on: "Locked on"
caption_log_time_dialog: "Log time"
caption_materials: "Units"
caption_rate_history: "Rate history"
caption_rate_history_for: "Rate history for %{user}"
@@ -130,23 +133,63 @@ en:
caption_save_rate: "Save rate"
caption_set_rate: "Set current rate"
caption_show_locked: "Show locked types"
caption_log_time_dialog: "Log time"
cost_types:
admin:
columns:
active_projects: "Active projects"
cost_type_projects:
for_all_projects_blank_slate:
description: "Uncheck \"For all projects\" on the details tab to limit this cost type to specific projects."
heading: "This cost type is enabled in all projects"
no_projects:
description: "Add projects so this cost type can be used in them."
heading: "No projects assigned"
rates:
title: "Rate history"
errors:
no_cost_types_available: "No cost types are available in this project. Please contact an administrator."
settings:
cost_types:
for_all_projects_hint: "This cost type is enabled in all projects."
heading: "Cost types"
none_active: "No cost types are currently active in this project."
time_and_costs: "Time & Costs"
costs:
widgets:
actual_costs:
blankslate:
action: "Log time"
description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget."
heading: "Start tracking your time and costs"
title: "Actual costs by month"
view_details: "View actual costs details"
description_date_for_new_rate: "Date for new rate"
description_costs_settings: "Define the desired format for the costs in all projects."
description_date_for_new_rate: "Date for new rate"
description_time_settings: "Define which fields are mandatory to fill when logging time in all projects."
ee:
features:
time_entry_time_restrictions: Require exact time tracking
upsell:
time_entry_time_restrictions:
description: "Improve your time tracking by requiring exact start and finish times when logging time."
group_by_others: "not in any group"
label_available_cost_types_projects: "Available cost types projects"
label_between: "between"
label_cost: "Cost"
label_cost_filter_add: "Add cost entry filter"
label_costlog: "Logged unit costs"
label_cost_plural: "Costs"
label_cost_type_plural: "Cost types"
label_cost_type_specific: "Cost type #%{id}: %{name}"
label_costlog: "Logged unit costs"
label_costs: "Costs"
label_costs_per_page: "Costs per page"
label_current_default_rate: "Current default rate"
label_date_on: "on"
label_day: "Day"
label_deleted_cost_types: "Deleted cost types"
label_display_cost_entries: "Display unit costs"
label_display_time_entries: "Display reported hours"
@@ -158,61 +201,56 @@ en:
label_group_by_add: "Add grouping field"
label_hourly_rate: "Hourly rate"
label_include_deleted: "Include deleted"
label_work_package_filter_add: "Add work package filter"
label_kind: "Type"
label_less_or_equal: "<="
label_list: "List"
label_log_costs: "Log unit costs"
label_new_time_entry_activity: "New time entry activity"
label_time_entry_activity_form_description: "Changes to this time entry activity will be reflected in all projects where it is enabled."
label_no: "No"
label_option_plural: "Options"
label_overall_costs: "Overall costs"
label_rate: "Rate"
label_rate_plural: "Rates"
label_status_finished: "Finished"
label_show: "Show"
label_units: "Cost units"
label_user: "User"
label_until: "until"
label_valid_from: "Valid from"
label_yes: "Yes"
label_time: "Time"
label_cost: "Cost"
label_costs: "Costs"
label_mandatory_fields: "Mandatory fields"
label_month: "Month"
label_my_time_tracking: "My time tracking"
label_no_time: "No time tracked"
label_new_time_entry_activity: "New time entry activity"
label_next_day: "Next day"
label_next_month: "Next month"
label_next_week: "Next week"
label_next_workweek: "Next work week"
label_next_month: "Next month"
label_no: "No"
label_no_time: "No time tracked"
label_option_plural: "Options"
label_overall_costs: "Overall costs"
label_previous_day: "Previous day"
label_previous_workweek: "Previous work week"
label_previous_week: "Previous week"
label_previous_month: "Previous month"
label_previous_week: "Previous week"
label_previous_workweek: "Previous work week"
label_rate: "Rate"
label_rate_plural: "Rates"
label_show: "Show"
label_specific_day: "Day %{day}"
label_specific_month: "Month %{month}"
label_list: "List"
label_month: "Month"
label_workweek: "Work week"
label_day: "Day"
label_today_capitalized: "Today"
label_view_mode_switcher: "Change view"
label_status_finished: "Finished"
label_time: "Time"
label_time_entry_activity_form_description: "Changes to this time entry activity will be reflected in all projects where it is enabled."
label_timer_since: "Started at %{time}"
placeholder_activity_select_work_package_first: Work package selection is required first
notice_something_wrong: "Something went wrong. Please try again."
notice_successful_restore: "Successful restore."
notice_successful_lock: "Locked successfully."
label_today_capitalized: "Today"
label_units: "Cost units"
label_until: "until"
label_user: "User"
label_valid_from: "Valid from"
label_view_mode_switcher: "Change view"
label_work_package_filter_add: "Add work package filter"
label_workweek: "Work week"
label_yes: "Yes"
notice_cost_logged_successfully: "Unit cost logged successfully."
notice_different_time_zones: "This user has a different time zone (%{tz}). Time will be logged using their time zone."
notice_time_entry_update_failed: "Failed to update time entry. Errors: %{errors}"
notice_something_wrong: "Something went wrong. Please try again."
notice_successful_lock: "Locked successfully."
notice_successful_restore: "Successful restore."
notice_time_entry_delete_failed: "Failed to delete time entry. Errors: %{errors}"
notice_time_entry_update_failed: "Failed to update time entry. Errors: %{errors}"
permission_edit_cost_entries: "Edit booked unit costs"
permission_edit_own_cost_entries: "Edit own booked unit costs"
permission_edit_hourly_rates: "Edit hourly rates"
permission_edit_own_cost_entries: "Edit own booked unit costs"
permission_edit_own_hourly_rate: "Edit own hourly rates"
permission_edit_rates: "Edit rates"
permission_log_costs: "Book unit costs"
@@ -224,19 +262,25 @@ en:
permission_view_own_hourly_rate: "View own hourly rate"
permission_view_own_time_entries: "View own spent time"
placeholder_activity_select_work_package_first: Work package selection is required first
plugin_costs:
description: "This module adds features for planning and tracking costs of projects."
name: "Time and costs"
project_module_costs: "Time and costs"
setting_allow_tracking_start_and_end_times: "Allow start and finish times"
setting_allow_tracking_start_and_end_times_caption: "Enables entering start and finish times when logging time."
setting_costs_currency: "Currency"
setting_costs_currency_caption: "This is the unit of currency. It can be a three-letter ISO code like EUR, USD or JPY or a symbol like €, $ or ¥."
setting_costs_currency_format: "Currency format"
setting_costs_currency_format_prefix: "Before the number (e.g. EUR 100)"
setting_costs_currency_format_suffix: "After the number (e.g. 100 EUR)"
setting_enforce_tracking_start_and_end_times: "Require start and finish times"
setting_enforce_without_allow: "Requiring start and finish times is not possible without allowing them"
setting_allow_tracking_start_and_end_times_caption: "Enables entering start and finish times when logging time."
setting_enforce_tracking_start_and_end_times_caption: "Makes entering start and finish times mandatory when logging time."
setting_enforce_without_allow: "Requiring start and finish times is not possible without allowing them"
text_assign_time_and_cost_entries_to_project: "Assign reported hours and costs to the project"
text_destroy_cost_entries_question: "%{cost_entries} were reported on the work packages you are about to delete. What do you want to do ?"
text_destroy_time_and_cost_entries: "Delete reported hours and costs"
@@ -244,55 +288,10 @@ en:
text_reassign_time_and_cost_entries: "Reassign reported hours and costs to this work package:"
text_warning_hidden_elements: "Some entries may have been excluded from the aggregation."
week: "week"
total_times:
workweek: "Workweek Total: %{hours}"
week: "Week Total: %{hours}"
month: "Month Total: %{hours}"
day: "Day Total: %{hours}"
api_v3:
errors:
validation:
start_time_different_date: "Date part of startTime (%{start_time}) must be the same as the spentOn (%{spent_on}) date."
label_available_cost_types_projects: "Available cost types projects"
cost_types:
errors:
no_cost_types_available: "No cost types are available in this project. Please contact an administrator."
admin:
columns:
active_projects: "Active projects"
cost_type_projects:
for_all_projects_blank_slate:
heading: "This cost type is enabled in all projects"
description: "Uncheck \"For all projects\" on the details tab to limit this cost type to specific projects."
no_projects:
heading: "No projects assigned"
description: "Add projects so this cost type can be used in them."
rates:
title: "Rate history"
settings:
time_and_costs: "Time & Costs"
cost_types:
heading: "Cost types"
none_active: "No cost types are currently active in this project."
for_all_projects_hint: "This cost type is enabled in all projects."
costs:
widgets:
actual_costs:
title: "Actual costs by month"
blankslate:
heading: "Start tracking your time and costs"
description: "Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget."
action: "Log time"
view_details: "View actual costs details"
ee:
features:
time_entry_time_restrictions: Require exact time tracking
upsell:
time_entry_time_restrictions:
description: "Improve your time tracking by requiring exact start and finish times when logging time."
month: "Month Total: %{hours}"
week: "Week Total: %{hours}"
workweek: "Workweek Total: %{hours}"
week: "week"
+9 -9
View File
@@ -29,15 +29,15 @@
---
en:
js:
text_are_you_sure: "Are you sure?"
myTimeTracking:
noSpecificTime: "No specific time"
work_packages:
property_groups:
costs: "Costs"
properties:
overallCosts: "Overall costs"
spentUnits: "Spent units"
button_log_costs: "Log unit costs"
label_hour: "hour"
label_hours: "hours"
myTimeTracking:
noSpecificTime: "No specific time"
text_are_you_sure: "Are you sure?"
work_packages:
properties:
overallCosts: "Overall costs"
spentUnits: "Spent units"
property_groups:
costs: "Costs"
+121 -121
View File
@@ -28,14 +28,12 @@
---
en:
plugin_openproject_documents:
name: "OpenProject Documents"
description: "An OpenProject plugin to allow creation of documents in projects."
attributes:
collaborative_editing_hocuspocus_url: "Hocuspocus server URL"
activerecord:
attributes:
document:
content_binary: "Content binary"
title: "Title"
errors:
models:
document_type:
@@ -43,150 +41,152 @@ en:
models:
document: "Document"
documents: "Documents"
attributes:
document:
content_binary: "Content binary"
title: "Title"
activity:
filter:
document: "Documents"
attributes:
collaborative_editing_hocuspocus_url: "Hocuspocus server URL"
default_doc_category_tech: "Technical documentation"
default_doc_category_user: "User documentation"
enumeration_doc_categories: "Document categories"
documents:
active_editors: "Active editors"
active_editors_count:
one: "1 active editor"
other: "%{count} active editors"
admin:
collaboration_settings:
banner:
none_writable: These values are configured via environment variables and cannot be edited here.
some_unwritable: Some values are configured via environment variables and cannot be edited here.
hocuspocus_server: Hocuspocus server
hocuspocus_server_secret:
caption: "Paste the secret provided by the Hocuspocus server."
label: "Client secret"
hocuspocus_server_url:
caption: "The WebSocket address of a working Hocuspocus server."
invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)."
label: "Hocuspocus server URL"
page_header:
description: |-
When enabled, real-time collaboration allows multiple users to edit a document at the same time.
It requires a working %{hocuspocus_server_link} to function.
disable_text_collaboration_dialog:
confirmation_checkbox_message: I understand that I might permanently lose data
confirmation_message: |-
All existing documents may become inaccessible. Please only do this if you are certain you want to disable
real-time collaboration and the BlockNote editor in this instance.
heading: Disable real-time collaboration?
success: Real-time collaboration has been disabled.
title: Disable real-time collaboration
enable_text_collaboration:
description: |-
Once enabled, multiple users will be able to work together on a document at the same time.
All new documents will be based on a new editor (BlockNote) and will require a working connection to a
Hocuspocus server.
heading: Real-time collaboration is not enabled
primary_action: Enable real-time collaboration
success: Real-time collaboration has been enabled.
delete_dialog:
confirmation_message_html: "This will permanently delete this document and all file attachments. Are you sure you want to do this?"
heading: "Delete this document?"
title: "Delete document"
delete_document_type_dialog:
at_least_one_type_required:
heading: Cannot delete the last document type
message: There must always be at least one document type configured. Create another one first if you want to delete this one.
title: Cannot delete document type
confirmation_message: |-
The type "%{type_name}" is currently unused. Deleting this type will have no effect on existing documents.
heading: Delete this document type?
reassign_message:
one: The type "%{type_name}" is currently being used in %{document_count} document. Please select which type to reassign them to.
other: The type "%{type_name}" is currently being used in %{document_count} documents. Please select which type to reassign them to.
select_reassign_to_label: Reassign documents to
title: Delete document type
document_categories_deprecation_notice:
description: |-
Your existing file categories have been converted to document types with the introduction of the new Documents module.
All existing documents have also been migrated to these new types.
heading: File categories are now called 'Document types'
primary_action: Configure document types
secondary_action: Learn more about the Documents module
document_type_actions: "Document type actions"
documents_list_blank_slate:
description: "There are no documents in this view. You can click the button below to add one."
heading: "There are no documents yet"
index_page:
label_legacy: "Legacy"
name: "Name"
type: "Type"
updated_at: "Last edited"
info_line:
connection_restored: "You are now back online."
currently_offline: "You are currently offline."
label_attachment_author: "Attachment author"
label_categories: "Categories"
last_updated_at: "Last saved %{time}."
menu:
all: "All documents"
collaboration_settings: "Real-time collaboration"
types: "Types"
new_category: "New category"
new_type: "New type"
page_header:
heading: "All documents"
action_menu:
document_actions: "Document actions"
edit_title: "Edit title"
heading: "All documents"
show_edit_view:
connection_error_notice:
action: Try again
description_server_unavailable: |-
Unable to open document because the real-time text collaboration server is unreachable.
Please contact the administrator if the problem persists.
tabs: "Document tabs"
subheader:
filter:
label: "Document name filter"
placeholder: "Type here to search document names"
documents_list_blank_slate:
heading: "There are no documents yet"
description: "There are no documents in this view. You can click the button below to add one."
document_categories_deprecation_notice:
heading: File categories are now called 'Document types'
description: |-
Your existing file categories have been converted to document types with the introduction of the new Documents module.
All existing documents have also been migrated to these new types.
primary_action: Configure document types
secondary_action: Learn more about the Documents module
document_type_actions: "Document type actions"
text_collaboration_disabled_notice:
description: |-
Unable to open document because real-time text collaboration is disabled.
Please contact your administrator to enable real-time text collaboration if you want to access this document.
show_edit_view:
connection_error_notice:
description_server_unavailable: |-
Unable to open document because the real-time text collaboration server is unreachable.
Please contact the administrator if the problem persists.
action: Try again
tabs: "Document tabs"
index_page:
name: "Name"
type: "Type"
updated_at: "Last edited"
label_legacy: "Legacy"
menu:
all: "All documents"
types: "Types"
collaboration_settings: "Real-time collaboration"
last_updated_at: "Last saved %{time}."
info_line:
currently_offline: "You are currently offline."
connection_restored: "You are now back online."
active_editors: "Active editors"
active_editors_count:
one: "1 active editor"
other: "%{count} active editors"
label_attachment_author: "Attachment author"
label_categories: "Categories"
new_category: "New category"
new_type: "New type"
delete_dialog:
title: "Delete document"
heading: "Delete this document?"
confirmation_message_html: "This will permanently delete this document and all file attachments. Are you sure you want to do this?"
delete_document_type_dialog:
title: Delete document type
heading: Delete this document type?
confirmation_message: |-
The type "%{type_name}" is currently unused. Deleting this type will have no effect on existing documents.
select_reassign_to_label: Reassign documents to
reassign_message:
one: The type "%{type_name}" is currently being used in %{document_count} document. Please select which type to reassign them to.
other: The type "%{type_name}" is currently being used in %{document_count} documents. Please select which type to reassign them to.
at_least_one_type_required:
title: Cannot delete document type
heading: Cannot delete the last document type
message: There must always be at least one document type configured. Create another one first if you want to delete this one.
admin:
collaboration_settings:
page_header:
description: |-
When enabled, real-time collaboration allows multiple users to edit a document at the same time.
It requires a working %{hocuspocus_server_link} to function.
banner:
none_writable: These values are configured via environment variables and cannot be edited here.
some_unwritable: Some values are configured via environment variables and cannot be edited here.
hocuspocus_server_url:
label: "Hocuspocus server URL"
caption: "The WebSocket address of a working Hocuspocus server."
invalid_scheme: "Must use a WebSocket protocol (ws:// or wss://)."
hocuspocus_server_secret:
label: "Client secret"
caption: "Paste the secret provided by the Hocuspocus server."
hocuspocus_server: Hocuspocus server
enable_text_collaboration:
heading: Real-time collaboration is not enabled
description: |-
Once enabled, multiple users will be able to work together on a document at the same time.
All new documents will be based on a new editor (BlockNote) and will require a working connection to a
Hocuspocus server.
primary_action: Enable real-time collaboration
success: Real-time collaboration has been enabled.
disable_text_collaboration_dialog:
title: Disable real-time collaboration
heading: Disable real-time collaboration?
confirmation_message: |-
All existing documents may become inaccessible. Please only do this if you are certain you want to disable
real-time collaboration and the BlockNote editor in this instance.
confirmation_checkbox_message: I understand that I might permanently lose data
success: Real-time collaboration has been disabled.
enumeration_doc_categories: "Document categories"
label_document_added: "Document added"
label_document_category: "Category"
label_document_description: "Description"
label_document_new: "New document"
label_document_plural: "Documents"
label_documents: "Documents"
label_document_title: "Title"
label_document_description: "Description"
label_document_category: "Category"
label_document_type: "Type"
label_documents: "Documents"
permission_manage_documents: "Manage documents"
permission_view_documents: "View documents"
plugin_openproject_documents:
description: "An OpenProject plugin to allow creation of documents in projects."
name: "OpenProject Documents"
project_module_documents: "Documents"
+1 -1
View File
@@ -2,6 +2,6 @@
en:
js:
work_packages:
label_gantt_chart_plural: "Gantt charts"
default_queries:
milestones: 'Milestones'
label_gantt_chart_plural: "Gantt charts"
@@ -30,51 +30,51 @@
en:
attributes:
additions_count: "Number of additions"
deletions_count: "Number of deletions"
changed_files_count: "Changed files"
comments_count: "Comments count"
github_html_url: "Pull Request URL"
github_app_owner_avatar_url: "Owner avatar URL"
review_comments_count: "Review comments count"
deletions_count: "Number of deletions"
github: "GitHub identifer"
github_app_owner_avatar_url: "Owner avatar URL"
github_avatar_url: "Avatar URL"
github_updated_at: "Updated at"
github_html_url: "Pull Request URL"
github_login: "GitHub login"
github_updated_at: "Updated at"
host: "Host"
labels: "Labels"
repository: "Repository"
changed_files_count: "Changed files"
review_comments_count: "Review comments count"
button_add_deploy_target: Add deploy target
label_deploy_target: Deploy target
label_deploy_target_new: New deploy target
label_deploy_target_plural: Deploy targets
label_github_comment_user: "GitHub actor"
label_github_integration: GitHub Integration
label_github_webhook_secret: "Webhook secret"
notice_deploy_target_created: Deploy target created
notice_deploy_target_destroyed: Deploy target deleted
label_github_comment_user: "GitHub actor"
label_github_webhook_secret: "Webhook secret"
permission_introspection: Read running OpenProject core version and build SHA
permission_show_github_content: "Show GitHub content"
plugin_openproject_github_integration:
description: "Integrates OpenProject and GitHub for a better workflow"
name: "OpenProject GitHub Integration"
project_module_github: "GitHub"
text_deploy_target_api_key_info: >
An OpenProject [API key](docs_url)
belonging to a user who has the global introspection permission.
text_deploy_target_type_info: >
So far we only support OpenProject itself.
text_github_comment_user_info: >
The OpenProject user whose API key must be used to authenticate incoming webhook requests.
When set, requests authenticated with any other user's credentials are rejected.
This user also posts automated deploy-status comments on work packages. Defaults to the system user when not set.
text_github_webhook_secret_missing_warning: >
No webhook secret is configured. Any request to the GitHub webhook endpoint will be accepted
without verification, which may allow unauthorized actors to forge events. It is strongly
recommended to set a secret.
text_github_webhook_secret_info: >
A secret token shared with GitHub when configuring the webhook.
When set, OpenProject verifies the X-Hub-Signature-256 header on every incoming request,
rejecting payloads that do not match. Leave blank to skip verification (not recommended).
plugin_openproject_github_integration:
name: "OpenProject GitHub Integration"
description: "Integrates OpenProject and GitHub for a better workflow"
project_module_github: "GitHub"
permission_show_github_content: "Show GitHub content"
permission_introspection: Read running OpenProject core version and build SHA
text_deploy_target_type_info: >
So far we only support OpenProject itself.
text_deploy_target_api_key_info: >
An OpenProject [API key](docs_url)
belonging to a user who has the global introspection permission.
text_github_webhook_secret_missing_warning: >
No webhook secret is configured. Any request to the GitHub webhook endpoint will be accepted
without verification, which may allow unauthorized actors to forge events. It is strongly
recommended to set a secret.
text_pull_request_deployed_to: "%{pr_link} deployed to %{deploy_target_link}"
@@ -30,34 +30,34 @@
en:
js:
github_integration:
work_packages:
tab_name: "GitHub"
tab_header:
title: "Pull requests"
copy_menu:
label: Git snippets
description: Copy git snippets to clipboard
git_actions:
branch_name: Branch name
commit_message: Commit message
cmd: Create branch with empty commit
title: Quick snippets for Git
copy_success: ✅ Copied!
copy_error: ❌ Copy failed!
tab_prs:
empty: There are no pull requests linked yet. Link an existing PR by using the code <code>OP#%{wp_id}</code> in the PR description or create a new PR.
github_actions: Actions
pull_requests:
message: "Pull request #%{pr_number} %{pr_link} for %{repository_link} authored by %{github_user_link} has been %{pr_state}."
merged_message: "Pull request #%{pr_number} %{pr_link} for %{repository_link} has been %{pr_state} by %{github_user_link}."
message: "Pull request #%{pr_number} %{pr_link} for %{repository_link} authored by %{github_user_link} has been %{pr_state}."
referenced_message: "Pull request #%{pr_number} %{pr_link} for %{repository_link} authored by %{github_user_link} referenced this work package."
states:
opened: 'opened'
closed: 'closed'
draft: 'drafted'
merged: 'merged'
opened: 'opened'
ready_for_review: 'marked ready for review'
tab_header:
copy_menu:
description: Copy git snippets to clipboard
label: Git snippets
git_actions:
branch_name: Branch name
cmd: Create branch with empty commit
commit_message: Commit message
copy_error: ❌ Copy failed!
copy_success: ✅ Copied!
title: Quick snippets for Git
title: "Pull requests"
tab_prs:
empty: There are no pull requests linked yet. Link an existing PR by using the code <code>OP#%{wp_id}</code> in the PR description or create a new PR.
work_packages:
tab_name: "GitHub"
work_packages:
tabs:
github: "GitHub"
@@ -29,23 +29,12 @@
---
en:
attributes:
commit: "Commit"
gitlab: "GitLab identifier"
gitlab_avatar_url: "Avatar URL"
gitlab_email: "GitLab Email"
gitlab_html_url: "GitLab HTML URL"
gitlab_merge_request: "Merge Request"
gitlab_name: "GitLab name"
gitlab_updated_at: "Updated at"
gitlab_user_avatar_url: "GitLab avatar URL"
gitlab_username: "GitLab username"
activerecord:
attributes:
gitlab_pipeline:
ci_details: "CI Details"
gitlab_merge_request:
labels: "Labels"
gitlab_pipeline:
ci_details: "CI Details"
errors:
models:
gitlab_issue:
@@ -57,9 +46,90 @@ en:
labels:
invalid_schema: "must be an array of hashes with keys: color, title"
label_gitlab_integration: "GitLab Integration"
attributes:
commit: "Commit"
gitlab: "GitLab identifier"
gitlab_avatar_url: "Avatar URL"
gitlab_email: "GitLab Email"
gitlab_html_url: "GitLab HTML URL"
gitlab_merge_request: "Merge Request"
gitlab_name: "GitLab name"
gitlab_updated_at: "Updated at"
gitlab_user_avatar_url: "GitLab avatar URL"
gitlab_username: "GitLab username"
gitlab_integration:
issue_closed_referenced_comment: >
**Issue Closed:** Issue %{issue_number} [%{issue_title}](%{issue_url}) for [%{repository}](%{repository_url})
has been closed by [%{gitlab_user}](%{gitlab_user_url}).
issue_opened_referenced_comment: >
**Issue Opened:** Issue %{issue_number} [%{issue_title}](%{issue_url}) for [%{repository}](%{repository_url})
has been opened by [%{gitlab_user}](%{gitlab_user_url}).
issue_reopened_referenced_comment: >
**Issue Reopened:** Issue %{issue_number} [%{issue_title}](%{issue_url}) for [%{repository}](%{repository_url})
has been reopened by [%{gitlab_user}](%{gitlab_user_url}).
merge_request_closed_comment: >
**MR Closed:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been closed by [%{gitlab_user}](%{gitlab_user_url}).
merge_request_merged_comment: >
**MR Merged:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been merged by [%{gitlab_user}](%{gitlab_user_url}).
merge_request_opened_comment: >
**MR Opened:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been opened by [%{gitlab_user}](%{gitlab_user_url}).
merge_request_reopened_comment: >
**MR Reopened:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been reopened by [%{gitlab_user}](%{gitlab_user_url}).
note_commit_referenced_comment: >
**Referenced in Commit:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
a Commit Note [%{commit_id}](%{commit_url}) on [%{repository}](%{repository_url}):
%{commit_note}
note_issue_commented_comment: >
**Commented in Issue:** [%{gitlab_user}](%{gitlab_user_url}) commented this WP in
Issue %{issue_number} [%{issue_title}](%{issue_url}) on [%{repository}](%{repository_url}):
%{issue_note}
note_issue_referenced_comment: >
**Referenced in Issue:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
Issue %{issue_number} [%{issue_title}](%{issue_url}) on [%{repository}](%{repository_url}):
%{issue_note}
note_mr_commented_comment: >
**Commented in MR:** [%{gitlab_user}](%{gitlab_user_url}) commented this WP in
Merge Request %{mr_number} [%{mr_title}](%{mr_url}) on [%{repository}](%{repository_url}):
%{mr_note}
note_mr_referenced_comment: >
**Referenced in MR:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
Merge Request %{mr_number} [%{mr_title}](%{mr_url}) on [%{repository}](%{repository_url}):
%{mr_note}
note_snippet_referenced_comment: >
**Referenced in Snippet:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
Snippet %{snippet_number} [%{snippet_title}](%{snippet_url}) on [%{repository}](%{repository_url}):
%{snippet_note}
push_multiple_commits_comment: >
**Pushed in MR:** [%{gitlab_user}](%{gitlab_user_url}) pushed multiple commits [%{commit_number}](%{commit_url})
to [%{repository}](%{repository_url}) at %{commit_timestamp}:
%{commit_note}
push_single_commit_comment: >
**Pushed in MR:** [%{gitlab_user}](%{gitlab_user_url}) pushed [%{commit_number}](%{commit_url})
to [%{repository}](%{repository_url}) at %{commit_timestamp}:
%{commit_note}
push_single_commit_comment_with_ref: >
**Pushed in %{reference}:** [%{gitlab_user}](%{gitlab_user_url}) pushed [%{commit_number}](%{commit_url})
to [%{repository}](%{repository_url}) at %{commit_timestamp}:
%{commit_note}
label_gitlab_actor: "GitLab actor"
label_gitlab_integration: "GitLab Integration"
label_gitlab_webhook_secret: "Webhook secret"
permission_show_gitlab_content: "Show GitLab content"
project_module_gitlab: "GitLab"
text_gitlab_actor_info: >
The OpenProject user whose API key must be used to authenticate incoming webhook requests.
When set, requests authenticated with any other user's credentials are rejected.
@@ -72,74 +142,3 @@ en:
No webhook secret is configured. Any request to the GitLab webhook endpoint will be accepted
without verification, which may allow unauthorized actors to forge events. It is strongly
recommended to set a secret.
project_module_gitlab: "GitLab"
permission_show_gitlab_content: "Show GitLab content"
gitlab_integration:
merge_request_opened_comment: >
**MR Opened:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been opened by [%{gitlab_user}](%{gitlab_user_url}).
merge_request_closed_comment: >
**MR Closed:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been closed by [%{gitlab_user}](%{gitlab_user_url}).
merge_request_merged_comment: >
**MR Merged:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been merged by [%{gitlab_user}](%{gitlab_user_url}).
merge_request_reopened_comment: >
**MR Reopened:** Merge request %{mr_number} [%{mr_title}](%{mr_url}) for [%{repository}](%{repository_url})
has been reopened by [%{gitlab_user}](%{gitlab_user_url}).
note_commit_referenced_comment: >
**Referenced in Commit:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
a Commit Note [%{commit_id}](%{commit_url}) on [%{repository}](%{repository_url}):
%{commit_note}
note_mr_referenced_comment: >
**Referenced in MR:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
Merge Request %{mr_number} [%{mr_title}](%{mr_url}) on [%{repository}](%{repository_url}):
%{mr_note}
note_mr_commented_comment: >
**Commented in MR:** [%{gitlab_user}](%{gitlab_user_url}) commented this WP in
Merge Request %{mr_number} [%{mr_title}](%{mr_url}) on [%{repository}](%{repository_url}):
%{mr_note}
note_issue_referenced_comment: >
**Referenced in Issue:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
Issue %{issue_number} [%{issue_title}](%{issue_url}) on [%{repository}](%{repository_url}):
%{issue_note}
note_issue_commented_comment: >
**Commented in Issue:** [%{gitlab_user}](%{gitlab_user_url}) commented this WP in
Issue %{issue_number} [%{issue_title}](%{issue_url}) on [%{repository}](%{repository_url}):
%{issue_note}
note_snippet_referenced_comment: >
**Referenced in Snippet:** [%{gitlab_user}](%{gitlab_user_url}) referenced this WP in
Snippet %{snippet_number} [%{snippet_title}](%{snippet_url}) on [%{repository}](%{repository_url}):
%{snippet_note}
issue_opened_referenced_comment: >
**Issue Opened:** Issue %{issue_number} [%{issue_title}](%{issue_url}) for [%{repository}](%{repository_url})
has been opened by [%{gitlab_user}](%{gitlab_user_url}).
issue_closed_referenced_comment: >
**Issue Closed:** Issue %{issue_number} [%{issue_title}](%{issue_url}) for [%{repository}](%{repository_url})
has been closed by [%{gitlab_user}](%{gitlab_user_url}).
issue_reopened_referenced_comment: >
**Issue Reopened:** Issue %{issue_number} [%{issue_title}](%{issue_url}) for [%{repository}](%{repository_url})
has been reopened by [%{gitlab_user}](%{gitlab_user_url}).
push_single_commit_comment: >
**Pushed in MR:** [%{gitlab_user}](%{gitlab_user_url}) pushed [%{commit_number}](%{commit_url})
to [%{repository}](%{repository_url}) at %{commit_timestamp}:
%{commit_note}
push_single_commit_comment_with_ref: >
**Pushed in %{reference}:** [%{gitlab_user}](%{gitlab_user_url}) pushed [%{commit_number}](%{commit_url})
to [%{repository}](%{repository_url}) at %{commit_timestamp}:
%{commit_note}
push_multiple_commits_comment: >
**Pushed in MR:** [%{gitlab_user}](%{gitlab_user_url}) pushed multiple commits [%{commit_number}](%{commit_url})
to [%{repository}](%{repository_url}) at %{commit_timestamp}:
%{commit_note}
@@ -31,31 +31,31 @@
en:
js:
gitlab_integration:
work_packages:
tab_name: "GitLab"
gitlab_pipelines: Pipelines
tab_header_issue:
title: "Issues"
tab_header_mr:
title: "Merge requests"
create_mr:
label: Create MR
description: Create a Merge Request
copy_menu:
label: Git snippets
description: Copy git snippets to clipboard
label: Git snippets
create_mr:
description: Create a Merge Request
label: Create MR
git_actions:
branch_name: Branch name
commit_message: Commit message
cmd: Create branch with empty commit
title: Quick snippets for Git
copy_success: ✅ Copied!
commit_message: Commit message
copy_error: ❌ Copy failed!
copy_success: ✅ Copied!
title: Quick snippets for Git
title: "Merge requests"
tab_issue:
empty: There are no issues linked yet. Link an existing issue by using the code <code>OP#%{wp_id}</code> (or <code>PP#%{wp_id}</code> for private links) in the issue title/description or create a new issue.
tab_mrs:
empty: There are no merge requests linked yet. Link an existing MR by using the code <code>OP#%{wp_id}</code> (or <code>PP#%{wp_id}</code> for private links) in the MR title/description or create a new MR.
gitlab_pipelines: Pipelines
updated_on: Updated on
work_packages:
tab_name: "GitLab"
work_packages:
tabs:
gitlab: "GitLab"
+22 -22
View File
@@ -1,38 +1,38 @@
---
en:
activerecord:
attributes:
grids/grid:
column_count: "Number of columns"
page: "Page"
row_count: "Number of rows"
scope: "Scope"
widgets: "Widgets"
errors:
models:
grids/grid:
end_before_start: 'end value needs to be larger than the start value.'
outside: 'is outside of the grid.'
overlaps: 'overlap.'
grids:
label_widget_in_grid: "Widget contained in Grid %{grid_name}"
widgets:
empty: "This widget is currently empty."
not_available: "This widget is not available."
subitems:
title: "Subitems"
no_results: "There are no visible children."
view_all_subitems: "View all subitems"
button_text: "Subitem"
members:
title: "Members"
no_results: "No visible members."
view_all_members: "View all members"
show_members_count: "Show all %{count} members"
title: "Members"
view_all_members: "View all members"
x_more:
one: "and one more member."
other: "and %{count} more members."
news:
no_results: "Nothing new to report."
activerecord:
attributes:
grids/grid:
page: "Page"
row_count: "Number of rows"
column_count: "Number of columns"
widgets: "Widgets"
scope: "Scope"
errors:
models:
grids/grid:
overlaps: 'overlap.'
outside: 'is outside of the grid.'
end_before_start: 'end value needs to be larger than the start value.'
not_available: "This widget is not available."
subitems:
button_text: "Subitem"
no_results: "There are no visible children."
title: "Subitems"
view_all_subitems: "View all subitems"
+29 -29
View File
@@ -3,60 +3,60 @@ en:
js:
grid:
add_widget: 'Add widget'
widget_menu_label: 'Show menu options for %{widgetName} widget'
remove: 'Remove widget'
configure: 'Configure widget'
remove: 'Remove widget'
widget_menu_label: 'Show menu options for %{widgetName} widget'
widgets:
missing_permission: "You don't have the necessary permissions to view this widget."
not_available: "This widget is currently unavailable."
custom_text:
title: 'Custom text'
documents:
title: 'Documents'
no_results: 'No documents yet.'
title: 'Documents'
members:
title: 'Members'
missing_permission: "You don't have the necessary permissions to view this widget."
news:
title: 'News'
not_available: "This widget is currently unavailable."
project_description:
title: 'Description'
project_status:
title: '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: 'Subitems'
project_favorites:
title: 'Favorite projects'
no_results: >-
You currently have no favorite projects. Add one or multiple projects
as favorite through their overview or in a project list.
title: 'Favorite projects'
project_status:
at_risk: 'At risk'
discontinued: 'Discontinued'
finished: 'Finished'
not_set: 'Not set'
not_started: 'Not started'
off_track: 'Off track'
on_track: 'On track'
title: 'Status'
subprojects:
title: 'Subitems'
time_entries_current_user:
title: 'My spent time'
displayed_days: 'Days displayed in the widget:'
title: 'My spent time'
time_entries_list:
title: 'Spent time (last 7 days)'
no_results: 'No time entries for the last 7 days.'
title: 'Spent time (last 7 days)'
work_packages_accountable:
title: "Work packages I am accountable for"
work_packages_assigned:
title: 'Work packages assigned to me'
work_packages_created:
title: 'Work packages created by me'
work_packages_watched:
title: 'Work packages watched by me'
work_packages_table:
title: 'Work packages table'
work_packages_graph:
title: 'Work packages graph'
summary: "%{chartType} chart showing work packages which are %{description}."
work_packages_calendar:
title: 'Calendar'
work_packages_created:
title: 'Work packages created by me'
work_packages_graph:
summary: "%{chartType} chart showing work packages which are %{description}."
title: 'Work packages graph'
work_packages_overview:
title: 'Work packages overview'
placeholder: 'Click to edit ...'
title: 'Work packages overview'
work_packages_table:
title: 'Work packages table'
work_packages_watched:
title: 'Work packages watched by me'
+13 -13
View File
@@ -1,21 +1,21 @@
---
en:
label_job_status_plural: "Job statuses"
plugin_openproject_job_status:
name: "OpenProject Job status"
description: "Listing and status of background jobs."
job_status_dialog:
download_starts: 'The download should start automatically.'
click_to_download: 'Or [click here](download_url) 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.'
download_starts: 'The download should start automatically.'
errors: 'Something went wrong'
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.'
error: 'The job has failed to complete.'
in_process: 'The job is currently being processed.'
in_queue: 'The job has been queued and will be processed shortly.'
not_found: 'This job could not be found.'
success: 'The job completed successfully.'
redirect: 'You are being redirected.'
redirect_errors: 'Due to these errors, you will not be redirected automatically.'
redirect_link: 'Please click here to continue.'
title: 'Background job status'
label_job_status_plural: "Job statuses"
plugin_openproject_job_status:
description: "Listing and status of background jobs."
name: "OpenProject Job status"
+41 -41
View File
@@ -1,38 +1,35 @@
---
en:
ee:
upsell:
ldap_groups:
title: 'LDAP group synchronization'
description: 'Synchronize LDAP groups with OpenProject groups to manage users, change their permissions and facilitate user management across groups.'
plugin_openproject_ldap_groups:
name: "OpenProject LDAP groups"
description: "Synchronization of LDAP group memberships."
activerecord:
attributes:
ldap_groups/synchronized_group:
dn: 'DN'
auth_source: 'Auth source'
ldap_auth_source: 'LDAP connection'
sync_users: 'Sync users'
ldap_groups/synchronized_filter:
filter_string: 'LDAP filter'
auth_source: 'Auth source'
ldap_auth_source: 'LDAP connection'
group_name_attribute: "Group name attribute"
sync_users: 'Sync users'
base_dn: "Search base DN"
filter_string: 'LDAP filter'
group_name_attribute: "Group name attribute"
ldap_auth_source: 'LDAP connection'
member_lookup_attribute: "Group member attribute"
models:
ldap_groups/synchronized_group: 'Synchronized LDAP group'
ldap_groups/synchronized_filter: 'LDAP Group synchronization filter'
sync_users: 'Sync users'
ldap_groups/synchronized_group:
auth_source: 'Auth source'
dn: 'DN'
ldap_auth_source: 'LDAP connection'
sync_users: 'Sync users'
errors:
models:
ldap_groups/synchronized_filter:
must_contain_base_dn: "Filter base DN must be contained within the LDAP connection's base DN"
models:
ldap_groups/synchronized_filter: 'LDAP Group synchronization filter'
ldap_groups/synchronized_group: 'Synchronized LDAP group'
ee:
upsell:
ldap_groups:
description: 'Synchronize LDAP groups with OpenProject groups to manage users, change their permissions and facilitate user management across groups.'
title: 'LDAP group synchronization'
ldap_groups:
label_menu_item: 'LDAP group synchronization'
label_group_key: 'LDAP group filter key'
label_menu_item: 'LDAP group synchronization'
label_synchronize: 'Discover LDAP groups'
settings:
name_attribute: 'LDAP groups name attribute'
@@ -40,25 +37,19 @@ en:
synchronized_filters:
add_new: 'Add synchronized LDAP filter'
singular: 'LDAP Group synchronization filter'
plural: 'LDAP Group synchronization filters'
label_n_groups_found:
one: "1 group found by the filter"
other: "%{count} groups found by the filter"
zero: "No groups were found by the filter"
destroy:
title: 'Remove synchronized filter %{name}'
heading: 'Remove synchronized filter %{name}?'
confirmation: "If you continue, the synchronized filter %{name} and all groups %{groups_count} created through it will be removed."
heading: 'Remove synchronized filter %{name}?'
removed_groups: "Warning: This will remove the following groups from OpenProject and remove it from all projects!"
title: 'Remove synchronized filter %{name}'
verification_html: "Enter the filter name %{name} to verify the deletion."
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.'
base_dn_text: >
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
filter_string_text: 'Enter the RFC4515 LDAP filter that returns groups in your LDAP to synchronize with OpenProject.'
group_name_attribute_text: 'Enter the attribute of the LDAP group used for setting the OpenProject group name.'
member_lookup_attribute_text: >
Leave empty to use the default reverse lookup: OpenProject searches for users whose memberOf attribute matches the group DN.
This requires the memberOf attribute to be present on user entries (Active Directory, OpenLDAP with memberof overlay).
@@ -67,13 +58,26 @@ en:
Examples: "uniqueMember" (groupOfUniqueNames), "member" (groupOfNames).
Use this for LDAP servers that do not maintain the memberOf attribute on user entries.
label_n_groups_found:
one: "1 group found by the filter"
other: "%{count} groups found by the filter"
zero: "No groups were found by the filter"
plural: 'LDAP Group synchronization filters'
singular: 'LDAP Group synchronization filter'
synchronized_groups:
add_new: 'Add synchronized LDAP group'
destroy:
title: 'Remove synchronized group %{name}'
heading: 'Remove synchronized group %{name}?'
confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed."
heading: 'Remove synchronized group %{name}?'
info: "The OpenProject group itself and members added outside this LDAP synchronization will not be removed."
title: 'Remove synchronized group %{name}'
form:
auth_source_text: 'Select which LDAP connection should be used.'
dn_text: 'Enter the full DN of the group in LDAP'
group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with'
sync_users_text: >
If you enable this option, found users will also be automatically created in OpenProject.
Without it, only existing accounts in OpenProject will be added to groups.
help_text_html: |
This module allows you to set up a synchronization between LDAP and OpenProject groups.
<br/>
@@ -86,16 +90,12 @@ en:
Groups are synchronized hourly through a cron job.
[Please see our documentation on this topic](docs_url).
no_results: 'No synchronized groups found.'
no_members: 'This group has no synchronized members yet.'
no_results: 'No synchronized groups found.'
plural: 'Synchronized LDAP groups'
singular: 'Synchronized LDAP group'
form:
auth_source_text: 'Select which LDAP connection should be used.'
sync_users_text: >
If you enable this option, found users will also be automatically created in OpenProject.
Without it, only existing accounts in OpenProject will be added to groups.
dn_text: 'Enter the full DN of the group in LDAP'
group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with'
upsell:
description: 'Take advantage of synchronised LDAP groups to manage users, change their permissions and facilitate user management across groups.'
plugin_openproject_ldap_groups:
description: "Synchronization of LDAP group memberships."
name: "OpenProject LDAP groups"
File diff suppressed because it is too large Load Diff
+87 -87
View File
@@ -1,163 +1,163 @@
---
en:
plugin_openproject_openid_connect:
name: "OpenProject OpenID Connect"
description: "Adds OmniAuth OpenID Connect strategy providers to OpenProject."
logout_warning: >
You have been logged out. The contents of any form you submit may be lost.
Please [log in].
activerecord:
attributes:
openid_connect/group_link:
oidc_group_name: OpenID group identifier
openid_connect/provider:
name: Name
slug: Unique identifier
display_name: Display name
acr_values: ACR values
authorization_endpoint: Authorization endpoint
claims: Claims
client_id: Client ID
client_secret: Client secret
groups_claim: Groups claim
group_regexes: Patterns (regular expressions)
secret: Secret
scope: Scope
sync_groups: Synchronize groups
grant_types_supported: Supported grant types
limit_self_registration: Limit self registration
authorization_endpoint: Authorization endpoint
userinfo_endpoint: User information endpoint
token_endpoint: Token endpoint
display_name: Display name
end_session_endpoint: End session endpoint
post_logout_redirect_uri: Post logout redirect URI
jwks_uri: JWKS URI
issuer: Issuer
tenant: Tenant
metadata_url: Metadata URL
grant_types_supported: Supported grant types
group_regexes: Patterns (regular expressions)
groups_claim: Groups claim
icon: Custom icon
claims: Claims
acr_values: ACR values
issuer: Issuer
jwks_uri: JWKS URI
limit_self_registration: Limit self registration
metadata_url: Metadata URL
name: Name
post_logout_redirect_uri: Post logout redirect URI
redirect_url: Redirect URL
scope: Scope
secret: Secret
slug: Unique identifier
sync_groups: Synchronize groups
tenant: Tenant
token_endpoint: Token endpoint
userinfo_endpoint: User information endpoint
errors:
models:
openid_connect/provider:
attributes:
metadata_url:
format: "Discovery endpoint URL %{message}"
response_is_not_successful: " responds with %{status}."
response_is_not_json: " does not return JSON body."
response_is_not_successful: " responds with %{status}."
response_misses_required_attributes: " does not return required attributes. Missing attributes are: %{missing_attributes}."
invalid_claims_essential: "does not define a boolean at %{attribute}."
invalid_claims_location: "contain unsupported locations: %{invalid}. Supported locations are: %{supported}."
invalid_claims_values: "does not define an array at %{attribute}."
non_object_attribute: "does not define a JSON object at %{attribute}."
provider:
delete_warning:
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
delete_result_1: Remove the provider from the list of available providers.
delete_result_user_count:
zero: No users are currently using this provider. No further action is required.
one: "One user is currently still using this provider. They will need to be re-invited or logging in with another provider."
other: "%{count} users are currently still using this provider. They will need to be re-invited or logging in with another provider."
delete_result_direct: This provider is marked as a direct login provider. The setting will be removed and users will no longer be redirected to the provider for login.
logout_warning: >
You have been logged out. The contents of any form you submit may be lost.
Please [log in].
openid_connect:
menu_title: OpenID providers
delete_title: "Delete OpenID Connect provider"
delete_heading: "Delete this OpenID Connect provider?"
delete_title: "Delete OpenID Connect provider"
group_links_heading: OpenID Connect group links
groups:
match_preview_component:
title: Extracted group names
placeholder_none: No groups currently match the pattern.
title: Extracted group names
match_preview_dialog_component:
description: This allows you to test your regular expression pattern against sample data to verify that the group names you want extracted are indeed extracted properly. You can modify your pattern here but the test string and matches themselves will not be saved with the configuration.
group_names_label: Test group names
group_names_description: Enter one group name per line as it would appear in the OIDC claim, to see how your regular expression patterns affect them.
group_names_label: Test group names
show_button: Test pattern
title: Test regular expressions
instructions:
acr_values: >
Request non-essential claims in an easier format. See [our documentation on acr_values](docs_url) for more information.
claims: >
You can request additional claims for the userinfo and id token endpoints. Please see [our OpenID connect documentation](docs_url) for more information.
client_id: This is the client ID given to you by your OpenID Connect provider
client_secret: This is the client secret given to you by your OpenID Connect provider
display_name: The name of the provider. This will be displayed as the login button and in the list of providers.
endpoint_url: The endpoint URL given to you by the OpenID Connect provider
group_regexes: One regular expression pattern per line. Please read [the documentation](docs_url) for more information on how to do this.
group_regexes_detail: Optionally define patterns using regular expressions to match group names from the groups claim. For example, entering a pattern like <code>^Level1/Level2/([\w/]+)$</code> will extract the group “Groupname/SubGroup” from a response including “Level1/Level2/GroupName/SubGroup”. If no pattern matches, the group is ignored. Leave empty to synchronize all groups using their full group name.
group_regexes_testing: "Click on 'Test pattern' to test your regular expression pattern against sample OIDC userinfo."
group_sync: Automatically extract and synchronise group membership information from the identity provider.
groups_claim: Specify the name of the claim that's expected to indicate the group names that the user is a member of.
metadata_none: I don't have this information
metadata_url: I have a discovery endpoint URL
oidc_information: These values are needed to configure the OpenID Connect provider.
client_id: This is the client ID given to you by your OpenID Connect provider
client_secret: This is the client secret given to you by your OpenID Connect provider
limit_self_registration: If enabled, users can only register using this provider if configuration on the provider's end allows it.
display_name: The name of the provider. This will be displayed as the login button and in the list of providers.
tenant: Please replace the default tenant with your own if applicable. See <a href=" https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc#find-your-apps-openid-configuration-document-uri">this</a>.
scope: If you want to request custom scopes, you can add one or multiple scope values separated by spaces here. For more information, see the [OpenID Connect documentation](docs_url).
post_logout_redirect_uri: The URL the OpenID Connect provider should redirect to after a logout request.
claims: >
You can request additional claims for the userinfo and id token endpoints. Please see [our OpenID connect documentation](docs_url) for more information.
acr_values: >
Request non-essential claims in an easier format. See [our documentation on acr_values](docs_url) for more information.
mapping_login: >
Provide a custom mapping in the userinfo response to be used for the login attribute.
mapping_admin: >
Provide a custom mapping in the userinfo response to be used for the admin status.
It expects a boolean attribute to be returned.
mapping_email: >
Provide a custom mapping in the userinfo response to be used for the email attribute.
mapping_first_name: >
Provide a custom mapping in the userinfo response to be used for the first name.
mapping_last_name: >
Provide a custom mapping in the userinfo response to be used for the last name.
mapping_admin: >
Provide a custom mapping in the userinfo response to be used for the admin status.
It expects a boolean attribute to be returned.
settings:
mapping_login: >
Provide a custom mapping in the userinfo response to be used for the login attribute.
metadata_none: I don't have this information
metadata_url: I have a discovery endpoint URL
endpoint_url: Endpoint URL
oidc_information: These values are needed to configure the OpenID Connect provider.
post_logout_redirect_uri: The URL the OpenID Connect provider should redirect to after a logout request.
scope: If you want to request custom scopes, you can add one or multiple scope values separated by spaces here. For more information, see the [OpenID Connect documentation](docs_url).
tenant: Please replace the default tenant with your own if applicable. See <a href=" https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc#find-your-apps-openid-configuration-document-uri">this</a>.
menu_title: OpenID providers
providers:
label_providers: "Providers"
seeded_from_env: "This provider was seeded from the environment configuration. It cannot be edited."
google:
name: Google
microsoft_entra:
name: Microsoft Entra
client_details_description: Configuration details of OpenProject as an OIDC client
custom:
name: Custom
upsell:
title: "Single Sign-On (SSO) with OpenID connect"
description: Connect OpenProject to an OpenID connect identity provider
google:
name: Google
label_add_new: Add a new OpenID provider
label_advanced_configuration: Advanced configuration
label_attribute_mapping: Attribute mapping
label_automatic_configuration: Automatic configuration
label_client_details: Client details
label_configuration_details: Metadata
label_edit: Edit OpenID provider %{name}
label_empty_title: No OpenID providers configured yet.
label_empty_description: Add a provider to see them here.
label_empty_title: No OpenID providers configured yet.
label_group_mapping: Group mapping
label_metadata: OpenID Connect Discovery Endpoint
label_automatic_configuration: Automatic configuration
label_optional_configuration: Optional configuration
label_advanced_configuration: Advanced configuration
label_configuration_details: Metadata
label_client_details: Client details
label_attribute_mapping: Attribute mapping
notice_created: A new OpenID provider was successfully created.
client_details_description: Configuration details of OpenProject as an OIDC client
label_providers: "Providers"
microsoft_entra:
name: Microsoft Entra
no_results_table: No providers have been defined yet.
notice_created: A new OpenID provider was successfully created.
plural: OpenID providers
singular: OpenID provider
section_texts:
attribute_mapping: Configure the mapping of attributes between OpenProject and the OpenID Connect provider.
claims: Request additional claims for the ID token or userinfo response.
configuration: Configuration details of the OpenID Connect provider
configuration_metadata: The information has been pre-filled using the supplied discovery endpoint. In most cases, they do not require editing.
display_name: The display name visible to users.
group_mapping: Map group names provided by the identity provider to groups in OpenProject.
metadata: Pre-fill configuration using an OpenID Connect discovery endpoint URL
metadata_form_banner: Editing the discovery endpoint may override existing pre-filled metadata values.
metadata_form_title: OpenID Connect Discovery endpoint
metadata_form_description: If your identity provider has a discovery endpoint URL. Use it below to pre-fill configuration.
configuration_metadata: The information has been pre-filled using the supplied discovery endpoint. In most cases, they do not require editing.
configuration: Configuration details of the OpenID Connect provider
display_name: The display name visible to users.
attribute_mapping: Configure the mapping of attributes between OpenProject and the OpenID Connect provider.
claims: Request additional claims for the ID token or userinfo response.
metadata_form_title: OpenID Connect Discovery endpoint
seeded_from_env: "This provider was seeded from the environment configuration. It cannot be edited."
side_panel:
information_component:
backchannel_logout_url: Backchannel logout URL
singular: OpenID provider
upsell:
description: Connect OpenProject to an OpenID connect identity provider
title: "Single Sign-On (SSO) with OpenID connect"
setting_instructions:
limit_self_registration: >
If enabled users can only register using this provider if the self registration setting allows for it.
settings:
endpoint_url: Endpoint URL
metadata_none: I don't have this information
metadata_url: I have a discovery endpoint URL
plugin_openproject_openid_connect:
description: "Adds OmniAuth OpenID Connect strategy providers to OpenProject."
name: "OpenProject OpenID Connect"
provider:
delete_warning:
delete_result_1: Remove the provider from the list of available providers.
delete_result_direct: This provider is marked as a direct login provider. The setting will be removed and users will no longer be redirected to the provider for login.
delete_result_user_count:
one: "One user is currently still using this provider. They will need to be re-invited or logging in with another provider."
other: "%{count} users are currently still using this provider. They will need to be re-invited or logging in with another provider."
zero: No users are currently using this provider. No further action is required.
input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion.
irreversible_notice: Deleting an SSO provider is an irreversible action.
provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:'
+1 -1
View File
@@ -1,6 +1,6 @@
---
en:
overviews:
label_home: "%{workspace_type} home"
label_dashboard: "Dashboard"
label_home: "%{workspace_type} home"
label_overview: "Overview"
+15 -15
View File
@@ -2,26 +2,13 @@
---
en:
plugin_openproject_recaptcha:
name: "OpenProject ReCaptcha"
description: "This module provides recaptcha checks during login."
name: "OpenProject ReCaptcha"
recaptcha:
label_recaptcha: "reCAPTCHA"
button_please_wait: 'Please wait ...'
verify_account: "Verify your account"
error_captcha: "Your account could not be verified. Please contact an administrator."
label_recaptcha: "reCAPTCHA"
settings:
website_key: 'Website key (May also be called "Site key")'
response_limit: 'Response limit for HCaptcha'
response_limit_text: 'The maximum number of characters to treat the HCaptcha response as valid.'
website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.'
secret_key: 'Secret key'
secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.'
type: 'Use reCAPTCHA'
type_disabled: 'Disable reCAPTCHA'
type_v2: 'reCAPTCHA v2'
type_v3: 'reCAPTCHA v3'
type_hcaptcha: 'HCaptcha'
type_turnstile: 'Cloudflare Turnstile™'
captcha_description_html: >
reCAPTCHA is a free service by Google that can be enabled for your OpenProject instance.
If enabled, a captcha form will be rendered upon login for all users that have not verified a captcha yet.
@@ -34,3 +21,16 @@ en:
<br/>
Cloudflare Turnstile™ is another alternative that is more convenient for users while still providing the same level of security.
See this link for more information: %{turnstile_link}
response_limit: 'Response limit for HCaptcha'
response_limit_text: 'The maximum number of characters to treat the HCaptcha response as valid.'
secret_key: 'Secret key'
secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.'
type: 'Use reCAPTCHA'
type_disabled: 'Disable reCAPTCHA'
type_hcaptcha: 'HCaptcha'
type_turnstile: 'Cloudflare Turnstile™'
type_v2: 'reCAPTCHA v2'
type_v3: 'reCAPTCHA v3'
website_key: 'Website key (May also be called "Site key")'
website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.'
verify_account: "Verify your account"
+38 -39
View File
@@ -28,76 +28,94 @@
---
en:
plugin_openproject_reporting:
name: "OpenProject Reporting"
description: "This plugin allows creating custom cost reports with filtering and grouping created by the OpenProject Time and costs plugin."
button_save_report_as: "Save report as..."
comments: "Comment"
cost_reports_title: "Time and costs"
label_cost_report: "Cost report"
label_cost_report_plural: "Cost reports"
description_drill_down: "Show details"
description_filter_selection: "Selection"
description_multi_select: "Show multiselect"
description_remove_filter: "Remove filter"
export:
cost_reports:
end_time: "End time"
start_time: "Start time"
title: "Your Cost Reports XLS export"
timesheet:
button: "Export PDF timesheet"
overview_per_user_day: "Overview: Hours per user per day"
overview_per_user_total: "Overview: Total hours per user"
sums_hours: Sums
time: "Time"
timesheet: "Timesheet"
title: "Your PDF timesheet export"
information_restricted_depending_on_permission: "Depending on your permissions this page might contain restricted information."
label_click_to_edit: "Click to edit."
label_closed: "closed"
label_columns: "Columns"
label_cost_entry_attributes: "Cost entry attributes"
label_cost_report: "Cost report"
label_cost_report_plural: "Cost reports"
label_count: "Count"
label_days_ago: "during the last days"
label_entry: "Cost entry"
label_filter: "Filter"
label_filter_add: "Add Filter"
label_filter_plural: "Filters"
label_filter_text: "Filter text"
label_filter_value: "Value"
label_filters: "Filter"
label_greater: ">"
label_group_by: "Group by"
label_group_by_add: "Add Group-by Attribute"
label_inactive: "«inactive»"
label_is_not_project_with_subprojects: "is not (includes subprojects)"
label_is_not_work_package_with_descendants: "is not (includes descendants)"
label_is_project_with_subprojects: "is (includes subprojects)"
label_is_work_package_with_descendants: "is (includes descendants)"
label_is_not_work_package_with_descendants: "is not (includes descendants)"
label_work_package_attributes: "Work package attributes"
label_less: "<"
label_logged_by_reporting: "Logged by"
label_money: "Cash value"
label_month_reporting: "Month (Spent)"
label_new_report: "New cost report"
label_no: "No"
label_no_reports: "There are no cost reports yet."
label_none: "(no data)"
label_open: "open"
label_operator: "Operator"
label_private_report_plural: "Private cost reports"
label_progress_bar_explanation: "Generating report..."
label_public_report_plural: "Public cost reports"
label_really_delete_question: "Are you sure you want to delete this report?"
label_report: "Report"
label_rows: "Rows"
label_saving: "Saving ..."
label_spent_on_reporting: "Date (Spent)"
label_sum: "Sum"
label_units: "Units"
label_week_reporting: "Week (Spent)"
label_work_package_attributes: "Work package attributes"
label_year_reporting: "Year (Spent)"
label_count: "Count"
label_filter: "Filter"
label_filter_add: "Add Filter"
label_filter_plural: "Filters"
label_group_by: "Group by"
label_group_by_add: "Add Group-by Attribute"
label_inactive: "«inactive»"
label_no: "No"
label_none: "(no data)"
label_no_reports: "There are no cost reports yet."
label_report: "Report"
label_yes: "Yes"
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"
plugin_openproject_reporting:
description: "This plugin allows creating custom cost reports with filtering and grouping created by the OpenProject Time and costs plugin."
name: "OpenProject Reporting"
project_module_reporting_module: "Cost reports"
reporting:
group_by:
selected_columns: "Selected columns"
selected_rows: "Selected rows"
text_costs_are_rounded_note: "Displayed values are rounded. All calculations are based on the non-rounded values."
toggle_multiselect: "activate/deactivate multiselect"
@@ -105,22 +123,3 @@ en:
validation_failure_date: "is not a valid date"
validation_failure_integer: "is not a valid integer"
export:
timesheet:
title: "Your PDF timesheet export"
button: "Export PDF timesheet"
timesheet: "Timesheet"
time: "Time"
sums_hours: Sums
overview_per_user_total: "Overview: Total hours per user"
overview_per_user_day: "Overview: Hours per user per day"
cost_reports:
title: "Your Cost Reports XLS export"
start_time: "Start time"
end_time: "End time"
reporting:
group_by:
selected_columns: "Selected columns"
selected_rows: "Selected rows"
+83 -83
View File
@@ -4,24 +4,76 @@ en:
js:
storages:
authentication_error: "Authentication with %{storageType} failed"
link_files_in_storage: "Link files in %{storageType}"
link_existing_files: "Link existing files"
upload_files: "Upload files"
choose_location: "Choose location"
drop_files: "Drop files here to upload them to %{name}."
drop_or_click_files: "Drop files here or click to upload them to %{name}."
login: "%{storageType} login"
login_to: "Login to %{storageType}"
no_connection: "No %{storageType} connection"
open_storage: "Open %{storageType}"
select_location: "Select location"
choose_location: "Choose location"
new_folder: "New folder"
types:
nextcloud: "Nextcloud"
one_drive: "OneDrive"
sharepoint: "SharePoint"
default: "Storage"
file_links:
already_linked_directory: "This directory is already linked to this work package."
already_linked_file: "This file is already linked to this work package."
download: "Download %{fileName}"
empty: >
Currently there are no linked files to this work package. Start linking files with the action below or from
within %{storageType}.
link_uploaded_file_error: >
An error occurred linking the recently uploaded file '%{fileName}' to the work package %{workPackageId}.
open: "Open file on storage"
open_location: "Open file in location"
remove: "Remove file link"
remove_confirmation: >
Are you sure you want to unlink the file from this work package? Unlinking does not affect the original file
and only removes the connection to this work package.
remove_short: "Remove link"
select: "Select files"
select_all: "Select all"
selection:
one: "Link 1 file"
other: "Link %{count} files"
zero: "Select files to link"
success_create:
one: "Successfully created 1 file link."
other: "Successfully created %{count} file links."
tooltip:
not_found: "This file cannot be found."
not_logged_in: "Please log in to the storage to access this file."
view_not_allowed: "You have no permission to see this file."
upload_error:
403: >
Your file (%{fileName}) could not be uploaded due to system restrictions.
Please contact your administrator for more information.
413: >
Your file (%{fileName}) is bigger than what OpenProject can upload to %{storageType}.
You can upload it directly to %{storageType} first and then link the file.
507: >
Your file (%{fileName}) is bigger than the storage quota allows.
Contact your administrator to modify this quota.
default: >
Your file (%{fileName}) could not be uploaded.
detail:
nextcloud: >
Please check that the latest version of the Nextcloud App "OpenProject Integration" is installed and
contact your administrator for more information.
files:
already_existing_body: >
A file with the name "%{fileName}" already exists in the location where you are trying
to upload this file. What would you like to do?
already_existing_header: "This file already exists"
cannot_create_folder: Failed to create folder. Avoid using special characters and symbols and make sure the folder does not exist already.
directory_not_writeable: "You do not have permission to add files to this folder."
dragging_folder: "The upload to %{storageType} does not support folders."
dragging_many_files: "The upload to %{storageType} supports only one file at once."
empty_folder: "This folder is empty."
empty_folder_location_hint: "Click the button below to upload the file to this location."
file_not_selectable_location: "Selecting a file is not possible in the process of choosing a location."
managed_project_folder_no_access: >
You have no access yet to the managed project folder. Please wait a bit and try again.
managed_project_folder_not_available: >
The automatically managed project folder was not yet found. Please wait a bit, reload the page to fetch the
newest data, and try again.
project_folder_no_access: >
You have no access to the project folder. Please, contact your administrator to get access or
upload the file in another location.
upload_keep_both: "Keep both"
upload_replace: "Replace"
information:
authentication_error: "The request to %{storageType} could not be authenticated, that's an error."
@@ -37,71 +89,19 @@ en:
suggest_logout: You can try whether logging out and back in fixes this problem.
suggest_relink: You can try whether re-linking your account via the login button below fixes this problem.
files:
already_existing_header: "This file already exists"
already_existing_body: >
A file with the name "%{fileName}" already exists in the location where you are trying
to upload this file. What would you like to do?
directory_not_writeable: "You do not have permission to add files to this folder."
dragging_many_files: "The upload to %{storageType} supports only one file at once."
dragging_folder: "The upload to %{storageType} does not support folders."
empty_folder: "This folder is empty."
empty_folder_location_hint: "Click the button below to upload the file to this location."
file_not_selectable_location: "Selecting a file is not possible in the process of choosing a location."
project_folder_no_access: >
You have no access to the project folder. Please, contact your administrator to get access or
upload the file in another location.
managed_project_folder_not_available: >
The automatically managed project folder was not yet found. Please wait a bit, reload the page to fetch the
newest data, and try again.
managed_project_folder_no_access: >
You have no access yet to the managed project folder. Please wait a bit and try again.
cannot_create_folder: Failed to create folder. Avoid using special characters and symbols and make sure the folder does not exist already.
upload_keep_both: "Keep both"
upload_replace: "Replace"
link_existing_files: "Link existing files"
link_files_in_storage: "Link files in %{storageType}"
login: "%{storageType} login"
login_to: "Login to %{storageType}"
new_folder: "New folder"
file_links:
empty: >
Currently there are no linked files to this work package. Start linking files with the action below or from
within %{storageType}.
download: "Download %{fileName}"
open: "Open file on storage"
open_location: "Open file in location"
remove: "Remove file link"
remove_confirmation: >
Are you sure you want to unlink the file from this work package? Unlinking does not affect the original file
and only removes the connection to this work package.
remove_short: "Remove link"
select: "Select files"
select_all: "Select all"
selection:
zero: "Select files to link"
one: "Link 1 file"
other: "Link %{count} files"
success_create:
one: "Successfully created 1 file link."
other: "Successfully created %{count} file links."
upload_error:
default: >
Your file (%{fileName}) could not be uploaded.
403: >
Your file (%{fileName}) could not be uploaded due to system restrictions.
Please contact your administrator for more information.
413: >
Your file (%{fileName}) is bigger than what OpenProject can upload to %{storageType}.
You can upload it directly to %{storageType} first and then link the file.
507: >
Your file (%{fileName}) is bigger than the storage quota allows.
Contact your administrator to modify this quota.
detail:
nextcloud: >
Please check that the latest version of the Nextcloud App "OpenProject Integration" is installed and
contact your administrator for more information.
link_uploaded_file_error: >
An error occurred linking the recently uploaded file '%{fileName}' to the work package %{workPackageId}.
tooltip:
not_logged_in: "Please log in to the storage to access this file."
view_not_allowed: "You have no permission to see this file."
not_found: "This file cannot be found."
already_linked_file: "This file is already linked to this work package."
already_linked_directory: "This directory is already linked to this work package."
no_connection: "No %{storageType} connection"
open_storage: "Open %{storageType}"
select_location: "Select location"
types:
default: "Storage"
nextcloud: "Nextcloud"
one_drive: "OneDrive"
sharepoint: "SharePoint"
upload_files: "Upload files"
+13 -13
View File
@@ -1,25 +1,25 @@
# English strings go here
---
en:
plugin_openproject_team_planner:
name: "OpenProject Team Planner"
description: "Provides team planner views."
permission_view_team_planner: "View team planner"
permission_manage_team_planner: "Manage team planner"
project_module_team_planner_view: "Team planners"
ee:
feature_names:
team_planner_view: "Team planner"
upsell:
team_planner_view:
title: "Team planner"
description: "Get a complete overview of your teams planning with Team Planner. Stretch, shorten and drag-and-drop work packages to modify dates, move them or change assignees."
title: "Team planner"
permission_manage_team_planner: "Manage team planner"
permission_view_team_planner: "View team planner"
plugin_openproject_team_planner:
description: "Provides team planner views."
name: "OpenProject Team Planner"
project_module_team_planner_view: "Team planners"
team_planner:
label_team_planner: "Team planner"
label_new_team_planner: "New team planner"
label_create_new_team_planner: "Create new team planner"
label_team_planner_plural: "Team planners"
label_assignees: "Assignees"
label_create_new_team_planner: "Create new team planner"
label_new_team_planner: "New team planner"
label_team_planner: "Team planner"
label_team_planner_plural: "Team planners"
+19 -19
View File
@@ -3,29 +3,29 @@
en:
js:
team_planner:
add_existing: 'Add existing'
label_team_planner_plural: 'Team planners'
add_existing_title: 'Add existing work packages'
create_label: 'Team planner'
create_title: 'Create new team planner'
unsaved_title: 'Unnamed team planner'
no_data: 'Add assignees to set up your team planner.'
add_assignee: 'Assignee'
remove_assignee: 'Remove assignee'
two_weeks: '2-week'
one_week: '1-week'
four_weeks: '4-week'
eight_weeks: '8-week'
work_week: 'Work week'
today: 'Today'
drag_here_to_remove: 'Drag here to remove assignee and start and end dates.'
add_existing: 'Add existing'
add_existing_title: 'Add existing work packages'
cannot_drag_here: 'Cannot move the work package due to permissions or editing restrictions.'
cannot_drag_to_non_working_day: 'This work package cannot start/finish on a non-working day.'
create_label: 'Team planner'
create_title: 'Create new team planner'
drag_here_to_remove: 'Drag here to remove assignee and start and end dates.'
eight_weeks: '8-week'
four_weeks: '4-week'
label_team_planner_plural: 'Team planners'
modify:
errors:
fallback: 'This work package cannot be edited.'
permission_denied: 'You do not have the necessary permissions to modify this.'
no_data: 'Add assignees to set up your team planner.'
one_week: '1-week'
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.'
remove_assignee: 'Remove assignee'
today: 'Today'
two_weeks: '2-week'
unsaved_title: 'Unnamed team planner'
work_week: 'Work week'
@@ -1,19 +1,12 @@
# English strings go here for Rails i18n
---
en:
plugin_openproject_two_factor_authentication:
name: "OpenProject Two-factor authentication"
description: >-
This OpenProject plugin authenticates your users using two-factor authentication by means of
one-time password through the TOTP standard (Google Authenticator) or sent to the user's cell
phone via SMS or voice call.
activerecord:
attributes:
two_factor_authentication/device:
identifier: "Identifier"
default: "Use as default"
channel: "Channel"
default: "Use as default"
identifier: "Identifier"
two_factor_authentication/device/sms:
phone_number: "Phone number"
two_factor_authentication/device/webauthn:
@@ -33,32 +26,141 @@ en:
two_factor_authentication/device/totp: "Authenticator application"
two_factor_authentication/device/webauthn: "WebAuthn"
button_continue: "Continue"
button_make_default: "Mark as default"
button_otp_by_sms: "SMS"
button_otp_by_voice: "Voice call"
button_resend_otp_form: "Resend"
field_otp: "One-time password"
label_confirmed: "Confirmed"
label_otp_channel: "Delivery channel"
notice_account_has_no_phone: "No cell phone number is associated with your account."
notice_account_otp_expired: "The one-time password you entered expired."
notice_account_otp_invalid: "Invalid one-time password."
notice_account_otp_send_failed: "Your one-time password could not be sent."
notice_developer_strategy_otp: "Developer strategy generated the following one-time password: %{token} (Channel: %{channel})"
notice_phone_number_format: "Please enter the number in the following format: +XX XXXXXXXX."
plugin_openproject_two_factor_authentication:
description: >-
This OpenProject plugin authenticates your users using two-factor authentication by means of
one-time password through the TOTP standard (Google Authenticator) or sent to the user's cell
phone via SMS or voice call.
name: "OpenProject Two-factor authentication"
text_otp_not_receive: "Other verification methods"
text_send_otp_again: "Resend one-time password by:"
two_factor_authentication:
admin:
all_devices_deleted: "All 2FA devices of this user have been deleted"
button_delete_all_devices: "Delete registered 2FA devices"
button_register_mobile_phone_for_user: "Register mobile phone"
delete_all_are_you_sure: "Are you sure you want to delete all 2FA devices for this user?"
no_devices_for_user: "No 2FA device has been registered for this user."
only_sms_allowed: "Only SMS delivery can be set up for other users."
self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead."
self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)"
text_2fa_disabled: "The user did not set up a 2FA device through their 'My account page'"
text_2fa_enabled: "Upon every login, this user will be requested to enter a OTP token from their default 2FA device."
backup_codes:
generate:
keep_safe_as_password: "Important! Treat these codes as passwords."
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."
title: Generate backup codes
overview_description: |
If you are unable to access your two factor devices, you can use a backup code to regain access to your account.
Use the following button to generate a new set of backup codes.
plural: Backup codes
singular: Backup code
channel_unavailable: "The delivery channel %{channel} is unavailable."
devices:
2fa_from_input_html: Please enter the code from your <strong>%{device_name}</strong> to verify your identity.
2fa_from_webauthn_html: Please provide the WebAuthn device <strong>%{device_name}</strong>. If it is USB based make sure to plug it in and touch it. Then click the sign in button.
add_new: "Add new 2FA device"
button_complete_registration: "Complete 2FA registration"
cannot_delete_default: "Cannot delete default device"
confirm_default: "Confirm changing default device"
confirm_device: "Confirm device"
confirm_now: "Not confirmed, click here to activate"
confirm_send_failed: "Confirmation of your 2FA device failed."
deletion_are_you_sure: "Are you sure you want to delete this 2FA device?"
failed_to_delete: "Failed to delete 2FA device."
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."
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."
not_existing: "No 2FA device has been registered for your account."
register: "Register device"
registration_complete: "2FA device registration complete!"
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."
sms:
description: |
Receive 2FA code via a text message on your phone each time you log in.
redacted_identifier: "Mobile device (%{redacted_number})"
request_2fa_identifier: "%{redacted_identifier}, we sent you an authentication code via %{delivery_channel}"
title: "Mobile device"
text_confirm_to_change_default_html: "Please confirm changing your default device to <strong>%{new_identifier}</strong> by entering a one-time password from your current default device."
text_confirm_to_complete_html: "Please complete the registration of your device <strong>%{identifier}</strong> by entering a one-time password from your default device."
text_identifier: "You can give the device a custom identifier using this field."
totp:
account: "Account name / Issuer"
description: |
Use a one-time code generated by an authenticator like Authy or Google Authenticator.
provisioning_uri: "Provisioning URI"
question_cannot_scan: |
Unable to scan the code using your application?
secret_key: "Secret key"
setup: |
For setting up two-factor authentication with Google Authenticator, download the application from the Apple App store or Google Play Store.
After opening the app, you can scan the following QR code to register the device.
text_cannot_scan: |
If you can't scan the code, you can enter the entry manually using the following details:
time_based: "Time based"
title: "App-based authenticator"
webauthn:
description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device.
further_steps: After you have chosen a name, you can click the Continue button. Your browser will prompt you to present your WebAuthn device. When you have done so, you are done registering the device.
title: "WebAuthn"
error_2fa_disabled: "2FA delivery has been disabled."
notice_not_writable: "2FA Settings were provided through environment variables and cannot be overwritten."
error_invalid_backup_code: "Invalid 2FA backup code"
error_is_enforced_not_active: "Configuration error: Two-factor authentication has been enforced, but no active strategies exist."
error_no_device: "No registered 2FA device found for this user, despite being required for this instance."
error_no_matching_strategy: "No matching 2FA strategy available for this user. Please contact your administratior."
error_is_enforced_not_active: "Configuration error: Two-factor authentication has been enforced, but no active strategies exist."
error_invalid_backup_code: "Invalid 2FA backup code"
channel_unavailable: "The delivery channel %{channel} is unavailable."
no_valid_phone_number: "No valid phone number exists."
label_device_type: "Device type"
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."
label_2fa_disabled: "Two-factor authentication not active"
label_2fa_enabled: "Two-factor authentication is active"
label_default_device: "Default 2FA device"
label_device: "2FA device"
label_device_type: "Device type"
label_devices: "2FA devices"
label_2fa_enabled: "Two-factor authentication is active"
label_2fa_disabled: "Two-factor authentication not active"
text_otp_delivery_message_sms: "Your %{app_title} one-time password is %{token}"
text_otp_delivery_message_voice: "Your %{app_title} one-time password is: %{pause} %{token}. %{pause} I repeat: %{pause} %{token}"
text_2fa_enabled: "Upon every login, you will be requested to enter a OTP token from your default 2FA device."
text_2fa_disabled: "To enable two-factor authentication, use the button above to register a new 2FA device. If you already have a device, you need to make it a default."
label_two_factor_authentication: "Two-factor authentication"
login:
enter_backup_code_title: Enter backup code
enter_backup_code_text: Please enter a valid backup code from your list of codes in case you can no longer access your registered 2FA devices.
enter_backup_code_title: Enter backup code
other_device: "Use another device or backup code"
message_bird:
sms_delivery_failed: "MessageBird SMS delivery failed."
voice_delivery_failed: "MessageBird voice call failed."
mobile_transmit_notification: "A one-time password has been sent to your cell phone."
no_valid_phone_number: "No valid phone number exists."
notice_not_writable: "2FA Settings were provided through environment variables and cannot be overwritten."
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.
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."
label: "Remember"
other_active_session_notice: Your account has an active remember cookie on another session.
settings:
title: "2FA settings"
current_configuration: "Current configuration"
failed_to_save_settings: "Failed to update 2FA settings: %{message}"
label_active_strategies: "Active 2FA strategies"
label_enforced: "Enforce 2FA"
label_remember: "Remember 2FA login"
@@ -69,118 +171,16 @@ en:
text_remember: |
Set this to greater than zero to allow users to remember their 2FA authentication for the given number of days.
They will not be requested to re-enter it during that period. Can only be set when not enforced by configuration.
failed_to_save_settings: "Failed to update 2FA settings: %{message}"
admin:
self_edit_path_html: "To add or modify your own 2FA devices, please go to the [Two-factor authentication on your account page](self_edit_link)"
self_edit_forbidden: "You may not edit your own 2FA devices on this path. Go to My Account > Two factor authentication instead."
no_devices_for_user: "No 2FA device has been registered for this user."
all_devices_deleted: "All 2FA devices of this user have been deleted"
delete_all_are_you_sure: "Are you sure you want to delete all 2FA devices for this user?"
button_delete_all_devices: "Delete registered 2FA devices"
button_register_mobile_phone_for_user: "Register mobile phone"
text_2fa_enabled: "Upon every login, this user will be requested to enter a OTP token from their default 2FA device."
text_2fa_disabled: "The user did not set up a 2FA device through their 'My account page'"
only_sms_allowed: "Only SMS delivery can be set up for other users."
backup_codes:
singular: Backup code
plural: Backup codes
overview_description: |
If you are unable to access your two factor devices, you can use a backup code to regain access to your account.
Use the following button to generate a new set of backup codes.
generate:
title: Generate backup codes
keep_safe_as_password: "Important! Treat these codes as passwords."
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!"
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"
text_confirm_to_complete_html: "Please complete the registration of your device <strong>%{identifier}</strong> by entering a one-time password from your default device."
text_confirm_to_change_default_html: "Please confirm changing your default device to <strong>%{new_identifier}</strong> 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."
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."
2fa_from_input_html: Please enter the code from your <strong>%{device_name}</strong> to verify your identity.
2fa_from_webauthn_html: Please provide the WebAuthn device <strong>%{device_name}</strong>. If it is USB based make sure to plug it in and touch it. Then click the sign in button.
webauthn:
title: "WebAuthn"
description: Register a FIDO2 device (like YubiKey) or the secure enclave of your mobile device.
further_steps: After you have chosen a name, you can click the Continue button. Your browser will prompt you to present your WebAuthn device. When you have done so, you are done registering the device.
totp:
title: "App-based authenticator"
provisioning_uri: "Provisioning URI"
secret_key: "Secret key"
time_based: "Time based"
account: "Account name / Issuer"
setup: |
For setting up two-factor authentication with Google Authenticator, download the application from the Apple App store or Google Play Store.
After opening the app, you can scan the following QR code to register the device.
question_cannot_scan: |
Unable to scan the code using your application?
text_cannot_scan: |
If you can't scan the code, you can enter the entry manually using the following details:
description: |
Use a one-time code generated by an authenticator like Authy or Google Authenticator.
sms:
title: "Mobile device"
redacted_identifier: "Mobile device (%{redacted_number})"
request_2fa_identifier: "%{redacted_identifier}, we sent you an authentication code via %{delivery_channel}"
description: |
Receive 2FA code via a text message on your phone each time you log in.
title: "2FA settings"
sns:
delivery_failed: "SNS delivery failed:"
message_bird:
sms_delivery_failed: "MessageBird SMS delivery failed."
voice_delivery_failed: "MessageBird voice call failed."
strategies:
totp: "Authenticator application"
sns: "Amazon SNS"
resdt: "SMS Rest API"
sns: "Amazon SNS"
totp: "Authenticator application"
webauthn: "WebAuthn"
mobile_transmit_notification: "A one-time password has been sent to your cell phone."
label_two_factor_authentication: "Two-factor authentication"
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"
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_otp: "One-time password"
notice_account_otp_invalid: "Invalid one-time password."
notice_account_otp_expired: "The one-time password you entered expired."
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."
label_confirmed: "Confirmed"
button_continue: "Continue"
button_make_default: "Mark as default"
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_otp_by_sms: "SMS"
label_otp_channel: "Delivery channel"
text_2fa_disabled: "To enable two-factor authentication, use the button above to register a new 2FA device. If you already have a device, you need to make it a default."
text_2fa_enabled: "Upon every login, you will be requested to enter a OTP token from your default 2FA device."
text_otp_delivery_message_sms: "Your %{app_title} one-time password is %{token}"
text_otp_delivery_message_voice: "Your %{app_title} one-time password is: %{pause} %{token}. %{pause} I repeat: %{pause} %{token}"
+42 -42
View File
@@ -1,59 +1,39 @@
---
en:
plugin_openproject_webhooks:
name: "OpenProject Webhooks"
description: "Provides a plug-in API to support OpenProject webhooks for better 3rd party integration."
activerecord:
attributes:
webhooks/webhook:
url: 'Payload URL'
secret: 'Signature secret'
events: 'Events'
enabled: 'Enabled'
projects: 'Enabled projects'
webhooks/log:
event_name: 'Event name'
url: 'Payload URL'
response_code: 'Response code'
response_body: 'Response'
response_code: 'Response code'
url: 'Payload URL'
webhooks/webhook:
enabled: 'Enabled'
events: 'Events'
projects: 'Enabled projects'
secret: 'Signature secret'
url: 'Payload URL'
models:
webhooks/outgoing_webhook: "Outgoing webhook"
plugin_openproject_webhooks:
description: "Provides a plug-in API to support OpenProject webhooks for better 3rd party integration."
name: "OpenProject Webhooks"
webhooks:
singular: Webhook
plural: Webhooks
resources:
time_entry:
name: "Time entry"
outgoing:
no_results_table: No webhooks have been defined yet.
label_add_new: Add new webhook
label_edit: Edit webhook
label_x_events:
one: "1 event"
other: "%{count} events"
zero: "No events"
deliveries:
no_results_table: No deliveries have been made for this webhook in the past days.
time: 'Delivery time'
title: 'Recent deliveries'
events:
created: "Created"
updated: "Updated"
comment: "Comment"
created: "Created"
internal_comment: "Internal comment"
updated: "Updated"
explanation_html: >
Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints.
Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed.
status:
enabled: 'Webhook is enabled'
disabled: 'Webhook is disabled'
enabled_text: 'The webhook will emit payloads for the defined events below.'
disabled_text: 'Click the edit button to activate the webhook.'
deliveries:
no_results_table: No deliveries have been made for this webhook in the past days.
title: 'Recent deliveries'
time: 'Delivery time'
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
description:
placeholder: 'Optional description for the webhook.'
@@ -62,13 +42,33 @@ en:
When checked, the webhook will trigger on the selected events. Uncheck to disable the webhook.
events:
title: 'Enabled events'
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.
project_ids:
title: 'Enabled projects'
description: 'Select for which projects this webhook should be executed for.'
all: 'All projects'
description: 'Select for which projects this webhook should be executed for.'
selected: 'Selected projects only'
selected_project_ids:
title: 'Selected projects'
title: 'Enabled projects'
secret:
description: >
If set, this secret value is used by OpenProject to sign the webhook payload.
selected_project_ids:
title: 'Selected projects'
label_add_new: Add new webhook
label_edit: Edit webhook
label_x_events:
one: "1 event"
other: "%{count} events"
zero: "No events"
no_results_table: No webhooks have been defined yet.
status:
disabled: 'Webhook is disabled'
disabled_text: 'Click the edit button to activate the webhook.'
enabled: 'Webhook is enabled'
enabled_text: 'The webhook will emit payloads for the defined events below.'
plural: Webhooks
resources:
time_entry:
name: "Time entry"
singular: Webhook
+1 -1
View File
@@ -16,7 +16,7 @@ en:
token_exchange_scope: XWiki Scope
url: Instance URL
wiki_audience: XWiki Audience
errors: { }
errors: {}
models:
wikis/inline_page_link:
one: Inline page link
+7 -7
View File
@@ -1,12 +1,5 @@
---
en:
plugin_openproject_xls_export:
name: "OpenProject XLS Export"
description: "Export issue lists as Excel spreadsheets (.xls)."
export_to_excel: "Export XLS"
print_with_description: "Print preview with description"
sentence_separator_or: "or"
different_formats: Different formats
export:
@@ -15,6 +8,13 @@ en:
xls_with_descriptions: "XLS with descriptions"
xls_with_relations: "XLS with relations"
export_to_excel: "Export XLS"
plugin_openproject_xls_export:
description: "Export issue lists as Excel spreadsheets (.xls)."
name: "OpenProject XLS Export"
print_with_description: "Print preview with description"
sentence_separator_or: "or"
xls_export:
child_of: child of
parent_of: parent of