katello 4.18.0 → 4.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/locale/bn/katello.js +1 -247
  3. data/app/assets/javascripts/katello/locale/bn_IN/katello.js +1 -247
  4. data/app/assets/javascripts/katello/locale/ca/katello.js +1 -247
  5. data/app/assets/javascripts/katello/locale/cs/katello.js +2 -248
  6. data/app/assets/javascripts/katello/locale/cs_CZ/katello.js +1 -247
  7. data/app/assets/javascripts/katello/locale/de/katello.js +1 -247
  8. data/app/assets/javascripts/katello/locale/de_AT/katello.js +1 -247
  9. data/app/assets/javascripts/katello/locale/de_DE/katello.js +1 -247
  10. data/app/assets/javascripts/katello/locale/el/katello.js +1 -247
  11. data/app/assets/javascripts/katello/locale/en/katello.js +2 -248
  12. data/app/assets/javascripts/katello/locale/en_GB/katello.js +1 -247
  13. data/app/assets/javascripts/katello/locale/en_US/katello.js +1 -247
  14. data/app/assets/javascripts/katello/locale/es/katello.js +1 -247
  15. data/app/assets/javascripts/katello/locale/et_EE/katello.js +1 -247
  16. data/app/assets/javascripts/katello/locale/fr/katello.js +83 -329
  17. data/app/assets/javascripts/katello/locale/gl/katello.js +1 -247
  18. data/app/assets/javascripts/katello/locale/gu/katello.js +1 -247
  19. data/app/assets/javascripts/katello/locale/he_IL/katello.js +1 -247
  20. data/app/assets/javascripts/katello/locale/hi/katello.js +1 -247
  21. data/app/assets/javascripts/katello/locale/id/katello.js +1 -247
  22. data/app/assets/javascripts/katello/locale/it/katello.js +1 -247
  23. data/app/assets/javascripts/katello/locale/ja/katello.js +87 -333
  24. data/app/assets/javascripts/katello/locale/ka/katello.js +1 -247
  25. data/app/assets/javascripts/katello/locale/kn/katello.js +1 -247
  26. data/app/assets/javascripts/katello/locale/ko/katello.js +80 -326
  27. data/app/assets/javascripts/katello/locale/ml_IN/katello.js +1 -247
  28. data/app/assets/javascripts/katello/locale/mr/katello.js +1 -247
  29. data/app/assets/javascripts/katello/locale/nl_NL/katello.js +1 -247
  30. data/app/assets/javascripts/katello/locale/or/katello.js +1 -247
  31. data/app/assets/javascripts/katello/locale/pa/katello.js +1 -247
  32. data/app/assets/javascripts/katello/locale/pl/katello.js +1 -247
  33. data/app/assets/javascripts/katello/locale/pl_PL/katello.js +1 -247
  34. data/app/assets/javascripts/katello/locale/pt/katello.js +1 -247
  35. data/app/assets/javascripts/katello/locale/pt_BR/katello.js +1 -247
  36. data/app/assets/javascripts/katello/locale/ro/katello.js +1 -247
  37. data/app/assets/javascripts/katello/locale/ro_RO/katello.js +1 -247
  38. data/app/assets/javascripts/katello/locale/ru/katello.js +1 -247
  39. data/app/assets/javascripts/katello/locale/sl/katello.js +1 -247
  40. data/app/assets/javascripts/katello/locale/sv_SE/katello.js +1 -247
  41. data/app/assets/javascripts/katello/locale/ta/katello.js +1 -247
  42. data/app/assets/javascripts/katello/locale/ta_IN/katello.js +1 -247
  43. data/app/assets/javascripts/katello/locale/te/katello.js +1 -247
  44. data/app/assets/javascripts/katello/locale/tr/katello.js +1 -247
  45. data/app/assets/javascripts/katello/locale/vi/katello.js +1 -247
  46. data/app/assets/javascripts/katello/locale/vi_VN/katello.js +1 -247
  47. data/app/assets/javascripts/katello/locale/zh/katello.js +1 -247
  48. data/app/assets/javascripts/katello/locale/zh_CN/katello.js +80 -326
  49. data/app/assets/javascripts/katello/locale/zh_TW/katello.js +1 -247
  50. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +5 -1
  51. data/app/controllers/katello/api/v2/content_export_incrementals_controller.rb +56 -34
  52. data/app/controllers/katello/api/v2/errata_controller.rb +4 -4
  53. data/app/lib/actions/katello/content_view/publish.rb +7 -7
  54. data/app/models/katello/deb.rb +0 -2
  55. data/app/services/katello/product_content_finder.rb +11 -3
  56. data/app/services/katello/pulp3/content_view_version/export.rb +25 -10
  57. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +6 -1
  58. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +5 -2
  59. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +5 -2
  60. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +5 -2
  61. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/translations.js +4 -4
  62. data/lib/katello/version.rb +1 -1
  63. data/locale/bn/LC_MESSAGES/katello.mo +0 -0
  64. data/locale/bn/katello.po +1 -247
  65. data/locale/bn_IN/LC_MESSAGES/katello.mo +0 -0
  66. data/locale/bn_IN/katello.po +1 -247
  67. data/locale/ca/LC_MESSAGES/katello.mo +0 -0
  68. data/locale/ca/katello.po +1 -247
  69. data/locale/cs/LC_MESSAGES/katello.mo +0 -0
  70. data/locale/cs/katello.po +3 -248
  71. data/locale/cs_CZ/LC_MESSAGES/katello.mo +0 -0
  72. data/locale/cs_CZ/katello.po +1 -247
  73. data/locale/de/LC_MESSAGES/katello.mo +0 -0
  74. data/locale/de/katello.po +1 -247
  75. data/locale/de_AT/LC_MESSAGES/katello.mo +0 -0
  76. data/locale/de_AT/katello.po +1 -247
  77. data/locale/de_DE/LC_MESSAGES/katello.mo +0 -0
  78. data/locale/de_DE/katello.po +1 -247
  79. data/locale/el/LC_MESSAGES/katello.mo +0 -0
  80. data/locale/el/katello.po +1 -247
  81. data/locale/en/LC_MESSAGES/katello.mo +0 -0
  82. data/locale/en/katello.po +3 -248
  83. data/locale/en_GB/LC_MESSAGES/katello.mo +0 -0
  84. data/locale/en_GB/katello.po +1 -247
  85. data/locale/en_US/LC_MESSAGES/katello.mo +0 -0
  86. data/locale/en_US/katello.po +1 -247
  87. data/locale/es/LC_MESSAGES/katello.mo +0 -0
  88. data/locale/es/katello.po +1 -247
  89. data/locale/et_EE/LC_MESSAGES/katello.mo +0 -0
  90. data/locale/et_EE/katello.po +1 -247
  91. data/locale/fr/LC_MESSAGES/katello.mo +0 -0
  92. data/locale/fr/katello.po +84 -329
  93. data/locale/gl/LC_MESSAGES/katello.mo +0 -0
  94. data/locale/gl/katello.po +1 -247
  95. data/locale/gu/LC_MESSAGES/katello.mo +0 -0
  96. data/locale/gu/katello.po +1 -247
  97. data/locale/he_IL/LC_MESSAGES/katello.mo +0 -0
  98. data/locale/he_IL/katello.po +1 -247
  99. data/locale/hi/LC_MESSAGES/katello.mo +0 -0
  100. data/locale/hi/katello.po +1 -247
  101. data/locale/id/LC_MESSAGES/katello.mo +0 -0
  102. data/locale/id/katello.po +1 -247
  103. data/locale/it/LC_MESSAGES/katello.mo +0 -0
  104. data/locale/it/katello.po +1 -247
  105. data/locale/ja/LC_MESSAGES/katello.mo +0 -0
  106. data/locale/ja/katello.po +88 -333
  107. data/locale/ka/LC_MESSAGES/katello.mo +0 -0
  108. data/locale/ka/katello.po +1 -247
  109. data/locale/katello.pot +23 -407
  110. data/locale/kn/LC_MESSAGES/katello.mo +0 -0
  111. data/locale/kn/katello.po +1 -247
  112. data/locale/ko/LC_MESSAGES/katello.mo +0 -0
  113. data/locale/ko/katello.po +81 -326
  114. data/locale/ml_IN/LC_MESSAGES/katello.mo +0 -0
  115. data/locale/ml_IN/katello.po +1 -247
  116. data/locale/mr/LC_MESSAGES/katello.mo +0 -0
  117. data/locale/mr/katello.po +1 -247
  118. data/locale/nl_NL/LC_MESSAGES/katello.mo +0 -0
  119. data/locale/nl_NL/katello.po +1 -247
  120. data/locale/or/LC_MESSAGES/katello.mo +0 -0
  121. data/locale/or/katello.po +1 -247
  122. data/locale/pa/LC_MESSAGES/katello.mo +0 -0
  123. data/locale/pa/katello.po +1 -247
  124. data/locale/pl/LC_MESSAGES/katello.mo +0 -0
  125. data/locale/pl/katello.po +1 -247
  126. data/locale/pl_PL/LC_MESSAGES/katello.mo +0 -0
  127. data/locale/pl_PL/katello.po +1 -247
  128. data/locale/pt/LC_MESSAGES/katello.mo +0 -0
  129. data/locale/pt/katello.po +1 -247
  130. data/locale/pt_BR/LC_MESSAGES/katello.mo +0 -0
  131. data/locale/pt_BR/katello.po +1 -247
  132. data/locale/ro/LC_MESSAGES/katello.mo +0 -0
  133. data/locale/ro/katello.po +1 -247
  134. data/locale/ro_RO/LC_MESSAGES/katello.mo +0 -0
  135. data/locale/ro_RO/katello.po +1 -247
  136. data/locale/ru/LC_MESSAGES/katello.mo +0 -0
  137. data/locale/ru/katello.po +1 -247
  138. data/locale/sl/LC_MESSAGES/katello.mo +0 -0
  139. data/locale/sl/katello.po +1 -247
  140. data/locale/sv_SE/LC_MESSAGES/katello.mo +0 -0
  141. data/locale/sv_SE/katello.po +1 -247
  142. data/locale/ta/LC_MESSAGES/katello.mo +0 -0
  143. data/locale/ta/katello.po +1 -247
  144. data/locale/ta_IN/LC_MESSAGES/katello.mo +0 -0
  145. data/locale/ta_IN/katello.po +1 -247
  146. data/locale/te/LC_MESSAGES/katello.mo +0 -0
  147. data/locale/te/katello.po +1 -247
  148. data/locale/tr/LC_MESSAGES/katello.mo +0 -0
  149. data/locale/tr/katello.po +1 -247
  150. data/locale/vi/LC_MESSAGES/katello.mo +0 -0
  151. data/locale/vi/katello.po +1 -247
  152. data/locale/vi_VN/LC_MESSAGES/katello.mo +0 -0
  153. data/locale/vi_VN/katello.po +1 -247
  154. data/locale/zh/LC_MESSAGES/katello.mo +0 -0
  155. data/locale/zh/katello.po +1 -247
  156. data/locale/zh_CN/LC_MESSAGES/katello.mo +0 -0
  157. data/locale/zh_CN/katello.po +81 -326
  158. data/locale/zh_TW/LC_MESSAGES/katello.mo +0 -0
  159. data/locale/zh_TW/katello.po +1 -247
  160. metadata +2 -2
