Merge branch 'dev' into feature/extend_project_by_status

pull/7722/head
ulferts 5 years ago
commit 69883d86b5
No known key found for this signature in database
GPG Key ID: A205708DE1284017
  1. 2
      app/controllers/account_controller.rb
  2. 3
      app/controllers/concerns/redirect_after_login.rb
  3. 10
      app/helpers/custom_fields_helper.rb
  4. 16
      app/helpers/projects_helper.rb
  5. 7
      app/views/announcements/edit.html.erb
  6. 14
      app/views/colors/_form.html.erb
  7. 2
      config/initializers/menus.rb
  8. 2
      config/locales/crowdin/de.yml
  9. 34
      config/locales/crowdin/es.yml
  10. 12
      config/locales/crowdin/fr.yml
  11. 2
      config/locales/crowdin/js-de.yml
  12. 64
      config/locales/crowdin/js-es.yml
  13. 8
      config/locales/crowdin/js-fr.yml
  14. 28
      config/locales/crowdin/js-ko.yml
  15. 10
      config/locales/crowdin/js-pl.yml
  16. 6
      config/locales/crowdin/js-pt.yml
  17. 6
      config/locales/crowdin/js-ru.yml
  18. 16
      config/locales/crowdin/js-zh-CN.yml
  19. 20
      config/locales/crowdin/ko.yml
  20. 18
      config/locales/crowdin/pl.yml
  21. 12
      config/locales/crowdin/pt.yml
  22. 14
      config/locales/crowdin/ru.yml
  23. 22
      config/locales/crowdin/zh-CN.yml
  24. 2
      db/migrate/20190920102446_clean_custom_values.rb
  25. 3
      frontend/src/app/components/work-packages/wp-single-view/wp-single-view.html
  26. 4
      frontend/src/app/modules/attachments/attachment-list/attachment-list-item.component.ts
  27. 28
      frontend/src/app/modules/attachments/attachment-list/attachment-list.component.ts
  28. 2
      frontend/src/app/modules/attachments/attachment-list/attachment-list.html
  29. 44
      frontend/src/app/modules/attachments/attachments.component.ts
  30. 2
      frontend/src/app/modules/attachments/attachments.html
  31. 1
      frontend/src/app/modules/boards/board/board.component.ts
  32. 1
      frontend/src/app/modules/boards/board/board.service.ts
  33. 4
      frontend/src/app/modules/common/back-routing/back-routing.service.ts
  34. 1
      frontend/src/app/modules/grids/widgets/custom-text/custom-text.component.html
  35. 9
      frontend/src/app/modules/grids/widgets/custom-text/custom-text.component.ts
  36. 2
      frontend/src/app/modules/hal/resources/mixins/attachable-mixin.ts
  37. 2
      lib/api/helpers/attachment_renderer.rb
  38. 48
      modules/avatars/config/locales/crowdin/es.yml
  39. 8
      modules/avatars/config/locales/crowdin/fr.yml
  40. 14
      modules/avatars/config/locales/crowdin/js-es.yml
  41. 4
      modules/avatars/config/locales/crowdin/js-fr.yml
  42. 8
      modules/avatars/config/locales/crowdin/js-ko.yml
  43. 14
      modules/avatars/config/locales/crowdin/js-pl.yml
  44. 2
      modules/avatars/config/locales/crowdin/js-pt.yml
  45. 20
      modules/avatars/config/locales/crowdin/ko.yml
  46. 52
      modules/avatars/config/locales/crowdin/pl.yml
  47. 6
      modules/avatars/config/locales/crowdin/pt.yml
  48. 6
      modules/avatars/config/locales/crowdin/zh-CN.yml
  49. 92
      modules/bcf/config/locales/crowdin/es.yml
  50. 88
      modules/bcf/config/locales/crowdin/fr.yml
  51. 70
      modules/bcf/config/locales/crowdin/ko.yml
  52. 96
      modules/bcf/config/locales/crowdin/pl.yml
  53. 18
      modules/bcf/config/locales/crowdin/zh-CN.yml
  54. 4
      modules/boards/config/locales/crowdin/es.yml
  55. 4
      modules/boards/config/locales/crowdin/fr.yml
  56. 62
      modules/boards/config/locales/crowdin/js-es.yml
  57. 60
      modules/boards/config/locales/crowdin/js-fr.yml
  58. 62
      modules/boards/config/locales/crowdin/js-ko.yml
  59. 62
      modules/boards/config/locales/crowdin/js-pl.yml
  60. 2
      modules/boards/config/locales/crowdin/js-pt.yml
  61. 54
      modules/boards/config/locales/crowdin/js-zh-CN.yml
  62. 4
      modules/boards/config/locales/crowdin/ko.yml
  63. 4
      modules/boards/config/locales/crowdin/pl.yml
  64. 4
      modules/costs/app/views/cost_types/_list.html.erb
  65. 2
      modules/costs/app/views/cost_types/_list_deleted.html.erb
  66. 6
      modules/dashboards/config/locales/crowdin/es.yml
  67. 4
      modules/dashboards/config/locales/crowdin/fr.yml
  68. 2
      modules/dashboards/config/locales/crowdin/js-es.yml
  69. 2
      modules/dashboards/config/locales/crowdin/js-fr.yml
  70. 2
      modules/dashboards/config/locales/crowdin/js-ko.yml
  71. 2
      modules/dashboards/config/locales/crowdin/js-pl.yml
  72. 2
      modules/dashboards/config/locales/crowdin/js-zh-CN.yml
  73. 6
      modules/dashboards/config/locales/crowdin/ko.yml
  74. 6
      modules/dashboards/config/locales/crowdin/pl.yml
  75. 6
      modules/dashboards/config/locales/crowdin/zh-CN.yml
  76. 8
      modules/github_integration/config/locales/crowdin/es.yml
  77. 8
      modules/github_integration/config/locales/crowdin/fr.yml
  78. 8
      modules/github_integration/config/locales/crowdin/ko.yml
  79. 8
      modules/github_integration/config/locales/crowdin/pl.yml
  80. 8
      modules/github_integration/config/locales/crowdin/zh-CN.yml
  81. 26
      modules/grids/config/locales/crowdin/js-es.yml
  82. 26
      modules/grids/config/locales/crowdin/js-fr.yml
  83. 26
      modules/grids/config/locales/crowdin/js-ko.yml
  84. 26
      modules/grids/config/locales/crowdin/js-pl.yml
  85. 10
      modules/grids/config/locales/crowdin/js-ru.yml
  86. 26
      modules/grids/config/locales/crowdin/js-zh-CN.yml
  87. 42
      modules/ldap_groups/config/locales/crowdin/es.yml
  88. 42
      modules/ldap_groups/config/locales/crowdin/fr.yml
  89. 42
      modules/ldap_groups/config/locales/crowdin/ko.yml
  90. 42
      modules/ldap_groups/config/locales/crowdin/pl.yml
  91. 14
      modules/ldap_groups/config/locales/crowdin/zh-CN.yml
  92. 20
      modules/openid_connect/config/locales/crowdin/es.yml
  93. 2
      modules/openid_connect/config/locales/crowdin/fr.yml
  94. 20
      modules/openid_connect/config/locales/crowdin/ko.yml
  95. 20
      modules/openid_connect/config/locales/crowdin/pl.yml
  96. 14
      modules/openid_connect/config/locales/crowdin/zh-CN.yml
  97. 18
      modules/recaptcha/config/locales/crowdin/es.yml
  98. 18
      modules/recaptcha/config/locales/crowdin/fr.yml
  99. 18
      modules/recaptcha/config/locales/crowdin/ko.yml
  100. 18
      modules/recaptcha/config/locales/crowdin/pl.yml
  101. Some files were not shown because too many files have changed in this diff Show More

@ -134,6 +134,8 @@ class AccountController < ApplicationController
end
self_registration!
call_hook :user_registered, { user: @user } if @user.persisted?
end
end

@ -33,6 +33,9 @@ module Concerns::RedirectAfterLogin
def redirect_after_login(user)
if user.first_login
user.update_attribute(:first_login, false)
call_hook :user_first_login, { user: user }
first_login_redirect
else
default_redirect

@ -52,9 +52,9 @@ module CustomFieldsHelper
tag = case field_format.try(:edit_as)
when 'date'
styled_text_field_tag(field_name, custom_value.value, id: field_id, class: '-augmented-datepicker', size: 10)
styled_text_field_tag(field_name, custom_value.value, id: field_id, class: '-augmented-datepicker', size: 10, container_class: '-slim')
when 'text'
styled_text_area_tag(field_name, custom_value.value, id: field_id, rows: 3)
styled_text_area_tag(field_name, custom_value.value, id: field_id, rows: 3, container_class: '-middle')
when 'bool'
hidden_tag = hidden_field_tag(field_name, '0')
checkbox_tag = styled_check_box_tag(field_name, '1', custom_value.typed_value, id: field_id)
@ -70,12 +70,12 @@ module CustomFieldsHelper
options = blank_option.html_safe + options_for_select(custom_field.possible_values_options(custom_value.customized), custom_value.value)
styled_select_tag(field_name, options, id: field_id)
styled_select_tag(field_name, options, id: field_id, container_class: '-middle')
else
styled_text_field_tag(field_name, custom_value.value, id: field_id)
styled_text_field_tag(field_name, custom_value.value, id: field_id, container_class: '-middle')
end
tag = content_tag :span, tag, lang: custom_field.name_locale
tag = content_tag :span, tag, lang: custom_field.name_locale, class: 'form--field-container'
custom_value.errors.empty? ?
tag :

@ -122,15 +122,21 @@ module ProjectsHelper
def allowed_filters(query)
query
.available_filters
.reject { |f| blacklisted_project_filter?(f) }
.select { |f| whitelisted_project_filter?(f) }
.sort_by(&:human_name)
end
def blacklisted_project_filter?(filter)
blacklist = [Queries::Projects::Filters::AncestorFilter]
blacklist << Queries::Filters::Shared::CustomFields::Base unless EnterpriseToken.allows_to?(:custom_fields_in_projects_list)
def whitelisted_project_filter?(filter)
whitelist = [
Queries::Projects::Filters::ActiveFilter,
Queries::Projects::Filters::CreatedAtFilter,
Queries::Projects::Filters::LatestActivityAtFilter,
Queries::Projects::Filters::NameAndIdentifierFilter,
Queries::Projects::Filters::TypeFilter
]
whitelist << Queries::Filters::Shared::CustomFields::Base if EnterpriseToken.allows_to?(:custom_fields_in_projects_list)
blacklist.detect { |clazz| filter.is_a? clazz }
whitelist.detect { |clazz| filter.is_a? clazz }
end
def no_projects_result_box_params

@ -8,7 +8,12 @@
:url => {:action => :update},
:html => {:method => :put} do |f|%>
<div class="form--field">
<%= f.text_area :text, :cols => 80, :rows => 5, label: t(:label_text), container_class: '-wide' %>
<%= f.text_area :text,
:cols => 80,
:rows => 5,
label: t(:label_text),
container_class: '-xxwide',
with_text_formatting: true %>
</div>
<div class="form--field">
<%= f.text_field :show_until, label: t('announcements.show_until'), container_class: '-xslim', class: '-augmented-datepicker' %>

@ -29,7 +29,19 @@ See docs/COPYRIGHT.rdoc for more details.
<%= error_messages_for 'color' %>
<%= toolbar title: (color.new_record? ? t('timelines.new_color') : t('timelines.edit_color')) %>
<%= toolbar title: (color.new_record? ? t('timelines.new_color') : t('timelines.edit_color')) do %>
<% if color.persisted? %>
<li class="toolbar-item">
<%= link_to color_path(color),
method: :delete,
data: { confirm: t('text_are_you_sure') },
class: "button -danger" do %>
<%= op_icon 'button--icon icon-delete' %>
<span class="button--text"><%= t :button_delete %></span>
<% end %>
</li>
<% end %>
<% end %>
<fieldset class="form--fieldset">
<legend class="form--fieldset-legend"><%= t('timelines.properties') %></legend>

@ -239,7 +239,7 @@ Redmine::MenuManager.map :admin_menu do |menu|
menu.push :announcements,
{ controller: '/announcements', action: 'edit' },
caption: 'Announcement',
caption: :label_announcement,
icon: 'icon2 icon-news'
menu.push :plugins,

@ -479,7 +479,7 @@ de:
invalid_values: "Ein Wert ist ungültig."
id_filter_required: "Ein \"Id\" Filter ist erforderlich."
project:
archived_ancestor: 'The project has an archived ancestor.'
archived_ancestor: 'Das Projekt hat einen archivierten Vorgänger.'
foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.'
attributes:
types:

@ -90,7 +90,7 @@ es:
concatenation:
single: 'o bien'
deprecations:
time_entries: "This time entries view is superseded by the 'Cost reports' module. This view now only supports exporting time entry information to csv. For interactive filtering, please activate the 'Cost reports' module in the project settings."
time_entries: "Esta vista de entradas de tiempo se ha reemplazado por el módulo “Informes de costes”. En este momento, esta vista solo permite exportar a CSV información de entradas de tiempo. Para el filtrado interactivo, active el módulo “Informes de costes“ en la configuración del proyecto."
global_search:
overwritten_tabs:
wiki_pages: "Wiki"
@ -481,8 +481,8 @@ es:
invalid_values: "El valor no es válido."
id_filter_required: "Se requiere el filtro 'id'."
project:
archived_ancestor: 'The project has an archived ancestor.'
foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.'
archived_ancestor: 'El proyecto tiene un antecesor archivado.'
foreign_wps_reference_version: 'Los paquetes de trabajo en los proyectos no descendientes hacen referencia a versiones del proyecto o a sus descendientes.'
attributes:
types:
in_use_by_work_packages: "todavia en uso por los paquetes de trabajo: %{types}"
@ -946,7 +946,7 @@ es:
enumeration_system_activity: "Actividad del sistema"
enumeration_reported_project_statuses: "Estatus del proyecto reportado"
error_auth_source_sso_failed: "El intento de inicio de sesión único (SSO) para el usuario “%{value}” falló"
error_can_not_archive_project: "This project cannot be archived: %{errors}"
error_can_not_archive_project: "Este proyecto no se puede archivar: %{errors}"
error_can_not_delete_entry: "No se puede eliminar la entrada"
error_can_not_delete_custom_field: "Imposible eliminar el campo seleccionado"
error_can_not_delete_type: "Este tipo contiene paquetes de trabajo y no se puede eliminar."
@ -955,7 +955,7 @@ es:
error_can_not_remove_role: "Este rol esta en uso y no puede ser eliminado"
error_can_not_reopen_work_package_on_closed_version: "No se puede volver a abrir un paquete de trabajo asignado a una versión cerrada"
error_can_not_find_all_resources: "No se encontraron todos los recursos relacionados con esta solicitud."
error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}"
error_can_not_unarchive_project: "Este proyecto no se puede recuperar: %{errors}"
error_check_user_and_role: "Por favor elige un usuario y un rol."
error_code: "Error %{code}"
error_cookie_missing: 'No se encuentra la cookie de OpenProject. Por favor asegúrese de que las cookies están habilitadas, ya que sin ellas esta aplicación no funcionará correctamente.'
@ -1031,7 +1031,7 @@ es:
general_text_yes: "sí"
general_text_No: "No"
general_text_Yes: "Sí"
general_text_true: "true"
general_text_true: "verdadero"
general_text_false: "falso"
gui_validation_error: "1 error"
gui_validation_error_plural: "errores %{count}"
@ -1526,7 +1526,7 @@ es:
label_used_by_types: "Utilizado por tipos"
label_used_in_projects: "Utilizado en proyectos"
label_user: "Usuario"
label_user_and_permission: "Users & Permissions"
label_user_and_permission: "Usuarios y permisos"
label_user_named: "Usuario %{name}"
label_user_activity: "Actividad de %{value} "
label_user_anonymous: "Anónimo"
@ -1539,7 +1539,7 @@ es:
label_user_new: "Nuevo usuario"
label_user_plural: "Usuarios"
label_user_search: "Búsqueda de usuario"
label_user_settings: "User settings"
label_user_settings: "Configuración de usuario"
label_version_new: "Nueva versión"
label_version_plural: "Versiones"
label_version_sharing_descendants: "Con subproyectos"
@ -1557,7 +1557,7 @@ es:
label_wiki_content_added: "Página wiki añadida"
label_wiki_content_updated: "Página wiki actualizada"
label_wiki_toc: "Tabla de contenidos"
label_wiki_toc_empty: "Table of Contents is empty as no headings are present."
label_wiki_toc_empty: "El índice está vacío porque no hay ningún encabezado."
label_wiki_dont_show_menu_item: "No mostrar esta página wiki en la navegación del proyecto"
label_wiki_edit: "Editar Wiki"
label_wiki_edit_plural: "Ediciones Wiki"
@ -1644,7 +1644,7 @@ es:
legacy_warning:
timeline: 'Esta macro de línea de tiempo heredada se ha quitado y ya no está disponible. Puede sustituir la función por una macro de tabla insertada.'
include_wiki_page:
removed: 'The macro does no longer exist.'
removed: 'La macro ya no existe.'
wiki_child_pages:
errors:
page_not_found: "No se encuentra la página wiki “%{name}”."
@ -1662,14 +1662,14 @@ es:
mail_body_lost_password: "Para cambiar su contraseña, haga clic en el siguiente enlace:"
mail_body_register: "Para activar su cuenta, haga clic en el siguiente enlace:"
mail_body_reminder: "%{count} paquete(s) de trabajo que le fueron asignados vencen en los próximos %{days}:"
mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:"
mail_body_group_reminder: "%{count} paquete(s) de trabajo asignado(s) al grupo “%{group}” vencerán en los próximos %{days} días:"
mail_body_wiki_content_added: "La página wiki de '%{id}' ha sido añadida por %{author}."
mail_body_wiki_content_updated: "La página wiki de '%{id}' ha sido actualizada por %{author}."
mail_subject_account_activation_request: "solicitud de activación de cuenta de %{value}"
mail_subject_lost_password: "Su contraseña %{value}"
mail_subject_register: "La activación de la cuenta %{value}"
mail_subject_reminder: "%{count} paquete(s) de trabajo pendientes en los siguientes %{days} dias"
mail_subject_group_reminder: "For group \"%{group}\" %{count} work package(s) due in the next %{days} days"
mail_subject_group_reminder: "Para el grupo “%{group}”, hay %{count} paquete(s) de trabajo que vencerá(n) en los próximos %{days} días"
mail_subject_wiki_content_added: "'%{id}' wiki página ha sido agregada"
mail_subject_wiki_content_updated: "'%{id}' wiki página ha sido actualizada"
mail_user_activation_limit_reached:
@ -2022,7 +2022,7 @@ es:
setting_feeds_limit: "Limite de contenido de feed"
setting_file_max_size_displayed: "Tamaño máximo de archivos de texto mostrado en linea"
setting_host_name: "Nombre de host"
setting_invitation_expiration_days: "Activation email expires after"
setting_invitation_expiration_days: "El correo electrónico de activación caduca después de"
setting_work_package_done_ratio: "Calcular la relacion de paquete de trabajo hecho con"
setting_work_package_done_ratio_field: "Usar el campo de paquete de trabajo"
setting_work_package_done_ratio_status: "Usar el estado del paquete de trabajo"
@ -2141,7 +2141,7 @@ es:
text_destroy_with_associated: "Hay objetos adicionales asociados a los paquetes de trabajo que van a ser eliminados. Esos objetos son de los siguientes tipos:"
text_destroy_what_to_do: "¿Qué quieres hacer?"
text_diff_truncated: "... Esta diferencia se truncó porque excede el tamaño máximo que puede visualizarse."
text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them."
text_email_delivery_not_configured: "No se ha configurado la entrega de correo electrónico y las notificaciones están deshabilitadas.\nConfigure el servidor SMTP en config/configuration.yml y reinicie la aplicación para habilitarlas."
text_enumeration_category_reassign_to: "Reasignarlos a este valor:"
text_enumeration_destroy_question: "%{count} objetos asignados a este valor."
text_file_repository_writable: "Directorio de adjuntos escribible"
@ -2242,7 +2242,7 @@ es:
edit_color: "Editar colores"
edit_thing: "Editar"
edit_timeline: "Edición del informe de tiempos %{timeline}"
delete_timeline: "Delete timeline report %{timeline}"
delete_timeline: "Eliminar el informe de línea de tiempo %{timeline}"
empty: "(vacío)"
enable_type_in_project: 'Habilitar tipo "%{type}"'
end: "Final"
@ -2259,8 +2259,8 @@ es:
compare_to_absolute: "El valor de la comparación absoluta "
planning_element_time_relative_one: "El comienzo para los paquetes de trabajo en un cierto plazo "
planning_element_time_relative_two: "Al final de los paquetes de trabajo en un cierto plazo "
planning_element_time_absolute_one: "The start for work packages in a certain timeframe "
planning_element_time_absolute_two: "The end for work packages in a certain timeframe "
planning_element_time_absolute_one: "El inicio de los paquetes de trabajo en un determinado período de tiempo "
planning_element_time_absolute_two: "La finalización de los paquetes de trabajo en un determinado período de tiempo "
sort:
sortation: "Ordenar por"
alphabet: "alfabeto"

