mirror of
https://github.com/opf/openproject.git
synced 2026-06-13 19:20:00 +00:00
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:
+3892
-3945
File diff suppressed because it is too large
Load Diff
+716
-717
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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:"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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,6 +1,6 @@
|
||||
---
|
||||
en:
|
||||
overviews:
|
||||
label_home: "%{workspace_type} home"
|
||||
label_dashboard: "Dashboard"
|
||||
label_home: "%{workspace_type} home"
|
||||
label_overview: "Overview"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 team’s 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"
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user