@@ -43,52 +43,74 @@ module Katello
43
43
 
44
44
  private
45
45
 
46
- def find_export_view_helper(name_importable, name_syncable, organization, generated_for_importable, generated_for_syncable)
46
+ def find_library_export_view
47
47
  if params[:from_history_id].present?
48
48
  find_incremental_history_from_id
49
49
  @view = @history&.content_view_version&.content_view
50
50
  else
51
- importable_result = nil
52
- syncable_result = nil
53
- unless params[:format].present? && params[:format] == ::Katello::Pulp3::ContentViewVersion::Export::SYNCABLE
54
- importable_result = determine_view_from_name(name_importable,
55
- organization,
56
- generated_for_importable)
51
+ # Determine format for finding existing view
52
+ format = params[:format] || ::Katello::Pulp3::ContentViewVersion::Export::UNDEFINED
53
+
54
+ # Try to find existing views based on format
55
+ views = []
56
+ if format != ::Katello::Pulp3::ContentViewVersion::Export::SYNCABLE
57
+ importable_view = ::Katello::Pulp3::ContentViewVersion::Export.find_export_view(
58
+ destination_server: params[:destination_server],
59
+ organization: @organization,
60
+ name: ::Katello::ContentView::EXPORT_LIBRARY,
61
+ generated_for: :library_export
62
+ )
63
+ views << importable_view if importable_view
57
64
  end