@ -480,8 +480,8 @@ fr:
invalid_values: "Une valeur est invalide."
id_filter_required: "Un filtre sur l'id est requis."
project:
archived_ancestor: 'The project has an archived ancestor.'
foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.'
archived_ancestor: 'Le projet possède un ancêtre archivé.'
foreign_wps_reference_version: 'Les lots de travaux dans les projets non-descendants font référence aux versions du projet ou de ses descendants.'
attributes:
types:
in_use_by_work_packages: "toujours en cours d'utilisation par les lots de travaux : %{types}"
@ -945,7 +945,7 @@ fr:
enumeration_system_activity: "Activité du système"
enumeration_reported_project_statuses: "Statuts de projet signalés"
error_auth_source_sso_failed: "Single Sign-On (SSO) pour l’utilisateur '%{value}' a échoué"
error_can_not_archive_project: "This project cannot be archived: %{errors}"
error_can_not_archive_project: "Ce projet ne peut être archivé : %{errors}"
error_can_not_delete_entry: "Impossible de supprimer l’élément"
error_can_not_delete_custom_field: "Impossible de supprimer le champ personnalisé"
error_can_not_delete_type: "Ce type contient des Lots de Travaux et ne peut être supprimé."
@ -954,7 +954,7 @@ fr:
error_can_not_remove_role: "Ce rôle est utilisé et ne peut être supprimé."
error_can_not_reopen_work_package_on_closed_version: "Un lot de travaux assigné à une version fermée ne peut être ré-ouvert"
error_can_not_find_all_resources: "Impossible de trouver toutes les ressources liées à cette demande."
error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}"
error_can_not_unarchive_project: "Ce projet ne peut être désarchivé : %{errors}"
error_check_user_and_role: "Veuillez choisir un utilisateur et un rôle."
error_code: "Erreur %{code}"
error_cookie_missing: 'Le cookie OpenProject est manquant. Assurez-vous que les cookies sont activés, sans quoi cette application ne fonctionnera pas correctement.'
@ -1661,14 +1661,14 @@ fr:
mail_body_lost_password: "Pour changer votre mot de passe, cliquez sur le lien suivant:"
mail_body_register: "Pour activer votre compte, cliquez sur le lien suivant:"
mail_body_reminder: "%{count} lot(s) de travaux qui vous sont assignés arrivent à échéance dans les %{days} prochains jours:"
mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:"
mail_body_group_reminder: "%{count} lot(s) de travaux assigné(s) au groupe \"%{group}\" arrive(nt) à échéance dans %{days} jours :"
mail_body_wiki_content_added: "La page wiki '%{id}' a été ajouté par %{author}."
mail_body_wiki_content_updated: "La page wiki '%{id}' a été mise à jour par %{author}."
mail_subject_account_activation_request: "Requête pour l'activation du compte %{value}"
mail_subject_lost_password: "Votre mot de passe %{value}"
mail_subject_register: "Votre activation du compte %{value}"
mail_subject_reminder: "%{count} lot(s) de travaux à échéance dans les %{days} prochains jours"
mail_subject_group_reminder: "For group \"%{group}\" %{count} work package(s) due in the next %{days} days"
mail_subject_group_reminder: "Pour le groupe \"%{group}\", %{count} lot(s) de travaux arrive(nt) à échéance dans %{days} jours"
mail_subject_wiki_content_added: "Page wiki '%{id}' a été ajouté"
mail_subject_wiki_content_updated: "Page wiki '%{id}' a été mise à jour"
mail_user_activation_limit_reached:

@ -630,7 +630,7 @@ de:
no_results:
title: Keine Arbeitspakete anzuzeigen.
description: Es wurden entweder keine Arbeitspakete erzeugt oder alle Arbeitspakete wurden ausgefiltert.
limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering.
limited_results: Nur %{count} Arbeitspakete können im manuellen Sortiermodus angezeigt werden. Bitte reduzieren Sie die Ergebnisse durch Filtern.
property_groups:
details: "Details"
people: "Personen"

@ -20,7 +20,7 @@ es:
button_back_to_list_view: "Volver a la lista"
button_cancel: "Cancelar"
button_close: "Cerrar"
button_change_project: "Change project"
button_change_project: "Cambiar proyecto"
button_check_all: "Seleccionar Todos"
button_configure-form: "Configurar formulario"
button_confirm: "Confirmar"
@ -41,8 +41,8 @@ es:
button_open_details: "Abrir vista detallada"
button_close_details: "Cerrar vista detallada"
button_open_fullscreen: "Ver pantalla completa"
button_show_cards: "Show card view"
button_show_list: "Show list view"
button_show_cards: "Mostrar vista de tarjeta"
button_show_list: "Mostrar vista de lista"
button_quote: "Comentario"
button_save: "Guardar"
button_settings: "Configuración"
@ -52,7 +52,7 @@ es:
button_export-atom: "Descargar Atom"
calendar:
title: 'Calendario'
too_many: 'There are %{count} work packages in total, but only %{max} can be shown.'
too_many: 'Hay %{count} paquetes de trabajo en total, pero solo pueden mostrarse %{max}.'
card:
add_new: 'Añadir nueva tarjeta'
highlighting:
@ -63,22 +63,22 @@ es:
browser_error: "Su navegador no soporta copiar al portapapeles. Por favor, copie el texto seleccionado manualmente."
copied_successful: "¡Copiado correctamente en el portapapeles!"
chart:
type: 'Chart type'
axis_criteria: 'Axis criteria'
modal_title: 'Work package graph configuration'
type: 'Tipo de gráfico'
axis_criteria: 'Criterios de eje'
modal_title: 'Configuración del gráfico del paquete de trabajo'
types:
line: 'Line'
horizontal_bar: 'Horizontal bar'
bar: 'Bar'
pie: 'Pie'
doughnut: 'Doughnut'
radar: 'Radar'
polar_area: 'Polar area'
line: 'Línea'
horizontal_bar: 'Barra horizontal'
bar: 'Barra'
pie: 'Circular'
doughnut: 'Anillos'
radar: 'Radial'
polar_area: 'Área polar'
tabs:
graph_settings: 'General'
dataset: 'Dataset %{number}'
dataset: 'Conjunto de datos %{number}'
errors:
could_not_load: 'The data to display the graph could not be loaded. The necessary permissions may be lacking.'
could_not_load: 'No se pueden cargar los datos necesarios para mostrar el gráfico. Puede que falten los permisos necesarios.'
description_available_columns: "Columnas disponibles"
description_current_position: "Usted está aquí: "
description_select_work_package: "Seleccione el paquete de trabajo #%{id}"
@ -138,7 +138,7 @@ es:
drag_to_activate: "Arrastre campos desde aquí para activarlos"
add_group: "Agregar grupo de atributos"
add_table: "Agregar tabla de paquetes de trabajo relacionados"
edit_query: 'Edit query'
edit_query: 'Editar consulta'
new_group: 'Nuevo grupo'
reset_to_defaults: 'Restablecer valores predeterminados'
custom_actions:
@ -295,7 +295,7 @@ es:
label_total_progress: "Progreso total: %{percent}%"
label_total_amount: "Total: %{amount}"
label_updated_on: "actualizado el"
label_value_derived_from_children: "(value derived from children)"
label_value_derived_from_children: "(valor derivado del elemento secundario)"
label_warning: "Alerta"
label_work_package: "Paquete de trabajo"
label_work_package_plural: "Paquetes de trabajo"
@ -331,7 +331,7 @@ es:
label_wait: "Por favor espere para la configuración..."
label_upload_counter: "%{done} de %{count} archivos terminados"
label_validation_error: "El paquete de trabajo no puede ser guardado debido a los errores siguientes:"
label_view_has_changed: "This view has unsaved changes. Click to save them."
label_view_has_changed: "Esta vista tiene cambios sin guardar. Haga clic para guardarlos."
help_texts:
show_modal: 'Mostrar entrada de texto de ayuda para atributo'
onboarding:
@ -444,8 +444,8 @@ es:
set_parent: "Establecer elemento primario"
change_parent: "Cambiar padre"
remove_parent: "Eliminar padre"
hierarchy_indent: "Indent hierarchy"
hierarchy_outdent: "Outdent hierarchy"
hierarchy_indent: "Aumentar sangría de jerarquía"
hierarchy_outdent: "Anular sangría de jerarquía"
group_by_wp_type: "Agrupar por tipo de paquete de trabajo"
group_by_relation_type: "Grupo por tipo de relación"
add_parent: "Añadir padre existente"
@ -573,7 +573,7 @@ es:
image: "Imagen"
work_packages:
bulk_actions:
move: 'Bulk change of project'
move: 'Cambio masivo del proyecto'
edit: 'Edición en masa'
copy: 'Copia en masa'
delete: 'Eliminación en masa'
@ -605,7 +605,7 @@ es:
message_successful_show_in_fullscreen: "Haga clic aquí para abrir este paquete de trabajo en la vista de pantalla completa."
message_view_spent_time: "Mostrar el tiempo invertido en este paquete de trabajo"
message_work_package_read_only: "El paquete de trabajo está bloqueado en este estado. Excepto el estado, ningún otro atributo se puede modificar."
message_work_package_status_blocked: "Work package status is not writable due to closed status and closed version being assigned."
message_work_package_status_blocked: "El estado del paquete de trabajo no permite la escritura porque se asignarán el estado cerrado y la versión cerrada."
no_value: "Sin valor"
placeholder_filter_by_text: "Asunto, descripción, comentarios, ..."
inline_create:
@ -631,7 +631,7 @@ es:
no_results:
title: No hay paquetes de trabajo para mostrar.
description: O bien no se han creado o se filtran todos los paquetes de trabajo.
limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering.
limited_results: En el modo de ordenación manual, solo puede mostrarse un máximo de %{count} paquetes de trabajo. Filtre para reducir el número de resultados.
property_groups:
details: "Detalles"
people: "Participantes"
@ -691,9 +691,9 @@ es:
confirm_edit_cancel: "¿Está seguro de que quiere cancelar la edición del nombre de esta vista? El título volverá a establecerse en el valor anterior."
click_to_edit_query_name: "Haga clic para editar el título de esta vista."
rename_query_placeholder: "Nombre de la vista"
star_text: "Mark this view as favorite and add to the saved views sidebar on the left."
star_text: "Marque esta vista como favorita y agréguela a la barra lateral de vistas guardadas de la izquierda."
public_text: >
Publish this view, allowing other users to access your view. Users with the 'Manage public views' permission can modify or remove public query. This does not affect the visibility of work package results in that view and depending on their permissions, users may see different results.
Publique esta vista para que otros usuarios puedan acceder a esta. Los usuarios con el permiso “Administrar vistas públicas” puede modificar o quitar consultas públicas. Esto no afecta a la visibilidad de los resultados de paquetes de trabajo en esa vista y, según sus permisos, los usuarios pueden ver resultados distintos.
errors:
unretrievable_query: "No se puede recuperar la vista de la URL"
not_found: "No existe la vista"
@ -728,10 +728,10 @@ es:
priority: 'Prioridad'
type: 'Tipo'
sorting_mode:
description: 'Chose the mode to sort your Work packages:'
automatic: 'Automatic'
manually: 'Manually'
warning: 'You will lose your previous sorting when activating the automatic sorting mode.'
description: 'Seleccione el modo de ordenación de los paquetes de trabajo:'
automatic: 'Automático'
manually: 'Manual'
warning: 'Al activar el modo de ordenación automática, se perderá la ordenación actual.'
columns_help_text: "Use los datos anteriores para agregar o quitar columnas de la vista de tabla. Puede arrastrar y colocar las columnas para cambiar el orden."
upsale:
attribute_highlighting: '¿Necesita que algunos paquetes de trabajo destaquen del resto?'
@ -841,6 +841,6 @@ es:
project_and_subprojects: "y todos los subproyectos"
search_for: "Búsqueda por"
views:
card: 'Cards'
list: 'Table'
card: 'Tarjetas'
list: 'Tabla'
timeline: 'Gantt'

@ -73,7 +73,7 @@ fr:
pie: 'Camembert'
doughnut: 'Anneau'
radar: 'Radar'
polar_area: 'Polar area'
polar_area: 'Aire polaire'
tabs:
graph_settings: 'Général'
dataset: 'Ensemble de données %{number}%'
@ -444,8 +444,8 @@ fr:
set_parent: "Définir parent"
change_parent: "Changer le parent"
remove_parent: "Supprimer le parent"
hierarchy_indent: "Indent hierarchy"
hierarchy_outdent: "Outdent hierarchy"
hierarchy_indent: "Indentation de la hiérarchie"
hierarchy_outdent: "Supprimer l'indentation de la hiérarchie"
group_by_wp_type: "Grouper par type de lot de travaux"
group_by_relation_type: "Grouper par type de relation"
add_parent: "Ajouter un parent existant"
@ -631,7 +631,7 @@ fr:
no_results:
title: Aucun lot de travaux à afficher.
description: Soit aucun n'a été créé, soit tous les lots de travaux sont filtrés.
limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering.
limited_results: Seuls %{count} lots de travaux peuvent être affichés en mode de tri manuel. Veuillez réduire les résultats en filtrant.
property_groups:
details: "Détails"
people: "Participants"

@ -63,7 +63,7 @@ ko:
browser_error: "브라우저를 클립보드에 복사를 지원 하지 않습니다. 텍스트를 타이핑하여 복사하십시오."
copied_successful: "클립보드에 성공적으로 복사됨"
chart:
type: '차트 종류'
type: '차트 유형'
axis_criteria: '축 기준'
modal_title: '작업 패키지 그래프 구성'
types:
@ -295,7 +295,7 @@ ko:
label_total_progress: "%{percent}% 진행"
label_total_amount: "합계: %{amount}"
label_updated_on: "업데이트 :"
label_value_derived_from_children: "(value derived from children)"
label_value_derived_from_children: "(자식에서 파생된 값)"
label_warning: "경고"
label_work_package: "작업 패키지"
label_work_package_plural: "작업 패키지"
@ -571,7 +571,7 @@ ko:
image: "이미지"
work_packages:
bulk_actions:
move: 'Bulk change of project'
move: '프로젝트의 일괄 변경'
edit: '대량 편집'
copy: '대량 복사'
delete: '대량 삭제'
@ -603,7 +603,7 @@ ko:
message_successful_show_in_fullscreen: "전체 화면 보기에서 이 작업 패키지를 열려면 여기를 클릭하세요."
message_view_spent_time: "이 작업 패키지에 대해 소비한 시간 표시"
message_work_package_read_only: "작업 패키지가 이 상태로 잠겨 있습니다. 상태 이외의 특성은 변경할 수 없습니다."
message_work_package_status_blocked: "Work package status is not writable due to closed status and closed version being assigned."
message_work_package_status_blocked: "닫힌 상태이고 닫힌 버전이 할당되었기 때문에 작업 패키지 상태를 쓸 수 없습니다."
no_value: "값 없음"
placeholder_filter_by_text: "제목, 설명, 코멘트, ..."
inline_create:
@ -629,7 +629,7 @@ ko:
no_results:
title: 표시할 작업 패키지가 없습니다.
description: 만든 작업 패키지가 없거나 모든 작업 패키지가 필터링에서 제외되었습니다.
limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering.
limited_results: 수동 정렬 모드에서는 %{count}개 작업 패키지만 표시할 수 있습니다. 필터링으로 결과를 줄이십시오.
property_groups:
details: "세부 정보"
people: "사용자"
@ -689,9 +689,9 @@ ko:
confirm_edit_cancel: "이 보기 이름 편집을 취소하시겠습니까? 제목이 이전 값으로 다시 설정됩니다."
click_to_edit_query_name: "이 보기의 제목을 편집하려면 클릭하세요."
rename_query_placeholder: "이 보기의 이름"
star_text: "Mark this view as favorite and add to the saved views sidebar on the left."
star_text: "이 보기를 즐겨찾기로 표시하고 왼쪽의 저장된 보기 사이드바에 추가하십시오."
public_text: >
Publish this view, allowing other users to access your view. Users with the 'Manage public views' permission can modify or remove public query. This does not affect the visibility of work package results in that view and depending on their permissions, users may see different results.
다른 사용자가 이 보기에 액세스할 수 있도록 하려면 이 보기를 게시하십시오. "공용 보기 관리" 권한을 가진 사용자가 공용 쿼리를 수정 또는 제거할 수 있습니다. 이는 해당 보기에서 작업 패키지 결과의 표시 여부에 영향을 주지 않기 때문에 사용자의 권한에 따라 다른 결과가 표시될 수 있습니다.
errors:
unretrievable_query: "URL에서 보기를 검색할 수 없음"
not_found: "해당 보기가 없습니다."
@ -726,10 +726,10 @@ ko:
priority: '우선 순위'
type: '타입'
sorting_mode:
description: 'Chose the mode to sort your Work packages:'
automatic: 'Automatic'
manually: 'Manually'
warning: 'You will lose your previous sorting when activating the automatic sorting mode.'
description: '작업 패키지를 정렬하기 위한 모드 선택:'
automatic: '자동'
manually: '수동'
warning: '자동 정렬 모드를 활성화하면 이전 정렬이 손실됩니다.'
columns_help_text: "위 입력을 사용하여 테이블 보기에 열을 추가하거나 제거하세요. 열을 끌어다 놓아 순서를 바꿀 수 있습니다."
upsale:
attribute_highlighting: '나머지 작업 중에 확연히 두드러지는 특정 작업 패키지가 필요합니까?'
@ -821,7 +821,7 @@ ko:
child_work_packages:
other: "%{count}개의 작업 패키지 자식"
hour:
other: "%{count} h"
other: "%{count}시간"
zen_mode:
button_activate: 'Zen 모드 활성화'
button_deactivate: 'Zen 모드 비활성화'
@ -836,6 +836,6 @@ ko:
project_and_subprojects: "그리고 모든 하위 프로젝트"
search_for: "검색:"
views:
card: 'Cards'
list: 'Table'
card: '카드'
list: '테이블'
timeline: 'Gantt'

@ -295,7 +295,7 @@ pl:
label_total_progress: "%{percent}% Całkowitego postępu"
label_total_amount: "Łącznie: %{amount}"
label_updated_on: "zaktualizowany"
label_value_derived_from_children: "(value derived from children)"
label_value_derived_from_children: "(wartość wyprowadzana z elementów podrzędnych)"
label_warning: "Ostrzeżenie"
label_work_package: "Zadanie"
label_work_package_plural: "Pakiety robocze"
@ -609,7 +609,7 @@ pl:
message_successful_show_in_fullscreen: "Kliknij tutaj, aby otworzyć ten pakiet prac w trybie pełnoekranowym."
message_view_spent_time: "Pokaż spędzony czas dla tych zadań"
message_work_package_read_only: "Pakiet roboczy jest zablokowany w tym stanie. Nie można zmienić żadnego atrybutu innego niż stan."
message_work_package_status_blocked: "Work package status is not writable due to closed status and closed version being assigned."
message_work_package_status_blocked: "Nie można zapisać stanu pakietu roboczego ze względu na jego zamknięty stan i przypisaną mu zamkniętą wersję."
no_value: "Brak wartości"
placeholder_filter_by_text: "Przedmiot, opis, komentarze, ..."
inline_create:
@ -735,7 +735,7 @@ pl:
description: 'Wybierz tryb sortowania pakietów roboczych:'
automatic: 'Automatycznie'
manually: 'Ręcznie'
warning: 'You will lose your previous sorting when activating the automatic sorting mode.'
warning: 'Wskutek aktywacji trybu automatycznego sortowania utracisz poprzednie sortowanie.'
columns_help_text: "Użyj powyższych danych wejściowych, aby dodać lub usunąć kolumny w widoku tabeli. Możesz przeciągać i upuszczać kolumny, aby zmienić ich kolejność."
upsale:
attribute_highlighting: 'Czy określone pakiety robocze trzeba wyróżnić?'
@ -851,6 +851,6 @@ pl:
project_and_subprojects: "i wszystkie podprojekty"
search_for: "Szukaj"
views:
card: 'Cards'
list: 'Table'
card: 'Karty'
list: 'Tabela'
timeline: 'Wykres Gantta'

@ -41,8 +41,8 @@ pt:
button_open_details: "Abrir visão detalhada"
button_close_details: "Fechar visão detalhada"
button_open_fullscreen: "Abrir visão ecrã completo"
button_show_cards: "Mostrar vista de cartão"
button_show_list: "Mostrar a vista de lista"
button_show_cards: "Mostrar vista em cartão"
button_show_list: "Mostrar vista em lista"
button_quote: "Citar"
button_save: "Guardar"
button_settings: "Definições"
@ -78,7 +78,7 @@ pt:
graph_settings: 'Geral'
dataset: 'Dataset %{number}'
errors:
could_not_load: 'Os dados para exibir o gráfico não puderam ser carregados. As permissões necessárias podem estar em falta.'
could_not_load: 'Não foi possível carregar os dados para exibir o gráfico. Podem estar em falta as permissões necessárias.'
description_available_columns: "Colunas disponíveis"
description_current_position: "Você está aqui: "
description_select_work_package: "Selecionar pacote de trabalho #%{id}"

@ -443,8 +443,8 @@ ru:
set_parent: "Установить родителя"
change_parent: "Сменить родителя"
remove_parent: "Удалить родителя"
hierarchy_indent: "Indent hierarchy"
hierarchy_outdent: "Outdent hierarchy"
hierarchy_indent: "Иерархия с отступом"
hierarchy_outdent: "Иерархия с выступом"
group_by_wp_type: "Группировать по типу комплекса работ"
group_by_relation_type: "Группировать по типу связи"
add_parent: "Добавить существующего родителя"
@ -634,7 +634,7 @@ ru:
no_results:
title: Нет пакетов работ для показа.
description: Ничего не найдено.
limited_results: Only %{count} work packages can be shown in manual sorting mode. Please reduce the results by filtering.
limited_results: В ручной сортировке можно отобразить только %{count} рабочих пакетов. Пожалуйста, уменьшите результаты фильтрацией.
property_groups:
details: "Детали"
people: "Люди"

