mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Merge remote-tracking branch 'origin/dev' into implementation/49582-build-the-modal-dialog-to-manage-members-of-a-work-package-using-hotwire-+-stimulus
This commit is contained in:
+1
-1
@@ -343,7 +343,7 @@ ij_json_keep_indents_on_empty_lines = false
|
||||
ij_json_keep_line_breaks = true
|
||||
ij_json_space_after_colon = true
|
||||
ij_json_space_after_comma = true
|
||||
ij_json_space_before_colon = true
|
||||
ij_json_space_before_colon = false
|
||||
ij_json_space_before_comma = false
|
||||
ij_json_spaces_within_braces = false
|
||||
ij_json_spaces_within_brackets = false
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
require:
|
||||
- rubocop-rails
|
||||
- rubocop-rspec
|
||||
- ./lib_static/rubocop/cop/open_project/add_preview_for_view_component.rb
|
||||
- ./lib_static/rubocop/cop/open_project/no_do_end_block_with_rspec_capybara_matcher_in_expect.rb
|
||||
- ./lib_static/rubocop/cop/open_project/use_service_result_factory_methods.rb
|
||||
- rubocop-capybara
|
||||
@@ -240,6 +241,7 @@ RSpec/ContextWording:
|
||||
Prefixes:
|
||||
- and
|
||||
- as
|
||||
- even
|
||||
- for
|
||||
- having
|
||||
- if
|
||||
|
||||
@@ -208,7 +208,7 @@ gem "appsignal", "~> 3.0", require: false
|
||||
|
||||
gem 'view_component'
|
||||
# Lookbook
|
||||
gem 'lookbook', '~> 2.0.5'
|
||||
gem 'lookbook', '~> 2.1.0'
|
||||
|
||||
# Require factory_bot for usage with openproject plugins testing
|
||||
gem 'factory_bot', '~> 6.2.0', require: false
|
||||
@@ -251,7 +251,7 @@ group :test do
|
||||
gem 'capybara', '~> 3.39.0'
|
||||
gem 'capybara-screenshot', '~> 1.0.17'
|
||||
gem 'cuprite', '~> 0.14.3'
|
||||
gem 'selenium-webdriver', '~> 4.12.0'
|
||||
gem 'selenium-webdriver', '~> 4.13.0'
|
||||
|
||||
gem 'fuubar', '~> 2.5.0'
|
||||
gem 'timecop', '~> 0.9.0'
|
||||
@@ -363,6 +363,6 @@ gemfiles.each do |file|
|
||||
send(:eval_gemfile, file) if File.readable?(file)
|
||||
end
|
||||
|
||||
gem "openproject-primer_view_components", '~>0.10.0'
|
||||
gem "openproject-primer_view_components", '~>0.11.0'
|
||||
gem "openproject-octicons", '~>19.7.0'
|
||||
gem "openproject-octicons_helper", '~>19.7.0'
|
||||
|
||||
+23
-23
@@ -187,7 +187,7 @@ PATH
|
||||
remote: modules/two_factor_authentication
|
||||
specs:
|
||||
openproject-two_factor_authentication (1.0.0)
|
||||
aws-sdk-sns (~> 1.65.0)
|
||||
aws-sdk-sns (~> 1.66.0)
|
||||
messagebird-rest (~> 1.4.2)
|
||||
rotp (~> 6.1)
|
||||
|
||||
@@ -310,8 +310,8 @@ GEM
|
||||
awesome_nested_set (3.5.0)
|
||||
activerecord (>= 4.0.0, < 7.1)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.826.0)
|
||||
aws-sdk-core (3.182.0)
|
||||
aws-partitions (1.828.0)
|
||||
aws-sdk-core (3.183.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
@@ -319,11 +319,11 @@ GEM
|
||||
aws-sdk-kms (1.71.0)
|
||||
aws-sdk-core (~> 3, >= 3.177.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.135.0)
|
||||
aws-sdk-s3 (1.136.0)
|
||||
aws-sdk-core (~> 3, >= 3.181.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.6)
|
||||
aws-sdk-sns (1.65.0)
|
||||
aws-sdk-sns (1.66.0)
|
||||
aws-sdk-core (~> 3, >= 3.177.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.6.0)
|
||||
@@ -385,7 +385,7 @@ GEM
|
||||
capybara (~> 3.0)
|
||||
ferrum (~> 0.13.0)
|
||||
daemons (1.4.1)
|
||||
dalli (3.2.5)
|
||||
dalli (3.2.6)
|
||||
date (3.3.3)
|
||||
date_validator (0.12.0)
|
||||
activemodel (>= 3)
|
||||
@@ -476,7 +476,7 @@ GEM
|
||||
concurrent-ruby (~> 1.1)
|
||||
webrick (~> 1.7)
|
||||
websocket-driver (>= 0.6, < 0.8)
|
||||
ffi (1.15.5)
|
||||
ffi (1.16.2)
|
||||
flamegraph (0.9.5)
|
||||
fog-aws (3.19.0)
|
||||
fog-core (~> 2.1)
|
||||
@@ -520,9 +520,9 @@ GEM
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-gmail_v1 (0.30.0)
|
||||
google-apis-gmail_v1 (0.32.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
googleauth (1.8.0)
|
||||
googleauth (1.8.1)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
multi_json (~> 1.11)
|
||||
@@ -573,7 +573,7 @@ GEM
|
||||
bindata
|
||||
faraday (~> 2.0)
|
||||
faraday-follow_redirects
|
||||
json-schema (4.0.0)
|
||||
json-schema (4.1.1)
|
||||
addressable (>= 2.8)
|
||||
json_schemer (2.0.0)
|
||||
hana (~> 1.3)
|
||||
@@ -588,7 +588,7 @@ GEM
|
||||
language_server-protocol (3.17.0.3)
|
||||
launchy (2.5.2)
|
||||
addressable (~> 2.8)
|
||||
lefthook (1.4.11)
|
||||
lefthook (1.5.0)
|
||||
letter_opener (1.8.1)
|
||||
launchy (>= 2.2, < 3)
|
||||
listen (3.8.0)
|
||||
@@ -606,7 +606,7 @@ GEM
|
||||
loofah (2.21.3)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
lookbook (2.0.5)
|
||||
lookbook (2.1.1)
|
||||
activemodel
|
||||
css_parser
|
||||
htmlbeautifier (~> 1.3)
|
||||
@@ -650,7 +650,7 @@ GEM
|
||||
net-protocol
|
||||
net-protocol (0.2.1)
|
||||
timeout
|
||||
net-smtp (0.3.3)
|
||||
net-smtp (0.4.0)
|
||||
net-protocol
|
||||
nio4r (2.5.9)
|
||||
nokogiri (1.15.4)
|
||||
@@ -680,7 +680,7 @@ GEM
|
||||
actionview
|
||||
openproject-octicons (= 19.7.0)
|
||||
railties
|
||||
openproject-primer_view_components (0.10.0)
|
||||
openproject-primer_view_components (0.11.0)
|
||||
actionview (>= 5.0.0)
|
||||
activesupport (>= 5.0.0)
|
||||
openproject-octicons (>= 19.7.0)
|
||||
@@ -870,9 +870,9 @@ GEM
|
||||
unicode-display_width (>= 2.4.0, < 3.0)
|
||||
rubocop-ast (1.29.0)
|
||||
parser (>= 3.2.1.0)
|
||||
rubocop-capybara (2.18.0)
|
||||
rubocop-capybara (2.19.0)
|
||||
rubocop (~> 1.41)
|
||||
rubocop-factory_bot (2.23.1)
|
||||
rubocop-factory_bot (2.24.0)
|
||||
rubocop (~> 1.33)
|
||||
rubocop-performance (1.19.1)
|
||||
rubocop (>= 1.7.0, < 2.0)
|
||||
@@ -881,7 +881,7 @@ GEM
|
||||
activesupport (>= 4.2.0)
|
||||
rack (>= 1.1)
|
||||
rubocop (>= 1.33.0, < 2.0)
|
||||
rubocop-rspec (2.24.0)
|
||||
rubocop-rspec (2.24.1)
|
||||
rubocop (~> 1.33)
|
||||
rubocop-capybara (~> 2.17)
|
||||
rubocop-factory_bot (~> 2.22)
|
||||
@@ -904,7 +904,7 @@ GEM
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
secure_headers (6.5.0)
|
||||
selenium-webdriver (4.12.0)
|
||||
selenium-webdriver (4.13.1)
|
||||
rexml (~> 3.2, >= 3.2.5)
|
||||
rubyzip (>= 1.2.2, < 3.0)
|
||||
websocket (~> 1.0)
|
||||
@@ -996,7 +996,7 @@ GEM
|
||||
crack (>= 0.3.2)
|
||||
hashdiff (>= 0.4.0, < 2.0.0)
|
||||
webrick (1.8.1)
|
||||
websocket (1.2.9)
|
||||
websocket (1.2.10)
|
||||
websocket-driver (0.7.6)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.5)
|
||||
@@ -1006,7 +1006,7 @@ GEM
|
||||
xpath (3.2.0)
|
||||
nokogiri (~> 1.8)
|
||||
yard (0.9.34)
|
||||
zeitwerk (2.6.11)
|
||||
zeitwerk (2.6.12)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
@@ -1083,7 +1083,7 @@ DEPENDENCIES
|
||||
letter_opener
|
||||
listen (~> 3.8.0)
|
||||
lograge (~> 0.13.0)
|
||||
lookbook (~> 2.0.5)
|
||||
lookbook (~> 2.1.0)
|
||||
mail (= 2.8.1)
|
||||
matrix (~> 0.4.2)
|
||||
md_to_pdf!
|
||||
@@ -1114,7 +1114,7 @@ DEPENDENCIES
|
||||
openproject-octicons (~> 19.7.0)
|
||||
openproject-octicons_helper (~> 19.7.0)
|
||||
openproject-openid_connect!
|
||||
openproject-primer_view_components (~> 0.10.0)
|
||||
openproject-primer_view_components (~> 0.11.0)
|
||||
openproject-recaptcha!
|
||||
openproject-reporting!
|
||||
openproject-storages!
|
||||
@@ -1167,7 +1167,7 @@ DEPENDENCIES
|
||||
rubytree (~> 2.0.0)
|
||||
sanitize (~> 6.1.0)
|
||||
secure_headers (~> 6.5.0)
|
||||
selenium-webdriver (~> 4.12.0)
|
||||
selenium-webdriver (~> 4.13.0)
|
||||
semantic (~> 1.6.1)
|
||||
shoulda-context (~> 2.0)
|
||||
shoulda-matchers (~> 5.0)
|
||||
|
||||
@@ -32,6 +32,10 @@ module OpPrimer
|
||||
render(OpPrimer::FlexLayoutComponent.new(**), &)
|
||||
end
|
||||
|
||||
def grid_layout(css_class, **, &)
|
||||
render(OpPrimer::GridLayoutComponent.new(css_class, **), &)
|
||||
end
|
||||
|
||||
def box_collection(**, &)
|
||||
render(OpPrimer::BoxCollectionComponent.new(**), &)
|
||||
end
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
<%#-- copyright
|
||||
OpenProject is an open source project management software.
|
||||
Copyright (C) 2012-2023 the OpenProject GmbH
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License version 3.
|
||||
|
||||
OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
Copyright (C) 2010-2013 the ChiliProject Team
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
See COPYRIGHT and LICENSE files for more details.
|
||||
|
||||
++#%>
|
||||
<% if @system_arguments[:tag] %>
|
||||
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
|
||||
<% areas.each do |row| %>
|
||||
<%= row %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<% areas.each do |row| %>
|
||||
<%= row %>
|
||||
<% end %>
|
||||
|
||||
<% end %>
|
||||
@@ -0,0 +1,58 @@
|
||||
#-- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) 2012-2023 the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
#++
|
||||
|
||||
module OpPrimer
|
||||
class GridLayoutComponent < Primer::Component
|
||||
attr_reader :css_class
|
||||
|
||||
def initialize(css_class, **args)
|
||||
super
|
||||
|
||||
@css_class = css_class
|
||||
@system_arguments = args
|
||||
@system_arguments[:classes] = class_names(
|
||||
@system_arguments[:classes],
|
||||
css_class
|
||||
)
|
||||
end
|
||||
|
||||
renders_many :areas, lambda { |area_name, component = ::Primer::BaseComponent, **sysargs, &block|
|
||||
styles = [
|
||||
"grid-area: #{area_name}",
|
||||
sysargs[:justify_self] ? "justify-self: #{sysargs[:justify_self]}" : nil,
|
||||
]
|
||||
sysargs[:style] = join_style_arguments(sysargs[:style], *styles)
|
||||
sysargs[:classes] = class_names(
|
||||
sysargs[:classes],
|
||||
"#{css_class}--#{area_name}"
|
||||
)
|
||||
|
||||
render(component.new(**sysargs), &block)
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -30,17 +30,31 @@ module Users
|
||||
class UpdateContract < BaseContract
|
||||
validate :user_allowed_to_update
|
||||
|
||||
private
|
||||
|
||||
##
|
||||
# Users can only be updated when
|
||||
# - the user is editing herself
|
||||
# - the user has the global manage_user permission
|
||||
# - the user is an admin
|
||||
# - the user has the global manage_user permission and is not editing an admin
|
||||
def allowed_to_update?
|
||||
editing_themself? || can_manage_user?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def user_allowed_to_update
|
||||
unless user == model || user.allowed_to_globally?(:manage_user)
|
||||
unless allowed_to_update?
|
||||
errors.add :base, :error_unauthorized
|
||||
end
|
||||
end
|
||||
|
||||
def editing_themself?
|
||||
user == model
|
||||
end
|
||||
|
||||
# Only admins can edit other admins
|
||||
# Only users with manage_user permission can edit other users
|
||||
def can_manage_user?
|
||||
user.allowed_to_globally?(:manage_user) && (user.admin? || !model.admin?)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -30,9 +30,12 @@ class CustomStylesController < ApplicationController
|
||||
layout 'admin'
|
||||
menu_item :custom_style
|
||||
|
||||
before_action :require_admin, except: %i[logo_download export_logo_download favicon_download touch_icon_download]
|
||||
before_action :require_ee_token, except: %i[upsale logo_download export_logo_download favicon_download touch_icon_download]
|
||||
skip_before_action :check_if_login_required, only: %i[logo_download export_logo_download favicon_download touch_icon_download]
|
||||
before_action :require_admin,
|
||||
except: %i[logo_download export_logo_download export_cover_download favicon_download touch_icon_download]
|
||||
before_action :require_ee_token,
|
||||
except: %i[upsale logo_download export_logo_download export_cover_download favicon_download touch_icon_download]
|
||||
skip_before_action :check_if_login_required,
|
||||
only: %i[logo_download export_logo_download export_cover_download favicon_download touch_icon_download]
|
||||
|
||||
def show
|
||||
@custom_style = CustomStyle.current || CustomStyle.new
|
||||
@@ -62,6 +65,22 @@ class CustomStylesController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
def update_export_cover_text_color
|
||||
color = params[:export_cover_text_color]
|
||||
|
||||
@custom_style = CustomStyle.current
|
||||
if @custom_style.nil?
|
||||
return render_404
|
||||
end
|
||||
|
||||
color_hexcode_regex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/
|
||||
if !color.nil? && color.match(color_hexcode_regex)
|
||||
@custom_style.export_cover_text_color = color
|
||||
@custom_style.save
|
||||
end
|
||||
redirect_to custom_style_path
|
||||
end
|
||||
|
||||
def logo_download
|
||||
file_download(:logo_path)
|
||||
end
|
||||
@@ -70,6 +89,10 @@ class CustomStylesController < ApplicationController
|
||||
file_download(:export_logo_path)
|
||||
end
|
||||
|
||||
def export_cover_download
|
||||
file_download(:export_cover_path)
|
||||
end
|
||||
|
||||
def favicon_download
|
||||
file_download(:favicon_path)
|
||||
end
|
||||
@@ -86,6 +109,10 @@ class CustomStylesController < ApplicationController
|
||||
file_delete(:remove_export_logo)
|
||||
end
|
||||
|
||||
def export_cover_delete
|
||||
file_delete(:remove_export_cover)
|
||||
end
|
||||
|
||||
def favicon_delete
|
||||
file_delete(:remove_favicon)
|
||||
end
|
||||
@@ -151,6 +178,8 @@ class CustomStylesController < ApplicationController
|
||||
def custom_style_params
|
||||
params.require(:custom_style).permit(:logo, :remove_logo,
|
||||
:export_logo, :remove_export_logo,
|
||||
:export_cover, :remove_export_cover,
|
||||
:export_cover_text_color,
|
||||
:favicon, :remove_favicon,
|
||||
:touch_icon, :remove_touch_icon)
|
||||
end
|
||||
|
||||
@@ -50,9 +50,14 @@ class PlaceholderUsersController < ApplicationController
|
||||
end
|
||||
|
||||
def show
|
||||
# show projects based on current user visibility
|
||||
@memberships = @placeholder_user.memberships
|
||||
.visible(current_user)
|
||||
# show projects based on current user visibility.
|
||||
# But don't simply concatenate the .visible scope to the memberships
|
||||
# as .memberships has an include and an order which for whatever reason
|
||||
# also gets applied to the Project.allowed_to parts concatenated by a UNION
|
||||
# and an order inside a UNION is not allowed in postgres.
|
||||
@memberships = @placeholder_user
|
||||
.memberships
|
||||
.where(id: Member.visible(current_user))
|
||||
|
||||
respond_to do |format|
|
||||
format.html { render layout: 'no_menu' }
|
||||
|
||||
@@ -33,6 +33,9 @@ class RolesController < ApplicationController
|
||||
|
||||
before_action :require_admin, except: [:autocomplete_for_role]
|
||||
|
||||
menu_item :roles, except: :report
|
||||
menu_item :permissions_report, only: :report
|
||||
|
||||
def index
|
||||
@roles = roles_scope
|
||||
.page(page_param)
|
||||
|
||||
@@ -65,10 +65,14 @@ class UsersController < ApplicationController
|
||||
end
|
||||
|
||||
def show
|
||||
# show projects based on current user visibility
|
||||
# show projects based on current user visibility.
|
||||
# But don't simply concatenate the .visible scope to the memberships
|
||||
# as .memberships has an include and an order which for whatever reason
|
||||
# also gets applied to the Project.allowed_to parts concatenated by a UNION
|
||||
# and an order inside a UNION is not allowed in postgres.
|
||||
@memberships = @user.memberships
|
||||
.where.not(project_id: nil)
|
||||
.visible(current_user)
|
||||
.where(id: Member.visible(current_user))
|
||||
|
||||
if can_show_user?
|
||||
@events = events
|
||||
@@ -152,7 +156,7 @@ class UsersController < ApplicationController
|
||||
def change_status_info
|
||||
@status_change = params[:change_action].to_sym
|
||||
|
||||
return render_400 unless %i(activate lock unlock).include? @status_change
|
||||
render_400 unless %i(activate lock unlock).include? @status_change
|
||||
end
|
||||
|
||||
def change_status
|
||||
|
||||
@@ -56,8 +56,4 @@ module OAuthHelper
|
||||
tokens = ::Doorkeeper::AccessToken.active_for(user).includes(:application)
|
||||
tokens.group_by(&:application)
|
||||
end
|
||||
|
||||
def oauth_client_redirect_uri(oauth_client)
|
||||
"#{request.protocol}#{request.host_with_port}/oauth_clients/#{oauth_client.client_id}/callback"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -43,7 +43,7 @@ module TabsHelper
|
||||
|
||||
# Render tabs from the ui/extensible tabs manager
|
||||
def render_extensible_tabs(key, params = {})
|
||||
tabs = ::OpenProject::Ui::ExtensibleTabs.enabled_tabs(key).map do |tab|
|
||||
tabs = ::OpenProject::Ui::ExtensibleTabs.enabled_tabs(key, params.reverse_merge(current_user:)).map do |tab|
|
||||
path = tab[:path].respond_to?(:call) ? instance_exec(params, &tab[:path]) : tab[:path]
|
||||
tab.dup.merge(path:)
|
||||
end
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
class CustomStyle < ApplicationRecord
|
||||
mount_uploader :logo, OpenProject::Configuration.file_uploader
|
||||
mount_uploader :export_logo, OpenProject::Configuration.file_uploader
|
||||
mount_uploader :export_cover, OpenProject::Configuration.file_uploader
|
||||
mount_uploader :favicon, OpenProject::Configuration.file_uploader
|
||||
mount_uploader :touch_icon, OpenProject::Configuration.file_uploader
|
||||
|
||||
@@ -21,7 +22,7 @@ class CustomStyle < ApplicationRecord
|
||||
updated_at.to_i
|
||||
end
|
||||
|
||||
%i(favicon touch_icon export_logo logo).each do |name|
|
||||
%i(favicon touch_icon export_logo export_cover logo).each do |name|
|
||||
define_method "#{name}_path" do
|
||||
image = send(name)
|
||||
|
||||
|
||||
@@ -43,16 +43,16 @@ module Members::Scopes
|
||||
private
|
||||
|
||||
def visible_for_non_admins(user)
|
||||
view_members = Project.where(id: Project.allowed_to(user, :view_members))
|
||||
manage_members = Project.where(id: Project.allowed_to(user, :manage_members))
|
||||
view_members = Project.allowed_to(user, :view_members)
|
||||
manage_members = Project.allowed_to(user, :manage_members)
|
||||
|
||||
project_scope = view_members.or(manage_members)
|
||||
|
||||
Member.where(project_id: project_scope.select(:id))
|
||||
where(project_id: project_scope.select(:id))
|
||||
end
|
||||
|
||||
def visible_for_admins
|
||||
Member.all
|
||||
all
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -28,4 +28,8 @@
|
||||
|
||||
class OAuthClient < ApplicationRecord
|
||||
belongs_to :integration, polymorphic: true
|
||||
|
||||
def redirect_uri
|
||||
File.join(OpenProject::Application.root_url, 'oauth_clients', client_id, 'callback')
|
||||
end
|
||||
end
|
||||
|
||||
@@ -150,6 +150,9 @@ class Project < ApplicationRecord
|
||||
|
||||
friendly_id :identifier, use: :finders
|
||||
|
||||
include ::Scopes::Scoped
|
||||
scopes :allowed_to
|
||||
|
||||
scope :has_module, ->(mod) {
|
||||
where(["#{Project.table_name}.id IN (SELECT em.project_id FROM #{EnabledModule.table_name} em WHERE em.name=?)", mod.to_s])
|
||||
}
|
||||
@@ -208,12 +211,6 @@ class Project < ApplicationRecord
|
||||
allowed_to(user, :view_project)
|
||||
end
|
||||
|
||||
# Returns a ActiveRecord::Relation to find all projects for which
|
||||
# +user+ has the given +permission+
|
||||
def self.allowed_to(user, permission)
|
||||
Authorization.projects(permission, user)
|
||||
end
|
||||
|
||||
# Returns a :conditions SQL string that can be used to find the issues associated with this project.
|
||||
#
|
||||
# Examples:
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
# -- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) 2010-2023 the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
# ++
|
||||
|
||||
module Projects::Scopes
|
||||
module AllowedTo
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
class_methods do
|
||||
# Returns an ActiveRecord::Relation to find all projects for which
|
||||
# +user+ has the given +permission+
|
||||
def allowed_to(user, permission)
|
||||
permissions = allowed_to_permissions(permission)
|
||||
|
||||
if user.admin? && permissions.all?(&:grant_to_admin?)
|
||||
where(id: allowed_to_admin_relation(permissions))
|
||||
elsif user.anonymous?
|
||||
where(id: allowed_to_non_member_relation(user, permissions))
|
||||
else
|
||||
where(arel_table[:id].in(allowed_to_member_relation(user, permissions)
|
||||
.arel
|
||||
.union(:all, allowed_to_non_member_relation(user, permissions).arel)))
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def allowed_to_admin_relation(permissions)
|
||||
joins(allowed_to_enabled_module_join(permissions))
|
||||
.where(arel_table[:active].eq(true))
|
||||
end
|
||||
|
||||
def allowed_to_non_member_relation(user, permissions)
|
||||
joins(allowed_to_enabled_module_join(permissions))
|
||||
.joins(allowed_to_builtin_roles_in_active_project_join(user))
|
||||
.joins(allowed_to_role_permission_join(permissions))
|
||||
.select(:id)
|
||||
end
|
||||
|
||||
def allowed_to_member_relation(user, permissions)
|
||||
Member
|
||||
.joins(allowed_to_member_in_active_project_join(user))
|
||||
.joins(allowed_to_enabled_module_join(permissions))
|
||||
.joins(:roles, :member_roles)
|
||||
.joins(allowed_to_role_permission_join(permissions))
|
||||
.select('projects.id')
|
||||
end
|
||||
|
||||
def allowed_to_enabled_module_join(permissions)
|
||||
project_module = permissions.filter_map(&:project_module).uniq
|
||||
enabled_module_table = EnabledModule.arel_table
|
||||
|
||||
if project_module.any?
|
||||
arel_table.join(enabled_module_table, Arel::Nodes::InnerJoin)
|
||||
.on(arel_table[:id].eq(enabled_module_table[:project_id])
|
||||
.and(enabled_module_table[:name].in(project_module))
|
||||
.and(arel_table[:active].eq(true)))
|
||||
.join_sources
|
||||
end
|
||||
end
|
||||
|
||||
def allowed_to_role_permission_join(permissions)
|
||||
return if permissions.all?(&:public?)
|
||||
|
||||
role_permissions_table = RolePermission.arel_table
|
||||
enabled_modules_table = EnabledModule.arel_table
|
||||
roles_table = Role.arel_table
|
||||
|
||||
condition = permissions.inject(Arel::Nodes::False.new) do |or_condition, permission|
|
||||
permission_condition = role_permissions_table[:permission].eq(permission.name)
|
||||
|
||||
if permission.project_module.present?
|
||||
permission_condition = permission_condition.and(enabled_modules_table[:name].eq(permission.project_module))
|
||||
end
|
||||
|
||||
or_condition.or(permission_condition)
|
||||
end
|
||||
|
||||
arel_table
|
||||
.join(role_permissions_table, Arel::Nodes::InnerJoin)
|
||||
.on(roles_table[:id].eq(role_permissions_table[:role_id])
|
||||
.and(condition))
|
||||
.join_sources
|
||||
end
|
||||
|
||||
def allowed_to_permissions(permission)
|
||||
if permission.is_a?(Hash)
|
||||
OpenProject::AccessControl.allow_actions(permission)
|
||||
else
|
||||
[OpenProject::AccessControl.permission(permission)].compact
|
||||
end
|
||||
end
|
||||
|
||||
def allowed_to_members_condition(user)
|
||||
members_table = Member.arel_table
|
||||
|
||||
members_table[:project_id].eq(arel_table[:id])
|
||||
.and(members_table[:user_id].eq(user.id))
|
||||
.and(members_table[:entity_type].eq(nil))
|
||||
.and(members_table[:entity_id].eq(nil))
|
||||
end
|
||||
|
||||
def allowed_to_builtin_roles_in_active_project_join(user)
|
||||
condition = allowed_to_built_roles_in_active_project_condition(user)
|
||||
|
||||
if user.logged?
|
||||
condition = condition.and(allowed_to_no_member_exists_condition(user))
|
||||
end
|
||||
|
||||
roles_table = Role.arel_table
|
||||
|
||||
arel_table.join(roles_table)
|
||||
.on(condition)
|
||||
.join_sources
|
||||
end
|
||||
|
||||
def allowed_to_member_in_active_project_join(user)
|
||||
arel_table.join(arel_table)
|
||||
.on(arel_table[:active].eq(true)
|
||||
.and(allowed_to_members_condition(user)))
|
||||
.join_sources
|
||||
end
|
||||
|
||||
def allowed_to_built_roles_in_active_project_condition(user)
|
||||
builtin = if user.logged?
|
||||
Role::BUILTIN_NON_MEMBER
|
||||
else
|
||||
Role::BUILTIN_ANONYMOUS
|
||||
end
|
||||
|
||||
roles_table = Role.arel_table
|
||||
|
||||
roles_table[:builtin].eq(builtin)
|
||||
.and(arel_table[:active])
|
||||
.and(arel_table[:public])
|
||||
end
|
||||
|
||||
def allowed_to_no_member_exists_condition(user)
|
||||
Member
|
||||
.select(1)
|
||||
.where(allowed_to_members_condition(user))
|
||||
.arel
|
||||
.exists
|
||||
.not
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -31,6 +31,7 @@ module Queries::Filters
|
||||
list: Queries::Filters::Strategies::List,
|
||||
list_all: Queries::Filters::Strategies::ListAll,
|
||||
list_optional: Queries::Filters::Strategies::ListOptional,
|
||||
shared_with_user_list_optional: Queries::Filters::Strategies::WorkPackages::SharedWithUser::ListOptional,
|
||||
integer: Queries::Filters::Strategies::Integer,
|
||||
date: Queries::Filters::Strategies::Date,
|
||||
datetime_past: Queries::Filters::Strategies::DateTimePast,
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
module Queries::Filters::Strategies
|
||||
class Date < Queries::Filters::Strategies::Integer
|
||||
self.supported_operators = ['<t+', '>t+', 't+', 't', 'w', '>t-', '<t-', 't-', '=d', '<>d']
|
||||
self.supported_operators = ['<t+', '>t+', 't+', 't', 'w', '>t-', '<t-', 't-', '=d', '<>d', '!*']
|
||||
self.default_operator = 't'
|
||||
|
||||
def validate
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# -- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) 2010-2023 the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
# ++
|
||||
|
||||
module Queries::Filters::Strategies
|
||||
module WorkPackages
|
||||
module SharedWithUser
|
||||
class ListOptional < ::Queries::Filters::Strategies::List
|
||||
self.supported_operators = %w[= &= *]
|
||||
|
||||
def operator_map
|
||||
super.dup.tap do |super_value|
|
||||
super_value['='] = ::Queries::Operators::EqualsOr
|
||||
super_value['&='] = ::Queries::Operators::WorkPackages::SharedWithUser::EqualsAll
|
||||
super_value['*'] = ::Queries::Operators::WorkPackages::SharedWithUser::Any
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,37 @@
|
||||
# -- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) 2010-2023 the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
# ++
|
||||
|
||||
module Queries::Operators
|
||||
module WorkPackages
|
||||
module SharedWithUser
|
||||
class Any < ::Queries::Operators::All
|
||||
label 'operator_shared_with_user_any'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,40 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# -- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) 2010-2023 the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
# ++
|
||||
|
||||
module Queries::Operators
|
||||
module WorkPackages
|
||||
module SharedWithUser
|
||||
class EqualsAll < ::Queries::Operators::Base
|
||||
label 'operator_equals_all'
|
||||
set_symbol '&='
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -28,9 +28,7 @@
|
||||
|
||||
class Queries::Principals::Filters::MemberFilter < Queries::Principals::Filters::PrincipalFilter
|
||||
def allowed_values
|
||||
Project.active.all.map do |project|
|
||||
[project.name, project.id]
|
||||
end
|
||||
Project.active.pluck(:name, :id)
|
||||
end
|
||||
|
||||
def type
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
module Queries::Roles
|
||||
::Queries::Register.register(RoleQuery) do
|
||||
filter Filters::AllowsBecomingAssigneeFilter
|
||||
filter Filters::GrantableFilter
|
||||
filter Filters::UnitFilter
|
||||
end
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
#-- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) 2012-2023 the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
#++
|
||||
|
||||
class Queries::Roles::Filters::AllowsBecomingAssigneeFilter <
|
||||
Queries::Roles::Filters::RoleFilter
|
||||
def type
|
||||
:list
|
||||
end
|
||||
|
||||
def where
|
||||
permission_ids = if values.first == OpenProject::Database::DB_VALUE_TRUE
|
||||
assignable_permissions
|
||||
else
|
||||
unassignable_permissions
|
||||
end
|
||||
|
||||
if operator == '='
|
||||
["role_permissions.id IN (?)", permission_ids]
|
||||
else
|
||||
["role_permissions.id NOT IN (?)", permission_ids]
|
||||
end
|
||||
end
|
||||
|
||||
def joins
|
||||
:role_permissions
|
||||
end
|
||||
|
||||
def allowed_values
|
||||
[[I18n.t(:general_text_yes), OpenProject::Database::DB_VALUE_TRUE],
|
||||
[I18n.t(:general_text_no), OpenProject::Database::DB_VALUE_FALSE]]
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def assignable_permissions
|
||||
RolePermission.where(permission: 'work_package_assigned')
|
||||
.select('id')
|
||||
end
|
||||
|
||||
def unassignable_permissions
|
||||
RolePermission.where.not(permission: 'work_package_assigned')
|
||||
.select('id')
|
||||
end
|
||||
end
|
||||
@@ -45,6 +45,7 @@ module Queries::WorkPackages
|
||||
filter Filter::ProjectFilter
|
||||
filter Filter::ResponsibleFilter
|
||||
filter Filter::RoleFilter
|
||||
filter Filter::SharedWithUserFilter
|
||||
filter Filter::StartDateFilter
|
||||
filter Filter::StatusFilter
|
||||
filter Filter::SubjectFilter
|
||||
|
||||
@@ -56,7 +56,6 @@ class Queries::WorkPackages::Filter::RoleFilter < Queries::WorkPackages::Filter:
|
||||
|
||||
values
|
||||
.filter_map { |role_id| available_roles[role_id.to_i] }
|
||||
|
||||
end
|
||||
|
||||
def where
|
||||
@@ -68,7 +67,7 @@ class Queries::WorkPackages::Filter::RoleFilter < Queries::WorkPackages::Filter:
|
||||
private
|
||||
|
||||
def roles
|
||||
::Role.givable.or(::GlobalRole.givable)
|
||||
::Role.givable.or(::GlobalRole.givable).or(::WorkPackageRole.givable)
|
||||
end
|
||||
|
||||
def operator_for_filtering
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# -- copyright
|
||||
# OpenProject is an open source project management software.
|
||||
# Copyright (C) 2023 the OpenProject GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License version 3.
|
||||
#
|
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
|
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang
|
||||
# Copyright (C) 2010-2013 the ChiliProject Team
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# See COPYRIGHT and LICENSE files for more details.
|
||||
# ++
|
||||
|
||||
class Queries::WorkPackages::Filter::SharedWithUserFilter <
|
||||
Queries::WorkPackages::Filter::PrincipalBaseFilter
|
||||
def available?
|
||||
super && User.current
|
||||
.allowed_to?(:view_shared_work_packages,
|
||||
project,
|
||||
global: true)
|
||||
end
|
||||
|
||||
def scope
|
||||
query = visible_shared_work_packages
|
||||
|
||||
if operator == '='
|
||||
query = query.where(shared_with_any_of_condition)
|
||||
elsif operator == '&='
|
||||
query = query.where(shared_with_all_of_condition)
|
||||
end
|
||||
|
||||
WorkPackage.where(id: query.select('work_packages.id').distinct)
|
||||
end
|
||||
|
||||
# Conditions handled in +scope+ method
|
||||
def where
|
||||
'1=1'
|
||||
end
|
||||
|
||||
def human_name
|
||||
I18n.t('query_fields.shared_with_user')
|
||||
end
|
||||
|
||||
def type
|
||||
:shared_with_user_list_optional
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def visible_shared_work_packages
|
||||
WorkPackage.joins("JOIN members ON members.entity_id = work_packages.id")
|
||||
.where(members: { entity_type: 'WorkPackage',
|
||||
project: visible_projects })
|
||||
end
|
||||
|
||||
def visible_projects
|
||||
Project.allowed_to(User.current, :view_shared_work_packages)
|
||||
end
|
||||
|
||||
def shared_with_any_of_condition
|
||||
{ members: { user_id: values_replaced } }
|
||||
end
|
||||
|
||||
def shared_with_all_of_condition
|
||||
work_packages_table = WorkPackage.table_name
|
||||
members_table = Member.table_name
|
||||
|
||||
where_clauses = values_replaced.map do |user_id|
|
||||
<<~SQL.squish
|
||||
EXISTS (SELECT 1
|
||||
FROM #{members_table}
|
||||
WHERE #{members_table}.entity_id = #{work_packages_table}.id
|
||||
AND #{members_table}.user_id = #{ActiveRecord::Base.connection.quote_string(user_id)})
|
||||
SQL
|
||||
end
|
||||
|
||||
where_clauses.join(' AND ')
|
||||
end
|
||||
end
|
||||
@@ -60,41 +60,70 @@ module WorkPackage::PDFExport::Cover
|
||||
)
|
||||
end
|
||||
|
||||
def cover_text_color
|
||||
@cover_text_color ||= validate_cover_text_color
|
||||
end
|
||||
|
||||
def validate_cover_text_color
|
||||
return nil if CustomStyle.current.blank?
|
||||
|
||||
hexcode = CustomStyle.current.export_cover_text_color
|
||||
return nil if hexcode.blank?
|
||||
|
||||
color = Color.new({ hexcode: })
|
||||
color.normalize_hexcode
|
||||
return nil if color.hexcode.blank?
|
||||
|
||||
# pdf hex colors are defined without leading hash
|
||||
color.hexcode.sub('#', '')
|
||||
end
|
||||
|
||||
def write_hero_title(top, width)
|
||||
text_style = styles.cover_hero_title
|
||||
formatted_text_box_measured(
|
||||
[text_style.merge({ text: project.name, size: nil, leading: nil })],
|
||||
size: text_style[:size], leading: text_style[:leading],
|
||||
at: [0, top], width:, height: styles.cover_hero_title_max_height, overflow: :shrink_to_fit
|
||||
write_hero_text(
|
||||
top:, width:,
|
||||
text: project.name,
|
||||
text_style: styles.cover_hero_title,
|
||||
height: styles.cover_hero_title_max_height
|
||||
) + styles.cover_hero_title_spacing
|
||||
end
|
||||
|
||||
def write_hero_heading(top, width)
|
||||
max_title_height = available_title_height(top)
|
||||
text_style = styles.cover_hero_heading
|
||||
formatted_text_box_measured(
|
||||
[text_style.merge({ text: heading, size: nil, leading: nil })],
|
||||
size: text_style[:size], leading: text_style[:leading],
|
||||
at: [0, top], width:, height: max_title_height, overflow: :shrink_to_fit
|
||||
write_hero_text(
|
||||
top:, width:,
|
||||
text: heading,
|
||||
text_style: styles.cover_hero_heading,
|
||||
height: available_title_height(top)
|
||||
) + styles.cover_hero_heading_spacing
|
||||
end
|
||||
|
||||
def write_hero_subheading(top, width)
|
||||
text_style = styles.cover_hero_subheading
|
||||
pdf.formatted_text_box(
|
||||
[text_style.merge({ text: User.current.name, size: nil, leading: nil })],
|
||||
write_hero_text(
|
||||
top:, width:,
|
||||
text: User.current.name,
|
||||
text_style: styles.cover_hero_subheading,
|
||||
height: styles.cover_hero_subheading_max_height
|
||||
)
|
||||
end
|
||||
|
||||
def write_hero_text(top:, width:, text:, text_style:, height:)
|
||||
formatted_text = text_style.merge({ text:, size: nil, leading: nil })
|
||||
formatted_text[:color] = cover_text_color if cover_text_color.present?
|
||||
formatted_text_box_measured(
|
||||
[formatted_text],
|
||||
size: text_style[:size], leading: text_style[:leading],
|
||||
at: [0, top], width:, height: styles.cover_hero_subheading_max_height, overflow: :shrink_to_fit
|
||||
at: [0, top], width:, height:, overflow: :shrink_to_fit
|
||||
)
|
||||
end
|
||||
|
||||
def write_cover_footer
|
||||
text_style = styles.cover_footer
|
||||
text_style[:color] = cover_text_color if cover_text_color.present?
|
||||
draw_text_multiline_left(
|
||||
text: footer_date,
|
||||
max_left: pdf.bounds.width / 2,
|
||||
max_lines: 1,
|
||||
top: pdf.bounds.bottom - styles.cover_footer_offset,
|
||||
text_style: styles.cover_footer
|
||||
text_style:
|
||||
)
|
||||
end
|
||||
|
||||
@@ -107,7 +136,8 @@ module WorkPackage::PDFExport::Cover
|
||||
end
|
||||
|
||||
def cover_background_image
|
||||
image_file = Rails.root.join("app/assets/images/pdf/cover.png")
|
||||
image_file = custom_cover_image
|
||||
image_file = Rails.root.join("app/assets/images/pdf/cover.png") if image_file.nil?
|
||||
image_obj, image_info = pdf.build_image_object(image_file)
|
||||
scale = pdf.bounds.width / image_info.width.to_f
|
||||
height = image_info.height.to_f * scale
|
||||
@@ -115,12 +145,24 @@ module WorkPackage::PDFExport::Cover
|
||||
[image_obj, image_info, image_opts, height]
|
||||
end
|
||||
|
||||
def custom_cover_image
|
||||
return unless CustomStyle.current.present? &&
|
||||
CustomStyle.current.export_cover.present? && CustomStyle.current.export_cover.local_file.present?
|
||||
|
||||
image_file = CustomStyle.current.export_cover.local_file.path
|
||||
content_type = OpenProject::ContentTypeDetector.new(image_file).detect
|
||||
return unless pdf_embeddable?(content_type)
|
||||
|
||||
image_file
|
||||
end
|
||||
|
||||
def write_background_image
|
||||
height = pdf.bounds.height / 2
|
||||
half = pdf.bounds.height / 2
|
||||
height = half
|
||||
pdf.canvas do
|
||||
image_obj, image_info, image_opts, height = cover_background_image
|
||||
pdf.embed_image image_obj, image_info, image_opts
|
||||
end
|
||||
height - styles.cover_hero_padding[:top_padding]
|
||||
height.clamp(half, pdf.bounds.height) - styles.cover_hero_padding[:top_padding]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -31,7 +31,9 @@
|
||||
|
||||
class WorkPackageRole < Role
|
||||
def self.givable
|
||||
none
|
||||
where(builtin: NON_BUILTIN)
|
||||
.where(type: 'WorkPackageRole')
|
||||
.order(Arel.sql('position'))
|
||||
end
|
||||
|
||||
def member?
|
||||
|
||||
@@ -54,7 +54,9 @@ module DemoData
|
||||
[
|
||||
DemoData::WikiSeeder,
|
||||
DemoData::WorkPackageSeeder,
|
||||
DemoData::WorkPackageBoardSeeder
|
||||
DemoData::WorkPackageBoardSeeder,
|
||||
::Meetings::DemoData::MeetingSeeder,
|
||||
::Meetings::DemoData::MeetingAgendaItemsSeeder,
|
||||
]
|
||||
end
|
||||
|
||||
|
||||
@@ -261,6 +261,7 @@ projects:
|
||||
- wiki
|
||||
- board_view
|
||||
- team_planner_view
|
||||
- meetings
|
||||
news:
|
||||
- t_title: Welcome to your demo project
|
||||
t_summary: |
|
||||
|
||||
@@ -36,7 +36,7 @@ module Authorization
|
||||
|
||||
# Returns all projects a user has a certain permission in
|
||||
def projects(action, user)
|
||||
Authorization::ProjectQuery.query(user, action)
|
||||
Project.allowed_to(action, user)
|
||||
end
|
||||
|
||||
# Returns all roles a user has in a certain project, for a specific entity or globally
|
||||
|
||||
@@ -60,6 +60,8 @@ module OAuthClients
|
||||
ServiceResult.failure(result: @redirect_url)
|
||||
end
|
||||
|
||||
# rubocop:disable Metrics/AbcSize
|
||||
|
||||
# The bearer/access token has expired or is due for renew for other reasons.
|
||||
# Talk to OAuth2 Authorization Server to exchange the renew_token for a new bearer token.
|
||||
def refresh_token
|
||||
@@ -79,11 +81,17 @@ module OAuthClients
|
||||
ServiceResult.success(result: oauth_client_token)
|
||||
end
|
||||
else
|
||||
service_result_with_error(I18n.t('oauth_client.errors.refresh_token_called_without_existing_token'))
|
||||
storage_error = ::Storages::StorageError.new(
|
||||
code: :error,
|
||||
log_message: I18n.t('oauth_client.errors.refresh_token_called_without_existing_token')
|
||||
)
|
||||
ServiceResult.failure(result: :error, errors: storage_error)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# rubocop:enable Metrics/AbcSize
|
||||
|
||||
# Returns the URI of the "authorize" endpoint of the OAuth2 Authorization Server.
|
||||
# @param state (OAuth2 RFC) is a nonce referencing a cookie containing the calling page (URL + params) to which to
|
||||
# return to at the end of the whole flow.
|
||||
@@ -93,6 +101,8 @@ module OAuthClients
|
||||
client.authorization_uri(scope: @config.scope, state:)
|
||||
end
|
||||
|
||||
# rubocop:disable Metrics/AbcSize
|
||||
|
||||
# Called by callback_page with a cryptographic "code" that indicates
|
||||
# that the user has successfully authorized the OAuth2 Authorization Server.
|
||||
# We now are going to exchange this code to a token (bearer+refresh)
|
||||
@@ -128,6 +138,8 @@ module OAuthClients
|
||||
ServiceResult.success(result: oauth_client_token)
|
||||
end
|
||||
|
||||
# rubocop:enable Metrics/AbcSize
|
||||
|
||||
# Called by StorageRepresenter to inquire about the status of the OAuth2
|
||||
# authentication server.
|
||||
# Returns :connected/:authorization_failed or :error for a general error.
|
||||
@@ -146,7 +158,7 @@ module OAuthClients
|
||||
service_result = refresh_token
|
||||
if service_result.success?
|
||||
:connected
|
||||
elsif service_result.result == 'invalid_request'
|
||||
elsif service_result.errors.data.payload[:error] == 'invalid_request'
|
||||
:failed_authorization
|
||||
else
|
||||
:error
|
||||
@@ -167,11 +179,7 @@ module OAuthClients
|
||||
|
||||
if yield_service_result.failure? && yield_service_result.result == :unauthorized
|
||||
refresh_service_result = refresh_token
|
||||
if refresh_service_result.failure?
|
||||
failed_service_result = ServiceResult.failure(result: :error)
|
||||
failed_service_result.merge!(refresh_service_result)
|
||||
return failed_service_result
|
||||
end
|
||||
return refresh_service_result if refresh_service_result.failure?
|
||||
|
||||
oauth_client_token.reload
|
||||
yield_service_result = yield(oauth_client_token) # Should contain result=<data> in case of success
|
||||
@@ -189,27 +197,29 @@ module OAuthClients
|
||||
OAuthClientToken.find_by(user_id: @user, oauth_client_id: @oauth_client.id)
|
||||
end
|
||||
|
||||
# Calls client.access_token!
|
||||
# Convert the various exceptions into user-friendly error strings.
|
||||
# rubocop:disable Metrics/AbcSize
|
||||
def request_new_token(options = {})
|
||||
rack_access_token = rack_oauth_client(options).access_token!(:body)
|
||||
|
||||
ServiceResult.success(result: rack_access_token)
|
||||
rescue Rack::OAuth2::Client::Error => e
|
||||
service_result_with_error(i18n_rack_oauth2_error_message(e), e.message)
|
||||
service_result_with_error(:bad_request, e.response, i18n_rack_oauth2_error_message(e))
|
||||
rescue Faraday::TimeoutError, Faraday::ConnectionFailed, Faraday::ParsingError, Faraday::SSLError => e
|
||||
service_result_with_error(
|
||||
"#{I18n.t('oauth_client.errors.oauth_returned_http_error')}: #{e.class}: #{e.message.to_html}",
|
||||
e.message
|
||||
:internal_server_error,
|
||||
e,
|
||||
"#{I18n.t('oauth_client.errors.oauth_returned_http_error')}: #{e.class}: #{e.message.to_html}"
|
||||
)
|
||||
rescue StandardError => e
|
||||
service_result_with_error(
|
||||
"#{I18n.t('oauth_client.errors.oauth_returned_standard_error')}: #{e.class}: #{e.message.to_html}",
|
||||
e.message
|
||||
:error,
|
||||
e,
|
||||
"#{I18n.t('oauth_client.errors.oauth_returned_standard_error')}: #{e.class}: #{e.message.to_html}"
|
||||
)
|
||||
end
|
||||
|
||||
# Localize the error message
|
||||
# rubocop:enable Metrics/AbcSize
|
||||
|
||||
def i18n_rack_oauth2_error_message(rack_oauth2_client_exception)
|
||||
i18n_key = "oauth_client.errors.rack_oauth2.#{rack_oauth2_client_exception.message}"
|
||||
if I18n.exists? i18n_key
|
||||
@@ -250,12 +260,10 @@ module OAuthClients
|
||||
end
|
||||
end
|
||||
|
||||
# Shortcut method to convert an error message into an unsuccessful
|
||||
# ServiceResult with that error message
|
||||
def service_result_with_error(message, result = nil)
|
||||
ServiceResult.failure(result:).tap do |r|
|
||||
r.errors.add(:base, message)
|
||||
end
|
||||
def service_result_with_error(code, data, log_message = nil)
|
||||
error_data = ::Storages::StorageErrorData.new(source: self, payload: data)
|
||||
ServiceResult.failure(result: code,
|
||||
errors: ::Storages::StorageError.new(code:, data: error_data, log_message:))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -155,39 +155,115 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
<%= form_for @custom_style, url: custom_style_path, html: { multipart: true, class: "form -vertical" } do |f| %>
|
||||
<section class="form--section">
|
||||
<fieldset class="form--fieldset">
|
||||
<legend class="form--fieldset-legend"><%= I18n.t(:label_custom_export_logo) %></legend>
|
||||
<% custom_export_expanded = @custom_style.id && (@custom_style.export_logo.present? || @custom_style.export_cover.present? || @custom_style.export_cover_text_color.present?) %>
|
||||
<collapsible-section-augment initially-expanded="<%= custom_export_expanded %>"
|
||||
section-title="<%= I18n.t(:label_custom_pdf_export_settings) %>">
|
||||
</collapsible-section-augment>
|
||||
<div class="collapsible-section-augment--body" hidden>
|
||||
|
||||
<% if @custom_style.id && @custom_style.export_logo.present? %>
|
||||
<div>
|
||||
<%= tag('img', src: custom_style_export_logo_path(digest: @custom_style.digest, filename: @custom_style.export_logo_identifier), class: 'custom-export-logo-preview') %>
|
||||
<%= link_to t(:button_delete),
|
||||
custom_style_export_logo_delete_path,
|
||||
method: :delete,
|
||||
class: 'icon icon-delete confirm-form-submit' %>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= form_for @custom_style, url: custom_style_path, html: { multipart: true, class: "form -vertical" } do |f| %>
|
||||
<section class="form--section">
|
||||
<fieldset class="form--fieldset">
|
||||
<legend class="form--fieldset-legend"><%= I18n.t(:label_custom_export_logo) %></legend>
|
||||
|
||||
<div class="grid-block">
|
||||
<div class="form--field -required">
|
||||
<div class="attachment_field form--field-container -vertical -shrink">
|
||||
<div class="form--file-container">
|
||||
<%= f.file_field :export_logo, required: true, class: "attachment_choose_file", size: "15" %>
|
||||
<% if @custom_style.id && @custom_style.export_logo.present? %>
|
||||
<div>
|
||||
<%= tag('img', src: custom_style_export_logo_path(digest: @custom_style.digest, filename: @custom_style.export_logo_identifier), class: 'custom-export-logo-preview') %>
|
||||
<%= link_to t(:button_delete),
|
||||
custom_style_export_logo_delete_path,
|
||||
method: :delete,
|
||||
class: 'icon icon-delete confirm-form-submit' %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="grid-block">
|
||||
<div class="form--field -required">
|
||||
<div class="attachment_field form--field-container -vertical -shrink">
|
||||
<div class="form--file-container">
|
||||
<%= f.file_field :export_logo, required: true, class: "attachment_choose_file", size: "15" %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form--field-instructions">
|
||||
<%= t('text_custom_export_logo_instructions') %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form--field-instructions">
|
||||
<%= t('text_custom_export_logo_instructions') %>
|
||||
</div>
|
||||
|
||||
<%= styled_button_tag t(@custom_style.export_logo.present? ? :button_replace : :button_upload), class: "button #{@custom_style.export_logo.blank? ? '-with-icon icon-add' : ''}" %>
|
||||
|
||||
</fieldset>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
<%= form_for @custom_style, url: custom_style_path, html: { multipart: true, class: "form -vertical" } do |f| %>
|
||||
<section class="form--section">
|
||||
<fieldset class="form--fieldset">
|
||||
<legend class="form--fieldset-legend"><%= I18n.t(:label_custom_export_cover) %></legend>
|
||||
|
||||
<% if @custom_style.id && @custom_style.export_cover.present? %>
|
||||
<div>
|
||||
<%= tag('img', src: custom_style_export_cover_path(digest: @custom_style.digest, filename: @custom_style.export_cover_identifier), class: 'custom-export-cover-preview') %>
|
||||
<%= link_to t(:button_delete),
|
||||
custom_style_export_cover_delete_path,
|
||||
method: :delete,
|
||||
class: 'icon icon-delete confirm-form-submit' %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="grid-block">
|
||||
<div class="form--field -required">
|
||||
<div class="attachment_field form--field-container -vertical -shrink">
|
||||
<div class="form--file-container">
|
||||
<%= f.file_field :export_cover, required: true, class: "attachment_choose_file", size: "15" %>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form--field-instructions">
|
||||
<%= t('text_custom_export_cover_instructions') %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= styled_button_tag t(@custom_style.export_logo.present? ? :button_replace : :button_upload), class: "button #{@custom_style.export_logo.blank? ? '-with-icon icon-add' : ''}" %>
|
||||
<%= styled_button_tag t(@custom_style.export_cover.present? ? :button_replace : :button_upload), class: "button #{@custom_style.export_cover.blank? ? '-with-icon icon-add' : ''}" %>
|
||||
|
||||
</fieldset>
|
||||
</section>
|
||||
<% end %>
|
||||
</fieldset>
|
||||
</section>
|
||||
<% end %>
|
||||
|
||||
<%= form_tag update_custom_style_export_cover_text_color_path, html: { multipart: true, class: "form -vertical" } do |f| %>
|
||||
<section class="form--section">
|
||||
<fieldset class="form--fieldset">
|
||||
<legend class="form--fieldset-legend"><%= I18n.t(:label_custom_export_cover_overlay) %></legend>
|
||||
<div class="form--field">
|
||||
<label class="form--label"><%= I18n.t(:label_custom_export_cover_text_color) %>:</label>
|
||||
<span class="form--field-container">
|
||||
<div class="form--field-affix">
|
||||
<% design_color_name = 'export_cover_text_color' %>
|
||||
<% design_color_hex = @custom_style.export_cover_text_color.present? ? @custom_style.export_cover_text_color : '' %>
|
||||
<%= icon_for_color(OpenStruct.new(variable: design_color_name,
|
||||
hexcode: design_color_hex),
|
||||
data: { target: "#" + design_color_name }) %>
|
||||
</div>
|
||||
<span class="form--text-field-container">
|
||||
<%= styled_text_field_tag design_color_name,
|
||||
design_color_hex,
|
||||
placeholder: '#000'
|
||||
%>
|
||||
</span>
|
||||
</span>
|
||||
<div class="form--field-instructions">
|
||||
<% instruction_key = "admin.custom_styles.instructions.#{design_color_name}" %>
|
||||
<% if I18n.exists?(instruction_key, :en) %>
|
||||
<%= I18n.t(instruction_key) %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="button -hide-when-collapsed"><%= I18n.t(:button_save) %></button>
|
||||
|
||||
</fieldset>
|
||||
</section>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%= form_tag update_design_colors_path, method: :post, class: "form" do %>
|
||||
<section class="form--section">
|
||||
|
||||
@@ -31,7 +31,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
.new(@individual_principal.memberships.build, current_user)
|
||||
.assignable_projects
|
||||
.order(Arel.sql('lft')) %>
|
||||
<% memberships = @individual_principal.memberships.visible(current_user) %>
|
||||
<% memberships = @individual_principal.memberships.where(id: Member.visible(current_user)) %>
|
||||
|
||||
<div class="grid-block">
|
||||
<div class="grid-content">
|
||||
@@ -144,7 +144,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
url: polymorphic_path([@individual_principal, :memberships]),
|
||||
html: {id: "new_project_membership"}) do %>
|
||||
<fieldset class="form--fieldset">
|
||||
<legend class="form--fieldset-legend"><%=t(:label_project_new)%></legend>
|
||||
<legend class="form--fieldset-legend"><%=t(:label_available_projects)%></legend>
|
||||
<% principal_project_ids = @individual_principal.projects.ids %>
|
||||
<% filter = [['active', '=', 't']] %>
|
||||
<% filter << ['id', '!', principal_project_ids.map(&:to_s)] if principal_project_ids.any? %>
|
||||
|
||||
@@ -31,7 +31,7 @@ See COPYRIGHT and LICENSE files for more details.
|
||||
|
||||
<div class="grid-content" id="available_principal_roles">
|
||||
<fieldset class="form--fieldset">
|
||||
<legend class="form--fieldset-legend"><%= Role.model_name.human(count: 2) %></legend>
|
||||
<legend class="form--fieldset-legend"><%= t(:label_available_global_roles) %></legend>
|
||||
<% if available_roles.empty? %>
|
||||
<span id="no_additional_principal_roles">
|
||||
<%= no_results_box %>
|
||||
|
||||
@@ -290,6 +290,12 @@ Redmine::MenuManager.map :admin_menu do |menu|
|
||||
caption: :label_role_and_permissions,
|
||||
parent: :users_and_permissions
|
||||
|
||||
menu.push :permissions_report,
|
||||
{ controller: '/roles', action: 'report' },
|
||||
if: Proc.new { User.current.admin? },
|
||||
caption: :label_permissions_report,
|
||||
parent: :users_and_permissions
|
||||
|
||||
menu.push :user_avatars,
|
||||
{ controller: '/admin/settings', action: 'show_plugin', id: :openproject_avatars },
|
||||
if: Proc.new { User.current.admin? },
|
||||
|
||||
@@ -54,6 +54,13 @@ Rails.application.config.after_initialize do
|
||||
script_src += %w('unsafe-eval')
|
||||
end
|
||||
|
||||
# Allow ANDI bookmarklet to run in development mode
|
||||
# https://www.ssa.gov/accessibility/andi/help/install.html
|
||||
if Rails.env.development?
|
||||
script_src += ['https://www.ssa.gov']
|
||||
assets_src += ['https://www.ssa.gov']
|
||||
end
|
||||
|
||||
config.csp = {
|
||||
preserve_schemes: true,
|
||||
|
||||
|
||||
@@ -1589,11 +1589,13 @@ af:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Waarmerking"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1798,6 +1800,10 @@ af:
|
||||
label_login: "Teken in"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Teken af"
|
||||
@@ -1868,6 +1874,7 @@ af:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Maak kieslys oop"
|
||||
label_open_work_packages: "maak oop"
|
||||
label_open_work_packages_plural: "maak oop"
|
||||
@@ -2451,11 +2458,12 @@ af:
|
||||
query_fields:
|
||||
active_or_archived: "Aktief of geargiveer"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Naam of identifiseerder"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ af:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1203,6 +1203,7 @@ ar:
|
||||
errors: "خطأ"
|
||||
project_custom_fields: 'Custom fields on project'
|
||||
x_objects_of_this_type:
|
||||
zero: 'No objects of this type'
|
||||
one: 'One object of this type'
|
||||
other: '%{count} objects of this type'
|
||||
text:
|
||||
@@ -1672,11 +1673,13 @@ ar:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "المصادقة"
|
||||
label_available_project_work_package_categories: 'فئات مجموعة العمل المتاحة'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'الإصدارات المتوفرة'
|
||||
label_available_project_repositories: 'مستودعات البيانات المتوفرة'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "مستودعات البيانات المتوفرة"
|
||||
label_available_project_versions: "الإصدارات المتوفرة"
|
||||
label_available_project_work_package_categories: "فئات مجموعة العمل المتاحة"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "توثيق API"
|
||||
label_backup: "Backup"
|
||||
label_between: "بين"
|
||||
@@ -1881,6 +1884,10 @@ ar:
|
||||
label_login: "تسجيل الدخول"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "تسجيل الخروج"
|
||||
@@ -1951,6 +1958,7 @@ ar:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "فتح القائمة"
|
||||
label_open_work_packages: "افتح"
|
||||
label_open_work_packages_plural: "افتح"
|
||||
@@ -2174,15 +2182,19 @@ ar:
|
||||
label_x_closed_work_packages_abbr:
|
||||
one: "1 مغلقة"
|
||||
other: "%{count} مغلق"
|
||||
zero: "0 closed"
|
||||
label_x_comments:
|
||||
one: "1 comment"
|
||||
other: "%{count} تعليقات"
|
||||
zero: "no comments"
|
||||
label_x_open_work_packages_abbr:
|
||||
one: "1 open"
|
||||
other: "%{count} مفتوح"
|
||||
zero: "0 open"
|
||||
label_x_projects:
|
||||
one: "1 project"
|
||||
other: "%{count} مشاريع"
|
||||
zero: "no projects"
|
||||
label_yesterday: "الأمس"
|
||||
label_role_type: "النّوع"
|
||||
label_member_role: "Project role"
|
||||
@@ -2538,11 +2550,12 @@ ar:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "دور الموكل إليه"
|
||||
member_of_group: "مجموعة الموكل إليه"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "مجموعة الموكل إليه"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'في %{identifier}'
|
||||
atom_revision_feed: 'مراجعة تغذية ذرية'
|
||||
@@ -2855,6 +2868,8 @@ ar:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ az:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Authentication"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1798,6 +1800,10 @@ az:
|
||||
label_login: "Sign in"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Sign out"
|
||||
@@ -1868,6 +1874,7 @@ az:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Open menu"
|
||||
label_open_work_packages: "open"
|
||||
label_open_work_packages_plural: "open"
|
||||
@@ -2451,11 +2458,12 @@ az:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ az:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1631,11 +1631,13 @@ be:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Authentication"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1840,6 +1842,10 @@ be:
|
||||
label_login: "Sign in"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Sign out"
|
||||
@@ -1910,6 +1916,7 @@ be:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Open menu"
|
||||
label_open_work_packages: "open"
|
||||
label_open_work_packages_plural: "open"
|
||||
@@ -2497,11 +2504,12 @@ be:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2816,6 +2824,8 @@ be:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ bg:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Оторизация"
|
||||
label_available_project_work_package_categories: 'Налични категории работни пакети'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Налични версии'
|
||||
label_available_project_repositories: 'Достъпни хранилища'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Достъпни хранилища"
|
||||
label_available_project_versions: "Налични версии"
|
||||
label_available_project_work_package_categories: "Налични категории работни пакети"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API документация"
|
||||
label_backup: "Backup"
|
||||
label_between: "между"
|
||||
@@ -1798,6 +1800,10 @@ bg:
|
||||
label_login: "Влизане"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Изход"
|
||||
@@ -1868,6 +1874,7 @@ bg:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Open menu"
|
||||
label_open_work_packages: "open"
|
||||
label_open_work_packages_plural: "open"
|
||||
@@ -2451,11 +2458,12 @@ bg:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Само подпроект"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Само подпроект"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ bg:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1585,11 +1585,13 @@ ca:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Autenticació"
|
||||
label_available_project_work_package_categories: 'Categories de paquet de treball disponibles'
|
||||
label_available_project_work_package_types: 'Classes de paquet de treball disponibles'
|
||||
label_available_project_forums: 'Fòrums disponibles'
|
||||
label_available_project_versions: 'Versions disponibles'
|
||||
label_available_project_repositories: 'Repositòris disponibles'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Fòrums disponibles"
|
||||
label_available_project_repositories: "Repositòris disponibles"
|
||||
label_available_project_versions: "Versions disponibles"
|
||||
label_available_project_work_package_categories: "Categories de paquet de treball disponibles"
|
||||
label_available_project_work_package_types: "Classes de paquet de treball disponibles"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "Documentació d'API"
|
||||
label_backup: "Còpia de seguretat"
|
||||
label_between: "entre"
|
||||
@@ -1794,6 +1796,10 @@ ca:
|
||||
label_login: "Iniciar sessió"
|
||||
label_custom_logo: "Logotips personalitzats"
|
||||
label_custom_export_logo: "Exportar logo personalitzat"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Favicon personalitzat"
|
||||
label_custom_touch_icon: "Icona \"touch\" personalitzada"
|
||||
label_logout: "Tancar sessió"
|
||||
@@ -1864,6 +1870,7 @@ ca:
|
||||
label_operator_none: "està buit"
|
||||
label_operator_equals_or: "és (OR)"
|
||||
label_operator_equals_all: "és (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Obrir menú"
|
||||
label_open_work_packages: "obrir"
|
||||
label_open_work_packages_plural: "obrir"
|
||||
@@ -2442,11 +2449,12 @@ ca:
|
||||
query_fields:
|
||||
active_or_archived: "Actiu o arxivat"
|
||||
assigned_to_role: "Rol de l'assignat"
|
||||
member_of_group: "Grup de l'assignat"
|
||||
assignee_or_group: "Assignat o part d'un grup"
|
||||
subproject_id: "Incloent subprojectes"
|
||||
only_subproject_id: "Només subprojecte"
|
||||
member_of_group: "Grup de l'assignat"
|
||||
name_or_identifier: "Nom o identificador"
|
||||
only_subproject_id: "Només subprojecte"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Incloent subprojectes"
|
||||
repositories:
|
||||
at_identifier: 'a %{identifier}'
|
||||
atom_revision_feed: 'Feed de revisió d''Atom'
|
||||
@@ -2759,6 +2767,8 @@ ca:
|
||||
Es recomana un logo blanc amb fons transparent. Per a un millor resultat tant en pantalles retina o convencionals assegura't que la teva imatge té unes dimensions de 460px per 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
Aquest és logotip que apareix en les teves exportacions PDF. Necessita ser una imatge en format PNG o JPG. Es recomana un logotip negre o de color amb fons transparent o blanc.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
Aquest és la icona petita que apareix a la pantalla del navegador just al costat del títol de la pàgina. Ha de ser un PNG de 32 per 32 píxels amb un fons transparent.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ ckb-IR:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Authentication"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1798,6 +1800,10 @@ ckb-IR:
|
||||
label_login: "Sign in"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Sign out"
|
||||
@@ -1868,6 +1874,7 @@ ckb-IR:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Open menu"
|
||||
label_open_work_packages: "open"
|
||||
label_open_work_packages_plural: "open"
|
||||
@@ -2451,11 +2458,12 @@ ckb-IR:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ ckb-IR:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1631,11 +1631,13 @@ cs:
|
||||
label_ldap_auth_source: "Připojení LDAP"
|
||||
label_ldap_auth_source_plural: "Připojení LDAP"
|
||||
label_authentication: "Ověření"
|
||||
label_available_project_work_package_categories: 'Dostupné kategorie pracovních balíčků'
|
||||
label_available_project_work_package_types: 'Dostupné kategorie pracovních balíčků'
|
||||
label_available_project_forums: 'Dostupná fóra'
|
||||
label_available_project_versions: 'Dostupné verze'
|
||||
label_available_project_repositories: 'Dostupné repozitáře'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Dostupná fóra"
|
||||
label_available_project_repositories: "Dostupné repozitáře"
|
||||
label_available_project_versions: "Dostupné verze"
|
||||
label_available_project_work_package_categories: "Dostupné kategorie pracovních balíčků"
|
||||
label_available_project_work_package_types: "Dostupné kategorie pracovních balíčků"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API dokumentace"
|
||||
label_backup: "Záloha"
|
||||
label_between: "mezi"
|
||||
@@ -1840,6 +1842,10 @@ cs:
|
||||
label_login: "Přihlásit se"
|
||||
label_custom_logo: "Vlastní logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Vlastní favicon"
|
||||
label_custom_touch_icon: "Vlastní ikona dotyku"
|
||||
label_logout: "Odhlásit se"
|
||||
@@ -1910,6 +1916,7 @@ cs:
|
||||
label_operator_none: "je prázdný"
|
||||
label_operator_equals_or: "je (OR)"
|
||||
label_operator_equals_all: "je (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Otevřít nabídku"
|
||||
label_open_work_packages: "otevřené"
|
||||
label_open_work_packages_plural: "otevřené"
|
||||
@@ -2496,11 +2503,12 @@ cs:
|
||||
query_fields:
|
||||
active_or_archived: "Aktivní nebo archivované"
|
||||
assigned_to_role: "Řešitelova role"
|
||||
member_of_group: "Řešitelova skupina"
|
||||
assignee_or_group: "Přiřazený nebo patřící skupině"
|
||||
subproject_id: "Včetně podprojektu"
|
||||
only_subproject_id: "Pouze podprojekt"
|
||||
member_of_group: "Řešitelova skupina"
|
||||
name_or_identifier: "Jméno nebo identifikátor"
|
||||
only_subproject_id: "Pouze podprojekt"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Včetně podprojektu"
|
||||
repositories:
|
||||
at_identifier: 'v %{identifier}'
|
||||
atom_revision_feed: 'Atom kanál pro revizi'
|
||||
@@ -2815,6 +2823,8 @@ cs:
|
||||
Doporučuje se bílé logo na průhledném pozadí. Pro nejlepší výsledky na displejích klasického i retina se ujistěte, že rozměry vašeho obrázku jsou 460px do 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1587,11 +1587,13 @@ da:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Godkendelse"
|
||||
label_available_project_work_package_categories: 'Tilgængelige arbejdspakkekategorier'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Tilgængelige versioner'
|
||||
label_available_project_repositories: 'Tilgængelige repositorier'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Tilgængelige repositorier"
|
||||
label_available_project_versions: "Tilgængelige versioner"
|
||||
label_available_project_work_package_categories: "Tilgængelige arbejdspakkekategorier"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API-dokumentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "mellem"
|
||||
@@ -1796,6 +1798,10 @@ da:
|
||||
label_login: "Log ind"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Log ud"
|
||||
@@ -1866,6 +1872,7 @@ da:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Åbn menuen"
|
||||
label_open_work_packages: "åbn"
|
||||
label_open_work_packages_plural: "åbn"
|
||||
@@ -2449,11 +2456,12 @@ da:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Tildeltes rolle"
|
||||
member_of_group: "Tildeltes gruppe"
|
||||
assignee_or_group: "Tildelte eller tilhørende gruppe"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Tildeltes gruppe"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'på %{identifier}'
|
||||
atom_revision_feed: 'Atom-revisionsfeed'
|
||||
@@ -2766,6 +2774,8 @@ da:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1584,11 +1584,13 @@ de:
|
||||
label_ldap_auth_source: "LDAP-Verbindung"
|
||||
label_ldap_auth_source_plural: "LDAP-Verbindungen"
|
||||
label_authentication: "Authentifizierung"
|
||||
label_available_project_work_package_categories: 'Verfügbare Arbeitspaket-Kategorien'
|
||||
label_available_project_work_package_types: 'Verfügbare Arbeitspaket-Typen'
|
||||
label_available_project_forums: 'Verfügbare Foren'
|
||||
label_available_project_versions: 'Verfügbare Versionen'
|
||||
label_available_project_repositories: 'Verfügbare Projektarchive'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Verfügbare Foren"
|
||||
label_available_project_repositories: "Verfügbare Projektarchive"
|
||||
label_available_project_versions: "Verfügbare Versionen"
|
||||
label_available_project_work_package_categories: "Verfügbare Arbeitspaket-Kategorien"
|
||||
label_available_project_work_package_types: "Verfügbare Arbeitspaket-Typen"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API-Dokumentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "zwischen"
|
||||
@@ -1793,6 +1795,10 @@ de:
|
||||
label_login: "Anmelden"
|
||||
label_custom_logo: "Benutzerdefiniertes Logo"
|
||||
label_custom_export_logo: "Selbstdefiniertes Logo für PDF-Export"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Benutzerdefiniertes Favicon"
|
||||
label_custom_touch_icon: "Benutzerdefiniertes Touch-Icon"
|
||||
label_logout: "Abmelden"
|
||||
@@ -1863,6 +1869,7 @@ de:
|
||||
label_operator_none: "ist leer"
|
||||
label_operator_equals_or: "ist (ODER)"
|
||||
label_operator_equals_all: "ist (UND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Menü öffnen"
|
||||
label_open_work_packages: "Offen"
|
||||
label_open_work_packages_plural: "offen"
|
||||
@@ -2101,8 +2108,8 @@ de:
|
||||
zero: "Keine Projekte"
|
||||
label_yesterday: "gestern"
|
||||
label_role_type: "Typ"
|
||||
label_member_role: "Project role"
|
||||
label_global_role: "Global role"
|
||||
label_member_role: "Projektrolle"
|
||||
label_global_role: "Globale Rolle"
|
||||
label_not_changeable: "(nicht veränderbar)"
|
||||
label_global: "Global"
|
||||
label_seeded_from_env_warning: Dieser Datensatz wurde durch eine Konfigurationsrichtlinie oder Umgebungsvariable erstellt. Er kann nicht über die Benutzeroberfläche bearbeitet werden.
|
||||
@@ -2330,7 +2337,7 @@ de:
|
||||
permission_add_work_package_notes: "Kommentare hinzufügen"
|
||||
permission_add_work_packages: "Arbeitspakete hinzufügen"
|
||||
permission_add_messages: "Forenbeiträge hinzufügen"
|
||||
permission_add_project: "Create projects"
|
||||
permission_add_project: "Projekte erstellen"
|
||||
permission_archive_project: "Projekt archivieren"
|
||||
permission_create_user: "Benutzer erstellen"
|
||||
permission_manage_user: "Benutzer bearbeiten"
|
||||
@@ -2446,11 +2453,12 @@ de:
|
||||
query_fields:
|
||||
active_or_archived: "Aktiv oder archiviert"
|
||||
assigned_to_role: "Rolle der zugewiesenen Person"
|
||||
member_of_group: "Gruppe der zugewiesenen Person"
|
||||
assignee_or_group: "Zugewiesen an Nutzer oder dessen Gruppe"
|
||||
subproject_id: "Einschließlich Unterprojekt"
|
||||
only_subproject_id: "Nur Unterprojekt"
|
||||
member_of_group: "Gruppe der zugewiesenen Person"
|
||||
name_or_identifier: "Name oder Kennung"
|
||||
only_subproject_id: "Nur Unterprojekt"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Einschließlich Unterprojekt"
|
||||
repositories:
|
||||
at_identifier: 'auf %{identifier}'
|
||||
atom_revision_feed: 'Revisionen als Atom Feed'
|
||||
@@ -2765,6 +2773,8 @@ de:
|
||||
Ein weißes Logo mit transparentem Hintergrund wird empfohlen. Für ein optimales Ergebnis für konventionelle und Retina-Displays sollte die Bildabmessungen 460 x 110 Pixel betragen.
|
||||
text_custom_export_logo_instructions: >
|
||||
Dies ist das Logo, das in Ihren PDF-Exporten erscheint. Es muss eine PNG- oder JPEG-Bilddatei sein. Ein schwarzes oder farbiges Logo auf transparentem oder weißem Hintergrund wird empfohlen.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
Dies ist das kleine Symbol, das in Ihrem Browser-Fenster/Tab neben dem Seitentitel angezeigt wird. Es muss ein quadratisches 32 x 32 Pixel großes PNG mit transparentem Hintergrund sein.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1585,11 +1585,13 @@ el:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Ταυτοποίηση"
|
||||
label_available_project_work_package_categories: 'Διαθέσιμες κατηγορίες πακέτων εργασίας'
|
||||
label_available_project_work_package_types: 'Διαθέσιμοι τύποι εργασιών'
|
||||
label_available_project_forums: 'Διαθέσιμα φόρουμ'
|
||||
label_available_project_versions: 'Διαθέσιμες εκδόσεις'
|
||||
label_available_project_repositories: 'Διαθέσιμα αποθετήρια'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Διαθέσιμα φόρουμ"
|
||||
label_available_project_repositories: "Διαθέσιμα αποθετήρια"
|
||||
label_available_project_versions: "Διαθέσιμες εκδόσεις"
|
||||
label_available_project_work_package_categories: "Διαθέσιμες κατηγορίες πακέτων εργασίας"
|
||||
label_available_project_work_package_types: "Διαθέσιμοι τύποι εργασιών"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "Τεκμηρίωση API"
|
||||
label_backup: "Αντίγραφο Ασφαλείας"
|
||||
label_between: "μεταξύ"
|
||||
@@ -1794,6 +1796,10 @@ el:
|
||||
label_login: "Σύνδεση"
|
||||
label_custom_logo: "Προσαρμοσμένο λογότυπο"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Προσαρμοσμένο favicon"
|
||||
label_custom_touch_icon: "Προσαρμοσμένο εικονίδιο αφής"
|
||||
label_logout: "Αποσύνδεση"
|
||||
@@ -1864,6 +1870,7 @@ el:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Άνοιγμα μενού"
|
||||
label_open_work_packages: "ανοιχτό"
|
||||
label_open_work_packages_plural: "ανοιχτό"
|
||||
@@ -2446,11 +2453,12 @@ el:
|
||||
query_fields:
|
||||
active_or_archived: "Ενεργό ή αρχειοθετημένο"
|
||||
assigned_to_role: "Ρόλος ανάθεσης"
|
||||
member_of_group: "Ομάδα ανάθεσης"
|
||||
assignee_or_group: "Ανάθεση σε ή ανήκει σε ομάδα"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Μόνο υποέργο"
|
||||
member_of_group: "Ομάδα ανάθεσης"
|
||||
name_or_identifier: "Όνομα ή αναγνωριστικό"
|
||||
only_subproject_id: "Μόνο υποέργο"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'στο %{identifier}'
|
||||
atom_revision_feed: 'Τροφοδοσία αναθεώρησης Atom'
|
||||
@@ -2765,6 +2773,8 @@ el:
|
||||
Προτείνεται ένα άσπρο λογότυπο με διαφανές φόντο. Για τα καλύτερα αποτελέσματα για συμβατικές και retina οθόνες, σιγουρευτείτε ότι οι διαστάσεις της εικόνας σας είναι 460px με 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ eo:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Aŭtentigo"
|
||||
label_available_project_work_package_categories: 'disponeblaj laborpakaĵaj kategorioj'
|
||||
label_available_project_work_package_types: 'Disponeblaj laborpakaĵaj tipoj'
|
||||
label_available_project_forums: 'Disponeblaj forumoj'
|
||||
label_available_project_versions: 'Disponeblaj versioj'
|
||||
label_available_project_repositories: 'Disponeblaj deponejoj'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Disponeblaj forumoj"
|
||||
label_available_project_repositories: "Disponeblaj deponejoj"
|
||||
label_available_project_versions: "Disponeblaj versioj"
|
||||
label_available_project_work_package_categories: "disponeblaj laborpakaĵaj kategorioj"
|
||||
label_available_project_work_package_types: "Disponeblaj laborpakaĵaj tipoj"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API dokumentado"
|
||||
label_backup: "Backup"
|
||||
label_between: "inter"
|
||||
@@ -1798,6 +1800,10 @@ eo:
|
||||
label_login: "Ensaluti"
|
||||
label_custom_logo: "Adaptita emblemo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Adaptita retpaĝsimbolo"
|
||||
label_custom_touch_icon: "Adaptita tuŝikono"
|
||||
label_logout: "Elsaluti"
|
||||
@@ -1868,6 +1874,7 @@ eo:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Malfermi menuon"
|
||||
label_open_work_packages: "malfermita"
|
||||
label_open_work_packages_plural: "malfermita"
|
||||
@@ -2451,11 +2458,12 @@ eo:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ eo:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1586,11 +1586,13 @@ es:
|
||||
label_ldap_auth_source: "Conexión LDAP"
|
||||
label_ldap_auth_source_plural: "Conexiones LDAP"
|
||||
label_authentication: "Autentificación"
|
||||
label_available_project_work_package_categories: 'Categorias de paquetes de trabjo disponibles'
|
||||
label_available_project_work_package_types: 'Tipos de paquete de trabajo disponibles'
|
||||
label_available_project_forums: 'Foros disponibles'
|
||||
label_available_project_versions: 'Versiones disponibles'
|
||||
label_available_project_repositories: 'Repositorios disponibles'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Foros disponibles"
|
||||
label_available_project_repositories: "Repositorios disponibles"
|
||||
label_available_project_versions: "Versiones disponibles"
|
||||
label_available_project_work_package_categories: "Categorias de paquetes de trabjo disponibles"
|
||||
label_available_project_work_package_types: "Tipos de paquete de trabajo disponibles"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "Documentación de la API"
|
||||
label_backup: "Copia de seguridad"
|
||||
label_between: "entre"
|
||||
@@ -1795,6 +1797,10 @@ es:
|
||||
label_login: "Ingresar"
|
||||
label_custom_logo: "Logotipo personalizado"
|
||||
label_custom_export_logo: "Logotipo de exportación personalizado"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Icono de página personalizado"
|
||||
label_custom_touch_icon: "Icono táctil personalizado"
|
||||
label_logout: "Cerrar sesión"
|
||||
@@ -1865,6 +1871,7 @@ es:
|
||||
label_operator_none: "está vacío"
|
||||
label_operator_equals_or: "es (OR)"
|
||||
label_operator_equals_all: "es (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Abrir menú"
|
||||
label_open_work_packages: "abierto"
|
||||
label_open_work_packages_plural: "abierto"
|
||||
@@ -2447,11 +2454,12 @@ es:
|
||||
query_fields:
|
||||
active_or_archived: "Activo o archivado"
|
||||
assigned_to_role: "Asignación de roles"
|
||||
member_of_group: "Asignación de grupo"
|
||||
assignee_or_group: "Grupo al que pertenece o al que está asignado"
|
||||
subproject_id: "Incluyendo subproyecto"
|
||||
only_subproject_id: "Sólo subproyecto"
|
||||
member_of_group: "Asignación de grupo"
|
||||
name_or_identifier: "Nombre o identificador"
|
||||
only_subproject_id: "Sólo subproyecto"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Incluyendo subproyecto"
|
||||
repositories:
|
||||
at_identifier: 'en %{identifier}'
|
||||
atom_revision_feed: 'Feed de revisión de Atom'
|
||||
@@ -2766,6 +2774,8 @@ es:
|
||||
Se recomienda usar un logotipo blanco sobre un fondo transparente. Para obtener los mejores resultados, tanto en pantallas convencionales como en las del tipo Retina, asegúrese de que las dimensiones de la imagen sean de 460 × 60 px.
|
||||
text_custom_export_logo_instructions: >
|
||||
Este es el logotipo que aparece en sus exportaciones PDF. Tiene que ser un archivo de imagen PNG o JPEG. Se recomienda un logotipo negro o de color sobre fondo transparente o blanco.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
Es el icono diminuto que aparece en la ventana o pestaña del navegador, junto al título de la página. Tiene que ser una imagen PNG cuadrada de 32 × 32 píxeles con un fondo transparente.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ et:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Autentimine"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1798,6 +1800,10 @@ et:
|
||||
label_login: "Logi sisse"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Logi välja"
|
||||
@@ -1868,6 +1874,7 @@ et:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Ava menüü"
|
||||
label_open_work_packages: "avatud"
|
||||
label_open_work_packages_plural: "avatud"
|
||||
@@ -2451,11 +2458,12 @@ et:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Omistatud rollile"
|
||||
member_of_group: "Omistatud rühmale"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Omistatud rühmale"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ et:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ eu:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Authentication"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1798,6 +1800,10 @@ eu:
|
||||
label_login: "Sign in"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Sign out"
|
||||
@@ -1868,6 +1874,7 @@ eu:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Open menu"
|
||||
label_open_work_packages: "open"
|
||||
label_open_work_packages_plural: "open"
|
||||
@@ -2451,11 +2458,12 @@ eu:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ eu:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ fa:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Authentication"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "پشتیبانگیری"
|
||||
label_between: "between"
|
||||
@@ -1798,6 +1800,10 @@ fa:
|
||||
label_login: "ورود"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Sign out"
|
||||
@@ -1868,6 +1874,7 @@ fa:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "باز کردن منو"
|
||||
label_open_work_packages: "open"
|
||||
label_open_work_packages_plural: "open"
|
||||
@@ -2451,11 +2458,12 @@ fa:
|
||||
query_fields:
|
||||
active_or_archived: "فعال و آرشیو"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "نام یا شناسه"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ fa:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ fi:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Kirjautuminen"
|
||||
label_available_project_work_package_categories: 'Olemassa olevat tehtäväluokat'
|
||||
label_available_project_work_package_types: 'Olemassa olevat tehtävätyypit'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Saatavana olevat versiot'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Saatavana olevat versiot"
|
||||
label_available_project_work_package_categories: "Olemassa olevat tehtäväluokat"
|
||||
label_available_project_work_package_types: "Olemassa olevat tehtävätyypit"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API-dokumentaatio"
|
||||
label_backup: "Backup"
|
||||
label_between: "välillä"
|
||||
@@ -1798,6 +1800,10 @@ fi:
|
||||
label_login: "Kirjaudu"
|
||||
label_custom_logo: "Oma logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Mukautettu kuvake"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Kirjaudu ulos"
|
||||
@@ -1868,6 +1874,7 @@ fi:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Avaa valikko"
|
||||
label_open_work_packages: "avoin"
|
||||
label_open_work_packages_plural: "avoin"
|
||||
@@ -2451,11 +2458,12 @@ fi:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Työn suorittajan rooli"
|
||||
member_of_group: "Työn suorittajan ryhmä"
|
||||
assignee_or_group: "Työn suorittaja tai kuuluu ryhmään"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Työn suorittajan ryhmä"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'klo %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2770,6 +2778,8 @@ fi:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ fil:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Pagpapatunay"
|
||||
label_available_project_work_package_categories: 'Ang mga kategorya ng magagamit na work package'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Ang magagamit na bersyon'
|
||||
label_available_project_repositories: 'Magagamit na mga respository'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Magagamit na mga respository"
|
||||
label_available_project_versions: "Ang magagamit na bersyon"
|
||||
label_available_project_work_package_categories: "Ang mga kategorya ng magagamit na work package"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API dokumentasyon"
|
||||
label_backup: "Backup"
|
||||
label_between: "sa pagitan ng"
|
||||
@@ -1798,6 +1800,10 @@ fil:
|
||||
label_login: "Mag-sign in"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Ang icon ng kustom pindutan"
|
||||
label_logout: "Mag-sign out"
|
||||
@@ -1868,6 +1874,7 @@ fil:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Buksan ang pagpipilian"
|
||||
label_open_work_packages: "buksan"
|
||||
label_open_work_packages_plural: "buksan"
|
||||
@@ -2451,11 +2458,12 @@ fil:
|
||||
query_fields:
|
||||
active_or_archived: "Aktibo o naka-archieve"
|
||||
assigned_to_role: "Naitalagang tungkulin"
|
||||
member_of_group: "Itinalagang grupo"
|
||||
assignee_or_group: "Nakatakda o pag-aari ng grupo"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Itinalagang grupo"
|
||||
name_or_identifier: "Pangalan o pagkakakilanlan"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'sa %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2768,6 +2776,8 @@ fil:
|
||||
Ang puting logo sa transparent background ay inirerekomend. Para sa pinakamahusay na result sa dalawang, conventional at mga displey na retina, siguraduhjn ang iyong dimensyon ng larawan ay 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1589,11 +1589,13 @@ fr:
|
||||
label_ldap_auth_source: "Connexion LDAP"
|
||||
label_ldap_auth_source_plural: "Connexions LDAP"
|
||||
label_authentication: "Authentification"
|
||||
label_available_project_work_package_categories: 'Catégories de lots de travaux disponibles'
|
||||
label_available_project_work_package_types: 'Types de paquet de travail disponible'
|
||||
label_available_project_forums: 'Forums disponibles'
|
||||
label_available_project_versions: 'Versions disponibles'
|
||||
label_available_project_repositories: 'Dépôts disponibles'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Forums disponibles"
|
||||
label_available_project_repositories: "Dépôts disponibles"
|
||||
label_available_project_versions: "Versions disponibles"
|
||||
label_available_project_work_package_categories: "Catégories de lots de travaux disponibles"
|
||||
label_available_project_work_package_types: "Types de paquet de travail disponible"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "Documentation de l'API"
|
||||
label_backup: "Sauvegarde"
|
||||
label_between: "entre"
|
||||
@@ -1798,6 +1800,10 @@ fr:
|
||||
label_login: "Connexion"
|
||||
label_custom_logo: "Logo personnalisé"
|
||||
label_custom_export_logo: "Logo d'exportation personnalisé"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Favicon personnalisé"
|
||||
label_custom_touch_icon: "Icône de contact personnalisé"
|
||||
label_logout: "Déconnexion"
|
||||
@@ -1868,6 +1874,7 @@ fr:
|
||||
label_operator_none: "est vide"
|
||||
label_operator_equals_or: "est (OU)"
|
||||
label_operator_equals_all: "est (ET)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Ouvrir le menu"
|
||||
label_open_work_packages: "ouverts"
|
||||
label_open_work_packages_plural: "ouverts"
|
||||
@@ -2451,11 +2458,12 @@ fr:
|
||||
query_fields:
|
||||
active_or_archived: "Actif ou archivé"
|
||||
assigned_to_role: "Rôle du Destinataire"
|
||||
member_of_group: "Groupe du Destinataire"
|
||||
assignee_or_group: "Cessionnaire ou groupe d’appartenance"
|
||||
subproject_id: "Inclure le sous-projet"
|
||||
only_subproject_id: "Seulement le sous-projet"
|
||||
member_of_group: "Groupe du Destinataire"
|
||||
name_or_identifier: "Nom ou identifiant"
|
||||
only_subproject_id: "Seulement le sous-projet"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Inclure le sous-projet"
|
||||
repositories:
|
||||
at_identifier: '%{identifier}'
|
||||
atom_revision_feed: 'Flux Atom des révisions'
|
||||
@@ -2770,6 +2778,8 @@ fr:
|
||||
Un logo blanc sur fond transparent est recommandé. Pour obtenir les meilleurs résultats sur les deux, affichage classique et retina, assurez-vous que les dimensions de votre image soient de 460px par 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
Il s'agit du logo qui apparaît dans vos exportations PDF. Il doit s'agir d'un fichier image PNG ou JPEG. Un logo noir ou coloré sur fond transparent ou blanc est recommandé.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
Il s'agit de la petite icône qui apparaît dans la fenêtre/onglet de votre navigateur à côté du titre de la page. Il doit s'agir d'une image PNG carrée de 32 pixels x 32 pixels avec un fond transparent.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1631,11 +1631,13 @@ he:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "אימות"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1840,6 +1842,10 @@ he:
|
||||
label_login: "לוג-אין"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "התנתק"
|
||||
@@ -1910,6 +1916,7 @@ he:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "פתח תפריט"
|
||||
label_open_work_packages: "פתוח"
|
||||
label_open_work_packages_plural: "פתוח"
|
||||
@@ -2497,11 +2504,12 @@ he:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2816,6 +2824,8 @@ he:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1587,11 +1587,13 @@ hi:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "प्रमाणीकरण"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Backup"
|
||||
label_between: "between"
|
||||
@@ -1796,6 +1798,10 @@ hi:
|
||||
label_login: "साइन इन करें"
|
||||
label_custom_logo: "Custom logo"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "विशेष या कस्टम favicon"
|
||||
label_custom_touch_icon: "कस्टम प्रतीक चिह्न"
|
||||
label_logout: "Sign out"
|
||||
@@ -1866,6 +1872,7 @@ hi:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "मेनू खोलें"
|
||||
label_open_work_packages: "खोलें"
|
||||
label_open_work_packages_plural: "खोलें"
|
||||
@@ -2449,11 +2456,12 @@ hi:
|
||||
query_fields:
|
||||
active_or_archived: "Active or archived"
|
||||
assigned_to_role: "Assignee's role"
|
||||
member_of_group: "Assignee's group"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Assignee's group"
|
||||
name_or_identifier: "Name or identifier"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2768,6 +2776,8 @@ hi:
|
||||
पारदर्शी पृष्ठभूमि पर एक सफेद लोगो की सिफारिश की है । दोनों, पारंपरिक और रेटिना प्रदर्शित करता है पर सबसे अच्छा परिणाम के लिए, सुनिश्चित करें कि आपकी छवि के आयामों 460px द्वारा 60px हैं ।
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1610,11 +1610,13 @@ hr:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Autentifikacija"
|
||||
label_available_project_work_package_categories: 'Dostupne kategorije radnih paketa'
|
||||
label_available_project_work_package_types: 'Available work package types'
|
||||
label_available_project_forums: 'Available forums'
|
||||
label_available_project_versions: 'Dostupne verzije'
|
||||
label_available_project_repositories: 'Dostupni repozitoriji'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Available forums"
|
||||
label_available_project_repositories: "Dostupni repozitoriji"
|
||||
label_available_project_versions: "Dostupne verzije"
|
||||
label_available_project_work_package_categories: "Dostupne kategorije radnih paketa"
|
||||
label_available_project_work_package_types: "Available work package types"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API dokumentacija"
|
||||
label_backup: "Backup"
|
||||
label_between: "između"
|
||||
@@ -1819,6 +1821,10 @@ hr:
|
||||
label_login: "Prijavi se"
|
||||
label_custom_logo: "Prilagođeni logotip"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Custom favicon"
|
||||
label_custom_touch_icon: "Custom touch icon"
|
||||
label_logout: "Odjavi se"
|
||||
@@ -1889,6 +1895,7 @@ hr:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Otvori izbornik"
|
||||
label_open_work_packages: "otvori"
|
||||
label_open_work_packages_plural: "otvori"
|
||||
@@ -2474,11 +2481,12 @@ hr:
|
||||
query_fields:
|
||||
active_or_archived: "Aktivno ili arhivirano"
|
||||
assigned_to_role: "Rola opunomoćenog korisnika"
|
||||
member_of_group: "Grupa opunomoćenog korisnika"
|
||||
assignee_or_group: "Assignee or belonging group"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "Only subproject"
|
||||
member_of_group: "Grupa opunomoćenog korisnika"
|
||||
name_or_identifier: "Ime ili identifikator"
|
||||
only_subproject_id: "Only subproject"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: 'pri %{identifier}'
|
||||
atom_revision_feed: 'Atom revizija sadržaja'
|
||||
@@ -2793,6 +2801,8 @@ hr:
|
||||
A white logo on transparent background is recommended. For best results on both, conventional and retina displays, make sure your image's dimensions are 460px by 60px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1586,11 +1586,13 @@ hu:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Hitelesítés"
|
||||
label_available_project_work_package_categories: 'Rendelkezésre álló munkacsomag kategóriák'
|
||||
label_available_project_work_package_types: 'Rendelkezésre álló munkacsomag típusok'
|
||||
label_available_project_forums: 'Elérhető fórumok'
|
||||
label_available_project_versions: 'Rendelkezésre álló verziók'
|
||||
label_available_project_repositories: 'Rendelkezésre álló tárolók'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Elérhető fórumok"
|
||||
label_available_project_repositories: "Rendelkezésre álló tárolók"
|
||||
label_available_project_versions: "Rendelkezésre álló verziók"
|
||||
label_available_project_work_package_categories: "Rendelkezésre álló munkacsomag kategóriák"
|
||||
label_available_project_work_package_types: "Rendelkezésre álló munkacsomag típusok"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API dokumentáció"
|
||||
label_backup: "Biztonsági mentés"
|
||||
label_between: "között"
|
||||
@@ -1795,6 +1797,10 @@ hu:
|
||||
label_login: "Bejelentkezés"
|
||||
label_custom_logo: "Egyedi logó"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Egyedi favicon"
|
||||
label_custom_touch_icon: "Egyedi \"touch-icon\""
|
||||
label_logout: "Kijelentkezés"
|
||||
@@ -1865,6 +1871,7 @@ hu:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Menü megnyitása"
|
||||
label_open_work_packages: "nyitott"
|
||||
label_open_work_packages_plural: "nyitott"
|
||||
@@ -2447,11 +2454,12 @@ hu:
|
||||
query_fields:
|
||||
active_or_archived: "Aktív vagy archivált"
|
||||
assigned_to_role: "Hozzárendelt szerepkör"
|
||||
member_of_group: "Hozzárendelt csoport"
|
||||
assignee_or_group: "Megbízott, vagy a hozzá tartozó csoport"
|
||||
subproject_id: "Beleértve az alprojektet"
|
||||
only_subproject_id: "Csak alprojekt"
|
||||
member_of_group: "Hozzárendelt csoport"
|
||||
name_or_identifier: "Név vagy azonosító"
|
||||
only_subproject_id: "Csak alprojekt"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Beleértve az alprojektet"
|
||||
repositories:
|
||||
at_identifier: '%{identifier} -n'
|
||||
atom_revision_feed: 'Atom felülvizsgálat jelzés'
|
||||
@@ -2766,6 +2774,8 @@ hu:
|
||||
Egy fehér logo átlátszó háttérrel ajánlott. A legjobb eredmény érdekében mint átlagos és retina kijelzőkön is biztosítsa, hogy a kép mérete 460px x 60px-es legyen.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1561,11 +1561,13 @@ id:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "Otentikasi"
|
||||
label_available_project_work_package_categories: 'Available work package categories'
|
||||
label_available_project_work_package_types: 'Jenis paket pekerjaan yang tersedia'
|
||||
label_available_project_forums: 'Forums tersedia'
|
||||
label_available_project_versions: 'Available versions'
|
||||
label_available_project_repositories: 'Available repositories'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Forums tersedia"
|
||||
label_available_project_repositories: "Available repositories"
|
||||
label_available_project_versions: "Available versions"
|
||||
label_available_project_work_package_categories: "Available work package categories"
|
||||
label_available_project_work_package_types: "Jenis paket pekerjaan yang tersedia"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "API documentation"
|
||||
label_backup: "Cadangan"
|
||||
label_between: "antara"
|
||||
@@ -1770,6 +1772,10 @@ id:
|
||||
label_login: "Login"
|
||||
label_custom_logo: "Logo khusus"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Favicon sesuai keinginan"
|
||||
label_custom_touch_icon: "Ikon sentuh sesuai keinginan"
|
||||
label_logout: "Logout"
|
||||
@@ -1840,6 +1846,7 @@ id:
|
||||
label_operator_none: "kosong"
|
||||
label_operator_equals_or: "adalah (ATAU)"
|
||||
label_operator_equals_all: "adalah (DAN)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Buka menu"
|
||||
label_open_work_packages: "buka"
|
||||
label_open_work_packages_plural: "buka"
|
||||
@@ -2419,11 +2426,12 @@ id:
|
||||
query_fields:
|
||||
active_or_archived: "Aktif atau arsip"
|
||||
assigned_to_role: "Ditugaskan untuk Role"
|
||||
member_of_group: "Ditugaskan untuk Grup"
|
||||
assignee_or_group: "Penerima atau anggota kelompok"
|
||||
subproject_id: "Termasuk subproyek"
|
||||
only_subproject_id: "Hanya subproyek"
|
||||
member_of_group: "Ditugaskan untuk Grup"
|
||||
name_or_identifier: "Nama atau pengenal"
|
||||
only_subproject_id: "Hanya subproyek"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Termasuk subproyek"
|
||||
repositories:
|
||||
at_identifier: 'at %{identifier}'
|
||||
atom_revision_feed: 'Atom revision feed'
|
||||
@@ -2736,6 +2744,8 @@ id:
|
||||
Logo putih dalam latar belakang transparan lebih disarankan. Untuk hasil terbaik pada keduanya, konvensional dan tampilan retina, pastikan dimensi gambar Anda adalah 460px kali 110px.
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1586,11 +1586,13 @@ it:
|
||||
label_ldap_auth_source: "Connessione LDAP"
|
||||
label_ldap_auth_source_plural: "Connessioni LDAP"
|
||||
label_authentication: "Autenticazione"
|
||||
label_available_project_work_package_categories: 'Categorie di macro-attività disponibili'
|
||||
label_available_project_work_package_types: 'Tipi di pacchetti di lavoro disponibili'
|
||||
label_available_project_forums: 'Forum disponibili'
|
||||
label_available_project_versions: 'Versioni disponibili'
|
||||
label_available_project_repositories: 'Archivi disponibili'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "Forum disponibili"
|
||||
label_available_project_repositories: "Archivi disponibili"
|
||||
label_available_project_versions: "Versioni disponibili"
|
||||
label_available_project_work_package_categories: "Categorie di macro-attività disponibili"
|
||||
label_available_project_work_package_types: "Tipi di pacchetti di lavoro disponibili"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "Documentazione API"
|
||||
label_backup: "Backup"
|
||||
label_between: "tra"
|
||||
@@ -1795,6 +1797,10 @@ it:
|
||||
label_login: "Accedi"
|
||||
label_custom_logo: "Logo personalizzato"
|
||||
label_custom_export_logo: "Esportazione personalizzata logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "Favicon personalizzata"
|
||||
label_custom_touch_icon: "Icona del touch personalizzata"
|
||||
label_logout: "Disconnetti"
|
||||
@@ -1865,6 +1871,7 @@ it:
|
||||
label_operator_none: "è vuoto"
|
||||
label_operator_equals_or: "è (OR)"
|
||||
label_operator_equals_all: "è (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "Apri menu"
|
||||
label_open_work_packages: "aperte"
|
||||
label_open_work_packages_plural: "aperte"
|
||||
@@ -2448,11 +2455,12 @@ it:
|
||||
query_fields:
|
||||
active_or_archived: "Attivo o archiviato"
|
||||
assigned_to_role: "Ruolo dell'incaricato"
|
||||
member_of_group: "Gruppo dell'incaricato"
|
||||
assignee_or_group: "Assegnatario o gruppo di appartenenza"
|
||||
subproject_id: "Sottoprogetto incluso"
|
||||
only_subproject_id: "Solo sottoprogetto"
|
||||
member_of_group: "Gruppo dell'incaricato"
|
||||
name_or_identifier: "Nome o identificativo"
|
||||
only_subproject_id: "Solo sottoprogetto"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Sottoprogetto incluso"
|
||||
repositories:
|
||||
at_identifier: 'presso %{identifier}'
|
||||
atom_revision_feed: 'Revisione di Atom feed'
|
||||
@@ -2767,6 +2775,8 @@ it:
|
||||
Un logo bianco su sfondo trasparente è preferibile. Per ottenere i migliori risultati, sia su schermi convenzionali che ad alta risoluzione, assicurati che le dimensioni dell'immagine siano di 460x60 pixels.
|
||||
text_custom_export_logo_instructions: >
|
||||
Questo è il logo che appare nelle tue esportazioni PDF. Deve essere un file immagine PNG o JPEG. Si consiglia un logo nero o colorato su sfondo trasparente o bianco.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
Questa è l'icona che appare nella scheda del tuo browser vicino al titolo della pagina. È necessario che questa sia un'immagine quadrata di dimensioni 32x32, in formato PNG e con sfondo trasparente.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -1564,11 +1564,13 @@ ja:
|
||||
label_ldap_auth_source: "LDAP connection"
|
||||
label_ldap_auth_source_plural: "LDAP connections"
|
||||
label_authentication: "認証"
|
||||
label_available_project_work_package_categories: '有効なワークパッケージのカテゴリ'
|
||||
label_available_project_work_package_types: '利用可能なワークパッケージのタイプ'
|
||||
label_available_project_forums: '利用可能なフォーラム'
|
||||
label_available_project_versions: '利用できるバージョン'
|
||||
label_available_project_repositories: '使用できるリポジトリ'
|
||||
label_available_global_roles: "Available global roles"
|
||||
label_available_project_forums: "利用可能なフォーラム"
|
||||
label_available_project_repositories: "使用できるリポジトリ"
|
||||
label_available_project_versions: "利用できるバージョン"
|
||||
label_available_project_work_package_categories: "有効なワークパッケージのカテゴリ"
|
||||
label_available_project_work_package_types: "利用可能なワークパッケージのタイプ"
|
||||
label_available_projects: "Available projects"
|
||||
label_api_documentation: "APIドキュメント"
|
||||
label_backup: "バックアップ"
|
||||
label_between: "次の範囲内"
|
||||
@@ -1773,6 +1775,10 @@ ja:
|
||||
label_login: "ログイン"
|
||||
label_custom_logo: "カスタムロゴ"
|
||||
label_custom_export_logo: "Custom export logo"
|
||||
label_custom_export_cover: "Custom export cover background"
|
||||
label_custom_export_cover_overlay: "Custom export cover background overlay"
|
||||
label_custom_export_cover_text_color: "Text color"
|
||||
label_custom_pdf_export_settings: "Custom PDF export settings"
|
||||
label_custom_favicon: "カスタムの favicon"
|
||||
label_custom_touch_icon: "カスタムのタッチアイコン"
|
||||
label_logout: "ログアウト"
|
||||
@@ -1843,6 +1849,7 @@ ja:
|
||||
label_operator_none: "is empty"
|
||||
label_operator_equals_or: "is (OR)"
|
||||
label_operator_equals_all: "is (AND)"
|
||||
label_operator_shared_with_user_any: "any"
|
||||
label_open_menu: "メニューを開く"
|
||||
label_open_work_packages: "未完了"
|
||||
label_open_work_packages_plural: "未完了"
|
||||
@@ -2424,11 +2431,12 @@ ja:
|
||||
query_fields:
|
||||
active_or_archived: "アクティブまたはアーカイブ"
|
||||
assigned_to_role: "担当者のロール"
|
||||
member_of_group: "担当者のグループ"
|
||||
assignee_or_group: "担当者または所属グループ"
|
||||
subproject_id: "Including subproject"
|
||||
only_subproject_id: "サブプロジェクトのみ"
|
||||
member_of_group: "担当者のグループ"
|
||||
name_or_identifier: "名前または ID"
|
||||
only_subproject_id: "サブプロジェクトのみ"
|
||||
shared_with_user: "Shared with user"
|
||||
subproject_id: "Including subproject"
|
||||
repositories:
|
||||
at_identifier: '%{identifier} で'
|
||||
atom_revision_feed: 'Atom リビジョンフィード'
|
||||
@@ -2743,6 +2751,8 @@ ja:
|
||||
透明な背景の白いロゴをお勧めします。 従来、および Retina ディスプレイの両方で最高の結果となるように、画像の寸法は、460px x 60px を確認してください。
|
||||
text_custom_export_logo_instructions: >
|
||||
This is the logo that appears in your PDF exports. It needs to be a PNG or JPEG image file. A black or colored logo on transparent or white background is recommended.
|
||||
text_custom_export_cover_instructions: >
|
||||
This is the image that appears in the background of a cover page in your PDF exports. It needs to be an about 800px width by 500px height sized PNG or JPEG image file.
|
||||
text_custom_favicon_instructions: >
|
||||
This is the tiny icon that appears in your browser window/tab next to the page's title. It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background.
|
||||
text_custom_touch_icon_instructions: >
|
||||
|
||||
@@ -981,6 +981,7 @@ af:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Opsomming"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -985,6 +985,7 @@ ar:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "مُلخّص"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "الانتقال السريع إلى تقسيم الجدول"
|
||||
label_pagination: "اضغط هنا لتخطي جدول كتب العمل والانتقال للحدود الفاصلة"
|
||||
@@ -1160,9 +1161,11 @@ ar:
|
||||
hour:
|
||||
one: "1 h"
|
||||
other: "%{count} h"
|
||||
zero: "0 h"
|
||||
day:
|
||||
one: "%{count} يوم"
|
||||
other: "%{count} يوم"
|
||||
zero: "0 days"
|
||||
zen_mode:
|
||||
button_activate: 'Activate zen mode'
|
||||
button_deactivate: 'Deactivate zen mode'
|
||||
|
||||
@@ -981,6 +981,7 @@ az:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Summary"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -983,6 +983,7 @@ be:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Summary"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ bg:
|
||||
recently_created: "Recently created"
|
||||
all_open: "Всичко отворено"
|
||||
summary: "Обобщение"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ ca:
|
||||
recently_created: "Creat recentment"
|
||||
all_open: "Tots els oberts"
|
||||
summary: "Resum"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Saltar a la paginació de la taula"
|
||||
label_pagination: "Fes clic aquí per saltar per sobre la taula de paquets de treball i anar a paginació"
|
||||
|
||||
@@ -981,6 +981,7 @@ ckb-IR:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Summary"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -983,6 +983,7 @@ cs:
|
||||
recently_created: "Nedávno vytvořené"
|
||||
all_open: "Všechny otevřené"
|
||||
summary: "Souhrn"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Přejít na stránku tabulky"
|
||||
label_pagination: "Kliknutím sem přeskočíte tabulku pracovních balíčků a přejděte na stránku"
|
||||
|
||||
@@ -980,6 +980,7 @@ da:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Opsummering"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -415,7 +415,7 @@ de:
|
||||
label_filename: "Datei"
|
||||
label_filesize: "Größe"
|
||||
label_general: "Allgemein"
|
||||
label_global_roles: "Global roles"
|
||||
label_global_roles: "Globale Rollen"
|
||||
label_greater_or_equal: ">="
|
||||
label_group: 'Gruppe'
|
||||
label_group_by: "Gruppieren nach"
|
||||
@@ -980,6 +980,7 @@ de:
|
||||
recently_created: "Kürzlich erstellt"
|
||||
all_open: "Alle offenen"
|
||||
summary: "Zusammenfassung"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Zur Seitennavigation springen"
|
||||
label_pagination: "Hier klicken, um über die Tabelle der Arbeitspakete hinweg zur Seitennavigation zu springen"
|
||||
|
||||
@@ -980,6 +980,7 @@ el:
|
||||
recently_created: "Δημιουργήθηκαν πρόσφατα"
|
||||
all_open: "Όλα τα ανοιχτά"
|
||||
summary: "Περίληψη"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Μεταπήδηση στον πίνακα σελιδοποίησης"
|
||||
label_pagination: "Πατήστε εδώ για να προσπεράσετε τον πίνακα πακέτων εργασίας και να πάτε στην σελιδοποίηση"
|
||||
|
||||
@@ -981,6 +981,7 @@ eo:
|
||||
recently_created: "Recently created"
|
||||
all_open: "Ĉio malfermita"
|
||||
summary: "Resumo"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ es:
|
||||
recently_created: "Creado recientemente"
|
||||
all_open: "Todo abierto"
|
||||
summary: "Resumen"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Saltar a la paginación de la tabla"
|
||||
label_pagination: "Haga clic aquí para omitir la tabla de paquetes de trabajo e ir a la paginación"
|
||||
|
||||
@@ -981,6 +981,7 @@ et:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Kokkuvõte"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ eu:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Summary"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ fa:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Summary"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ fi:
|
||||
recently_created: "Äskettäin luodut"
|
||||
all_open: "Avoimet tehtävät"
|
||||
summary: "Yhteenveto"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ fil:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Buod"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Dumiretso sa talaan ng pagination"
|
||||
label_pagination: "Pindutin dito upang lagpasan ang mga talaan ng work package at pumunta sa pagination."
|
||||
|
||||
@@ -981,6 +981,7 @@ fr:
|
||||
recently_created: "Créé récemment"
|
||||
all_open: "Tous les ouverts"
|
||||
summary: "Résumé"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Passer à la pagination du tableau"
|
||||
label_pagination: "Cliquez ici pour sauter le tableau des lots de travaux et accéder à la pagination"
|
||||
@@ -1220,7 +1221,7 @@ fr:
|
||||
role:
|
||||
label: 'Rôle dans %{project}'
|
||||
no_roles_found: 'Aucun rôle trouvé.'
|
||||
description: 'C''est le rôle que l''utilisateur recevra quand il rejoindra votre projet. Le rôle définit quelles actions il est autorisé à entreprendre et quelles informations il peut voir. <a href="https://docs.openproject.org/system-admin-guide/users-permissions/roles-permissions/#roles-and-permissions" target="_blank"> En savoir plus sur les rôles et les permissions. </a>'
|
||||
description: 'C''est le rôle que l''utilisateur recevra quand il rejoindra votre projet. Le rôle définit quelles actions il est autorisé à entreprendre et quelles informations il peut voir. <a href="https://www.openproject.org/docs/system-admin-guide/users-permissions/roles-permissions/#roles-and-permissions" target="_blank"> En savoir plus sur les rôles et les permissions. </a>'
|
||||
required: 'Veuillez sélectionner un rôle'
|
||||
next_button: 'Suivante'
|
||||
message:
|
||||
|
||||
@@ -983,6 +983,7 @@ he:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "פירוט"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ hi:
|
||||
recently_created: "हाल ही में बनाए गए"
|
||||
all_open: "सभी खुले"
|
||||
summary: "सारांश"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -982,6 +982,7 @@ hr:
|
||||
recently_created: "Recently created"
|
||||
all_open: "Svi otvoreni"
|
||||
summary: "Sažetak"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Skok na numeriranje stranica tabele"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ hu:
|
||||
recently_created: "Nemrégiben létrehozott"
|
||||
all_open: "Nyitottak"
|
||||
summary: "Összegzés"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Ugrás a táblázat lapszámozásához"
|
||||
label_pagination: "Kattints ide, hogy átugorj a munkacsomag táblán és a lapszámozáshoz menj"
|
||||
|
||||
@@ -980,6 +980,7 @@ id:
|
||||
recently_created: "Recently created"
|
||||
all_open: "Semua terbuka"
|
||||
summary: "Ringkasan"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ it:
|
||||
recently_created: "Creato di recente"
|
||||
all_open: "Apri tutto"
|
||||
summary: "Sommario"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Salta alla impaginazione tabella"
|
||||
label_pagination: "Clicca qui per saltare la tabella macro-attività e passare alla impaginazione"
|
||||
|
||||
@@ -981,6 +981,7 @@ ja:
|
||||
recently_created: "最近作成された"
|
||||
all_open: "未完了"
|
||||
summary: "サマリ"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "表のページ設定に移動する"
|
||||
label_pagination: "ここをクリックすると、作業項目表をスキップしてページ設定に移動します"
|
||||
|
||||
@@ -981,6 +981,7 @@ ka:
|
||||
recently_created: "Recently created"
|
||||
all_open: "ყველა ღია"
|
||||
summary: "შეჯამება"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -980,6 +980,7 @@ ko:
|
||||
recently_created: "최근에 만듦"
|
||||
all_open: "모두 열림"
|
||||
summary: "요약"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "테이블 페이지 매김으로 이동"
|
||||
label_pagination: "여기를 클릭하여 작업 패키지 테이블로 건너뛰고 페이지 매김으로 이동"
|
||||
|
||||
@@ -983,6 +983,7 @@ lt:
|
||||
recently_created: "Neseniai sukurti"
|
||||
all_open: "Visi atviri"
|
||||
summary: "Santrauka"
|
||||
shared_with_users: "Bendrinamas su naudotojais"
|
||||
jump_marks:
|
||||
pagination: "Pereiti į lentelės laužymą puslapiais"
|
||||
label_pagination: "Paspauskite čia, kad praleistumėte darbų paketų lentelės peržiūrą ir patektumėte į atvaizdavimą puslapiais"
|
||||
|
||||
@@ -982,6 +982,7 @@ lv:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Kopsavilkums"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
@@ -1151,9 +1152,11 @@ lv:
|
||||
hour:
|
||||
one: "1 h"
|
||||
other: "%{count} h"
|
||||
zero: "0 h"
|
||||
day:
|
||||
one: "%{count} dienas"
|
||||
other: "%{count} dienām"
|
||||
zero: "0 days"
|
||||
zen_mode:
|
||||
button_activate: 'Activate zen mode'
|
||||
button_deactivate: 'Deactivate zen mode'
|
||||
|
||||
@@ -981,6 +981,7 @@ mn:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Summary"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ ne:
|
||||
recently_created: "Recently created"
|
||||
all_open: "All open"
|
||||
summary: "Summary"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Jump to table pagination"
|
||||
label_pagination: "Click here to skip over the work packages table and go to pagination"
|
||||
|
||||
@@ -981,6 +981,7 @@ nl:
|
||||
recently_created: "Onlangs gecreëerd"
|
||||
all_open: "Alles open"
|
||||
summary: "Samenvatting"
|
||||
shared_with_users: "Shared with users"
|
||||
jump_marks:
|
||||
pagination: "Ga naar de tabelpaginering"
|
||||
label_pagination: "Klik hier om de tabel werk pakketten over te slaan en ga naar paginering"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user