58
- unless params[:format].present? && params[:format] == ::Katello::Pulp3::ContentViewVersion::Export::IMPORTABLE
59
- syncable_result = determine_view_from_name(name_syncable,
60
- organization,
61
- generated_for_syncable)
65
+
66
+ if format != ::Katello::Pulp3::ContentViewVersion::Export::IMPORTABLE
67
+ syncable_view = ::Katello::Pulp3::ContentViewVersion::Export.find_export_view(
68
+ destination_server: params[:destination_server],
69
+ organization: @organization,
70
+ name: "#{::Katello::ContentView::EXPORT_LIBRARY}-SYNCABLE",
71
+ generated_for: :library_export_syncable
72
+ )
73
+ views << syncable_view if syncable_view
62
74
  end
63
- @view = [importable_result, syncable_result].compact.max_by(&:updated_at)
75
+
76
+ @view = views.compact.max_by(&:updated_at)
64
77
  end
65
78
  check_for_blank_view
66
79
  end
67
80
 
68
- def find_library_export_view
69
- find_export_view_helper(
70
- ::Katello::ContentView::EXPORT_LIBRARY,
71
- "#{::Katello::ContentView::EXPORT_LIBRARY}-SYNCABLE",
72
- @organization,
73
- :library_export,
74
- :library_export_syncable
75
- )
76
- end
77
-
78
81
  def find_repository_export_view