@ -69,7 +69,7 @@ zh-CN:
types:
line: '线图'
horizontal_bar: '水平条形图'
bar: '条形'
bar: '条形'
pie: '饼图'
doughnut: '圆环图'
radar: '雷达图'
@ -78,7 +78,7 @@ zh-CN:
graph_settings: '通用'
dataset: '数据集 %{number}'
errors:
could_not_load: '无法加载用于显示图的数据。可能缺少必要的权限。'
could_not_load: '无法加载用于显示图的数据。可能缺少必要的权限。'
description_available_columns: "可用的列"
description_current_position: "您现在的位置:"
description_select_work_package: "选择工作包 #%{id}"
@ -295,7 +295,7 @@ zh-CN:
label_total_progress: "%{percent} %总进度"
label_total_amount: "总计: %{amount}"
label_updated_on: "更新于"
label_value_derived_from_children: "(value derived from children)"
label_value_derived_from_children: "(来自子项的值)"
label_warning: "警告"
label_work_package: "工作包"
label_work_package_plural: "工作包"
@ -331,7 +331,7 @@ zh-CN:
label_wait: "请等待配置..."
label_upload_counter: "%{count} 个中的 %{done} 个文件已完成"
label_validation_error: "由于下列错误,无法保存工作包:"
label_view_has_changed: "此视图有未保存的更。单击以保存这些更改。"
label_view_has_changed: "此视图有未保存的更。单击以保存。"
help_texts:
show_modal: '显示属性帮助文本项'
onboarding:
@ -603,7 +603,7 @@ zh-CN:
message_successful_show_in_fullscreen: "单击此处以全屏视图打开此工作包。"
message_view_spent_time: "显示这个工作包所花费的时间"
message_work_package_read_only: "工作包被锁定在此状态。除状态外,其他属性均不可更改。"
message_work_package_status_blocked: "Work package status is not writable due to closed status and closed version being assigned."
message_work_package_status_blocked: "由于处于关闭状态并且分配了关闭版本,因此工作包状态不可写。"
no_value: "无值"
placeholder_filter_by_text: "主题, 描述, 评论,..。"
inline_create:
@ -689,9 +689,9 @@ zh-CN:
confirm_edit_cancel: "确定要取消编辑此视图的名称吗?标题将重置为上一个值。"
click_to_edit_query_name: "单击可以编辑此视图的标题。"
rename_query_placeholder: "此视图的名称"
star_text: "将该视图标记为收藏夹,并添加到左侧的已保存视图侧边栏中。"
star_text: "将该视图标记为收藏项,并添加到左侧的已保存视图边栏中。"
public_text: >
发布此视图,以允许其他用户访问您的视图。具有“管理公共视图”权限的用户可以修改或除公共查询。这不会影响工作包结果在该视图中的可见性,并且用户可能会看到不同的结果,具体取决于他们的权限。
发布此视图,以允许其他用户访问您的视图。具有“管理公共视图”权限的用户可以修改或除公共查询。这不会影响工作包结果在该视图中的可见性,并且用户可能会看到不同的结果,具体取决于他们的权限。
errors:
unretrievable_query: "无法从 URL 检索视图"
not_found: "无此视图"
@ -821,7 +821,7 @@ zh-CN:
child_work_packages:
other: "%{count} 子工作包"
hour:
other: "%{count} h"
other: "%{count} 小时"
zen_mode:
button_activate: '激活 zen 模式'
button_deactivate: '取消激活 zen 模式'

@ -268,7 +268,7 @@ ko:
account: "계정"
attr_firstname: "성 속성"
attr_lastname: "이름 속성"
attr_login: "Username attribute"
attr_login: "사용자 이름 특성"
attr_mail: "이메일 속성"
base_dn: "기본 DN"
host: "호스트"
@ -322,7 +322,7 @@ ko:
latest_activity_at: "다음의 최근 활동"
parent: "하위 프로젝트"
queries: "쿼리"
types: "종류"
types: "유형"
versions: "버전"
work_packages: "작업 패키지"
query:
@ -479,8 +479,8 @@ ko:
invalid_values: "유효하지 않은 값입니다."
id_filter_required: "'id' 필터가 필요합니다."
project:
archived_ancestor: 'The project has an archived ancestor.'
foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.'
archived_ancestor: '이 프로젝트에는 보관된 상위 항목이 있습니다.'
foreign_wps_reference_version: '하위가 아닌 프로젝트의 작업 패키지는 해당 프로젝트 또는 하위 프로젝트의 버전을 참조합니다.'
attributes:
types:
in_use_by_work_packages: "아직 작업 패키지에 사용됨: %{types}"
@ -640,7 +640,7 @@ ko:
is_public: "공용"
issue: "작업 패키지"
lastname: "성"
login: "Username"
login: "사용자 이름"
mail: "이메일"
name: "이름"
password: "암호"
@ -929,7 +929,7 @@ ko:
enumeration_system_activity: "시스템 작업"
enumeration_reported_project_statuses: "보고된 프로젝트 상태"
error_auth_source_sso_failed: "사용자 '%{value}'에 대한 Single Sign-On(SSO) 실패"
error_can_not_archive_project: "This project cannot be archived: %{errors}"
error_can_not_archive_project: "이 프로젝트는 보관할 수 없습니다: %{errors}"
error_can_not_delete_entry: "항목을 삭제할 수 없습니다."
error_can_not_delete_custom_field: "사용자 지정 필드를 삭제할 수 없습니다."
error_can_not_delete_type: "이 유형에는 작업 패키지가 포함되어 있으며 삭제할 수 없습니다."
@ -938,7 +938,7 @@ ko:
error_can_not_remove_role: "이 역할은 현재 사용 중이며 삭제할 수 없습니다."
error_can_not_reopen_work_package_on_closed_version: "닫힌 버전에 할당된 작업 패키지는 다시 열 수 없습니다."
error_can_not_find_all_resources: "이 요청 관련 리소스 일부를 찾을 수 없습니다."
error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}"
error_can_not_unarchive_project: "이 프로젝트를 보관 취소할 수 없습니다: %{errors}"
error_check_user_and_role: "사용자 및 역할을 선택하세요."
error_code: "오류 %{code}"
error_cookie_missing: 'OpenProject 쿠키가 없습니다. 이 응용 프로그램은 쿠키 없이 제대로 작동하지 않으므로, 쿠키를 활성화해야 합니다.'
@ -1498,7 +1498,7 @@ ko:
label_topic_plural: "항목"
label_total: "합계"
label_type_new: "새 유형"
label_type_plural: "종류"
label_type_plural: "유형"
label_ui: "사용자 인터페이스"
label_update_work_package_done_ratios: "작업 패키지 완료 비율 업데이트"
label_updated_time: "%{value} 전에 업데이트됨"
@ -1641,14 +1641,14 @@ ko:
mail_body_lost_password: "암호를 변경하려면 다음 링크를 클릭하세요."
mail_body_register: "계정을 활성화하려면 링크를 클릭하세요."
mail_body_reminder: "사용자에게 할당된 %{count} 작업 패키지가 다음 %{days}일 후 만료됩니다."
mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:"
mail_body_group_reminder: "\"%{group}\" 그룹에 할당된 %{count}개 작업 패키지가 향후 %{days}일 후 만료됩니다."
mail_body_wiki_content_added: "%{author}이(가) '%{id}' 위키 페이지를 추가했습니다."
mail_body_wiki_content_updated: "%{author}이(가) '%{id}' 위키 페이지를 업데이트했습니다."
mail_subject_account_activation_request: "%{value} 계정 활성화 요청"
mail_subject_lost_password: "%{value} 암호"
mail_subject_register: "%{value} 계정 활성화"
mail_subject_reminder: "다음 %{days}일 후 만료되는 %{count} 작업 패키지"
mail_subject_group_reminder: "For group \"%{group}\" %{count} work package(s) due in the next %{days} days"
mail_subject_group_reminder: "\"%{group}\" 그룹에 대한 향후 %{days}일 후 만료되는 %{count}개 작업 패키지"
mail_subject_wiki_content_added: "'%{id}' 위키 페이지가 추가되었습니다."
mail_subject_wiki_content_updated: "'%{id}' 위키 페이지가 업데이트되었습니다."
mail_user_activation_limit_reached:

@ -272,7 +272,7 @@ pl:
account: "Konto"
attr_firstname: "Atrybut imię"
attr_lastname: "Atrybut nazwiska"
attr_login: "Username attribute"
attr_login: "Atrybut nazwy użytkownika"
attr_mail: "Atrybut adresu e-mail"
base_dn: "Bazowa nazwa wyróżniająca"
host: "Host"
@ -483,8 +483,8 @@ pl:
invalid_values: "Wartość jest nieprawidłowa."
id_filter_required: "Filtr 'id' jest wymagany."
project:
archived_ancestor: 'The project has an archived ancestor.'
foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.'
archived_ancestor: 'Projekt ma zarchiwizowanego przodka.'
foreign_wps_reference_version: 'Pakiety robocze w projektach innych niż wersje referencyjne projektów potomnych projektu lub jego projekty potomne.'
attributes:
types:
in_use_by_work_packages: "nadal w użyciu przez Zestawy zadań: %{types}"
@ -653,7 +653,7 @@ pl:
is_public: "Publiczny"
issue: "Zadanie"
lastname: "Nazwisko"
login: "Username"
login: "Nazwa użytkownika"
mail: "Adres e-mail"
name: "Nazwa"
password: "Hasło"
@ -978,7 +978,7 @@ pl:
enumeration_system_activity: "Aktywność systemu"
enumeration_reported_project_statuses: "Status zgłoszonego projektu"
error_auth_source_sso_failed: "Pojedyncze logowanie (SSO) dla użytkownika '%{value}' nie powiodło się"
error_can_not_archive_project: "This project cannot be archived: %{errors}"
error_can_not_archive_project: "Tego projektu nie można zarchiwizować: %{errors}"
error_can_not_delete_entry: "Nie można usunąć wpisu"
error_can_not_delete_custom_field: "Nie można usunąć pola niestandardowego"
error_can_not_delete_type: "Ten typ zawiera pakiety robocze i nie może zostać usunięty."
@ -987,7 +987,7 @@ pl:
error_can_not_remove_role: "Ta Rola jest używana i nie można jej usunąć."
error_can_not_reopen_work_package_on_closed_version: "Nie można otworzyć pakietu roboczego przypisanego do zamkniętej wersji"
error_can_not_find_all_resources: "Nie można znaleźć wszystkich zasobów związanych z tym żądaniem."
error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}"
error_can_not_unarchive_project: "Nie można cofnąć archiwizacji tego projektu: %{errors}"
error_check_user_and_role: "Wybierz użytkownika i rolę."
error_code: "Błąd %{code}"
error_cookie_missing: 'Brakuje pliku cookie OpenProject. Upewnij się, że obsługa plików cookie jest włączona, ponieważ bez tego aplikacja nie będzie funkcjonować prawidłowo.'
@ -1057,7 +1057,7 @@ pl:
general_csv_encoding: "UTF-8"
general_csv_separator: "."
general_first_day_of_week: "7"
general_lang_name: "Angielski"
general_lang_name: "Polski"
general_pdf_encoding: "ISO-8859-2"
general_text_no: "nie"
general_text_yes: "tak"
@ -1702,14 +1702,14 @@ pl:
mail_body_lost_password: "Aby zmienić hasło, kliknij na poniższy link:"
mail_body_register: "Aby aktywować swoje konto, kliknij na poniższy link:"
mail_body_reminder: "Termin wykonania %{count} pakietów roboczych przypisanych do Ciebie kończy się w ciągu %{days} dni:"
mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:"
mail_body_group_reminder: "Pakiety robocze (%{count}) przypisane do grupy \"%{group}\" mają termin w ciągu następnych %{days} dni:"
mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}."
mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}."
mail_subject_account_activation_request: "%{value} account activation request"
mail_subject_lost_password: "Twoje hasło do %{value}"
mail_subject_register: "Your %{value} account activation"
mail_subject_reminder: "Termin wykonania %{count} pakietów roboczych kończy się w ciągu %{days} dni"
mail_subject_group_reminder: "For group \"%{group}\" %{count} work package(s) due in the next %{days} days"
mail_subject_group_reminder: "W grupie \"%{group}\" są pakiety robocze (%{count}) z terminami w ciągu następnych %{days} dni"
mail_subject_wiki_content_added: "'%{id}' wiki page has been added"
mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
mail_user_activation_limit_reached:

@ -122,7 +122,7 @@ pt:
no_results_title_text: Atualmente, não existem atividades disponíveis.
forums:
no_results_title_text: Atualmente, não existem fóruns para o projeto.
no_results_content_text: Criar novo fórum
no_results_content_text: Criar um novo fórum
categories:
no_results_title_text: Atualmente, não existem categorias de pacote de trabalho.
no_results_content_text: Criar uma nova categoria de pacote de trabalho
@ -974,8 +974,8 @@ pt:
error_work_package_done_ratios_not_updated: "Percentagens de progresso do pacote de trabalho não foram atualizadas."
error_work_package_not_found_in_project: "A tarefa não foi encontrada ou não pertence a este projecto"
error_must_be_project_member: "deve ser membro do projeto"
error_migrations_are_pending: "Sua instalação do OpenProject tem migrações de banco de dados pendentes. Você provavelmente esqueceu de executar as migrações depois da sua última atualização. Por favor, verifique o guia de atualização para atualizar sua instalação corretamente."
error_migrations_visit_upgrade_guides: "Por favor, visite a nossa documentação do guia de atualização"
error_migrations_are_pending: "A sua instalação do OpenProject tem migrações pendentes da base de dados pendentes. Provavelmente esqueceu-se de fazer as migrações após a última atualização. Por favor, verifique o guia de atualização, de forma a atualizar a sua instalação corretamente."
error_migrations_visit_upgrade_guides: "Visite a nossa documentação do guia de atualização"
error_no_default_work_package_status: "Não está definido um estado padrão para os pacotes de trabalho. Verifique a sua configuração (dirija-se a \"Administração -> Estados de pacotes de trabalho\")."
error_no_type_in_project: "Nenhum tipo está associado a este projecto. Por favor, verifique as configurações do projeto."
error_omniauth_registration_timed_out: "Esgotou-se o registo através de um provedor de autenticação externa. Por favor, tente novamente."
@ -1398,7 +1398,7 @@ pt:
label_planning: "Planeamento"
label_please_login: "Por favor inicie sessão"
label_plugins: "Plugins"
label_modules_and_plugins: "Módulos e Complementos"
label_modules_and_plugins: "Módulos e Plugins"
label_precedes: "precede"
label_preferences: "Preferências"
label_preview: "Pré visualizar"
@ -1557,7 +1557,7 @@ pt:
label_wiki_content_added: "Página wiki adicionada"
label_wiki_content_updated: "Página wiki atualizada"
label_wiki_toc: "Tabela de conteúdos"
label_wiki_toc_empty: "A Tabela de Conteúdo está vazia, pois nenhum cabeçalho está presente."
label_wiki_toc_empty: "A Tabela de Conteúdo está vazia, pois não está presente nenhum cabeçalho."
label_wiki_dont_show_menu_item: "Não mostrar esta página wiki na navegação do projecto"
label_wiki_edit: "Editar wiki"
label_wiki_edit_plural: "Edições de wiki"
@ -2375,7 +2375,7 @@ pt:
Envia outra mensagem de correio eletrónico de convite com um novo token, caso o antigo tenha expirado ou o utilizador não tenha recebido a mensagem original. Também pode ser utilizado para utilizadores ativos que escolham um novo método de autenticação. Quando usado com utilizadores ativos, o seu estado passará para "convidado".
tooltip:
setting_email_login: >
Se for ativado, o utilizador será incapaz de selecionar o nome de utilizador durante o registo. Em vez disso, deverá utilizar o seuemail como início de sessão. No entanto, um administrador poderá ainda alterar o início de sessão separadamente.
Se estiver ativado, o utilizador não poderá selecionar o nome de utilizador durante o registo. Em vez disso, deverá utilizar o seu email como início de sessão. No entanto, um administrador ainda poderá alterar o início de sessão separadamente.
queries:
apply_filter: Aplicar filtro pré-configurado
top_menu:

@ -483,8 +483,8 @@ ru:
invalid_values: "Недопустимое значение."
id_filter_required: "Требуется фильтр по 'Id'."
project:
archived_ancestor: 'The project has an archived ancestor.'
foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.'
archived_ancestor: 'В проекте есть архивированный предок.'
foreign_wps_reference_version: 'Комплексы работ в проектах, не расположенных по убыванию, ссылаются на версии проекта или его производных.'
attributes:
types:
in_use_by_work_packages: "всё ещё используются в пакетах работ: %{types}"
@ -978,7 +978,7 @@ ru:
enumeration_system_activity: "Активность системы"
enumeration_reported_project_statuses: "Перечень отчетов о статусах проекта"
error_auth_source_sso_failed: "Сбой единого входа (SSO) для пользователя «%{value}»"
error_can_not_archive_project: "This project cannot be archived: %{errors}"
error_can_not_archive_project: "Этот проект невозможно заархивировать: %{errors}"
error_can_not_delete_entry: "Не удается удалить содержимое"
error_can_not_delete_custom_field: "Не удается удалить настраиваемое поле"
error_can_not_delete_type: "Этот тип содержит пакет работ и не может быть удален."
@ -987,7 +987,7 @@ ru:
error_can_not_remove_role: "Эта роль используется и не может быть удалена."
error_can_not_reopen_work_package_on_closed_version: "Пакет работ закрытого этапа проекта не может быть открыт заново"
error_can_not_find_all_resources: "Не удалось найти все связанные с этим запросом ресурсы."
error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}"
error_can_not_unarchive_project: "Этот проект невозможно разархивировать: %{errors}"
error_check_user_and_role: "Пожалуйста, выберите пользователя и роль."
error_code: "Ошибка %{code}"
error_cookie_missing: 'Отсутствуют cookie OpenProject. Пожалуйста, убедитесь, что Cookie разрешены. Без них приложение не будет функционировать должным образом.'
@ -1589,7 +1589,7 @@ ru:
label_wiki_content_added: "Wiki-страница добавлена"
label_wiki_content_updated: "Wiki-страница обновлена"
label_wiki_toc: "Содержание"
label_wiki_toc_empty: "Table of Contents is empty as no headings are present."
label_wiki_toc_empty: "Содержание пусто, так как нет заголовков."
label_wiki_dont_show_menu_item: "Не показывать эту Wiki-страницу в навигации по проектам"
label_wiki_edit: "Редактировать Wiki"
label_wiki_edit_plural: "Wiki редактируется"
@ -1702,14 +1702,14 @@ ru:
mail_body_lost_password: "Чтобы изменить пароль, щёлкните по следующей ссылке:"
mail_body_register: "Для активации учетной записи щёлкните по следующей ссылке:"
mail_body_reminder: "%{count} пакета(ов) работ, закрепленных за Вами, должны быть представлены в следующие %{days}:"
mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:"
mail_body_group_reminder: "Срок выполнения комплексов работ (%{count}), назначенных группе \"%{group}\", истекает в следующие %{days} дн.:"
mail_body_wiki_content_added: "%{author} добавил wiki-страницу '«%{id}»'."
mail_body_wiki_content_updated: "%{author} обновил wiki-страницу '%{id}'."
mail_subject_account_activation_request: "Запрос на активацию учетной записи %{value}"
mail_subject_lost_password: "Ваш пароль %{value}"
mail_subject_register: "Активация вашей учетной записи %{value}"
mail_subject_reminder: "%{count} пакет(-ов) работ на следующие %{days}"
mail_subject_group_reminder: "For group \"%{group}\" %{count} work package(s) due in the next %{days} days"
mail_subject_group_reminder: "В группе \"%{group}\" есть комплексы работ (%{count}), срок выполнения которых истекает в следующие %{days} дн."
mail_subject_wiki_content_added: "'%{id}' wiki-страница добавлена"
mail_subject_wiki_content_updated: "'%{id}' wiki страница была обновлена"
mail_user_activation_limit_reached:

@ -268,7 +268,7 @@ zh-CN:
account: "帐户"
attr_firstname: "名字属性"
attr_lastname: "姓氏属性"
attr_login: "Username attribute"
attr_login: "用户名属性"
attr_mail: "电子邮件属性"
base_dn: "基本 DN"
host: "主机"
@ -479,8 +479,8 @@ zh-CN:
invalid_values: "值无效。"
id_filter_required: "“id”筛选器为必填字段。"
project:
archived_ancestor: 'The project has an archived ancestor.'
foreign_wps_reference_version: 'Work packages in non descendant projects reference versions of the project or its descendants.'
archived_ancestor: '该项目有一个已存档的上级。'
foreign_wps_reference_version: '非子级项目中的工作包会引用此项目或其子级的版本。'
attributes:
types:
in_use_by_work_packages: "仍在使用的工作包: %{types}"
@ -640,7 +640,7 @@ zh-CN:
is_public: "公开"
issue: "工作包"
lastname: "姓氏"
login: "Username"
login: "用户名"
mail: "电子邮件"
name: "名称"
password: "密码"
@ -929,7 +929,7 @@ zh-CN:
enumeration_system_activity: "系统活动"
enumeration_reported_project_statuses: "报告的项目状态"
error_auth_source_sso_failed: "用户 \"%{value}\" 的单次登录 (SSO) 失败"
error_can_not_archive_project: "This project cannot be archived: %{errors}"
error_can_not_archive_project: "此项目无法存档:%{errors}"
error_can_not_delete_entry: "无法删除条目"
error_can_not_delete_custom_field: "无法删除自定义字段"
error_can_not_delete_type: "这种类型包含工作包,不能被删除。"
@ -938,7 +938,7 @@ zh-CN:
error_can_not_remove_role: "该角色正在使用,无法删除。"
error_can_not_reopen_work_package_on_closed_version: "不能重新打开一个已经分配给已关闭版本的工作包"
error_can_not_find_all_resources: "无法找到与请求相关的所有资源。"
error_can_not_unarchive_project: "This project cannot be unarchived: %{errors}"
error_can_not_unarchive_project: "此项目无法取消存档:%{errors}"
error_check_user_and_role: "请选择用户和角色。"
error_code: "错误 %{code}"
error_cookie_missing: 'OpenProject cookie 丢失。请确保已启用 cookie,因为如果不启用,此应用程序将无法正常运行。'
@ -1641,14 +1641,14 @@ zh-CN:
mail_body_lost_password: "若要更改你的密码,请单击下面的链接:"
mail_body_register: "若要激活您的帐户,请单击下面的链接:"
mail_body_reminder: "%{count} 个分配给您的工作包将在 %{days} 天后到期:"
mail_body_group_reminder: "%{count} work package(s) that are assigned to group \"%{group}\" are due in the next %{days} days:"
mail_body_group_reminder: "%{count} 个分配给组“%{group}”的工作包将在 %{days} 天后到期:"
mail_body_wiki_content_added: "'%{id}' wiki页面已经由%{author} 添加。"
mail_body_wiki_content_updated: "'%{id}' wiki页面已经由%{author} 更新。"
mail_subject_account_activation_request: "%{value} 帐户激活请求"
mail_subject_lost_password: "你的 %{value} 密码"
mail_subject_register: "您的%{value}帐户激活"
mail_subject_reminder: "%{count} 个工作包在 %{days} 天内到期"
mail_subject_group_reminder: "For group \"%{group}\" %{count} work package(s) due in the next %{days} days"
mail_subject_group_reminder: "对于组“%{group}”,%{count} 个工作包将在 %{days} 天后到期"
mail_subject_wiki_content_added: "'%{id}' wiki页面已添加"
mail_subject_wiki_content_updated: "'%{id}' wiki页面已更新"
mail_user_activation_limit_reached:
@ -1991,7 +1991,7 @@ zh-CN:
setting_display_subprojects_work_packages: "默认在主项目上显示子项目工作包"
setting_emails_footer: "电子邮件页脚"
setting_emails_header: "电子邮件标头"
setting_email_login: "使用电子邮件登录"
setting_email_login: "使用电子邮件作为登录"
setting_enabled_scm: "启用 SCM"
setting_feeds_enabled: "启用Feeds"
setting_feeds_limit: "Feed内容限制"
@ -2161,7 +2161,7 @@ zh-CN:
text_reassign: "重新分配工作包:"
text_regexp_info: "例如 ^ [A-Z0-9]+$"
text_regexp_multiline: '以多行模式应用正则表达式,如 ^---\s+'
text_repository_usernames_mapping: "选择或更新每个在代码库日志中发现的用户名所映射的 OpenProject 用户。\n与 OpenProject 和代码库用户名或电子邮件相同的用户已被自动更新。"
text_repository_usernames_mapping: "选择或更新每个在代码库日志中发现的用户名所映射到的 OpenProject 用户。\n使用相同 OpenProject 和代码库用户名或电子邮件的用户已被自动映射。"
text_select_mail_notifications: "选择邮件通知应该被发送的动作。"
text_status_changed_by_changeset: "被实施在变更集 %{value} 中。"
text_table_difference_description: "此表单展现了单个%{entries}。您可以先选择多选框,再点击表单下方的按钮来比较两项之间的差异。"
@ -2351,7 +2351,7 @@ zh-CN:
旧邀请电子邮件过期或用户未收到之前的电子邮件时,再发送一封邀请电子邮件。也可由活跃用户用于选择新的身份验证方法。活跃用户使用时,状态会更改为“已邀请”。
tooltip:
setting_email_login: >
如果启用,用户将无法在注册时选择登录方式。将使用用户指定的电子邮件地址登录。管理员仍然可以单独更改登录方式
如果启用,用户将无法在注册时选择登录名。将使用用户指定的电子邮件地址作为登录名。管理员仍然可以单独更改登录名
queries:
apply_filter: 应用预配置筛选器
top_menu:

@ -13,7 +13,7 @@ class CleanCustomValues < ActiveRecord::Migration[5.2]
end
warn warn_string
invalid_cv.update_column(:value, '')
invalid_cv.update_all(value: '')
end
end

@ -133,8 +133,7 @@
</div>
<ndc-dynamic [ndcDynamicComponent]="attachmentListComponent()"
[ndcDynamicInputs]="{ resource: workPackage,
selfDestroy: true }">
[ndcDynamicInputs]="{ resource: workPackage }">
</ndc-dynamic>
<ndc-dynamic [ndcDynamicComponent]="attachmentUploadComponent()"