79
- find_export_view_helper(
80
- "Export-#{@repository.label}-#{@repository.library_instance_or_self.id}",
81
- "Export-SYNCABLE-#{@repository.label}-#{@repository.library_instance_or_self.id}",
82
- @repository.organization,
83
- :repository_export,
84
- :repository_export_syncable
85
- )
86
- end
82
+ if params[:from_history_id].present?
83
+ find_incremental_history_from_id
84
+ @view = @history&.content_view_version&.content_view
85
+ else
86
+ # Determine format for finding existing view
87
+ format = params[:format] || ::Katello::Pulp3::ContentViewVersion::Export::UNDEFINED
88
+
89
+ # Try to find existing views based on format
90
+ views = []
91
+ if format != ::Katello::Pulp3::ContentViewVersion::Export::SYNCABLE
92
+ importable_view = ::Katello::Pulp3::ContentViewVersion::Export.find_export_view(
93
+ destination_server: nil,
94
+ organization: @repository.organization,
95
+ name: "Export-#{@repository.label}-#{@repository.library_instance_or_self.id}",
96
+ generated_for: :repository_export
97
+ )
98
+ views << importable_view if importable_view
99
+ end
87
100
 
88
- def determine_view_from_name(name, organization, generated_for)
89
- ::Katello::ContentView.where(name: name,
90
- organization: organization,
91
- generated_for: generated_for).first
101
+ if format != ::Katello::Pulp3::ContentViewVersion::Export::IMPORTABLE
102
+ syncable_view = ::Katello::Pulp3::ContentViewVersion::Export.find_export_view(
103
+ destination_server: nil,
104
+ organization: @repository.organization,
105
+ name: "Export-SYNCABLE-#{@repository.label}-#{@repository.library_instance_or_self.id}",
106
+ generated_for: :repository_export_syncable
107
+ )
108
+ views << syncable_view if syncable_view
109
+ end
110
+
111
+ @view = views.compact.max_by(&:updated_at)
112
+ end
113
+ check_for_blank_view
92
114
  end
93
115
 
94
116
  def check_for_blank_view
@@ -55,8 +55,8 @@ module Katello
55
55
  collection = collection.applicable_to_hosts(hosts)
56
56
  end
57
57
  end
58
- date_type = params[:date_type].present? ? params[:date_type] : ContentViewErratumFilterRule::UPDATED
59
- unless ContentViewErratumFilterRule::DATE_TYPES.include?(date_type)
58
+ @date_type = params[:date_type].present? ? params[:date_type] : ContentViewErratumFilterRule::UPDATED
59
+ unless ContentViewErratumFilterRule::DATE_TYPES.include?(@date_type)
60
60
  msg = _("Invalid params provided - date_type must be one of %s" % ContentViewErratumFilterRule::DATE_TYPES.join(","))
61
61
  fail HttpErrors::UnprocessableEntity, msg
62
62
  end
@@ -65,8 +65,8 @@ module Katello
65
65
  end
66
66
 
67
67
  def custom_index_relation_handle_type_and_time(collection)
68
- collection = collection.where("#{date_type} >= ?", params[:start_date]) if params[:start_date]
69
- collection = collection.where("#{date_type} <= ?", params[:end_date]) if params[:end_date]
68
+ collection = collection.where("#{@date_type} >= ?", params[:start_date]) if params[:start_date]
69
+ collection = collection.where("#{@date_type} <= ?", params[:end_date]) if params[:end_date]
70
70
  if params[:types]
71
71
  include_other = params[:types]&.include?('other')
72
72
  params[:types]&.delete('other')
@@ -59,13 +59,6 @@ module Actions
59
59
  if options[:importing]
60
60
  handle_importing_content(version, options[:path], options[:metadata])
61
61
  elsif options[:syncable]
62
- if separated_repo_map[:pulp3_deb_multicopy].keys.flatten.present?
63
- plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_deb_multicopy], version)
64
- end
65
- if separated_repo_map[:pulp3_yum_multicopy].keys.flatten.present?
66
- plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_yum_multicopy], version)
67
- end
68
-
69
62
  # Create import history for syncable imports so they display under hammer's content-import list command.
70
63
  if options[:path] && options[:metadata]
71
64
  plan_action(
@@ -76,6 +69,13 @@ module Actions
76
69
  content_view_name: version.content_view.name
77
70
  )
78
71
  end
72
+ else
73
+ if separated_repo_map[:pulp3_deb_multicopy].keys.flatten.present?
74
+ plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_deb_multicopy], version)
75
+ end
76
+ if separated_repo_map[:pulp3_yum_multicopy].keys.flatten.present?
77
+ plan_action(::Actions::Katello::Repository::MultiCloneToVersion, separated_repo_map[:pulp3_yum_multicopy], version)
78
+ end
79
79
  end
80
80
 
81
81
  concurrence do
@@ -4,8 +4,6 @@ module Katello
4
4
 
5
5
  CONTENT_TYPE = 'deb'.freeze
6
6
 