@ -41,7 +41,7 @@ export class AttachmentListItemComponent {
@Input() public resource:HalResource;
@Input() public attachment:any;
@Input() public index:any;
@Input() public selfDestroy?:boolean;
@Input() destroyImmediately:boolean = true;
@Output() public removeAttachment = new EventEmitter<void>();
@ -112,7 +112,7 @@ export class AttachmentListItemComponent {
this.removeAttachment.emit();
if (!!this.selfDestroy) {
if (this.destroyImmediately) {
this
.resource
.removeAttachment(this.attachment);

@ -42,13 +42,15 @@ import {AngularTrackingHelpers} from "core-components/angular/tracking-functions
})
export class AttachmentListComponent implements OnInit, OnChanges, OnDestroy {
@Input() public resource:HalResource;
@Input() public selfDestroy:boolean = false;
@Input() public destroyImmediately:boolean = true;
trackByHref = AngularTrackingHelpers.trackByHref;
attachments:HalResource[] = [];
deletedAttachments:HalResource[] = [];
public $element:JQuery;
public $formElement:JQuery;
constructor(protected elementRef:ElementRef,
protected states:States,
@ -64,6 +66,10 @@ export class AttachmentListComponent implements OnInit, OnChanges, OnDestroy {
this.attachments = this.resource.attachments.elements;
this.setupResourceUpdateListener();
if (!this.destroyImmediately) {
this.setupAttachmentDeletionCallback();
}
}
public setupResourceUpdateListener() {
@ -81,7 +87,9 @@ export class AttachmentListComponent implements OnInit, OnChanges, OnDestroy {
}
ngOnDestroy():void {
// Nothing to do
if (!this.destroyImmediately) {
this.$formElement.off('submit.attachment-component');
}
}
ngOnChanges() {
@ -91,6 +99,7 @@ export class AttachmentListComponent implements OnInit, OnChanges, OnDestroy {
}
public removeAttachment(attachment:HalResource) {
this.deletedAttachments.push(attachment);
this.attachments = this.attachments.filter((el) => el !== attachment);
this.cdRef.detectChanges();
}
@ -98,6 +107,21 @@ export class AttachmentListComponent implements OnInit, OnChanges, OnDestroy {
private get attachmentsUpdatable() {
return (this.resource.attachments && this.resource.attachmentsBackend);
}
public setupAttachmentDeletionCallback() {
this.$formElement = this.$element.closest('form');
this.$formElement.on('submit.attachment-component', () => {
this.destroyRemovedAttachments();
});
}
private destroyRemovedAttachments() {
this.deletedAttachments.forEach((attachment) => {
this
.resource
.removeAttachment(attachment);
});
}
}
DynamicBootstrapper.register({

@ -4,7 +4,7 @@
<attachment-list-item [attachment]="attachment"
[resource]="resource"
[index]="i"
[selfDestroy]="selfDestroy"
[destroyImmediately]="destroyImmediately"
(removeAttachment)="removeAttachment(attachment)">
</attachment-list-item>
</ul>

@ -42,14 +42,11 @@ import {filter, takeUntil} from 'rxjs/operators';
})
export class AttachmentsComponent implements OnInit, OnDestroy {
@Input('resource') public resource:HalResource;
@Input() public selfDestroy:boolean = false;
public $element:JQuery;
public allowUploading:boolean;
public destroyImmediately:boolean;
public text:any;
public $formElement:JQuery;
public initialAttachments:HalResource[];
constructor(protected elementRef:ElementRef,
protected I18n:I18nService,
@ -78,17 +75,11 @@ export class AttachmentsComponent implements OnInit, OnDestroy {
this.destroyImmediately = true;
}
this.setupAttachmentDeletionCallback();
this.setupResourceUpdateListener();
}
public setupAttachmentDeletionCallback() {
this.memoizeCurrentAttachments();
this.$formElement = this.$element.closest('form');
this.$formElement.on('submit.attachment-component', () => {
this.destroyRemovedAttachments();
});
ngOnDestroy():void {
// nothing to do
}
public setupResourceUpdateListener() {
@ -99,45 +90,14 @@ export class AttachmentsComponent implements OnInit, OnDestroy {
)
.subscribe((newResource:HalResource) => {
this.resource = newResource || this.resource;
if (this.destroyImmediately) {
this.destroyRemovedAttachments();
this.memoizeCurrentAttachments();
}
});
}
ngOnDestroy() {
this.$formElement.off('submit.attachment-component');
}
// Only show attachment list when allow uploading is set
// or when at least one attachment exists
public showAttachments() {
return this.allowUploading || _.get(this.resource, 'attachments.count', 0) > 0;
}
private destroyRemovedAttachments() {
if (this.selfDestroy) {
return;
}
let missingAttachments = _.differenceBy(this.initialAttachments,
this.resource.attachments.elements,
(attachment:HalResource) => attachment.id);
if (missingAttachments.length) {
missingAttachments.forEach((attachment) => {
this
.resource
.removeAttachment(attachment);
});
}
}
private memoizeCurrentAttachments() {
this.initialAttachments = _.clone(this.resource.attachments.elements);
}
}
DynamicBootstrapper.register({ selector: 'attachments', cls: AttachmentsComponent, embeddable: true });

@ -5,7 +5,7 @@
<div id="attachments_fields">
<attachment-list *ngIf="resource.attachments"
[resource]="resource"
[selfDestroy]="selfDestroy">
[destroyImmediately]="destroyImmediately">
</attachment-list>
<attachments-upload [resource]="resource"
class="hide-when-print"

@ -106,7 +106,6 @@ export class BoardComponent implements OnInit, OnDestroy {
.save(board)
.then(board => {
this.inFlight = false;
board.sortWidgets();
return board;
})
.catch((error) => {

@ -74,6 +74,7 @@ export class BoardService {
this.reorderWidgets(board);
return this.boardDm.save(board)
.then(board => {
board.sortWidgets();
this.boardCache.update(board);
return board;
});

@ -46,7 +46,9 @@ export class BackRoutingService {
}
public goBack(preferListOverSplit:boolean = false) {
if (!this.backRoute) {
// Default: back to list
// When coming from a deep link or a create form
if (!this.backRoute || this.backRoute.name.includes('new')) {
this.$state.go('work-packages.list', this.$state.params);
} else {
if (this.keepTab.isDetailsState(this.backRoute.parent)) {

@ -29,7 +29,6 @@
</edit-form-portal>
<attachments *ngIf="active"
[resource]="resource.grid"
[selfDestroy]="true"
data-allow-uploading="true">
</attachments>

@ -63,10 +63,11 @@ export class WidgetCustomTextComponent extends AbstractWidgetComponent implement
return;
}
// load the attachments so that they are displayed in the list;
this.resource.grid.updateAttachments();
this.handler.activate();
// Load the attachments so that they are displayed in the list.
// Once that is done, we can show the edit form.
this.resource.grid.updateAttachments().then(() => {
this.handler.activate();
});
}
public get placeholderText() {

@ -110,7 +110,7 @@ export function Attachable<TBase extends Constructor<HalResource>>(Base:TBase) {
}
/**
* Get updated attachments and activities from the server and push the state
* Get updated attachments from the server and push the state
*
* Return a promise that returns the attachments. Reject, if the work package has
* no attachments.

@ -43,7 +43,7 @@ module API
redirect attachment.external_url.to_s
else
content_type attachment.content_type
header['Content-Disposition'] = attachment.content_disposition
header['Content-Disposition'] = "#{attachment.content_disposition}; filename=#{attachment.filename}"
env['api.format'] = :binary
attachment.diskfile.read
end

@ -1,39 +1,39 @@
es:
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."
button_change_avatar: "Change avatar"
are_you_sure_delete_avatar: "Are you sure you want to delete your avatar?"
avatar_deleted: "Avatar deleted successfully."
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)"
label_avatar_plural: "Avatares"
label_current_avatar: "Avatar actual"
label_choose_avatar: "Seleccionar avatar de un archivo"
message_avatar_uploaded: "El avatar se ha cambiado correctamente."
error_image_upload: "Error al guardar la imagen."
error_image_size: "El tamaño de la imagen es demasiado grande."
button_change_avatar: "Cambiar avatar"
are_you_sure_delete_avatar: "¿Está seguro de que quiere eliminar su avatar?"
avatar_deleted: "El avatar se ha eliminado correctamente."
unable_to_delete_avatar: "No se pudo eliminar el avatar."
wrong_file_format: "Los formatos permitidos son JPG, PNG y GIF"
empty_file_error: "Cargue un archivo de imagen válido (JPG, PNG o GIF)"
avatars:
label_avatar: "Avatar"
label_gravatar: 'Gravatar'
label_current_avatar: 'Current avatar'
label_local_avatar: 'Custom avatar'
label_current_avatar: 'Avatar actual'
label_local_avatar: 'Avatar personalizado'
text_current_avatar: |
The following image shows the current avatar.
En la imagen siguiente, se muestra el avatar actual.
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}.'
Cargue su propio avatar personalizado de 128 × 128 píxeles. Si se agregan archivos más grandes, se cambiará el tamaño y se recortará para que coincida.
Después de seleccionar una imagen, se mostrará una vista previa del avatar antes de cargarlo.
text_change_gravatar_html: 'Para cambiar o agregar el Gravatar a su dirección de correo electrónico, vaya a %{gravatar_url}.'
text_your_local_avatar: |
OpenProject allows you to upload your own custom avatar.
OpenProject le permite cargar su propio avatar personalizado.
text_local_avatar_over_gravatar: |
If you set one, this custom avatar is used in precedence over the gravatar above.
Si establece uno, este avatar personalizado se usará antes que el Gravatar anterior.
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:
OpenProject usará su Gravatar (si registró uno) o usará una imagen o icono predeterminado (si existe).
El Gravatar actual es el siguiente:
settings:
enable_gravatars: 'Enable user gravatars'
enable_gravatars: 'Habilitar Gravatar de usuario'
gravatar_default: "Imagen de gravatar por defecto"
enable_local_avatars: 'Enable user custom avatars'
enable_local_avatars: 'Habilitar avatares personalizados de usuario'

@ -28,12 +28,12 @@ fr:
text_local_avatar_over_gravatar: |
Si vous en avez défini un, cet avatar personnalisé sera utilisé à la place du gravatar ci-dessus.
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:
OpenProject utilise votre gravatar si vous en possédez un, ou bien une image ou icône par défaut si celle-ci existe.
Le gravatar actuel est le suivant :
settings:
enable_gravatars: 'Enable user gravatars'
enable_gravatars: 'Activer les gravatars de l''utilisateur'
gravatar_default: "Image Gravatar par défaut"
enable_local_avatars: 'Enable user custom avatars'
enable_local_avatars: 'Activer les avatars personnalisés de l''utilisateur'

@ -3,12 +3,12 @@ es:
label_preview: 'Vista preliminar'
button_update: 'Actualizar'
avatars:
label_choose_avatar: "Choose Avatar from file"
uploading_avatar: "Uploading your avatar."
label_choose_avatar: "Seleccionar avatar de un archivo"
uploading_avatar: "Cargando su 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."
wrong_file_format: "Allowed formats are jpg, png, gif"
empty_file_error: "Please upload a valid image (jpg, png, gif)"
Cargue su propio avatar personalizado de 128 × 128 píxeles. Si se agregan archivos más grandes, se cambiará el tamaño y se recortará para que coincida.
Después de seleccionar una imagen, se mostrará una vista previa del avatar antes de cargarlo.
error_image_too_large: "La imagen es demasiado grande."
wrong_file_format: "Los formatos permitidos son JPG, PNG y GIF"
empty_file_error: "Cargue un archivo de imagen válido (JPG, PNG o GIF)"

@ -4,11 +4,11 @@ fr:
button_update: 'Mettre à jour'
avatars:
label_choose_avatar: "Choisir un avatar depuis un fichier"
uploading_avatar: "Uploading your avatar."
uploading_avatar: "Chargement de votre avatar."
text_upload_instructions: |
Téléchargez votre propre avatar personnalisé de 128 par 128 pixels. Les fichiers plus gros seront redimensionnés et recadrés pour correspondre.
Un aperçu de votre avatar sera affiché avant le téléchargement, une fois que vous aurez sélectionné une image.
error_image_too_large: "Image is too large."
error_image_too_large: "L'image est trop grande."
wrong_file_format: "Les formats autorisés sont Jpg, Png et Gif"
empty_file_error: "Veuillez téléverser une image valide (Jpg, Png, Gif)"

@ -4,11 +4,11 @@ ko:
button_update: '업데이트'
avatars:
label_choose_avatar: "파일에서 아바타 선택"
uploading_avatar: "Uploading your avatar."
uploading_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."
128 × 128픽셀 크기의 사용자 지정 아바타를 업로드하십시오. 더 큰 파일은 이 크기에 맞게 조정되고 잘립니다.
이미지를 선택하면, 업로드하기 전에 아바타의 미리 보기가 표시됩니다.
error_image_too_large: "이미지가 너무 큽니다."
wrong_file_format: "허용된 형식은 jpg, png, gif입니다."
empty_file_error: "유효한 이미지(jpg, png, gif)를 업로드하십시오."

@ -3,12 +3,12 @@ pl:
label_preview: 'Podgląd'
button_update: 'Aktualizacja'
avatars:
label_choose_avatar: "Choose Avatar from file"
uploading_avatar: "Uploading your avatar."
label_choose_avatar: "Wybierz awatar z pliku"
uploading_avatar: "Przesyłanie tego awatara."
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."
wrong_file_format: "Allowed formats are jpg, png, gif"
empty_file_error: "Please upload a valid image (jpg, png, gif)"
Prześlij swój własny awatar 128 na 128 pikseli. Rozmiar większych plików zostanie zmieniony i zostaną one odpowiednio przycięte.
Podgląd awatara zostanie wyświetlony przed przesłaniem, po wybraniu obrazu.
error_image_too_large: "Obraz jest zbyt duży."
wrong_file_format: "Dozwolone są formaty jpg, png, gif"
empty_file_error: "Prześlij prawidłowy obraz (jpg, png, gif)"

@ -6,7 +6,7 @@ pt:
label_choose_avatar: "Escolher Avatar a partir de ficheiro"
uploading_avatar: "A carregar o seu avatar."
text_upload_instructions: |
Carregue o seu próprio avatar personalizado de 128 por 128 pixels. Os ficheiros maiores serão redimensionados e cortados para coincidir.
Carregue o seu avatar personalizado de 128 por 128 pixels. Os ficheiros maiores serão redimensionados e cortados para coincidir.
Será mostrada uma visualização do seu avatar antes do carregamento, uma vez que selecionou uma imagem.
error_image_too_large: "A imagem é grande demais."
wrong_file_format: "Os formatos permitidos são jpg, png, gif"

@ -14,26 +14,26 @@ ko:
empty_file_error: "유효한 이미지(jpg, png, gif)를 업로드하십시오."
avatars:
label_avatar: "아바타"
label_gravatar: '그라바타'
label_gravatar: 'Gravatar'
label_current_avatar: '현재 아바타'
label_local_avatar: '사용자 지정 아바타'
text_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}.'
128 × 128픽셀 크기의 사용자 지정 아바타를 업로드하십시오. 더 큰 파일은 이 크기에 맞게 조정되고 잘립니다.
이미지를 선택하면, 업로드하기 전에 아바타의 미리 보기가 표시됩니다.
text_change_gravatar_html: '메일 주소에 대한 Gravatar를 변경하거나 추가하려면 %{gravatar_url}(으)로 이동하십시오.'
text_your_local_avatar: |
OpenProject allows you to upload your own custom avatar.
OpenProject에서 사용자 지정 아바타를 업로드할 수 있습니다.
text_local_avatar_over_gravatar: |
If you set one, this custom avatar is used in precedence over the gravatar above.
사용자 지정 아바타를 설정하는 경우, 이 아바타가 위의 Gravatar보다 우선하여 사용됩니다.
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:
사용자가 Gravatar를 등록한 경우 OpenProject는 해당 Gravatar를 사용합니다. 또는 기본 이미지나 아이콘이 존재하는 경우 이를 사용합니다.
현재 Gravatar는 다음과 같습니다.
settings:
enable_gravatars: 'Enable user gravatars'
enable_gravatars: '사용자 Gravatar 사용'
gravatar_default: "기본 Gravatar 이미지"
enable_local_avatars: 'Enable user custom avatars'
enable_local_avatars: '사용자 커스텀 Gravatar 사용'

@ -1,39 +1,39 @@
pl:
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."
button_change_avatar: "Change avatar"
are_you_sure_delete_avatar: "Are you sure you want to delete your avatar?"
avatar_deleted: "Avatar deleted successfully."
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)"
label_avatar: "Awatar"
label_avatar_plural: "Awatary"
label_current_avatar: "Bieżący awatar"
label_choose_avatar: "Wybierz awatar z pliku"
message_avatar_uploaded: "Awatar został zmieniony."
error_image_upload: "Błąd podczas zapisywania obrazu."
error_image_size: "Obraz jest za duży."
button_change_avatar: "Zmień awatar"
are_you_sure_delete_avatar: "Czy na pewno chcesz usunąć ten awatar?"
avatar_deleted: "Awatar został usunięty."
unable_to_delete_avatar: "Nie można usunąć awatara."
wrong_file_format: "Dozwolone są formaty jpg, png, gif"
empty_file_error: "Prześlij prawidłowy obraz (jpg, png, gif)"
avatars:
label_avatar: "Avatar"
label_avatar: "Awatar"
label_gravatar: 'Gravatar'
label_current_avatar: 'Current avatar'
label_local_avatar: 'Custom avatar'
label_current_avatar: 'Bieżący awatar'
label_local_avatar: 'Awatar niestandardowy'
text_current_avatar: |
The following image shows the current avatar.
Poniższy obraz przedstawia aktualny awatar.
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}.'
Prześlij swój własny awatar 128 na 128 pikseli. Rozmiar większych plików zostanie zmieniony i zostaną one odpowiednio przycięte.
Podgląd awatara zostanie wyświetlony przed przesłaniem, po wybraniu obrazu.
text_change_gravatar_html: 'Aby zmienić lub dodać Gravatar dla tego adresu e-mail, przejdź na stronę %{gravatar_url}.'
text_your_local_avatar: |
OpenProject allows you to upload your own custom avatar.
OpenProject umożliwia przesłanie własnego, niestandardowego awatara.
text_local_avatar_over_gravatar: |
If you set one, this custom avatar is used in precedence over the gravatar above.
Jeśli go ustawisz, ten niestandardowy awatar będzie używany w pierwszej kolejności przed powyższym Gravatarem.
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:
OpenProject używa Gravatara, jeśli użytkownik go zarejestrował albo domyślnego obrazu lub ikony, jeśli taka istnieje.
Bieżący Gravatar jest następujący:
settings:
enable_gravatars: 'Enable user gravatars'
enable_gravatars: 'Włącz Gravatary użytkownika'
gravatar_default: "Domyślny obraz Gravatar"
enable_local_avatars: 'Enable user custom avatars'
enable_local_avatars: 'Włącz niestandardowe awatary użytkownika'

@ -20,15 +20,15 @@ pt:
text_current_avatar: |
A seguinte imagem mostra o avatar atual.
text_upload_instructions: |
Carregue o seu próprio avatar personalizado de 128 por 128 pixels. Os ficheiros maiores serão redimensionados e cortados para coincidir.
Carregue o seu avatar personalizado de 128 por 128 pixels. Os ficheiros maiores serão redimensionados e cortados para coincidir.
Será mostrada uma visualização do seu avatar antes do carregamento, uma vez que selecionou uma imagem.
text_change_gravatar_html: 'Para alterar ou adicionar o Gravatar ao seu endereço de email, vá a %{gravatar_url}.'
text_your_local_avatar: |
O OpenProject permite que carregue o seu próprio avatar personalizado.
O OpenProject permite que carregue o seu avatar personalizado.
text_local_avatar_over_gravatar: |
Se definir um, este avatar personalizado será usado em precedência sobre o gravatar acima.
text_your_current_gravatar: |
O OpenProject usa o seu gravatar caso tenha registado um, ou uma imagem ou ícone padrão caso exista.
O OpenProject usa o seu gravatar caso tenha registado algum, ou uma imagem ou ícone padrão caso exista.
O gravatar atual é o seguinte:
settings:
enable_gravatars: 'Ativar Gravatars de utilizadores'

@ -8,8 +8,8 @@ zh-CN:
error_image_size: "图像太大。"
button_change_avatar: "更改头像"
are_you_sure_delete_avatar: "确定要删除头像吗?"
avatar_deleted: "头像删除成功。"
unable_to_delete_avatar: "头像无法删除。"
avatar_deleted: "成功删除头像。"
unable_to_delete_avatar: "无法删除头像。"
wrong_file_format: "允许的格式是 jpg、png、gif"
empty_file_error: "请上传一张有效的图像(jpg、png、gif)"
avatars:
@ -28,7 +28,7 @@ zh-CN:
text_local_avatar_over_gravatar: |
如果您设置了一个自定义头像,则此头像将优先于上面的 Gravatar。
text_your_current_gravatar: |
OpenProject 将使用您的 Gravatar(如果已注册)或默认图像或图标(如果存在)。
OpenProject 将使用您的 Gravatar(如果已注册)或默认图像或图标(如果存在)。
当前头像如下:
settings:
enable_gravatars: '启用用户 Gravatar'

@ -1,62 +1,62 @@
es:
bcf:
label_bcf: 'BCF'
label_imported_failed: 'Failed imports of BCF topics'
label_imported_successfully: 'Successfully imported BCF topics'
issues: "Issues"
recommended: 'recommended'
not_recommended: 'not recommended'
no_viewpoints: 'No viewpoints'
label_imported_failed: 'No se pudieron importar los temas de BCF'
label_imported_successfully: 'Los temas de BCF se importaron correctamente'
issues: "Problemas"
recommended: 'recomendado'
not_recommended: 'no recomendado'
no_viewpoints: 'Sin áreas de visualización'
new_badge: "Nuevo"
exceptions:
file_invalid: "BCF file invalid"
file_invalid: "Archivo BCF no válido"
x_bcf_issues:
one: 'One BCF issue'
other: '%{count} BCF issues'
one: 'Un problema de BCF'
other: '%{count} problemas de BCF'
bcf_xml:
xml_file: 'BCF XML File'
xml_file: 'Archivo XML de BCF'
import_title: 'Importar'
export: 'Exportar'
import_update_comment: '(Updated in BCF import)'
import_failed: 'Cannot import BCF file: %{error}'
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_update_comment: '(Actualizado en la importación de BCF)'
import_failed: 'No se puede importar el archivo BCF: %{error}'
import_successful: 'Se importaron %{count} problemas de BCF'
import_canceled: 'La importación de BCF-XML se ha cancelado.'
type_not_active: "El tipo de problema no está activo para este proyecto."
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'
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.'
num_issues_found: '%{x_bcf_issues} están presentes en el archivo BCF-XML y a continuación se muestran los detalles.'
button_prepare: 'Preparar importación'
button_perform_import: 'Confirmar importación'
button_proceed: 'Continuar'
button_back_to_list: 'Volver a la lista'
no_permission_to_add_members: 'No tiene permisos suficientes para agregarlos como miembros al proyecto.'
contact_project_admin: 'Póngase en contacto con el administrador del proyecto para agregarlos como miembros y vuelva a iniciar esta importación.'
continue_anyways: '¿Quiere continuar y finalizar la importación de todas formas?'
description: "Proporcione un archivo BCF-XML v2.1 para importarlo en este proyecto. Puede examinar el contenido antes de realizar la importación."
invalid_types_found: 'Se encontraron nombres de tipo de tema no válidos'
invalid_statuses_found: 'Se encontraron nombres de estado no válidos'
invalid_priorities_found: 'Se encontraron nombres de prioridad no válidos'
invalid_emails_found: 'Se encontraron direcciones de correo electrónico no válidas'
unknown_emails_found: 'Se encontraron direcciones de correo electrónico desconocidas'
unknown_property: 'Propiedad desconocida'
non_members_found: 'No se encontraron miembros del proyecto'
import_types_as: 'Establecer todos estos tipos en'
import_statuses_as: 'Establecer todos estos estados en'
import_priorities_as: 'Establecer todas estas prioridades en'
invite_as_members_with_role: 'Invitarlos como miembros de proyecto “%{project}” con el rol'
add_as_members_with_role: 'Agregarlos como miembros de proyecto “%{project}” con el rol'
no_type_provided: 'No se ha especificado ningún tipo'
no_status_provided: 'No se ha especificado ningún estado'
no_priority_provided: 'No se ha especificado ninguna prioridad'
perform_description: "¿Quiere importar o actualizar los problemas de la lista anterior?"
replace_with_system_user: 'Reemplazarlos con el usuario “System”'
import_as_system_user: 'Se importan como el usuario “System”.'
what_to_do: "¿Qué quieres hacer?"
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."
work_package_has_newer_changes: "No actualizado. Este tema no está actualizado, ya que los últimos cambios en el servidor eran más recientes que la fecha de modificación del tema importado. Sin embargo, se importaron los comentarios en el tema."
export:
format:
bcf: "BCF-XML"
attributes:
bcf_thumbnail: "BCF snapshot"
bcf_thumbnail: "Instantánea de BCF"
project_module_bcf: "BCF"
permission_view_linked_issues: "View BCF issues"
permission_manage_bcf: "Import and manage BCF issues"
permission_view_linked_issues: "Ver problemas de BCF"
permission_manage_bcf: "Importar y administrar problemas de BCF"

@ -1,62 +1,62 @@
fr:
bcf:
label_bcf: 'BCF'
label_imported_failed: 'Failed imports of BCF topics'
label_imported_successfully: 'Successfully imported BCF topics'
issues: "Issues"
recommended: 'recommended'
not_recommended: 'not recommended'
no_viewpoints: 'No viewpoints'
label_imported_failed: 'Impossible d''importer les sujets BCF'
label_imported_successfully: 'Sujets BCF importés avec succès'
issues: "Problèmes"
recommended: 'recommandé'
not_recommended: 'déconseillé'
no_viewpoints: 'Aucun point de vue'
new_badge: "nouveau"
exceptions:
file_invalid: "BCF file invalid"
file_invalid: "Fichier BCF invalide"
x_bcf_issues:
one: 'One BCF issue'
other: '%{count} BCF issues'
one: 'Un problème BCF'
other: '%{count} problèmes BCF'
bcf_xml:
xml_file: 'BCF XML File'
xml_file: 'Fichier XML BCF'
import_title: 'Importer'
export: 'Exporter'
import_update_comment: '(Updated in BCF import)'
import_failed: 'Cannot import BCF file: %{error}'
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_update_comment: '(Mis à jour dans l''importation BCF)'
import_failed: 'Impossible d''importer le fichier BCF : %{error}'
import_successful: '%{count} problèmes BCF importés'
import_canceled: 'Importation BCF-XML annulée.'
type_not_active: "Le type de problème n'est pas activé pour ce projet."
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'
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.'
num_issues_found: '%{x_bcf_issues} sont contenus dans le fichier BCF-XML, leurs détails sont repris ci-dessous.'
button_prepare: 'Préparer l''importation'
button_perform_import: 'Confirmer l''importation'
button_proceed: 'Continuer'
button_back_to_list: 'Retour à la liste'
no_permission_to_add_members: 'Vous n''avez pas les autorisations suffisantes pour les ajouter en tant que membres du projet.'
contact_project_admin: 'Contactez votre administrateur du projet pour les ajouter en tant que membres et recommencer cette importation.'
continue_anyways: 'Voulez-vous quand même continuer et terminer l''importation ?'
description: "Fournissez un fichier BCF-XML v2.1 à importer dans ce projet. Vous pouvez examiner son contenu avant d'effectuer l'importation."
invalid_types_found: 'Un nom de type de sujet invalide a été trouvé'
invalid_statuses_found: 'Un nom de statut invalide a été trouvé'
invalid_priorities_found: 'Des noms de priorité invalides ont été trouvés'
invalid_emails_found: 'Des adresses e-mail invalides ont été trouvées'
unknown_emails_found: 'Des adresses e-mail inconnues ont été trouvées'
unknown_property: 'Propriété inconnue'
non_members_found: 'Aucun membre du projet n''a été trouvé'
import_types_as: 'Définir tous ces types comme'
import_statuses_as: 'Définir tous ces statuts comme'
import_priorities_as: 'Définir toutes ces priorités comme'
invite_as_members_with_role: 'Les inviter en tant que membres du projet "%{project}" avec un rôle'
add_as_members_with_role: 'Les ajouter en tant que membres du projet "%{project}" avec un rôle'
no_type_provided: 'Aucun type fourni'
no_status_provided: 'Aucun statut fourni'
no_priority_provided: 'Aucune priorité fournie'
perform_description: "Voulez-vous importer ou mettre à jour les problèmes repris ci-dessus ?"
replace_with_system_user: 'Les remplacer par l''utilisateur "Système"'
import_as_system_user: 'Les importer comme utilisateur "Système".'
what_to_do: "Que voulez-vous faire?"
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."
work_package_has_newer_changes: "Obsolète ! Ce sujet n'a pas été mis à jour, car les derniers changements sur le serveur étaient plus récents que la \"ModifiedDate\" du sujet importé. Toutefois, les commentaires sur le sujet ont été importés."
export:
format:
bcf: "BCF-XML"
attributes:
bcf_thumbnail: "BCF snapshot"
bcf_thumbnail: "Capture d'écran BCF"
project_module_bcf: "BCF"
permission_view_linked_issues: "Voir les problèmes BCF"
permission_manage_bcf: "Importer et gérer les problèmes BCF"

@ -1,28 +1,28 @@
ko:
bcf:
label_bcf: 'BCF'
label_imported_failed: 'Failed imports of BCF topics'
label_imported_successfully: 'Successfully imported BCF topics'
issues: "Issues"
recommended: 'recommended'
not_recommended: 'not recommended'
no_viewpoints: 'No viewpoints'
label_imported_failed: 'BCF 항목 가져오기 실패'
label_imported_successfully: 'BCF 항목 가져오기 성공'
issues: "이슈"
recommended: '추천'
not_recommended: '추천하지 않음'
no_viewpoints: '뷰포인트 없음'
new_badge: "새로 만들기"
exceptions:
file_invalid: "BCF file invalid"
file_invalid: "잘못된 BCF 파일"
x_bcf_issues:
other: '%{count} BCF issues'
other: '%{count}개 BCF 이슈'
bcf_xml:
xml_file: 'BCF XML 파일'
import_title: '가져오기'
export: '내보내기'
import_update_comment: '(BCF 가져오기에서 업데이트됨)'
import_failed: 'BCF 파일을 가져올 수 없음: %{error}'
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_successful: '%{count}개 BCF 이슈 가져옴'
import_canceled: 'BCF-XML 가져오기가 취소되었습니다.'
type_not_active: "이 프로젝트에 대해 해당 이슈 유형이 활성화되지 않았습니다."
import:
num_issues_found: '%{x_bcf_issues} are contained in the BCF-XML file, their details are listed below.'
num_issues_found: '%{x_bcf_issues}은(는) BCF-XML 파일에 포함되어 있지 않습니다. 세부 정보는 아래에 나와 있습니다.'
button_prepare: '가져오기 준비'
button_perform_import: '가져오기 확인'
button_proceed: '계속하기'
@ -30,32 +30,32 @@ ko:
no_permission_to_add_members: '프로젝트에 멤버로 추가할 권한이 부족합니다.'
contact_project_admin: '프로젝트 관리자에게 문의하여 멤버로 추가한 후 이 가져오기를 다시 시작하십시오.'
continue_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.'
description: "이 프로젝트에 가져올 BCF-XML v2.1 파일을 제공하십시오. 가져오기를 수행하기 전에 해당 내용을 검사할 수 있습니다."
invalid_types_found: '잘못된 항목 유형 이름이 발견됨'
invalid_statuses_found: '잘못된 상태 이름이 발견됨'
invalid_priorities_found: '잘못된 우선 순위 이름이 발견됨'
invalid_emails_found: '잘못된 이메일 주소가 발견됨'
unknown_emails_found: '알 수 없는 이메일 주소가 발견됨'
unknown_property: '알 수 없는 속성'
non_members_found: '프로젝트 멤버를 찾지 못함'
import_types_as: '모든 해당 유형을 다음으로 설정:'
import_statuses_as: '모든 해당 상태를 다음으로 설정:'
import_priorities_as: '모든 해당 우선 순위를 다음으로 설정:'
invite_as_members_with_role: '다음 역할의 사용자를 멤버로 "%{project}" 프로젝트에 초대:'
add_as_members_with_role: '다음 역할의 사용자를 멤버로 "%{project}" 프로젝트에 추가:'
no_type_provided: '제공된 유형 없음'
no_status_provided: '제공된 상태 없음'
no_priority_provided: '제공된 우선 순위 없음'
perform_description: "위에 나열된 이슈를 가져오거나 업데이트하시겠습니까?"
replace_with_system_user: '이들을 "시스템" 사용자로 바꾸기'
import_as_system_user: '이들을 "시스템" 사용자로 가져오기'
what_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."
work_package_has_newer_changes: "오래된 내용입니다! 서버의 최신 변경 사항은 가져온 항목의 \"수정된 날짜\"보다 최신이므로 이 항목이 업데이트되지 않았습니다. 그러나 이 항목에 대한 코멘트는 가져왔습니다."
export:
format:
bcf: "BCF-XML"
attributes:
bcf_thumbnail: "BCF snapshot"
bcf_thumbnail: "BCF 스냅샷"
project_module_bcf: "BCF"
permission_view_linked_issues: "View BCF issues"
permission_manage_bcf: "Import and manage BCF issues"
permission_view_linked_issues: "BCF 이슈 보기"
permission_manage_bcf: "BCF 이슈 가져오기 및 관리"

@ -1,64 +1,64 @@
pl:
bcf:
label_bcf: 'BCF'
label_imported_failed: 'Failed imports of BCF topics'
label_imported_successfully: 'Successfully imported BCF topics'
issues: "Issues"
recommended: 'recommended'
not_recommended: 'not recommended'
no_viewpoints: 'No viewpoints'
label_imported_failed: 'Nieudane importy tematów BCF'
label_imported_successfully: 'Zaimportowane z powodzeniem tematy BCF'
issues: "Problemy"
recommended: 'zalecane'
not_recommended: 'niezalecane'
no_viewpoints: 'Brak punktów widzenia'
new_badge: "Nowy"
exceptions:
file_invalid: "BCF file invalid"
file_invalid: "Nieprawidłowy plik BCF"
x_bcf_issues:
one: 'One BCF issue'
few: '%{count} BCF issues'
many: '%{count} BCF issues'
other: '%{count} BCF issues'
one: 'Jeden problem BCF'
few: '%{count} problemy BCF'
many: '%{count} problemów BCF'
other: '%{count} problemów BCF'
bcf_xml:
xml_file: 'BCF XML File'
xml_file: 'Plik BCF-XML'
import_title: 'Importuj'
export: 'Eksportuj'
import_update_comment: '(Updated in BCF import)'
import_failed: 'Cannot import BCF file: %{error}'
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_update_comment: '(Zaktualizowano w imporcie BCF)'
import_failed: 'Nie można zaimportować pliku BCF: %{error}'
import_successful: 'Zaimportowano problemy BCF (%{count})'
import_canceled: 'Anulowano import BCF-XML.'
type_not_active: "Typ problemu nie jest aktywowany dla tego projektu."
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'
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.'
num_issues_found: 'Plik BCF-XML zawiera %{x_bcf_issues}, ich szczegóły są wyświetlane poniżej.'
button_prepare: 'Przygotuj import'
button_perform_import: 'Potwierdź import'
button_proceed: 'Kontynuuj'
button_back_to_list: 'Powrót do listy'
no_permission_to_add_members: 'Nie masz wystarczających uprawnień, aby dodać ich jako członków do projektu.'
contact_project_admin: 'Skontaktuj się z administratorem projektu, aby dodać ich jako członków i ponownie uruchomić ten import.'
continue_anyways: 'Czy chcesz kontynuować i dokończyć import?'
description: "Podaj plik BCF-XML v2.1 w celu zaimportowania go do tego projektu. Przed wykonaniem importu możesz sprawdzić jego zawartość."
invalid_types_found: 'Znalezione nieprawidłowe nazwy typów tematów'
invalid_statuses_found: 'Znalezione nieprawidłowe nazwy stanów'
invalid_priorities_found: 'Znalezione nieprawidłowe nazwy priorytetów'
invalid_emails_found: 'Znaleziono nieprawidłowe adresy email'
unknown_emails_found: 'Znaleziono nieznane adresy email'
unknown_property: 'Nieznana właściwość'
non_members_found: 'Nie znaleziono członków projektu'
import_types_as: 'Ustaw wszystkie te typy na'
import_statuses_as: 'Ustaw wszystkie te stany na'
import_priorities_as: 'Ustaw wszystkie te priorytety na'
invite_as_members_with_role: 'Zaproś ich jako członków do projektu "%{project}" z rolą'
add_as_members_with_role: 'Dodaj ich jako członków do projektu "%{project}" z rolą'
no_type_provided: 'Nie podano typu'
no_status_provided: 'Nie podano stanu'
no_priority_provided: 'Nie podano priorytetu'
perform_description: "Czy chcesz zaimportować lub zaktualizować wyżej wymienione problemy?"
replace_with_system_user: 'Zastąp ich użytkownikiem "System"'
import_as_system_user: 'Zaimportuj ich jako użytkownika "System".'
what_to_do: "Co chcesz zrobić?"
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."
work_package_has_newer_changes: "Przestarzały! Ten temat nie został zaktualizowany, ponieważ najnowsze zmiany na serwerze były nowsze niż data modyfikacji (\"ModifiedDate\") importowanego tematu. Komentarze do tematu zostały natomiast zaimportowane."
export:
format:
bcf: "BCF-XML"
attributes:
bcf_thumbnail: "BCF snapshot"
bcf_thumbnail: "Migawka BCF"
project_module_bcf: "BCF"
permission_view_linked_issues: "View BCF issues"
permission_manage_bcf: "Import and manage BCF issues"
permission_view_linked_issues: "Wyświetlanie problemów BCF"
permission_manage_bcf: "Importowanie problemów BCF i zarządzanie nimi"

@ -2,7 +2,7 @@ zh-CN:
bcf:
label_bcf: 'BCF'
label_imported_failed: '导入 BCF 主题失败'
label_imported_successfully: '成功导入 BCF 主题'
label_imported_successfully: '成功导入 BCF 主题'
issues: "问题"
recommended: '推荐'
not_recommended: '不推荐'
@ -18,9 +18,9 @@ zh-CN:
export: '导出'
import_update_comment: '(在 BCF 导入中更新)'
import_failed: '无法导入 BCF 文件:%{error}'
import_successful: '导入 %{count} 个 BCF 问题'
import_successful: '导入 %{count} 个 BCF 问题'
import_canceled: 'BCF-XML 导入已取消。'
type_not_active: "此项目未激活问题类型。"
type_not_active: "此项目未激活问题类型。"
import:
num_issues_found: '%{x_bcf_issues} 包含在 BCF-XML 文件中,其详细信息在下面列出。'
button_prepare: '准备导入'
@ -29,7 +29,7 @@ zh-CN:
button_back_to_list: '返回列表'
no_permission_to_add_members: '您没有足够的权限将它们添加为项目的成员。'
contact_project_admin: '请联系您的项目管理员将它们添加为成员,然后重新开始导入。'
continue_anyways: '您是否仍要继续完成导入?'
continue_anyways: '仍要继续完成导入?'
description: "提供一个 BCF-XML v2.1 文件以导入到此项目中。您可以在执行导入之前检查其内容。"
invalid_types_found: '找到无效的主题类型名称'
invalid_statuses_found: '找到无效的状态名称'
@ -41,14 +41,14 @@ zh-CN:
import_types_as: '将所有这些类型设置为'
import_statuses_as: '将所有这些状态设置为'
import_priorities_as: '将所有这些优先级设置为'
invite_as_members_with_role: '使用以下角色邀请们作为项目“%{project}”的成员'
add_as_members_with_role: '使用以下角色将们添加为项目“%{project}”的成员'
invite_as_members_with_role: '使用以下角色邀请们作为项目“%{project}”的成员'
add_as_members_with_role: '使用以下角色将们添加为项目“%{project}”的成员'
no_type_provided: '未提供类型'
no_status_provided: '未提供状态'
no_priority_provided: '未提供优先级'
perform_description: "您想要导入或更新上面列出的问题吗?"
replace_with_system_user: '用“系统”用户替换们'
import_as_system_user: '将们导入为“系统”用户。'
perform_description: "要导入或更新上面列出的问题吗?"
replace_with_system_user: '用“系统”用户替换们'
import_as_system_user: '将们导入为“系统”用户。'
what_to_do: "你想做什么?"
work_package_has_newer_changes: "已过时!此主题未更新,因为服务器上的最新更改比导入主题的“ModifiedDate”更新。但是,已导入该主题的注释。"
export:

@ -1,6 +1,6 @@
es:
permission_show_board_views: "View boards"
permission_manage_board_views: "Manage boards"
permission_show_board_views: "Ver paneles"
permission_manage_board_views: "Administrar paneles"
project_module_board_view: "Tableros"
boards:
label_boards: "Tableros"

@ -1,6 +1,6 @@
fr:
permission_show_board_views: "View boards"
permission_manage_board_views: "Manage boards"
permission_show_board_views: "Afficher les tableaux"
permission_manage_board_views: "Gérer les tableaux"
project_module_board_view: "Tableaux"
boards:
label_boards: "Tableaux"

@ -1,45 +1,45 @@
es:
js:
boards:
label_unnamed_board: 'Unnamed board'
label_unnamed_list: 'Unnamed list'
label_board_type: 'Board type'
label_unnamed_board: 'Panel sin nombre'
label_unnamed_list: 'Lista sin nombre'
label_board_type: 'Tipo de panel'
upsale:
teaser_text: 'Improve your agile project management with this flexible Boards view. Create as many boards as you like for anything you would like to keep track of.'
upgrade_to_ee_text: 'Boards is an Enterprise feature. Please upgrade to a paid plan.'
upgrade: 'Upgrade now'
personal_demo: 'Get a personal demo'
teaser_text: 'Mejore su administración de proyectos ágiles con esta vista flexible de paneles. Cree tantos paneles como prefiera para cualquier elemento del que quiera realizar un seguimiento.'
upgrade_to_ee_text: 'Los paneles son una característica de la versión Enterprise. Actualice a un plan de pago.'
upgrade: 'Actualizar ahora'
personal_demo: 'Obtener una demostración personal'
lists:
delete: 'Eliminar lista'
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'
is_locked: 'La versión está bloqueada. No se pueden agregar elementos a esta versión.'
is_closed: 'La versión está cerrada. No se pueden agregar elementos a esta versión.'
close_version: 'Cerrar versión'
open_version: 'Abrir versión'
lock_version: 'Bloquear versión'
unlock_version: 'Desbloquear versión'
edit_version: 'Editar versión'
show_version: 'Mostrar versión'
locked: 'Bloqueado'
closed: 'Cerrado'
new_board: 'New board'
add_list: 'Add list'
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"
click_to_remove_list: "Click to remove this list"
new_board: 'Nuevo panel'
add_list: 'Agregar lista'
add_card: 'Agregar tarjeta'
error_attribute_not_writable: "No se puede mover el paquete de trabajo porque %{attribute} no permite la escritura."
error_loading_the_list: "Error al cargar la lista: %{error_message}"
error_permission_missing: "Falta el permiso para crear consultas públicas"
click_to_remove_list: "Haga clic para quitar esta lista"
board_type:
free: 'Basic board'
free: 'Panel básico'
free_text: >
Create a board in which you can freely create lists and order your work packages within. Moving work packages between lists do not change the work package itself.
action: 'Action board'
action_by_attribute: 'Action board (%{attribute})'
Cree un panel donde pueda crear libremente listas y ordenar los paquetes de trabajo que contenga. Al mover los paquetes de trabajo entre las listas, no se cambia del paquete de trabajo en sí.
action: 'Panel de acciones'
action_by_attribute: 'Panel de acciones (%{attribute})'
action_text: >
Create a board with filtered lists on a single attribute. Moving work packages to other lists will update their attribute.
select_attribute: "Action attribute"
Cree un panel con listas filtradas en un único atributo. Al mover los paquetes de trabajo a otras listas, se actualizará su atributo.
select_attribute: "Atributo de acción"
configuration_modal:
title: 'Configure this board'
title: 'Configurar este panel'
display_settings:
card_mode: "Display as cards"
table_mode: "Display as table"
card_mode: "Mostrar como tarjetas"
table_mode: "Mostrar como tabla"

@ -1,45 +1,45 @@
fr:
js:
boards:
label_unnamed_board: 'Unnamed board'
label_unnamed_list: 'Unnamed list'
label_board_type: 'Board type'
label_unnamed_board: 'Tableau sans nom'
label_unnamed_list: 'Liste sans nom'
label_board_type: 'Type de tableau'
upsale:
teaser_text: 'Improve your agile project management with this flexible Boards view. Create as many boards as you like for anything you would like to keep track of.'
upgrade_to_ee_text: 'Boards is an Enterprise feature. Please upgrade to a paid plan.'
upgrade: 'Upgrade now'
personal_demo: 'Get a personal demo'
teaser_text: 'Améliorez votre gestion de projet agile avec cette vue des tableaux flexible. Créez autant de tableaux que vous voulez pour tout ce que vous souhaitez conserver.'
upgrade_to_ee_text: 'Les tableaux sont une fonctionnalité du plan Enterprise. Veuillez passer à un forfait payant.'
upgrade: 'Passer au plan supérieur'
personal_demo: 'Obtenir une démo personnelle'
lists:
delete: 'Supprimer la liste'
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'
is_locked: 'La version est verrouillée. Aucun élément ne peut être ajouté à cette version.'
is_closed: 'La version est fermée. Aucun élément ne peut être ajouté à cette version.'
close_version: 'Fermer la version'
open_version: 'Ouvrir la version'
lock_version: 'Verrouiller la version'
unlock_version: 'Déverrouiller la version'
edit_version: 'Éditer la version'
show_version: 'Afficher la version'
locked: 'Verrouillé'
closed: 'Clôturé'
new_board: 'New board'
add_list: 'Add list'
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}"
new_board: 'Nouveau tableau'
add_list: 'Ajouter une liste'
add_card: 'Ajouter une carte'
error_attribute_not_writable: "Impossible de déplacer le lot de travaux, %{attribute} n'est pas modifiable."
error_loading_the_list: "Erreur lors du chargement de la liste : %{error_message}"
error_permission_missing: "La permission pour créer des requêtes publiques est manquante"
click_to_remove_list: "Click to remove this list"
click_to_remove_list: "Cliquez pour supprimer cette liste"
board_type:
free: 'Basic board'
free: 'Tableau de base'
free_text: >
Create a board in which you can freely create lists and order your work packages within. Moving work packages between lists do not change the work package itself.
action: 'Action board'
action_by_attribute: 'Action board (%{attribute})'
Créez un tableau dans lequel vous pouvez créer librement des listes et ordonner vos lots de travaux dans celles-ci. Déplacer des lots de travaux entre les listes ne modifie pas le lot de travaux en lui-même.
action: 'Tableau d''action'
action_by_attribute: 'Tableau d''action (%{attribute})'
action_text: >
Create a board with filtered lists on a single attribute. Moving work packages to other lists will update their attribute.
select_attribute: "Action attribute"
Créez un tableau avec des listes filtrées sur un seul attribut. Déplacer des lots de travaux vers d'autres listes mettra à jour leur attribut.
select_attribute: "Attribut d'action"
configuration_modal:
title: 'Configure this board'
title: 'Configurer ce tableau'
display_settings:
card_mode: "Display as cards"
table_mode: "Display as table"
card_mode: "Affichage en cartes"
table_mode: "Affichage en tableau"

@ -1,45 +1,45 @@
ko:
js:
boards:
label_unnamed_board: 'Unnamed board'
label_unnamed_list: 'Unnamed list'
label_board_type: 'Board type'
label_unnamed_board: '명명되지 않은 보드'
label_unnamed_list: '명명되지 않은 목록'
label_board_type: '보드 유형'
upsale:
teaser_text: 'Improve your agile project management with this flexible Boards view. Create as many boards as you like for anything you would like to keep track of.'
upgrade_to_ee_text: 'Boards is an Enterprise feature. Please upgrade to a paid plan.'
upgrade: 'Upgrade now'
personal_demo: 'Get a personal demo'
teaser_text: '이 유연한 보드 보기에서 애자일 프로젝트 관리를 개선하십시오. 계속 추적하고 싶은 사항에 따라 원하는 만큼 보드를 생성하십시오.'
upgrade_to_ee_text: '보드는 Enterprise 기능입니다. 유료 플랜으로 업그레이드하십시오.'
upgrade: '지금 업그레이드'
personal_demo: '개인 데모 이용'
lists:
delete: '목록 삭제'
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'
is_locked: '버전이 잠겨 있습니다. 이 버전에 항목을 추가할 수 없습니다.'
is_closed: '버전이 닫혔습니다. 이 버전에 항목을 추가할 수 없습니다.'
close_version: '버전 닫기'
open_version: '버전 열기'
lock_version: '버전 잠금'
unlock_version: '버전 잠금 해제'
edit_version: '버전 편집'
show_version: '버전 표시'
locked: '잠김'
closed: '닫음'
new_board: 'New board'
add_list: 'Add list'
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"
click_to_remove_list: "Click to remove this list"
new_board: '새로운 보드'
add_list: '목록 추가'
add_card: '카드 추가'
error_attribute_not_writable: "작업 패키지를 이동할 수 없습니다. %{attribute}은(는) 쓰기 가능하지 않습니다."
error_loading_the_list: "목록 로드 중 오류 발생: %{error_message}"
error_permission_missing: "공용 쿼리를 만들 수 있는 권한이 없습니다"
click_to_remove_list: "이 목록을 제거하려면 클릭"
board_type:
free: 'Basic board'
free: '기본 보드'
free_text: >
Create a board in which you can freely create lists and order your work packages within. Moving work packages between lists do not change the work package itself.
action: 'Action board'
action_by_attribute: 'Action board (%{attribute})'
자유롭게 목록을 만들고 작업 패키지를 주문할 수 있는 보드를 생성하십시오. 목록 간에 작업 패키지를 이동해도 작업 패키지 자체는 변경되지 않습니다.
action: '작업 보드'
action_by_attribute: '작업 보드(%{attribute})'
action_text: >
Create a board with filtered lists on a single attribute. Moving work packages to other lists will update their attribute.
select_attribute: "Action attribute"
단일 특성에서 필터가 적용한 목록을 사용하여 보드를 생성하십시오. 작업 패키지를 다른 목록으로 이동하면 해당 특성이 업데이트됩니다.
select_attribute: "작업 특성"
configuration_modal:
title: 'Configure this board'
title: '이 보드 구성'
display_settings:
card_mode: "Display as cards"
table_mode: "Display as table"
card_mode: "카드로 표시"
table_mode: "테이블로 표시"

@ -1,45 +1,45 @@
pl:
js:
boards:
label_unnamed_board: 'Unnamed board'
label_unnamed_list: 'Unnamed list'
label_board_type: 'Board type'
label_unnamed_board: 'Tablica bez nazwy'
label_unnamed_list: 'Lista bez nazwy'
label_board_type: 'Typ tablicy'
upsale:
teaser_text: 'Improve your agile project management with this flexible Boards view. Create as many boards as you like for anything you would like to keep track of.'
upgrade_to_ee_text: 'Boards is an Enterprise feature. Please upgrade to a paid plan.'
upgrade: 'Upgrade now'
personal_demo: 'Get a personal demo'
teaser_text: 'Usprawnij swoje zwinne zarządzanie projektami dzięki temu elastycznemu widokowi Tablice. Twórz tyle tablic, ile chcesz, dla czegokolwiek, co zechcesz śledzić.'
upgrade_to_ee_text: 'Tablice to funkcja wersji Enterprise. Przejdź na plan płatny.'
upgrade: 'Zmień plan teraz'
personal_demo: 'Pobierz osobistą wersję demonstracyjną'
lists:
delete: 'Usuń 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'
is_locked: 'Wersja jest zablokowana. Do tej wersji nie można dodać żadnych elementów.'
is_closed: 'Wersja jest zamknięta. Do tej wersji nie można dodać żadnych elementów.'
close_version: 'Zamknij wersję'
open_version: 'Otwórz wersję'
lock_version: 'Zablokuj wersję'
unlock_version: 'Odblokuj wersję'
edit_version: 'Edytuj wersję'
show_version: 'Pokaż wersję'
locked: 'Zablokowany'
closed: 'Zamknięte'
new_board: 'New board'
add_list: 'Add list'
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"
click_to_remove_list: "Click to remove this list"
new_board: 'Nowa tablica'
add_list: 'Dodaj listę'
add_card: 'Dodaj kartę'
error_attribute_not_writable: "Nie można przenieść pakietu roboczego, nie można zapisać %{attribute}."
error_loading_the_list: "Błąd podczas ładowania listy: %{error_message}"
error_permission_missing: "Brakuje uprawnienia do tworzenia zapytań publicznych"
click_to_remove_list: "Kliknij, aby usunąć tę listę"
board_type:
free: 'Basic board'
free: 'Tablica podstawowa'
free_text: >
Create a board in which you can freely create lists and order your work packages within. Moving work packages between lists do not change the work package itself.
action: 'Action board'
action_by_attribute: 'Action board (%{attribute})'
Utwórz tablicę, na której możesz dowolnie tworzyć listy i zlecać pakiety robocze. Przenoszenie pakietów roboczych pomiędzy listami nie zmienia samego pakietu roboczego.
action: 'Tablica działania'
action_by_attribute: 'Tablica działania (%{attribute})'
action_text: >
Create a board with filtered lists on a single attribute. Moving work packages to other lists will update their attribute.
select_attribute: "Action attribute"
Utwórz tablicę z listami filtrowanymi według jednego atrybutu. Przeniesienie pakietów roboczych na inne listy spowoduje aktualizację ich atrybutu.
select_attribute: "Atrybut działania"
configuration_modal:
title: 'Configure this board'
title: 'Skonfiguruj tę tablicę'
display_settings:
card_mode: "Display as cards"
table_mode: "Display as table"
card_mode: "Wyświetlaj jako karty"
table_mode: "Wyświetlaj jako tabelę"

@ -5,7 +5,7 @@ pt:
label_unnamed_list: 'Lista sem nome'
label_board_type: 'Tipo de quadro'
upsale:
teaser_text: 'Melhore a sua gestão ágil de projetos com esta visualização flexível de Quadros. Crie os quadros que quiser para qualquer coisa que queira acompanhar.'
teaser_text: 'Melhore e agilize a sua gestão de projetos com esta visualização flexível de Quadros. Crie os quadros que quiser para qualquer coisa que queira acompanhar.'
upgrade_to_ee_text: 'Os Quadros são um recurso Empresarial. Por favor atualize para um plano pago.'
upgrade: 'Atualizar agora'
personal_demo: 'Obter uma demonstração pessoal'

@ -5,41 +5,41 @@ zh-CN:
label_unnamed_list: '未命名列表'
label_board_type: '面板类型'
upsale:
teaser_text: 'Improve your agile project management with this flexible Boards view. Create as many boards as you like for anything you would like to keep track of.'
upgrade_to_ee_text: 'Boards is an Enterprise feature. Please upgrade to a paid plan.'
upgrade: 'Upgrade now'
personal_demo: 'Get a personal demo'
teaser_text: '通过此灵活的面板视图改进您的敏捷项目管理。为您想要跟踪的一切创建任意数量的面板。'
upgrade_to_ee_text: '面板是企业版功能。请升级到付费计划。'
upgrade: '立即升级'
personal_demo: '获取个人演示'
lists:
delete: '删除列表'
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'
is_locked: '版本已锁定。无法向此版本添加项目。'
is_closed: '版本已关闭。无法向此版本添加项目。'
close_version: '关闭版本'
open_version: '打开版本'
lock_version: '锁定版本'
unlock_version: '解锁版本'
edit_version: '编辑版本'
show_version: '显示版本'
locked: '锁定'
closed: '已关闭'
new_board: 'New board'
add_list: 'Add list'
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}"
new_board: '新建面板'
add_list: '添加列表'
add_card: '添加卡片'
error_attribute_not_writable: "无法移动工作包,%{attribute} 不可写。"
error_loading_the_list: "加载列表时出错:%{error_message}"
error_permission_missing: "缺少创建公共查询的权限"
click_to_remove_list: "Click to remove this list"
click_to_remove_list: "点击以移除此列表"
board_type:
free: 'Basic board'
free: '基本面板'
free_text: >
Create a board in which you can freely create lists and order your work packages within. Moving work packages between lists do not change the work package itself.
action: 'Action board'
action_by_attribute: 'Action board (%{attribute})'
创建一个可在其中自由创建列表和订购工作包的面板。在列表之间移动工作包不会更改工作包本身。
action: '操作面板'
action_by_attribute: '操作面板 (%{attribute})'
action_text: >
Create a board with filtered lists on a single attribute. Moving work packages to other lists will update their attribute.
select_attribute: "Action attribute"
创建一个在单个属性上具有筛选列表的面板。将工作包移动到其他列表将更新其属性。
select_attribute: "操作属性"
configuration_modal:
title: 'Configure this board'
title: '配置此面板'
display_settings:
card_mode: "Display as cards"
table_mode: "Display as table"
card_mode: "显示为卡片"
table_mode: "显示为表"

@ -1,6 +1,6 @@
ko:
permission_show_board_views: "View boards"
permission_manage_board_views: "Manage boards"
permission_show_board_views: "보드 보기"
permission_manage_board_views: "보드 관리"
project_module_board_view: "보드"
boards:
label_boards: "보드"

@ -1,6 +1,6 @@
pl:
permission_show_board_views: "View boards"
permission_manage_board_views: "Manage boards"
permission_show_board_views: "Wyświetl tablice"
permission_manage_board_views: "Zarządzaj tablicami"
project_module_board_view: "Tablice"
boards:
label_boards: "Tablice"

@ -96,9 +96,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
method: :delete,
html: { id: "delete_cost_type_#{cost_type.id}",
class: 'delete_cost_type',
title: t(:button_delete) } do |f| %>
title: t(:button_lock) } do |f| %>
<button type="submit"
class="button submit_cost_type">
class="button--link submit_cost_type">
<%= icon_wrapper('icon icon-locked', I18n.t(:button_lock)) %>
</button>
<% end %>

@ -74,7 +74,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
html: { id: "restore_cost_type_#{cost_type.id}",
class: 'restore_cost_type' } do |f| %>
<button type="submit"
class="button submit_cost_type">
class="button--link submit_cost_type">
<%= icon_wrapper('icon icon-unlocked', I18n.t(:button_unlock)) %>
</button>
<% end %>

@ -1,5 +1,5 @@
es:
dashboards:
label: 'Dashboards'
menu_badge: 'Alpha'
project_module_dashboards: 'Dashboards'
label: 'Paneles'
menu_badge: 'Alfa'
project_module_dashboards: 'Paneles'

@ -1,5 +1,5 @@
fr:
dashboards:
label: 'Dashboards'
label: 'Tableaux de bord'
menu_badge: 'Alpha'
project_module_dashboards: 'Dashboards'
project_module_dashboards: 'Tableaux de bord'

@ -1,4 +1,4 @@
es:
js:
dashboards:
label: 'Dashboard'
label: 'Paneles'

@ -1,4 +1,4 @@
fr:
js:
dashboards:
label: 'Dashboard'
label: 'Tableau de bord'

@ -1,4 +1,4 @@
ko:
js:
dashboards:
label: 'Dashboard'
label: '대시보드'

@ -1,4 +1,4 @@
pl:
js:
dashboards:
label: 'Dashboard'
label: 'Pulpit nawigacyjny'

@ -1,4 +1,4 @@
zh-CN:
js:
dashboards:
label: 'Dashboard'
label: '仪表板'

@ -1,5 +1,5 @@
ko:
dashboards:
label: 'Dashboards'
menu_badge: 'Alpha'
project_module_dashboards: 'Dashboards'
label: '대시보드'
menu_badge: '알파'
project_module_dashboards: '대시보드'

@ -1,5 +1,5 @@
pl:
dashboards:
label: 'Dashboards'
menu_badge: 'Alpha'
project_module_dashboards: 'Dashboards'
label: 'Pulpity nawigacyjne'
menu_badge: 'Alfa'
project_module_dashboards: 'Pulpity nawigacyjne'

@ -1,5 +1,5 @@
zh-CN:
dashboards:
label: 'Dashboards'
menu_badge: 'Alpha'
project_module_dashboards: 'Dashboards'
label: '仪表板'
menu_badge: 'Alpha'
project_module_dashboards: '仪表板'

@ -1,10 +1,10 @@
es:
github_integration:
pull_request_opened_comment: >
**PR Opened:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been opened by [%{github_user}](%{github_user_url}).
**PR abierta:** la solicitud de incorporación de cambios %{pr_number} [%{pr_title}](%{pr_url}) para [%{repository}](%{repository_url}) ha sido abierta por [%{github_user}](%{github_user_url}).
pull_request_closed_comment: >
**PR Closed:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been closed by [%{github_user}](%{github_user_url}).
**PR cerrada:** la solicitud de incorporación de cambios %{pr_number} [%{pr_title}](%{pr_url}) para [%{repository}](%{repository_url}) ha sido cerrada por [%{github_user}](%{github_user_url}).
pull_request_merged_comment: >
**PR Merged:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been merged by [%{github_user}](%{github_user_url}).
**PR combinada:** la solicitud de incorporación de cambios %{pr_number} [%{pr_title}](%{pr_url}) para [%{repository}](%{repository_url}) ha sido combinada por [%{github_user}](%{github_user_url}).
pull_request_referenced_comment: >
**Referenced in PR:** [%{github_user}](%{github_user_url}) referenced this work package in Pull request %{pr_number} [%{pr_title}](%{pr_url}) on [%{repository}](%{repository_url}).
**Con referencia en PR:** [%{github_user}](%{github_user_url}) hizo referencia a este paquete de trabajo en la solicitud de incorporación de cambios %{pr_number} [%{pr_title}](%{pr_url}) en [%{repository}](%{repository_url}).

@ -1,10 +1,10 @@
fr:
github_integration:
pull_request_opened_comment: >
**PR Opened:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been opened by [%{github_user}](%{github_user_url}).
**PR Ouvert :** Demande pull %{pr_number} [%{pr_title}](%{pr_url}) pour [%{repository}](%{repository_url}) ouverte par [%{github_user}](%{github_user_url}).
pull_request_closed_comment: >
**PR Closed:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been closed by [%{github_user}](%{github_user_url}).
**PR Fermé :** Demande pull %{pr_number} [%{pr_title}](%{pr_url}) pour [%{repository}](%{repository_url}) fermée par [%{github_user}](%{github_user_url}).
pull_request_merged_comment: >
**PR Merged:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been merged by [%{github_user}](%{github_user_url}).
**PR Fusionné :** Demande pull %{pr_number} [%{pr_title}](%{pr_url}) pour [%{repository}](%{repository_url}) fusionnée par [%{github_user}](%{github_user_url}).
pull_request_referenced_comment: >
**Referenced in PR:** [%{github_user}](%{github_user_url}) referenced this work package in Pull request %{pr_number} [%{pr_title}](%{pr_url}) on [%{repository}](%{repository_url}).
**Référencé dans PR:** [%{github_user}](%{github_user_url}) a référencé ce lots de travaux dans la demande Pull %{pr_number} [%{pr_title}](%{pr_url}) dans [%{repository}](%{repository_url}).

@ -1,10 +1,10 @@
ko:
github_integration:
pull_request_opened_comment: >
**PR Opened:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been opened by [%{github_user}](%{github_user_url}).
**PR 열림:** [%{repository}](%{repository_url})에 대한 끌어오기 요청 %{pr_number} [%{pr_title}](%{pr_url})이(가) [%{github_user}](%{github_user_url})님에 의해 열렸습니다.
pull_request_closed_comment: >
**PR Closed:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been closed by [%{github_user}](%{github_user_url}).
**PR 닫힘:** [%{repository}](%{repository_url})에 대한 끌어오기 요청 %{pr_number} [%{pr_title}](%{pr_url})이(가) [%{github_user}](%{github_user_url})님에 의해 닫혔습니다.
pull_request_merged_comment: >
**PR Merged:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been merged by [%{github_user}](%{github_user_url}).
**PR 병합됨:** [%{repository}](%{repository_url})에 대한 끌어오기 요청 %{pr_number} [%{pr_title}](%{pr_url})이(가) [%{github_user}](%{github_user_url})님에 의해 병합되었습니다.
pull_request_referenced_comment: >
**Referenced in PR:** [%{github_user}](%{github_user_url}) referenced this work package in Pull request %{pr_number} [%{pr_title}](%{pr_url}) on [%{repository}](%{repository_url}).
**PR에서 참조됨:** [%{github_user}](%{github_user_url})님이 [%{repository}](%{repository_url})의 끌어오기 요청 %{pr_number} [%{pr_title}](%{pr_url})에서 이 작업 패키지를 참조했습니다.

@ -1,10 +1,10 @@
pl:
github_integration:
pull_request_opened_comment: >
**PR Opened:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been opened by [%{github_user}](%{github_user_url}).
**Otwarte PR:** Żądanie Pull Request %{pr_number} [%{pr_title}](%{pr_url}) dla [%{repository}](%{repository_url}) zostało otwarte przez [%{github_user}](%{github_user_url}).
pull_request_closed_comment: >
**PR Closed:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been closed by [%{github_user}](%{github_user_url}).
**Zamknięte PR:** Żądanie Pull Request %{pr_number} [%{pr_title}](%{pr_url}) dla [%{repository}](%{repository_url}) zostało zamknięte przez [%{github_user}](%{github_user_url}).
pull_request_merged_comment: >
**PR Merged:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been merged by [%{github_user}](%{github_user_url}).
**Scalone PR:** Żądanie Pull Request %{pr_number} [%{pr_title}](%{pr_url}) dla [%{repository}](%{repository_url}) zostało scalone przez [%{github_user}](%{github_user_url}).
pull_request_referenced_comment: >
**Referenced in PR:** [%{github_user}](%{github_user_url}) referenced this work package in Pull request %{pr_number} [%{pr_title}](%{pr_url}) on [%{repository}](%{repository_url}).
**Wskazano w PR:** [%{github_user}](%{github_user_url}) wskazał ten pakiet roboczy w żądaniu Pull Request %{pr_number} [%{pr_title}](%{pr_url}), w [%{repository}](%{repository_url}).

@ -1,10 +1,10 @@
zh-CN:
github_integration:
pull_request_opened_comment: >
**PR Opened:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been opened by [%{github_user}](%{github_user_url}).
**拉取请求已打开:** [%{repository}](%{repository_url}) 的拉取请求 %{pr_number} [%{pr_title}](%{pr_url}) 已由 [%{github_user}](%{github_user_url}) 打开。
pull_request_closed_comment: >
**PR Closed:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been closed by [%{github_user}](%{github_user_url}).
**拉取请求已关闭:** [%{repository}](%{repository_url}) 的拉取请求 %{pr_number} [%{pr_title}](%{pr_url}) 已由 [%{github_user}](%{github_user_url}) 关闭。
pull_request_merged_comment: >
**PR Merged:** Pull request %{pr_number} [%{pr_title}](%{pr_url}) for [%{repository}](%{repository_url}) has been merged by [%{github_user}](%{github_user_url}).
**拉取请求已合并:** [%{repository}](%{repository_url}) 的拉取请求 %{pr_number} [%{pr_title}](%{pr_url}) 已由 [%{github_user}](%{github_user_url}) 合并。
pull_request_referenced_comment: >
**Referenced in PR:** [%{github_user}](%{github_user_url}) referenced this work package in Pull request %{pr_number} [%{pr_title}](%{pr_url}) on [%{repository}](%{repository_url}).
**已在拉取请求中引用:** [%{github_user}](%{github_user_url}) 在 [%{repository}](%{repository_url}) 上的拉取请求 %{pr_number} [%{pr_title}](%{pr_url}) 中引用了此工作包。

@ -1,11 +1,11 @@
es:
js:
grid:
add_widget: 'Add widget'
remove: 'Remove widget'
add_widget: 'Agregar widget'
remove: 'Quitar widget'
upsale:
text: "Some widgets, like the work package graph widget, are only available in the "
link: 'enterprise edition.'
text: "Algunos widgets, como el widget del gráfico de paquetes de trabajo, solo están disponibles en la "
link: 'edición Enterprise.'
widgets:
custom_text:
title: 'Texto personalizado'
@ -14,23 +14,23 @@ es:
no_results: 'No hay documentos.'
members:
title: 'Miembros'
no_results: 'No visible members.'
no_results: 'No hay miembros visibles.'
view_all_members: 'Ver todos los miembros'
add: 'Miembro'
too_many: 'Displaying %{count} of %{total} members.'
too_many: 'Mostrando %{count} de %{total} miembros.'
news:
title: 'Noticias'
at: 'en'
no_results: 'Nada nuevo sobre lo que informar.'
project_description:
title: 'Descripción del proyecto'
no_results: "No description has been written yet. One can be provided in the 'Project settings'."
no_results: "Aún no se ha escrito ninguna descripción. Puede proporcionar una descripción en la configuración del proyecto."
project_details:
title: 'Detalles del proyecto'
no_results: 'No custom fields have been defined for projects.'
no_results: 'No se han definido campos personalizados para los proyectos.'
subprojects:
title: 'Subproyectos'
no_results: 'No subprojects.'
no_results: 'No hay subproyectos.'
time_entries_list:
title: 'Tiempo de gastos (últimos 7 días)'
no_results: 'Sin entradas temporales en los últimos 7 días.'
@ -43,11 +43,11 @@ es:
work_packages_watched:
title: 'Paquetes de trabajo vigilados por mí'
work_packages_table:
title: 'Work packages table'
title: 'Tabla de paquetes de trabajo'
work_packages_graph:
title: 'Work packages graph'
title: 'Gráfico de paquetes de trabajo'
work_packages_calendar:
title: 'Calendario'
work_packages_overview:
title: 'Work packages overview'
placeholder: 'Click to edit ...'
title: 'Información general sobre paquete de trabajo'
placeholder: 'Haga clic para editar…'

@ -1,11 +1,11 @@
fr:
js:
grid:
add_widget: 'Add widget'
remove: 'Remove widget'
add_widget: 'Ajouter un widget'
remove: 'Supprimer le widget'
upsale:
text: "Some widgets, like the work package graph widget, are only available in the "
link: 'enterprise edition.'
text: "Certains widgets, comme le widget graphique des lots de travaux, ne sont disponibles que dans"
link: 'la version Entreprise.'
widgets:
custom_text:
title: 'Texte personnalisé'
@ -14,23 +14,23 @@ fr:
no_results: 'Encore aucun document.'
members:
title: 'Membres'
no_results: 'No visible members.'
no_results: 'Aucun membre visible.'
view_all_members: 'Afficher tous les membres'
add: 'Membre'
too_many: 'Displaying %{count} of %{total} members.'
too_many: '%{count} membres sur %{total} affichés.'
news:
title: 'Actualités'
at: 'à'
no_results: 'Rien de nouveau à signaler.'
project_description:
title: 'Description du projet'
no_results: "No description has been written yet. One can be provided in the 'Project settings'."
no_results: "Aucune description n'a encore été écrite. Vous pouvez en trouver une dans les \"Paramètres du projet\"."
project_details:
title: 'Détails du projet'
no_results: 'No custom fields have been defined for projects.'
no_results: 'Aucun champ personnalisé n''a été défini pour les projets.'
subprojects:
title: 'Sous-projets'
no_results: 'No subprojects.'
no_results: 'Aucun sous-projet.'
time_entries_list:
title: 'Temps passé (7 derniers jours)'
no_results: 'Aucune entrée de temps pour les 7 derniers jours.'
@ -43,11 +43,11 @@ fr:
work_packages_watched:
title: 'Lots de travaux que j''ai observés'
work_packages_table:
title: 'Work packages table'
title: 'Tableau des lots de travaux'
work_packages_graph:
title: 'Work packages graph'
title: 'Graphique des lots de travaux'
work_packages_calendar:
title: 'Calendrier'
work_packages_overview:
title: 'Work packages overview'
placeholder: 'Click to edit ...'
title: 'Aperçu des lots de travaux'
placeholder: 'Cliquez pour éditer...'

@ -1,11 +1,11 @@
ko:
js:
grid:
add_widget: 'Add widget'
remove: 'Remove widget'
add_widget: '위젯 추가'
remove: '위젯 제거'
upsale:
text: "Some widgets, like the work package graph widget, are only available in the "
link: 'enterprise edition.'
text: "작업 패키지 그래프 위젯 같은 일부 위젯은 다음에서만 사용 가능합니다: "
link: 'Enterprise Edition.'
widgets:
custom_text:
title: '사용자 지정 텍스트'
@ -14,23 +14,23 @@ ko:
no_results: '아직 문서가 없습니다.'
members:
title: '멤버'
no_results: 'No visible members.'
no_results: '표시할 멤버가 없습니다.'
view_all_members: '모든 회원 보기'
add: '멤버'
too_many: 'Displaying %{count} of %{total} members.'
too_many: '%{count}/%{total}명의 멤버를 표시 중입니다.'
news:
title: '뉴스'
at: '-'
no_results: '새로 보고할 것이 없음'
project_description:
title: '프로젝트 설명'
no_results: "No description has been written yet. One can be provided in the 'Project settings'."
no_results: "설명이 아직 작성되지 않았습니다. '프로젝트 설정'에서 입력할 수 있습니다."
project_details:
title: '프로젝트 세부 정보'
no_results: 'No custom fields have been defined for projects.'
no_results: '프로젝트에 대한 사용자 지정 필드가 정의되지 않았습니다.'
subprojects:
title: '하위 프로젝트'
no_results: 'No subprojects.'
no_results: '하위 프로젝트가 없습니다.'
time_entries_list:
title: '경과 시간(지난 7 일)'
no_results: '지난 7일간 시간 항목이 없습니다.'
@ -43,11 +43,11 @@ ko:
work_packages_watched:
title: '내가 본 작업 패키지'
work_packages_table:
title: 'Work packages table'
title: '작업 패키지 테이블'
work_packages_graph:
title: 'Work packages graph'
title: '작업 패키지 그래프'
work_packages_calendar:
title: '달력'
work_packages_overview:
title: 'Work packages overview'
placeholder: 'Click to edit ...'
title: '작업 패키지 개요'
placeholder: '편집하려면 클릭...'

@ -1,11 +1,11 @@
pl:
js:
grid:
add_widget: 'Add widget'
remove: 'Remove widget'
add_widget: 'Dodaj widżet'
remove: 'Usuń widżet'
upsale:
text: "Some widgets, like the work package graph widget, are only available in the "
link: 'enterprise edition.'
text: "Niektóre widżety, takie jak widżet wykresu pakietu roboczego, są dostępne jedynie w wersji"
link: 'Enterprise Edition.'
widgets:
custom_text:
title: 'Tekst niestandardowy/użytkownika'
@ -14,23 +14,23 @@ pl:
no_results: 'Nie ma jeszcze dokumentów.'
members:
title: 'Członkowie'
no_results: 'No visible members.'
no_results: 'Brak widocznych członków.'
view_all_members: 'Zobacz wszystkich członków'
add: 'Członek'
too_many: 'Displaying %{count} of %{total} members.'
too_many: 'Wyświetlanie %{count} z %{total} członków.'
news:
title: 'Aktualności'
at: 'w'
no_results: 'Utwórz nowy raport.'
project_description:
title: 'Opis projektu'
no_results: "No description has been written yet. One can be provided in the 'Project settings'."
no_results: "Nie napisano jeszcze opisu. Można go podać w sekcji Ustawienia projektu."
project_details:
title: 'Szczegóły Projektu'
no_results: 'No custom fields have been defined for projects.'
no_results: 'Nie zdefiniowano żadnych pól niestandardowych dla projektów.'
subprojects:
title: 'Podprojekty'
no_results: 'No subprojects.'
no_results: 'Brak podprojektów.'
time_entries_list:
title: 'Poświęcony czas (ostatnie 7 dni)'
no_results: 'Brak zarejestrowanego czasu pracy w ostatnich 7 dniach.'
@ -43,11 +43,11 @@ pl:
work_packages_watched:
title: 'Pakiety robocze obserwowane przeze mnie'
work_packages_table:
title: 'Work packages table'
title: 'Tabela pakietów roboczych'
work_packages_graph:
title: 'Work packages graph'
title: 'Wykres pakietów roboczych'
work_packages_calendar:
title: 'Kalendarz'
work_packages_overview:
title: 'Work packages overview'
placeholder: 'Click to edit ...'
title: 'Przegląd pakietów roboczych'
placeholder: 'Kliknij, aby edytować...'

@ -1,11 +1,11 @@
ru:
js:
grid:
add_widget: 'Add widget'
add_widget: 'Добавить виджет'
remove: 'Удалить виджет'
upsale:
text: "Some widgets, like the work package graph widget, are only available in the "
link: 'enterprise edition.'
text: "Некоторые виджеты, такие как виджет графика комплекса работ, доступны только в "
link: 'корпоративной версии.'
widgets:
custom_text:
title: 'Пользовательский текст'
@ -24,10 +24,10 @@ ru:
no_results: 'Ничего нового для отчета.'
project_description:
title: 'Описание проекта'
no_results: "No description has been written yet. One can be provided in the 'Project settings'."
no_results: "Описания еще нет. Его можно добавить в настройках проекта."
project_details:
title: 'Детали проекта'
no_results: 'No custom fields have been defined for projects.'
no_results: 'Для проектов не определены настраиваемые поля.'
subprojects:
title: 'Подпроекты'
no_results: 'Подпроектов нет.'

@ -1,11 +1,11 @@
zh-CN:
js:
grid:
add_widget: 'Add widget'
remove: 'Remove widget'
add_widget: '添加微件'
remove: '移除微件'
upsale:
text: "Some widgets, like the work package graph widget, are only available in the "
link: 'enterprise edition.'
text: "某些微件(例如工作包图微件)仅适用于"
link: '企业版。'
widgets:
custom_text:
title: '自定义文本'
@ -14,23 +14,23 @@ zh-CN:
no_results: '没有文档。'
members:
title: '成员'
no_results: 'No visible members.'
no_results: '无可见成员。'
view_all_members: '查看所有成员'
add: '成员'
too_many: 'Displaying %{count} of %{total} members.'
too_many: '正在显示 %{count} 个成员,总共 %{total} 个。'
news:
title: '新闻'
at: '位置:'
no_results: '没有新消息报告。'
project_description:
title: '项目描述'
no_results: "No description has been written yet. One can be provided in the 'Project settings'."
no_results: "尚未写入任何描述。可以在“项目设置”中提供一个描述。"
project_details:
title: '项目详细信息'
no_results: 'No custom fields have been defined for projects.'
no_results: '没有为项目定义自定义字段。'
subprojects:
title: '子项目'
no_results: 'No subprojects.'
no_results: '无子项目。'
time_entries_list:
title: '花费时间 (最近 7天)'
no_results: '过去7天没有时间记录。'
@ -43,11 +43,11 @@ zh-CN:
work_packages_watched:
title: '由我汇报的工作包'
work_packages_table:
title: 'Work packages table'
title: '工作包表'
work_packages_graph:
title: 'Work packages graph'
title: '工作包图'
work_packages_calendar:
title: '日历'
work_packages_overview:
title: 'Work packages overview'
placeholder: 'Click to edit ...'
title: '工作包概览'
placeholder: '点击以编辑…'

@ -2,31 +2,31 @@ es:
activerecord:
attributes:
ldap_groups/synchronized_group:
entry: 'Entry identifier'
auth_source: 'LDAP connection'
entry: 'Identificador de entrada'
auth_source: 'Conexión LDAP'
models:
ldap_groups/synchronized_group: 'Synchronized LDAP group'
ldap_groups/synchronized_group: 'Grupo de LDAP sincronizado'
ldap_groups:
label_menu_item: 'LDAP group synchronization'
label_group_key: 'LDAP group filter key'
label_menu_item: 'Sincronización de grupos de LDAP'
label_group_key: 'Clave de filtro de grupo de LDAP'
settings:
group_key: 'LDAP group attribute'
group_key_text: 'The LDAP attribute name used to identify the groups.'
group_base: 'LDAP group base'
group_base_text: 'LDAP group base used to search for group entries.'
group_key: 'Atributo del grupo de LDAP'
group_key_text: 'El nombre de atributo LDAP usado para identificar los grupos.'
group_base: 'Base del grupo de LDAP'
group_base_text: 'Base del grupo de LDAP usado para buscar entradas del grupo.'
synchronized_groups:
add_new: 'Add synchronized LDAP group'
add_new: 'Agregar grupo de LDAP sincronizado'
destroy:
title: 'Remove synchronized group %{name}'
confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed."
info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed."
verification: "Enter the group's name %{name} to verify the deletion."
no_results: 'No synchronized groups found.'
no_members: 'This group has no synchronized members yet.'
plural: 'Synchronized LDAP groups'
singular: 'Synchronized LDAP group'
title: 'Quitar grupo sincronizado %{name}'
confirmation: "Si continúa, se eliminarán el grupo sincronizado %{name} y %{users_count} usuarios sincronizados mediante este."
info: "Nota: El grupo de OpenProject en sí y los miembros agregados fuera de esta sincronización de LDAP no se eliminarán."
verification: "Escriba el nombre del grupo %{name} para verificar la eliminación."
no_results: 'No se encontraron grupos sincronizados.'
no_members: 'Este grupo aún no tiene miembros sincronizados.'
plural: 'Grupos de LDAP sincronizados'
singular: 'Grupo de LDAP sincronizado'
form:
auth_source_text: 'Select which LDAP authentication mode is used.'
entry_text: 'Define the LDAP group identifier.'
group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with'
auth_source_text: 'Seleccione el modo de autenticación LDAP usado.'
entry_text: 'Defina el identificador de grupo de LDAP.'
group_text: 'Seleccione un grupo de OpenProject existente con el que se sincronizarán los miembros del grupo de LDAP'

@ -2,31 +2,31 @@ fr:
activerecord:
attributes:
ldap_groups/synchronized_group:
entry: 'Entry identifier'
auth_source: 'LDAP connection'
entry: 'Identificateur d''entrée'
auth_source: 'Connexion LDAP'
models:
ldap_groups/synchronized_group: 'Synchronized LDAP group'
ldap_groups/synchronized_group: 'Groupe LDAP synchronisé'
ldap_groups:
label_menu_item: 'LDAP group synchronization'
label_group_key: 'LDAP group filter key'
label_menu_item: 'Synchronisation de groupe LDAP'
label_group_key: 'Clé de filtre de groupe LDAP'
settings:
group_key: 'LDAP group attribute'
group_key_text: 'The LDAP attribute name used to identify the groups.'
group_base: 'LDAP group base'
group_base_text: 'LDAP group base used to search for group entries.'
group_key: 'Attribut de groupe LDAP'
group_key_text: 'Le nom d''attribut LDAP utilisé pour identifier les groupes.'
group_base: 'Base du groupe LDAP'
group_base_text: 'Base du groupe LDAP utilisée pour rechercher des entrées du groupe.'
synchronized_groups:
add_new: 'Add synchronized LDAP group'
add_new: 'Ajouter un groupe LDAP synchronisé'
destroy:
title: 'Remove synchronized group %{name}'
confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed."
info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed."
verification: "Enter the group's name %{name} to verify the deletion."
no_results: 'No synchronized groups found.'
no_members: 'This group has no synchronized members yet.'
plural: 'Synchronized LDAP groups'
singular: 'Synchronized LDAP group'
title: 'Supprimer le groupe synchronisé %{name}'
confirmation: "Si vous continuez, le groupe synchronisé %{name} et tous les utilisateurs %{users_count} synchronisés par le biais de celui-ci seront supprimés."
info: "Remarque : Le groupe OpenProject lui-même et les membres ajoutés en dehors de cette synchronisation LDAP ne seront pas supprimés."
verification: "Saisissez le nom du groupe %{name} pour valider la suppression."
no_results: 'Aucun groupe synchronisé trouvé.'
no_members: 'Ce groupe n''a pas encore de membres synchronisés.'
plural: 'Groupes LDAP synchronisés'
singular: 'Groupe LDAP synchronisé'
form:
auth_source_text: 'Select which LDAP authentication mode is used.'
entry_text: 'Define the LDAP group identifier.'
group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with'
auth_source_text: 'Sélectionnez le mode d''authentification LDAP utilisé.'
entry_text: 'Définissez l''identifiant du groupe LDAP.'
group_text: 'Sélectionnez un groupe OpenProject existant avec lequel les membres du groupe LDAP seront synchronisés'

@ -2,31 +2,31 @@ ko:
activerecord:
attributes:
ldap_groups/synchronized_group:
entry: 'Entry identifier'
auth_source: 'LDAP connection'
entry: '항목 식별자'
auth_source: 'LDAP 연결'
models:
ldap_groups/synchronized_group: 'Synchronized LDAP group'
ldap_groups/synchronized_group: '동기화된 LDAP 그룹'
ldap_groups:
label_menu_item: 'LDAP group synchronization'
label_group_key: 'LDAP group filter key'
label_menu_item: 'LDAP 그룹 동기화'
label_group_key: 'LDAP 그룹 필터 키'
settings:
group_key: 'LDAP group attribute'
group_key_text: 'The LDAP attribute name used to identify the groups.'
group_base: 'LDAP group base'
group_base_text: 'LDAP group base used to search for group entries.'
group_key: 'LDAP 그룹 특성'
group_key_text: '그룹을 식별하는 데 사용되는 LDAP 특성 이름입니다.'
group_base: 'LDAP 그룹 기반'
group_base_text: '그룹 항목 검색에 사용되는 LDAP 그룹 기반입니다.'
synchronized_groups:
add_new: 'Add synchronized LDAP group'
add_new: '동기화된 LDAP 그룹 추가'
destroy:
title: 'Remove synchronized group %{name}'
confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed."
info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed."
verification: "Enter the group's name %{name} to verify the deletion."
no_results: 'No synchronized groups found.'
no_members: 'This group has no synchronized members yet.'
plural: 'Synchronized LDAP groups'
singular: 'Synchronized LDAP group'
title: '동기화된 그룹 %{name} 제거'
confirmation: "계속하는 경우, 동기화된 그룹 %{name} 및 이를 통해 동기화된 %{users_count}명의 사용자 모두가 제거됩니다."
info: "참고: OpenProject 그룹 자체 그리고 이 LDAP 동기화 이외에서 추가된 멤버는 제거되지 않습니다."
verification: "삭제를 확인하려면 프로젝트 이름 %{name}(을)를 입력하십시오."
no_results: '동기화된 그룹이 없습니다.'
no_members: '이 그룹에는 아직 동기화된 멤버가 없습니다.'
plural: '동기화된 LDAP 그룹'
singular: '동기화된 LDAP 그룹'
form:
auth_source_text: 'Select which LDAP authentication mode is used.'
entry_text: 'Define the LDAP group identifier.'
group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with'
auth_source_text: '사용되는 LDAP 인증 모드를 사용하십시오.'
entry_text: 'LDAP 그룹 식별자를 정의하십시오.'
group_text: 'LDAP 그룹의 멤버가 동기화되는 기존 OpenProject 그룹 선택'

@ -2,31 +2,31 @@ pl:
activerecord:
attributes:
ldap_groups/synchronized_group:
entry: 'Entry identifier'
auth_source: 'LDAP connection'
entry: 'Identyfikator wpisu'
auth_source: 'Połączenie LDAP'
models:
ldap_groups/synchronized_group: 'Synchronized LDAP group'
ldap_groups/synchronized_group: 'Synchronizowana grupa LDAP'
ldap_groups:
label_menu_item: 'LDAP group synchronization'
label_group_key: 'LDAP group filter key'
label_menu_item: 'Synchronizacja grupy LDAP'
label_group_key: 'Klucz filtru grupy LDAP'
settings:
group_key: 'LDAP group attribute'
group_key_text: 'The LDAP attribute name used to identify the groups.'
group_base: 'LDAP group base'
group_base_text: 'LDAP group base used to search for group entries.'
group_key: 'Atrybut grupy LDAP'
group_key_text: 'Nazwa atrybutu LDAP używana do identyfikacji grup.'
group_base: 'Baza grupy LDAP'
group_base_text: 'Baza grupy LDAP używana do wyszukiwania wpisów grupy.'
synchronized_groups:
add_new: 'Add synchronized LDAP group'
add_new: 'Dodaj synchronizowaną grupę LDAP'
destroy:
title: 'Remove synchronized group %{name}'
confirmation: "If you continue, the synchronized group %{name} and all %{users_count} users synchronized through it will be removed."
info: "Note: The OpenProject group itself and members added outside this LDAP synchronization will not be removed."
verification: "Enter the group's name %{name} to verify the deletion."
no_results: 'No synchronized groups found.'
no_members: 'This group has no synchronized members yet.'
plural: 'Synchronized LDAP groups'
singular: 'Synchronized LDAP group'
title: 'Usuń synchronizowaną grupę %{name}'
confirmation: "W przypadku kontynuacji usunięta zostanie synchronizowana grupa %{name} i wszyscy użytkownicy (%{users_count}) synchronizowani za jej pośrednictwem."
info: "Uwaga: nie zostanie usunięta sama grupa OpenProject ani członkowie dodani poza tą synchronizacją LDAP."
verification: "Wprowadź nazwę grupy %{name}, aby potwierdzić usunięcie."
no_results: 'Nie znaleziono żadnych synchronizowanych grup.'
no_members: 'Ta grupa nie ma jeszcze synchronizowanych członków.'
plural: 'Synchronizowane grupy LDAP'
singular: 'Synchronizowana grupa LDAP'
form:
auth_source_text: 'Select which LDAP authentication mode is used.'
entry_text: 'Define the LDAP group identifier.'
group_text: 'Select an existing OpenProject group that members of the LDAP group shall be synchronized with'
auth_source_text: 'Wybierz tryb uwierzytelniania LDAP, który ma być używany.'
entry_text: 'Określ identyfikator grupy LDAP.'
group_text: 'Wybierz istniejącą grupę OpenProject, z którą będą synchronizowani członkowie grupy LDAP'

@ -12,15 +12,15 @@ zh-CN:
settings:
group_key: 'LDAP 组属性'
group_key_text: '用于识别组的 LDAP 属性名称。'
group_base: 'LDAP 组基数'
group_base_text: '用于搜索组条目的 LDAP 组基数。'
group_base: 'LDAP 组'
group_base_text: '用于搜索组条目的 LDAP 组。'
synchronized_groups:
add_new: '添加同步的 LDAP 组'
destroy:
title: '除同步组 %{name}'
confirmation: "如果您继续,将除同步组 %{name} 和通过该组同步的全部 %{users_count} 个用户。"
info: "注意:OpenProject 组本身以及在 LDAP 同步之外添加的成员将不会被除。"
verification: "输入组名称 %{name} 验证删除。"
title: '除同步组 %{name}'
confirmation: "如果您继续,将除同步组 %{name} 和通过该组同步的全部 %{users_count} 个用户。"
info: "注意:OpenProject 组本身以及在 LDAP 同步之外添加的成员将不会被除。"
verification: "输入组名称 %{name} 验证删除。"
no_results: '未找到同步的组。'
no_members: '此组尚无同步成员。'
plural: '同步的 LDAP 组'
@ -28,5 +28,5 @@ zh-CN:
form:
auth_source_text: '选择使用哪种 LDAP 身份验证模式。'
entry_text: '定义 LDAP 组标识符。'
group_text: '选择一个 LDAP 组的成员应与其同步的现有 OpenProject 组'
group_text: '选择 LDAP 组的成员应与其同步的现有 OpenProject 组'

@ -1,19 +1,19 @@
es:
logout_warning: >
You have been logged out. The contents of any form you submit may be lost. Please [log in].
Se ha cerrado la sesión. Puede que se haya perdido el contenido de cualquier formulario que haya enviado. [Inicie la sesión].
activemodel:
attributes:
openid_connect/provider:
name: Nombre
display_name: Display name
display_name: Nombre para mostrar
identifier: Identificador
secret: Secret
scope: Scope
secret: Secreto
scope: Ámbito
openid_connect:
menu_title: OpenID providers
menu_title: Proveedores de OpenID
providers:
label_add_new: Add a new OpenID provider
label_edit: Edit OpenID provider %{name}
no_results_table: No providers have been defined yet.
plural: OpenID providers
singular: OpenID provider
label_add_new: Agregar nuevo proveedor de OpenID
label_edit: Editar el proveedor de OpenID %{name}
no_results_table: Aún no se han definido proveedores.
plural: Proveedores de OpenID
singular: Proveedor de OpenID

@ -5,7 +5,7 @@ fr:
attributes:
openid_connect/provider:
name: Nom
display_name: Display name
display_name: Nom d'affichage
identifier: Identifiant
secret: Secret
scope: Portée

@ -1,19 +1,19 @@
ko:
logout_warning: >
You have been logged out. The contents of any form you submit may be lost. Please [log in].
로그아웃되었습니다. 제출한 양식의 내용이 손실될 수 있습니다. [로그인]하십시오.
activemodel:
attributes:
openid_connect/provider:
name: 이름
display_name: Display name
display_name: 표시 이름
identifier: 식별자
secret: Secret
scope: Scope
secret: 비밀번호
scope: 범위
openid_connect:
menu_title: OpenID providers
menu_title: OpenID 공급자
providers:
label_add_new: Add a new OpenID provider
label_edit: Edit OpenID provider %{name}
no_results_table: No providers have been defined yet.
plural: OpenID providers
singular: OpenID provider
label_add_new: 새로운 OpenID 공급자 추가
label_edit: OpenID 공급자 %{name} 편집
no_results_table: 아직 정의된 공급자가 없습니다.
plural: OpenID 공급자
singular: OpenID 공급자

@ -1,19 +1,19 @@
pl:
logout_warning: >
You have been logged out. The contents of any form you submit may be lost. Please [log in].
Wylogowano cię. Zawartość każdego przesłanego formularza może zostać utracona. [Zaloguj się].
activemodel:
attributes:
openid_connect/provider:
name: Nazwa
display_name: Display name
display_name: Nazwa wyświetlana
identifier: Identyfikator
secret: Secret
scope: Scope
secret: Tajny klucz
scope: Zakres
openid_connect:
menu_title: OpenID providers
menu_title: Dostawcy OpenID
providers:
label_add_new: Add a new OpenID provider
label_edit: Edit OpenID provider %{name}
no_results_table: No providers have been defined yet.
plural: OpenID providers
singular: OpenID provider
label_add_new: Dodaj nowego dostawcę OpenID
label_edit: Edytuj dostawcę OpenID %{name}
no_results_table: Jeszcze nie określono żadnych dostawców.
plural: Dostawcy OpenID
singular: Dostawca OpenID

@ -1,6 +1,6 @@
zh-CN:
logout_warning: >
您已注销。您提交的任何表单的内容可能丢失。请[登录]。
您已退出。您提交的任何表单的内容可能丢失。请[登录]。
activemodel:
attributes:
openid_connect/provider:
@ -10,10 +10,10 @@ zh-CN:
secret: 密钥
scope: 范围
openid_connect:
menu_title: OpenID 提供
menu_title: OpenID 提供
providers:
label_add_new: 添加一个新的 OpenID 提供
label_edit: 编辑 OpenID 提供 %{name}
no_results_table: 尚未定义提供
plural: OpenID 提供
singular: OpenID 提供
label_add_new: 添加一个新的 OpenID 提供
label_edit: 编辑 OpenID 提供 %{name}
no_results_table: 尚未定义提供
plural: OpenID 提供
singular: OpenID 提供

@ -1,17 +1,17 @@
es:
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."
button_please_wait: 'Espere…'
verify_account: "Verifique su cuenta"
error_captcha: "No se pudo verificar su cuenta. Póngase en contacto con un administrador."
settings:
website_key: 'Website key'
website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.'
website_key: 'Clave del sitio web'
website_key_text: 'Especifique la clave del sitio web que ha creado en la consola de administración de reCAPTCHA para este dominio.'
secret_key: 'Llave secreta'
secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.'
type: 'Use reCAPTCHA'
type_disabled: 'Disable reCAPTCHA'
secret_key_text: 'Especifique la clave secreta que ha creado en la consola de administración de reCAPTCHA.'
type: 'Usar reCAPTCHA'
type_disabled: 'Deshabilitar reCAPTCHA'
type_v2: 'reCAPTCHA v2'
type_v3: 'reCAPTCHA v3'
recaptcha_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. <br/> Please see the following link for more details on reCAPTCHA and their versions, and how to create the website and secret keys: %{recaptcha_link}
reCAPTCHA es un servicio gratuito ofrecido por Google que se puede habilitar para su instancia de OpenProject. Si se habilita, se mostrará un formulario de CAPTCHA cuando inicien sesión los usuarios que aún no se hayan verificado mediante un CAPTCHA. <br/> Consulte el vínculo siguiente para obtener más información sobre reCAPTCHA y sus versiones, y cómo crear el sitio web y las claves secretas: %{recaptcha_link}

@ -1,17 +1,17 @@
fr:
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."
button_please_wait: 'Veuillez patienter ...'
verify_account: "Vérifiez votre compte"
error_captcha: "Votre compte n'a pas pu être vérifié. Veuillez contacter un administrateur."
settings:
website_key: 'Website key'
website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.'
website_key: 'Clé du site Web'
website_key_text: 'Entrez la clé du site Web que vous avez créée dans la console d''administration reCAPTCHA pour ce domaine.'
secret_key: 'Clé secrète'
secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.'
type: 'Use reCAPTCHA'
type_disabled: 'Disable reCAPTCHA'
secret_key_text: 'Entrez la clé secrète que vous avez créée dans la console d''administration reCAPTCHA.'
type: 'Utiliser reCAPTCHA'
type_disabled: 'Désactiver reCAPTCHA'
type_v2: 'reCAPTCHA v2'
type_v3: 'reCAPTCHA v3'
recaptcha_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. <br/> Please see the following link for more details on reCAPTCHA and their versions, and how to create the website and secret keys: %{recaptcha_link}
reCAPTCHA est un service gratuit de Google qui peut être activé pour votre instance OpenProject. Si cette option est activée, un formulaire captcha sera affiché lors de la connexion pour tous les utilisateurs qui n'ont pas encore été vérifiés par un captcha. <br/> Veuillez consulter le lien suivant pour plus de détails sur reCAPTCHA et ses versions, et sur la façon de créer le site et les clés secrètes : %{recaptcha_link}

@ -1,17 +1,17 @@
ko:
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."
button_please_wait: '기다려주십시오...'
verify_account: "계정 인증"
error_captcha: "계정을 인증할 수 없습니다. 관리자에게 문의하십시오."
settings:
website_key: 'Website key'
website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.'
website_key: '웹사이트 키'
website_key_text: '이 도메인의 reCAPTCHA 관리 콘솔에서 만든 웹사이트 키를 입력하십시오.'
secret_key: '비밀 키'
secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.'
type: 'Use reCAPTCHA'
type_disabled: 'Disable reCAPTCHA'
secret_key_text: 'reCAPTCHA 관리 콘솔에서 만든 비밀 키를 입력하십시오.'
type: 'reCAPTCHA 사용'
type_disabled: 'reCAPTCHA 사용 안 함'
type_v2: 'reCAPTCHA v2'
type_v3: 'reCAPTCHA v3'
recaptcha_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. <br/> Please see the following link for more details on reCAPTCHA and their versions, and how to create the website and secret keys: %{recaptcha_link}
reCAPTCHA는 해당 OpenProject 인스턴스에 대해 활성화할 수 있는 Google의 무료 서비스입니다. 활성화하면, 캡차를 아직 확인하지 않은 모든 사용자가 로그인할 때 캡차 양식이 렌더링됩니다. <br/> reCAPTCHA와 해당 버전 관련 세부 정보 및 웹사이트 키와 비밀 키를 생성하는 방법은 다음 링크를 참조하십시오: %{recaptcha_link}

@ -1,17 +1,17 @@
pl:
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."
button_please_wait: 'Czekaj...'
verify_account: "Zweryfikuj swoje konto"
error_captcha: "Nie można zweryfikować tego konta. Skontaktuj się z administratorem."
settings:
website_key: 'Website key'
website_key_text: 'Enter the website key you created on the reCAPTCHA admin console for this domain.'
website_key: 'Klucz witryny internetowej'
website_key_text: 'Wprowadź klucz witryny utworzony w konsoli administracyjnej reCAPTCHA tej domeny.'
secret_key: 'Tajny klucz'
secret_key_text: 'Enter the secret key you created on the reCAPTCHA admin console.'
type: 'Use reCAPTCHA'
type_disabled: 'Disable reCAPTCHA'
secret_key_text: 'Wprowadź tajny klucz utworzony w konsoli administracyjnej reCAPTCHA.'
type: 'Użyj reCAPTCHA'
type_disabled: 'Wyłącz reCAPTCHA'
type_v2: 'reCAPTCHA v2'
type_v3: 'reCAPTCHA v3'
recaptcha_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. <br/> Please see the following link for more details on reCAPTCHA and their versions, and how to create the website and secret keys: %{recaptcha_link}
reCAPTCHA jest bezpłatną usługą Google, którą można włączyć dla wystąpienia OpenProject. Jeśli jest włączona, formularz captcha będzie wyświetlany po zalogowaniu wszystkim użytkownikom, którzy nie zweryfikowali jeszcze captcha. <br/> Aby uzyskać więcej informacji na temat reCAPTCHA i jej wersji oraz sposobu tworzenia witryny internetowej i tajnych kluczy, sprawdź następujące łącze: %{recaptcha_link}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save