7
- has_many :repository_debs, :class_name => "Katello::RepositoryDeb", :dependent => :destroy, :inverse_of => :deb
8
- has_many :repositories, :through => :repository_debs, :class_name => "Katello::Repository"
9
7
  has_many :content_facet_applicable_debs, :class_name => "Katello::ContentFacetApplicableDeb",
10
8
  :dependent => :destroy, :inverse_of => :deb
11
9
  has_many :content_facets, :through => :content_facet_applicable_debs, :class_name => "Katello::Host::ContentFacet"
@@ -26,9 +26,17 @@ module Katello
26
26
  structured_apt_roots = roots.where(:content_id => nil)
27
27
  if structured_apt_roots.any?
28
28
  deb_repos_query = Katello::Repository.where(root: structured_apt_roots)
29
- environment = consumable.respond_to?(:environment) ? consumable.environment : consumable.content_view_environments.select(:environment_id).map(&:environment_id)
30
- deb_repos = match_environment ? deb_repos_query.where(content_view_version: versions, environment: environment) : deb_repos_query.where(:library_instance_id => nil)
31
- content_ids += deb_repos.pluck(:content_id)
29
+ deb_repos_library = Set.new
30
+ deb_repos_batch = []
31
+ if match_environment
32
+ consumable.content_view_environments.each do |cve|
33
+ deb_repos_batch = deb_repos_query.where("content_view_version_id = ? AND environment_id = ?", cve.content_view_version_id, cve.environment_id).where.not(library_instance_id: deb_repos_library.to_a)
34
+ deb_repos_library.merge(deb_repos_batch.pluck(:library_instance_id))
35
+ content_ids += deb_repos_batch.pluck(:content_id)
36
+ end
37
+ else
38
+ content_ids += deb_repos_query.where(:library_instance_id => nil).pluck(:content_id)
39
+ end
32
40
  end
33
41
 
34
42
  consumable.organization.enabled_product_content_for(content_ids)
@@ -133,12 +133,27 @@ module Katello
133
133
  MetadataGenerator.new(export_service: self).generate!
134
134
  end
135
135
 
136
- def self.find_generated_export_view(destination_server:, organization:, name:, generated_for:, create_by_default: false)
137
- name += "-#{destination_server}" unless destination_server.blank?
138
- select_method = create_by_default ? :first_or_create : :first
139
- ::Katello::ContentView.where(name: name,
140
- organization: organization,
141
- generated_for: generated_for).send(select_method)
136
+ def self.find_export_view(name:, organization:, generated_for:, destination_server: nil)
137
+ full_name = destination_server.blank? ? name : "#{name}-#{destination_server}"
138
+
139
+ ::Katello::ContentView.where(
140
+ name: full_name,
141
+ organization: organization,
142
+ generated_for: generated_for
143
+ ).first
144
+ end
145
+
146
+ # Find or create export view
147
+ def self.find_or_create_export_view(name:, organization:, generated_for:, destination_server: nil)
148
+ find_export_view(name: name, organization: organization, generated_for: generated_for, destination_server: destination_server) ||
149
+ begin
150
+ full_name = destination_server.blank? ? name : "#{name}-#{destination_server}"
151
+ ::Katello::ContentView.create!(
152
+ name: full_name,
153
+ organization: organization,
154
+ generated_for: generated_for
155
+ )
156
+ end
142
157
  end
143
158
 
144
159
  def format
@@ -151,13 +166,13 @@ module Katello
151
166
  when UNDEFINED
152
167
  fail ::Katello::Errors::InvalidExportFormat, _("Export format must be specified for library exports.")
153
168
  when IMPORTABLE
154
- return find_generated_export_view(create_by_default: true,
169
+ return find_or_create_export_view(
155
170
  destination_server: destination_server,
156
171
  organization: organization,
157
172
  name: ::Katello::ContentView::EXPORT_LIBRARY,
158
173
  generated_for: :library_export)
159
174
  when SYNCABLE
160
- return find_generated_export_view(create_by_default: true,
175
+ return find_or_create_export_view(
161
176
  destination_server: destination_server,
162
177
  organization: organization,
163
178
  name: "#{::Katello::ContentView::EXPORT_LIBRARY}-SYNCABLE",
@@ -172,10 +187,10 @@ module Katello
172
187
  when UNDEFINED
173
188
  fail ::Katello::Errors::InvalidExportFormat, _("Export format must be specified for non-incremental repository exports.")
174
189
  when IMPORTABLE
175
- return find_generated_export_view(create_by_default: true, destination_server: nil, organization: repository.organization,
190
+ return find_or_create_export_view(destination_server: nil, organization: repository.organization,
176
191
  name: "Export-#{repository.label}-#{repository.library_instance_or_self.id}", generated_for: :repository_export)
177
192
  when SYNCABLE
178
- return find_generated_export_view(create_by_default: true, destination_server: nil, organization: repository.organization,
193
+ return find_or_create_export_view(destination_server: nil, organization: repository.organization,
179
194
  name: "Export-SYNCABLE-#{repository.label}-#{repository.library_instance_or_self.id}", generated_for: :repository_export_syncable)
180
195
  else
181
196
  fail ::Katello::Errors::InvalidExportFormat, _("Unknown repository export format '%s'.") % format
@@ -10,11 +10,12 @@
10
10
  # Baptiste Agasse <baptiste.agasse@gmail.com>, 2023
11
11
  # Bryan Kearney <bryan.kearney@gmail.com>, 2025
12
12
  # Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025
13
+ # Ondřej Gajdušek, 2025
13
14
  #
14
15
  msgid ""
15
16
  msgstr ""
16
17
  "Project-Id-Version: \n"
17
- "Last-Translator: Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025\n"
18
+ "Last-Translator: Ondřej Gajdušek, 2025\n"
18
19
  "Language-Team: French (https://app.transifex.com/foreman/teams/114/fr/)\n"
19
20
  "Content-Type: text/plain; charset=UTF-8\n"
20
21
  "Content-Transfer-Encoding: 8bit\n"
@@ -331,6 +332,8 @@ msgid ""
331
332
  "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
332
333
  " Host' | translate}} </span>"
333
334
  msgstr ""
335
+ "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
336
+ " Host' | translate}} </span>"
334
337
 
335
338
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
336
339
  msgid "1 Content Host"
@@ -3604,6 +3607,8 @@ msgid ""
3604
3607
  "Please select a lifecycle environment. Lifecycle environment and content "
3605
3608
  "view must be provided together."
3606
3609
  msgstr ""
3610
+ "Veuillez sélectionner un environnement de cycle de vie. L'environnement de "
3611
+ "cycle de vie et la vue de contenu doivent être fournis ensemble."
3607
3612
 
3608
3613
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html
3609
3614
  msgid "Please select an environment."
@@ -4,11 +4,12 @@
4
4
  # Amit Upadhye <aupadhye@redhat.com>, 2023
5
5
  # Bryan Kearney <bryan.kearney@gmail.com>, 2023
6
6
  # Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025
7
+ # Ondřej Gajdušek, 2025
7
8
  #
8
9
  msgid ""
9
10
  msgstr ""
10
11
  "Project-Id-Version: \n"
11
- "Last-Translator: Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025\n"
12
+ "Last-Translator: Ondřej Gajdušek, 2025\n"
12
13
  "Language-Team: Japanese (https://app.transifex.com/foreman/teams/114/ja/)\n"
13
14
  "Content-Type: text/plain; charset=UTF-8\n"
14
15
  "Content-Transfer-Encoding: 8bit\n"
@@ -314,6 +315,8 @@ msgid ""
314
315
  "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
315
316
  " Host' | translate}} </span>"
316
317
  msgstr ""
318
+ "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
319
+ " Host' | translate}} </span>"
317
320
 
318
321
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
319
322
  msgid "1 Content Host"
@@ -3367,7 +3370,7 @@ msgstr "コンテンツビューが選択されていることを確認してく
3367
3370
  msgid ""
3368
3371
  "Please select a lifecycle environment. Lifecycle environment and content "
3369
3372
  "view must be provided together."
3370
- msgstr ""
3373
+ msgstr "ライフサイクル環境を選択してください。ライフサイクル環境とコンテンツビューは一緒に提供する必要があります。"
3371
3374
 
3372
3375
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html
3373
3376
  msgid "Please select an environment."
@@ -4,11 +4,12 @@
4
4
  # 0868a4d1af5275b3f70b0a6dac4c99a4, 2023
5
5
  # Bryan Kearney <bryan.kearney@gmail.com>, 2023
6
6
  # Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025
7
+ # Ondřej Gajdušek, 2025
7
8
  #
8
9
  msgid ""
9
10
  msgstr ""
10
11
  "Project-Id-Version: \n"
11
- "Last-Translator: Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025\n"
12
+ "Last-Translator: Ondřej Gajdušek, 2025\n"
12
13
  "Language-Team: Korean (https://app.transifex.com/foreman/teams/114/ko/)\n"
13
14
  "Content-Type: text/plain; charset=UTF-8\n"
14
15
  "Content-Transfer-Encoding: 8bit\n"
@@ -310,6 +311,8 @@ msgid ""
310
311
  "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
311
312
  " Host' | translate}} </span>"
312
313
  msgstr ""
314
+ "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
315
+ " Host' | translate}} </span>"
313
316
 
314
317
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
315
318
  msgid "1 Content Host"
@@ -3360,7 +3363,7 @@ msgstr "컨텐츠 보기가 선택되어 있는지 확인하십시오."
3360
3363
  msgid ""
3361
3364
  "Please select a lifecycle environment. Lifecycle environment and content "
3362
3365
  "view must be provided together."
3363
- msgstr ""
3366
+ msgstr "라이프사이클 환경을 선택하세요. 라이프사이클 환경과 콘텐츠 뷰는 함께 제공되어야 합니다."
3364
3367
 
3365
3368
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html
3366
3369
  msgid "Please select an environment."
@@ -6,11 +6,12 @@
6
6
  # Bryan Kearney <bryan.kearney@gmail.com>, 2023
7
7
  # Amit Upadhye <aupadhye@redhat.com>, 2025
8
8
  # Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025
9
+ # Ondřej Gajdušek, 2025
9
10
  #
10
11
  msgid ""
11
12
  msgstr ""
12
13
  "Project-Id-Version: \n"
13
- "Last-Translator: Ewoud Kohl van Wijngaarden <ewoud+transifex@kohlvanwijngaarden.nl>, 2025\n"
14
+ "Last-Translator: Ondřej Gajdušek, 2025\n"
14
15
  "Language-Team: Chinese (China) (https://app.transifex.com/foreman/teams/114/zh_CN/)\n"
15
16
  "Content-Type: text/plain; charset=UTF-8\n"
16
17
  "Content-Transfer-Encoding: 8bit\n"
@@ -310,6 +311,8 @@ msgid ""
310
311
  "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
311
312
  " Host' | translate}} </span>"
312
313
  msgstr ""
314
+ "<span> {{table.numSelected &gt 1? 'Register Content Hosts':'Register Content"
315
+ " Host' | translate}} </span>"
313
316
 
314
317
  #: app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html
315
318
  msgid "1 Content Host"
@@ -3320,7 +3323,7 @@ msgstr "请确保选择了内容视图。"
3320
3323
  msgid ""
3321
3324
  "Please select a lifecycle environment. Lifecycle environment and content "
3322
3325
  "view must be provided together."
3323
- msgstr ""
3326
+ msgstr "请选择一个生命周期环境。生命周期环境和内容视图必须一起提供。"
3324
3327
 
3325
3328
  #: app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-environment-modal.html
3326
3329
  msgid "Please select an environment."