Maintenance: Update translatable source strings.

This commit is contained in:
Martin Gruner 2022-01-18 13:52:57 +01:00
parent 1eed05d61d
commit 4186b0faaf
34 changed files with 127 additions and 136 deletions

View file

@ -375,7 +375,7 @@ class EmailReply extends App.Controller
buttonCancel: __('Cancel') buttonCancel: __('Cancel')
buttonCancelClass: 'btn--danger' buttonCancelClass: 'btn--danger'
buttonSubmit: false buttonSubmit: false
message: __('Need recipient in "To" or "Cc".') message: __('Need recipient in "TO" or "CC".')
shown: true shown: true
small: true small: true
container: ui.el.closest('.content') container: ui.el.closest('.content')

View file

@ -7,7 +7,7 @@ class App.Overview extends App.Model
{ name: 'link', display: __('Link'), readonly: 1 }, { name: 'link', display: __('Link'), readonly: 1 },
{ name: 'role_ids', display: __('Available for the following roles'), tag: 'column_select', multiple: true, null: false, relation: 'Role', translate: true }, { name: 'role_ids', display: __('Available for the following roles'), tag: 'column_select', multiple: true, null: false, relation: 'Role', translate: true },
{ name: 'user_ids', display: __('Restrict to only the following users'), tag: 'column_select', multiple: true, null: true, relation: 'User', sortBy: 'firstname' }, { name: 'user_ids', display: __('Restrict to only the following users'), tag: 'column_select', multiple: true, null: true, relation: 'User', sortBy: 'firstname' },
{ name: 'organization_shared', display: __('Only available for Users with shared Organization'), tag: 'select', options: { true: 'yes', false: 'no' }, default: false, null: true }, { name: 'organization_shared', display: __('Only available for Users with shared Organizations'), tag: 'select', options: { true: 'yes', false: 'no' }, default: false, null: true },
{ name: 'out_of_office', display: __('Only available for Users which are replacements for other users.'), tag: 'select', options: { true: 'yes', false: 'no' }, default: false, null: true }, { name: 'out_of_office', display: __('Only available for Users which are replacements for other users.'), tag: 'select', options: { true: 'yes', false: 'no' }, default: false, null: true },
{ name: 'condition', display: __('Conditions for shown Tickets'), tag: 'ticket_selector', null: false, out_of_office: true }, { name: 'condition', display: __('Conditions for shown Tickets'), tag: 'ticket_selector', null: false, out_of_office: true },
{ name: 'prio', display: __('Prio'), readonly: 1 }, { name: 'prio', display: __('Prio'), readonly: 1 },

View file

@ -4,16 +4,16 @@
<p> <p>
<% if @result.stats: %> <% if @result.stats: %>
<%- @T('The test run was successful.') %> <%- @T('The test run was successful.') %>
<%- @T('The following changes are made:') %> <%- @T('The following changes will be made:') %>
<ul> <ul>
<% if @result.stats.deleted isnt undefined: %> <% if @result.stats.deleted isnt undefined: %>
<li><%- @T('%s object(s) are deleted.', @result.stats.deleted) %></li> <li><%- @T('%s object(s) will be deleted.', @result.stats.deleted) %></li>
<% end %> <% end %>
<% if @result.stats.created isnt undefined: %> <% if @result.stats.created isnt undefined: %>
<li><%- @T('%s object(s) are created.', @result.stats.created) %></li> <li><%- @T('%s object(s) will be created.', @result.stats.created) %></li>
<% end %> <% end %>
<% if @result.stats.updated isnt undefined: %> <% if @result.stats.updated isnt undefined: %>
<li><%- @T('%s object(s) are updated.', @result.stats.updated) %></li> <li><%- @T('%s object(s) will be updated.', @result.stats.updated) %></li>
<% end %> <% end %>
<% end %> <% end %>
</p> </p>

View file

@ -1 +1 @@
<div><%- @T('No available webhook, please create a new one or activate an existing one at "Manage > Webhook"') %></div> <div><%- @T('No webhook available, please create a new one or activate an existing one at "Manage > Webhook"') %></div>

View file

@ -21,7 +21,7 @@
<h2><%- @T('Inbound') %></h2> <h2><%- @T('Inbound') %></h2>
<p><%- @T('Blocked caller IDs based on sender caller ID.') %> <p><%- @T('Block caller IDs based on sender caller ID.') %>
<div class="settings-entry"> <div class="settings-entry">
<table class="settings-list js-inboundBlockCallerId" style="width: 100%;"> <table class="settings-list js-inboundBlockCallerId" style="width: 100%;">

View file

@ -37,7 +37,7 @@
<h2><%- @T('Inbound') %></h2> <h2><%- @T('Inbound') %></h2>
<p><%- @T('Blocked caller IDs based on sender caller ID.') %> <p><%- @T('Block caller IDs based on sender caller ID.') %>
<div class="settings-entry"> <div class="settings-entry">
<table class="settings-list js-inboundBlockCallerId" style="width: 100%;"> <table class="settings-list js-inboundBlockCallerId" style="width: 100%;">

View file

@ -24,7 +24,7 @@
<h2><%- @T('Inbound') %></h2> <h2><%- @T('Inbound') %></h2>
<p><%- @T('Blocked caller IDs based on sender caller ID.') %> <p><%- @T('Block caller IDs based on sender caller ID.') %>
<div class="settings-entry"> <div class="settings-entry">
<table class="settings-list js-inboundBlockCallerId" style="width: 100%;"> <table class="settings-list js-inboundBlockCallerId" style="width: 100%;">

View file

@ -254,13 +254,11 @@ jQuery.fn.extend( {
var result; var result;
if ( val == null ) { if ( val == null ) {
// be sure that also null values are transferred
// be sure that also null values are transfered
// https://github.com/zammad/zammad/issues/944 // https://github.com/zammad/zammad/issues/944
if ( $elem.prop('multiple') ) { if ($elem.prop('multiple')) {
result = { name: elem.name, value: null, type: type }; result = { name: elem.name, value: null, type: type }
} } else {
else {
result = null result = null
} }
} }

View file

@ -6,7 +6,7 @@ module ClonesTicketArticleAttachments
private private
def article_attachments_clone(article) def article_attachments_clone(article)
raise Exceptions::UnprocessableEntity, __('Need form_id to attach attachments to new form.') if params[:form_id].blank? raise Exceptions::UnprocessableEntity, __("Need 'form_id' to add attachments to new form.") if params[:form_id].blank?
article.clone_attachments('UploadCache', params[:form_id], only_attached_attachments: true) article.clone_attachments('UploadCache', params[:form_id], only_attached_attachments: true)
end end

View file

@ -13,7 +13,7 @@ module CreatesTicketArticles
subtype = params.delete(:subtype) subtype = params.delete(:subtype)
# check min. params # check min. params
raise Exceptions::UnprocessableEntity, __('Need at least an article body field.') if params[:body].blank? raise Exceptions::UnprocessableEntity, __("Need at least an 'article body' field.") if params[:body].blank?
# fill default values # fill default values
if params[:type_id].blank? && params[:type].blank? if params[:type_id].blank? && params[:type].blank?

View file

@ -30,7 +30,7 @@ class Integration::CtiController < ApplicationController
end end
if result[:action] == 'invalid_direction' if result[:action] == 'invalid_direction'
response_error(__('Invalid direction!')) response_error(__("Invalid 'direction'!"))
return true return true
end end

View file

@ -28,7 +28,7 @@ class Integration::PlacetelController < ApplicationController
end end
if result[:action] == 'invalid_direction' if result[:action] == 'invalid_direction'
response_error(__('Invalid direction!')) response_error(__("Invalid 'direction'!"))
return true return true
end end

View file

@ -28,7 +28,7 @@ class Integration::SipgateController < ApplicationController
end end
if result[:action] == 'invalid_direction' if result[:action] == 'invalid_direction'
response_error(__('Invalid direction!')) response_error(__("Invalid 'direction'!"))
return true return true
end end

View file

@ -159,7 +159,7 @@ class TicketArticlesController < ApplicationController
# check if requested ticket got merged # check if requested ticket got merged
if ticket.state.state_type.name != 'merged' if ticket.state.state_type.name != 'merged'
raise Exceptions::Forbidden, __('No access, article_id/ticket_id is not matching.') raise Exceptions::Forbidden, __('The article does not belong to the specified ticket.')
end end
ticket = article.ticket ticket = article.ticket
@ -233,7 +233,7 @@ class TicketArticlesController < ApplicationController
# @response_message 403 Forbidden / Invalid session. # @response_message 403 Forbidden / Invalid session.
def import_start def import_start
if Setting.get('import_mode') != true if Setting.get('import_mode') != true
raise __('Only can import tickets if system is in import mode.') raise __('Tickets can only be imported if system is in import mode.')
end end
string = params[:data] string = params[:data]

View file

@ -633,7 +633,7 @@ class TicketsController < ApplicationController
# @response_message 403 Forbidden / Invalid session. # @response_message 403 Forbidden / Invalid session.
def import_start def import_start
if Setting.get('import_mode') != true if Setting.get('import_mode') != true
raise __('Only can import tickets if system is in import mode.') raise __('Tickets can only be imported if system is in import mode.')
end end
string = params[:data] string = params[:data]

View file

@ -13,7 +13,7 @@ class TicketsMassController < ApplicationController
if !applicable if !applicable
render json: { render json: {
error: __('Macro group restrictions do not cover some tickets'), error: __('Macro group restrictions do not cover all tickets'),
blocking_tickets: applicable.blocking_tickets.map(&:id) blocking_tickets: applicable.blocking_tickets.map(&:id)
}, status: :unprocessable_entity }, status: :unprocessable_entity

View file

@ -816,7 +816,7 @@ curl http://localhost/api/v1/users/avatar -v -u #{login}:#{password} -H "Content
def avatar_set_default def avatar_set_default
# get & validate image # get & validate image
raise Exceptions::UnprocessableEntity, __('No id of avatar!') if !params[:id] raise Exceptions::UnprocessableEntity, __("The required parameter 'id' is missing.") if !params[:id]
# set as default # set as default
avatar = Avatar.set_default('User', current_user.id, params[:id]) avatar = Avatar.set_default('User', current_user.id, params[:id])
@ -830,7 +830,7 @@ curl http://localhost/api/v1/users/avatar -v -u #{login}:#{password} -H "Content
def avatar_destroy def avatar_destroy
# get & validate image # get & validate image
raise Exceptions::UnprocessableEntity, __('No id of avatar!') if !params[:id] raise Exceptions::UnprocessableEntity, __("The required parameter 'id' is missing.") if !params[:id]
# remove avatar # remove avatar
Avatar.remove_one('User', current_user.id, params[:id]) Avatar.remove_one('User', current_user.id, params[:id])

View file

@ -820,7 +820,7 @@ is certain attribute used by triggers, overviews or schedulers
errors.add(:name, 'spaces are not allowed') errors.add(:name, 'spaces are not allowed')
end end
if !name.match?(%r{^[a-z0-9_]+$}) if !name.match?(%r{^[a-z0-9_]+$})
errors.add(:name, __('Only letters from a-z because numbers from 0-9 and _ are allowed')) errors.add(:name, __("Only lowercase letters, numbers, and '_' are allowed"))
end end
if !name.match?(%r{[a-z]}) if !name.match?(%r{[a-z]})
errors.add(:name, __('At least one letter is required')) errors.add(:name, __('At least one letter is required'))

View file

@ -17,9 +17,9 @@ get user based list of used object attributes
returns: returns:
[ [
{ name: 'api_key', display: __('API Key'), tag: 'input', null: true, edit: true, maxlength: 32 }, { name: 'api_key', display: 'API Key', tag: 'input', null: true, edit: true, maxlength: 32 },
{ name: 'api_ip_regexp', display: __('API IP RegExp'), tag: 'input', null: true, edit: true }, { name: 'api_ip_regexp', display: 'API IP RegExp', tag: 'input', null: true, edit: true },
{ name: 'api_ip_max', display: __('API IP Max'), tag: 'input', null: true, edit: true }, { name: 'api_ip_max', display: 'API IP Max', tag: 'input', null: true, edit: true },
] ]
=end =end

View file

@ -140,18 +140,6 @@ msgstr ""
msgid "%s is inactive, please select an active one." msgid "%s is inactive, please select an active one."
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "%s object(s) are created."
msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "%s object(s) are deleted."
msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "%s object(s) are updated."
msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/imported.jst.eco #: app/assets/javascripts/app/views/generic/object_import/imported.jst.eco
msgid "%s object(s) have been created." msgid "%s object(s) have been created."
msgstr "" msgstr ""
@ -164,6 +152,18 @@ msgstr ""
msgid "%s object(s) were deleted." msgid "%s object(s) were deleted."
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "%s object(s) will be created."
msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "%s object(s) will be deleted."
msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "%s object(s) will be updated."
msgstr ""
#: app/assets/javascripts/app/views/dashboard/stats/ticket_in_process.jst.eco #: app/assets/javascripts/app/views/dashboard/stats/ticket_in_process.jst.eco
msgid "%s of my tickets are currently in process." msgid "%s of my tickets are currently in process."
msgstr "" msgstr ""
@ -342,16 +342,7 @@ msgstr ""
msgid "API" msgid "API"
msgstr "" msgstr ""
#: app/models/object_manager/object.rb
msgid "API IP Max"
msgstr ""
#: app/models/object_manager/object.rb
msgid "API IP RegExp"
msgstr ""
#: app/assets/javascripts/app/controllers/_integration/clearbit.coffee #: app/assets/javascripts/app/controllers/_integration/clearbit.coffee
#: app/models/object_manager/object.rb
msgid "API Key" msgid "API Key"
msgstr "" msgstr ""
@ -950,10 +941,6 @@ msgstr ""
msgid "Attention: These will be your login and password after the import is completed." msgid "Attention: These will be your login and password after the import is completed."
msgstr "" msgstr ""
#: db/seeds/settings.rb
msgid "Attention: When creating a ticket an email is sent."
msgstr ""
#: app/assets/javascripts/app/controllers/object_manager.coffee #: app/assets/javascripts/app/controllers/object_manager.coffee
msgid "Attribute" msgid "Attribute"
msgstr "" msgstr ""
@ -1162,14 +1149,14 @@ msgstr ""
msgid "Block Notifications" msgid "Block Notifications"
msgstr "" msgstr ""
#: app/assets/javascripts/app/models/chat.coffee
msgid "Blocked IPs (separated by ;)"
msgstr ""
#: app/assets/javascripts/app/views/integration/cti.jst.eco #: app/assets/javascripts/app/views/integration/cti.jst.eco
#: app/assets/javascripts/app/views/integration/placetel.jst.eco #: app/assets/javascripts/app/views/integration/placetel.jst.eco
#: app/assets/javascripts/app/views/integration/sipgate.jst.eco #: app/assets/javascripts/app/views/integration/sipgate.jst.eco
msgid "Blocked caller IDs based on sender caller ID." msgid "Block caller IDs based on sender caller ID."
msgstr ""
#: app/assets/javascripts/app/models/chat.coffee
msgid "Blocked IPs (separated by ;)"
msgstr "" msgstr ""
#: app/assets/javascripts/app/models/chat.coffee #: app/assets/javascripts/app/models/chat.coffee
@ -1573,7 +1560,7 @@ msgid "Check streams for Channel"
msgstr "" msgstr ""
#: lib/search_index_backend.rb #: lib/search_index_backend.rb
msgid "Check the response and payload for detailed information: " msgid "Check the response and payload for detailed information:"
msgstr "" msgstr ""
#: app/assets/javascripts/app/controllers/_integration/check_mk.coffee #: app/assets/javascripts/app/controllers/_integration/check_mk.coffee
@ -1968,7 +1955,7 @@ msgid "Contributing Translations"
msgstr "" msgstr ""
#: lib/sessions/event/chat_transfer.rb #: lib/sessions/event/chat_transfer.rb
msgid "Conversation transfered into other chat. Please stay tuned." msgid "Conversation is transferred into another chat. Please stay tuned."
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/twitter/list.jst.eco #: app/assets/javascripts/app/views/twitter/list.jst.eco
@ -4319,7 +4306,6 @@ msgstr ""
#: app/assets/javascripts/app/views/telegram/index.jst.eco #: app/assets/javascripts/app/views/telegram/index.jst.eco
#: app/assets/javascripts/app/views/twitter/account_edit.jst.eco #: app/assets/javascripts/app/views/twitter/account_edit.jst.eco
#: app/assets/javascripts/app/views/twitter/list.jst.eco #: app/assets/javascripts/app/views/twitter/list.jst.eco
#: app/models/object_manager/attribute.rb
#: app/views/mailer/ticket_create/cs.html.erb #: app/views/mailer/ticket_create/cs.html.erb
#: app/views/mailer/ticket_create/de.html.erb #: app/views/mailer/ticket_create/de.html.erb
#: app/views/mailer/ticket_create/en.html.erb #: app/views/mailer/ticket_create/en.html.erb
@ -4989,6 +4975,12 @@ msgstr ""
msgid "Intro" msgid "Intro"
msgstr "" msgstr ""
#: app/controllers/integration/cti_controller.rb
#: app/controllers/integration/placetel_controller.rb
#: app/controllers/integration/sipgate_controller.rb
msgid "Invalid 'direction'!"
msgstr ""
#: app/controllers/application_controller/authenticates.rb #: app/controllers/application_controller/authenticates.rb
msgid "Invalid BasicAuth credentials" msgid "Invalid BasicAuth credentials"
msgstr "" msgstr ""
@ -5034,12 +5026,6 @@ msgstr ""
msgid "Invalid credentials!" msgid "Invalid credentials!"
msgstr "" msgstr ""
#: app/controllers/integration/cti_controller.rb
#: app/controllers/integration/placetel_controller.rb
#: app/controllers/integration/sipgate_controller.rb
msgid "Invalid direction!"
msgstr ""
#: app/models/webhook.rb #: app/models/webhook.rb
msgid "Invalid endpoint (no hostname)!" msgid "Invalid endpoint (no hostname)!"
msgstr "" msgstr ""
@ -5535,7 +5521,7 @@ msgid "Macro"
msgstr "" msgstr ""
#: app/controllers/tickets_mass_controller.rb #: app/controllers/tickets_mass_controller.rb
msgid "Macro group restrictions do not cover some tickets" msgid "Macro group restrictions do not cover all tickets"
msgstr "" msgstr ""
#: app/assets/javascripts/app/controllers/macro.coffee #: app/assets/javascripts/app/controllers/macro.coffee
@ -6027,18 +6013,18 @@ msgstr ""
msgid "Navigation" msgid "Navigation"
msgstr "" msgstr ""
#: app/controllers/concerns/clones_ticket_article_attachments.rb
msgid "Need 'form_id' to add attachments to new form."
msgstr ""
#: app/controllers/concerns/creates_ticket_articles.rb #: app/controllers/concerns/creates_ticket_articles.rb
msgid "Need at least an article body field." msgid "Need at least an 'article body' field."
msgstr "" msgstr ""
#: app/controllers/application_controller/handles_devices.rb #: app/controllers/application_controller/handles_devices.rb
msgid "Need fingerprint param!" msgid "Need fingerprint param!"
msgstr "" msgstr ""
#: app/controllers/concerns/clones_ticket_article_attachments.rb
msgid "Need form_id to attach attachments to new form."
msgstr ""
#: app/controllers/user_access_token_controller.rb #: app/controllers/user_access_token_controller.rb
msgid "Need label!" msgid "Need label!"
msgstr "" msgstr ""
@ -6052,7 +6038,7 @@ msgid "Need name, login, email or locale for create_or_update()"
msgstr "" msgstr ""
#: app/assets/javascripts/app/controllers/ticket_zoom/article_action/email_reply.coffee #: app/assets/javascripts/app/controllers/ticket_zoom/article_action/email_reply.coffee
msgid "Need recipient in \"To\" or \"Cc\"." msgid "Need recipient in \"TO\" or \"CC\"."
msgstr "" msgstr ""
#: app/assets/javascripts/app/controllers/ticket_zoom/article_action/twitter_reply.coffee #: app/assets/javascripts/app/controllers/ticket_zoom/article_action/twitter_reply.coffee
@ -6080,7 +6066,6 @@ msgstr ""
#: app/assets/javascripts/app/controllers/_default_navbar.coffee #: app/assets/javascripts/app/controllers/_default_navbar.coffee
#: app/assets/javascripts/app/views/channel/email_account_overview.jst.eco #: app/assets/javascripts/app/views/channel/email_account_overview.jst.eco
#: app/assets/javascripts/app/views/channel/sms_account_overview.jst.eco #: app/assets/javascripts/app/views/channel/sms_account_overview.jst.eco
#: app/models/translation.rb
msgid "New" msgid "New"
msgstr "" msgstr ""
@ -6235,6 +6220,10 @@ msgstr ""
msgid "No Entries" msgid "No Entries"
msgstr "" msgstr ""
#: lib/external_credential/facebook.rb
msgid "No Facebook app configured!"
msgstr ""
#: lib/external_credential/google.rb #: lib/external_credential/google.rb
msgid "No Google app configured!" msgid "No Google app configured!"
msgstr "" msgstr ""
@ -6255,8 +6244,8 @@ msgstr ""
msgid "No Thanks!" msgid "No Thanks!"
msgstr "" msgstr ""
#: app/controllers/ticket_articles_controller.rb #: lib/external_credential/twitter.rb
msgid "No access, article_id/ticket_id is not matching." msgid "No Twitter app configured!"
msgstr "" msgstr ""
#: app/assets/javascripts/app/controllers/knowledge_base/sidebar/answers.coffee #: app/assets/javascripts/app/controllers/knowledge_base/sidebar/answers.coffee
@ -6271,10 +6260,6 @@ msgstr ""
msgid "No application_secret param!" msgid "No application_secret param!"
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/generic/ticket_perform_action/webhook_not_available.jst.eco
msgid "No available webhook, please create a new one or activate an existing one at \"Manage > Webhook\""
msgstr ""
#: app/assets/javascripts/app/controllers/_profile/avatar.coffee #: app/assets/javascripts/app/controllers/_profile/avatar.coffee
msgid "No camera found." msgid "No camera found."
msgstr "" msgstr ""
@ -6323,10 +6308,6 @@ msgstr ""
msgid "No entries found in selected folder(s)." msgid "No entries found in selected folder(s)."
msgstr "" msgstr ""
#: lib/external_credential/facebook.rb
msgid "No facebook app configured!"
msgstr ""
#: app/assets/javascripts/app/controllers/_ui_element/_application_selector.coffee #: app/assets/javascripts/app/controllers/_ui_element/_application_selector.coffee
#: app/assets/javascripts/app/controllers/_ui_element/ticket_perform_action.coffee #: app/assets/javascripts/app/controllers/_ui_element/ticket_perform_action.coffee
msgid "No filter." msgid "No filter."
@ -6336,14 +6317,6 @@ msgstr ""
msgid "No folders found for given user credentials." msgid "No folders found for given user credentials."
msgstr "" msgstr ""
#: lib/external_credential/google.rb
msgid "No google app configured!"
msgstr ""
#: app/controllers/users_controller.rb
msgid "No id of avatar!"
msgstr ""
#: app/assets/javascripts/app/controllers/ticket_zoom/sidebar_git_issue.coffee #: app/assets/javascripts/app/controllers/ticket_zoom/sidebar_git_issue.coffee
msgid "No linked issues" msgid "No linked issues"
msgstr "" msgstr ""
@ -6425,14 +6398,14 @@ msgstr ""
msgid "No triggers active" msgid "No triggers active"
msgstr "" msgstr ""
#: lib/external_credential/twitter.rb
msgid "No twitter app configured!"
msgstr ""
#: app/assets/javascripts/app/views/widget/online_notification.jst.eco #: app/assets/javascripts/app/views/widget/online_notification.jst.eco
msgid "No unread notifications for you. :)" msgid "No unread notifications for you. :)"
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/generic/ticket_perform_action/webhook_not_available.jst.eco
msgid "No webhook available, please create a new one or activate an existing one at \"Manage > Webhook\""
msgstr ""
#: app/models/channel/email_parser.rb #: app/models/channel/email_parser.rb
msgid "No x-zammad-session-user-id, no sender set!" msgid "No x-zammad-session-user-id, no sender set!"
msgstr "" msgstr ""
@ -6685,12 +6658,7 @@ msgid "Only available for Users which are replacements for other users."
msgstr "" msgstr ""
#: app/assets/javascripts/app/models/overview.coffee #: app/assets/javascripts/app/models/overview.coffee
msgid "Only available for Users with shared Organization" msgid "Only available for Users with shared Organizations"
msgstr ""
#: app/controllers/ticket_articles_controller.rb
#: app/controllers/tickets_controller.rb
msgid "Only can import tickets if system is in import mode."
msgstr "" msgstr ""
#: app/assets/javascripts/app/controllers/_integration/slack.coffee #: app/assets/javascripts/app/controllers/_integration/slack.coffee
@ -6698,7 +6666,7 @@ msgid "Only for these groups."
msgstr "" msgstr ""
#: app/models/object_manager/attribute.rb #: app/models/object_manager/attribute.rb
msgid "Only letters from a-z because numbers from 0-9 and _ are allowed" msgid "Only lowercase letters, numbers, and '_' are allowed"
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/package.jst.eco #: app/assets/javascripts/app/views/package.jst.eco
@ -8773,6 +8741,10 @@ msgstr ""
msgid "The URL to this installation of Zammad." msgid "The URL to this installation of Zammad."
msgstr "" msgstr ""
#: app/controllers/ticket_articles_controller.rb
msgid "The article does not belong to the specified ticket."
msgstr ""
#: app/assets/javascripts/app/views/getting_started/auto_wizard_enabled.jst.eco #: app/assets/javascripts/app/views/getting_started/auto_wizard_enabled.jst.eco
msgid "The auto wizard is enabled, please use the prodvided auto wizard url." msgid "The auto wizard is enabled, please use the prodvided auto wizard url."
msgstr "" msgstr ""
@ -8813,14 +8785,14 @@ msgstr ""
msgid "The divider between TicketHook and ticket number. E. g. ': '." msgid "The divider between TicketHook and ticket number. E. g. ': '."
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "The following changes are made:"
msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/imported.jst.eco #: app/assets/javascripts/app/views/generic/object_import/imported.jst.eco
msgid "The following changes have been made:" msgid "The following changes have been made:"
msgstr "" msgstr ""
#: app/assets/javascripts/app/views/generic/object_import/import_try.jst.eco
msgid "The following changes will be made:"
msgstr ""
#: app/assets/javascripts/app/controllers/_application_controller/_modal.coffee #: app/assets/javascripts/app/controllers/_application_controller/_modal.coffee
msgid "The form content has been changed. Do you want to close it and lose your changes?" msgid "The form content has been changed. Do you want to close it and lose your changes?"
msgstr "" msgstr ""
@ -8861,6 +8833,10 @@ msgstr ""
msgid "The page you were looking for does not exist." msgid "The page you were looking for does not exist."
msgstr "" msgstr ""
#: app/controllers/users_controller.rb
msgid "The required parameter 'id' is missing."
msgstr ""
#: app/controllers/users_controller.rb #: app/controllers/users_controller.rb
msgid "The resized image is invalid." msgid "The resized image is invalid."
msgstr "" msgstr ""
@ -9169,6 +9145,11 @@ msgstr ""
msgid "Tickets assigned to me: %s of %s" msgid "Tickets assigned to me: %s of %s"
msgstr "" msgstr ""
#: app/controllers/ticket_articles_controller.rb
#: app/controllers/tickets_controller.rb
msgid "Tickets can only be imported if system is in import mode."
msgstr ""
#: app/assets/javascripts/app/views/widget/ticket_stats.jst.eco #: app/assets/javascripts/app/views/widget/ticket_stats.jst.eco
msgid "Tickets of Organization" msgid "Tickets of Organization"
msgstr "" msgstr ""

View file

@ -9,7 +9,7 @@ class ExternalCredential::Facebook
def self.request_account_to_link(credentials = {}, app_required = true) def self.request_account_to_link(credentials = {}, app_required = true)
external_credential = ExternalCredential.find_by(name: 'facebook') external_credential = ExternalCredential.find_by(name: 'facebook')
raise Exceptions::UnprocessableEntity, __('No facebook app configured!') if !external_credential && app_required raise Exceptions::UnprocessableEntity, __('No Facebook app configured!') if !external_credential && app_required
if external_credential if external_credential
if credentials[:application_id].blank? if credentials[:application_id].blank?
@ -41,7 +41,7 @@ class ExternalCredential::Facebook
def self.link_account(_request_token, params) def self.link_account(_request_token, params)
# fail if request_token.params[:oauth_token] != params[:state] # fail if request_token.params[:oauth_token] != params[:state]
external_credential = ExternalCredential.find_by(name: 'facebook') external_credential = ExternalCredential.find_by(name: 'facebook')
raise Exceptions::UnprocessableEntity, __('No facebook app configured!') if !external_credential raise Exceptions::UnprocessableEntity, __('No Facebook app configured!') if !external_credential
oauth = Koala::Facebook::OAuth.new( oauth = Koala::Facebook::OAuth.new(
external_credential.credentials['application_id'], external_credential.credentials['application_id'],

View file

@ -32,7 +32,7 @@ class ExternalCredential::Google
def self.link_account(_request_token, params) def self.link_account(_request_token, params)
external_credential = ExternalCredential.find_by(name: 'google') external_credential = ExternalCredential.find_by(name: 'google')
raise Exceptions::UnprocessableEntity, __('No google app configured!') if !external_credential raise Exceptions::UnprocessableEntity, __('No Google app configured!') if !external_credential
raise Exceptions::UnprocessableEntity, __('No code for session found!') if !params[:code] raise Exceptions::UnprocessableEntity, __('No code for session found!') if !params[:code]
response = authorize_tokens(external_credential.credentials[:client_id], external_credential.credentials[:client_secret], params[:code]) response = authorize_tokens(external_credential.credentials[:client_id], external_credential.credentials[:client_secret], params[:code])

View file

@ -8,7 +8,7 @@ class ExternalCredential::Twitter
def self.request_account_to_link(credentials = {}, app_required = true) def self.request_account_to_link(credentials = {}, app_required = true)
external_credential = ExternalCredential.find_by(name: 'twitter') external_credential = ExternalCredential.find_by(name: 'twitter')
raise Exceptions::UnprocessableEntity, __('No twitter app configured!') if !external_credential && app_required raise Exceptions::UnprocessableEntity, __('No Twitter app configured!') if !external_credential && app_required
if external_credential if external_credential
if credentials[:consumer_key].blank? if credentials[:consumer_key].blank?
@ -49,7 +49,7 @@ class ExternalCredential::Twitter
def self.link_account(request_token, params) def self.link_account(request_token, params)
external_credential = ExternalCredential.find_by(name: 'twitter') external_credential = ExternalCredential.find_by(name: 'twitter')
raise Exceptions::UnprocessableEntity, __('No twitter app configured!') if !external_credential raise Exceptions::UnprocessableEntity, __('No Twitter app configured!') if !external_credential
raise Exceptions::UnprocessableEntity, __('No request_token for session found!') if !request_token raise Exceptions::UnprocessableEntity, __('No request_token for session found!') if !request_token
raise Exceptions::UnprocessableEntity, __('Invalid oauth_token given!') if request_token.params[:oauth_token] != params[:oauth_token] raise Exceptions::UnprocessableEntity, __('Invalid oauth_token given!') if request_token.params[:oauth_token] != params[:oauth_token]

View file

@ -5,6 +5,11 @@ class Generators::TranslationCatalog::Extractor::Ruby < Generators::TranslationC
def extract_from_string(string, filename) # rubocop:disable Metrics/AbcSize def extract_from_string(string, filename) # rubocop:disable Metrics/AbcSize
return if string.empty? return if string.empty?
# Remove doc comments
string.gsub!(%r{^=begin.*?^=end}mx, '')
# Remove standard comments
string.gsub!(%r{^\s*\#.*?$}mx, '')
literal_string_regex = %r{('|")(.+?)(?<!\\)\1} literal_string_regex = %r{('|")(.+?)(?<!\\)\1}
# Translation.translate # Translation.translate

View file

@ -836,7 +836,7 @@ generate url for index or document access (only for internal use)
elsif url.end_with?('pipeline/zammad-attachment', 'pipeline=zammad-attachment') && response.code == 400 elsif url.end_with?('pipeline/zammad-attachment', 'pipeline=zammad-attachment') && response.code == 400
__('The installed attachment plugin could not handle the request payload. Ensure that the correct attachment plugin is installed (ingest-attachment).') __('The installed attachment plugin could not handle the request payload. Ensure that the correct attachment plugin is installed (ingest-attachment).')
else else
__('Check the response and payload for detailed information: ') __('Check the response and payload for detailed information:')
end end
result = "#{prefix} #{message}#{suffix}" result = "#{prefix} #{message}#{suffix}"

View file

@ -30,7 +30,7 @@ class Sessions::Event::ChatTransfer < Sessions::Event::ChatBase
event: 'chat_session_notice', event: 'chat_session_notice',
data: { data: {
session_id: chat_session.session_id, session_id: chat_session.session_id,
message: __('Conversation transfered into other chat. Please stay tuned.'), message: __('Conversation is transferred into another chat. Please stay tuned.'),
}, },
} }
chat_session.send_to_recipients(message, @client_id) chat_session.send_to_recipients(message, @client_id)

View file

@ -651,7 +651,7 @@ QUnit.test( "ticket_perform_action check when there's no available webhook", ass
var params = App.ControllerForm.params(el) var params = App.ControllerForm.params(el)
assert.deepEqual(params, {}, 'form param check') assert.deepEqual(params, {}, 'form param check')
var testNoticeMessage = 'No available webhook, please create a new one or activate an existing one at "Manage > Webhook"' var testNoticeMessage = 'No webhook available, please create a new one or activate an existing one at "Manage > Webhook"'
var noticeMessage = el.find('.controls.js-webhooks div').text() var noticeMessage = el.find('.controls.js-webhooks div').text()
assert.equal(noticeMessage, testNoticeMessage, 'form shows message when webhook is not available') assert.equal(noticeMessage, testNoticeMessage, 'form shows message when webhook is not available')
}); });
@ -704,7 +704,7 @@ QUnit.test( "ticket_perform_action check when there's an available webhook", ass
} }
assert.deepEqual(params, test_params, 'form param check') assert.deepEqual(params, test_params, 'form param check')
var testNoticeMessage = 'No available webhook, please create a new one or activate an existing one at "Manage > Webhook"' var testNoticeMessage = 'No webhook available, please create a new one or activate an existing one at "Manage > Webhook"'
var noticeMessage = el.find('.controls.js-webhooks').text() var noticeMessage = el.find('.controls.js-webhooks').text()
assert.notEqual(noticeMessage, testNoticeMessage, 'form does not show notice message when webhook is available') assert.notEqual(noticeMessage, testNoticeMessage, 'form does not show notice message when webhook is available')

View file

@ -15,9 +15,16 @@ RSpec.describe Generators::TranslationCatalog::Extractor::Ruby do
let(:string) do let(:string) do
<<~'CODE' <<~'CODE'
__('__ String') __('__ String')
=begin
__('Doc comment must be ignored')
=end
__('__ String that only looks like #{interpolation}') __('__ String that only looks like #{interpolation}')
__("__ double quoted String with '") =begin
__('Another doc comment must be ignored')
=end
Translation.translate('de-de', '.translate String') Translation.translate('de-de', '.translate String')
# __('Comments must also be ignored')
__("__ double quoted String with '")
CODE CODE
end end

View file

@ -194,7 +194,7 @@ RSpec.describe Sessions::Event::ChatSessionStart do
end end
end end
context 'when starting a chat session as agent with transfered conversation' do context 'when starting a chat session as agent with transferred conversation' do
it 'send out chat_session_start to customer and agent with already created messages' do it 'send out chat_session_start to customer and agent with already created messages' do
chat_message_history chat_message_history
expect(subject_as_agent.run).to eq(nil) expect(subject_as_agent.run).to eq(nil)

View file

@ -36,7 +36,7 @@ RSpec.describe Sessions::Event::ChatTransfer do
Setting.set('chat', true) Setting.set('chat', true)
end end
context 'when transfering a chat session as customer' do context 'when transferring a chat session as customer' do
let(:subject_as_customer) do let(:subject_as_customer) do
Sessions.create(client_id, { 'id' => customer.id }, {}) Sessions.create(client_id, { 'id' => customer.id }, {})
Sessions.queue(client_id) Sessions.queue(client_id)
@ -64,7 +64,7 @@ RSpec.describe Sessions::Event::ChatTransfer do
end end
end end
context 'when transfering a chat session as agent' do context 'when transferring a chat session as agent' do
it 'send out chat_session_notice to customer and agent and set chat session to waiting' do it 'send out chat_session_notice to customer and agent and set chat session to waiting' do
expect(subject_as_agent.run).to eq(nil) expect(subject_as_agent.run).to eq(nil)
@ -73,7 +73,7 @@ RSpec.describe Sessions::Event::ChatTransfer do
expect(messages_to_customer[0]).to eq( expect(messages_to_customer[0]).to eq(
'event' => 'chat_session_notice', 'event' => 'chat_session_notice',
'data' => { 'data' => {
'message' => 'Conversation transfered into other chat. Please stay tuned.', 'message' => 'Conversation is transferred into another chat. Please stay tuned.',
'session_id' => chat_session.session_id, 'session_id' => chat_session.session_id,
}, },
) )

View file

@ -119,7 +119,7 @@ RSpec.describe 'External Credentials', type: :request do
get '/api/v1/external_credentials/facebook/link_account', as: :json get '/api/v1/external_credentials/facebook/link_account', as: :json
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to include('error' => 'No facebook app configured!') expect(json_response).to include('error' => 'No Facebook app configured!')
end end
end end
@ -128,7 +128,7 @@ RSpec.describe 'External Credentials', type: :request do
get '/api/v1/external_credentials/facebook/link_account', params: invalid_credentials, as: :json get '/api/v1/external_credentials/facebook/link_account', params: invalid_credentials, as: :json
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to include('error' => 'No facebook app configured!') expect(json_response).to include('error' => 'No Facebook app configured!')
end end
end end
@ -152,7 +152,7 @@ RSpec.describe 'External Credentials', type: :request do
get '/api/v1/external_credentials/facebook/callback', as: :json get '/api/v1/external_credentials/facebook/callback', as: :json
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to include('error' => 'No facebook app configured!') expect(json_response).to include('error' => 'No Facebook app configured!')
end end
end end
@ -161,7 +161,7 @@ RSpec.describe 'External Credentials', type: :request do
get '/api/v1/external_credentials/facebook/callback', params: invalid_credentials, as: :json get '/api/v1/external_credentials/facebook/callback', params: invalid_credentials, as: :json
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to include('error' => 'No facebook app configured!') expect(json_response).to include('error' => 'No Facebook app configured!')
end end
end end
@ -338,7 +338,7 @@ RSpec.describe 'External Credentials', type: :request do
context 'with no Twitter app' do context 'with no Twitter app' do
include_examples 'for failure cases' do include_examples 'for failure cases' do
let(:status) { :unprocessable_entity } let(:status) { :unprocessable_entity }
let(:error_message) { 'No twitter app configured!' } let(:error_message) { 'No Twitter app configured!' }
end end
end end
@ -397,7 +397,7 @@ RSpec.describe 'External Credentials', type: :request do
context 'with no Twitter app' do context 'with no Twitter app' do
include_examples 'for failure cases' do include_examples 'for failure cases' do
let(:status) { :unprocessable_entity } let(:status) { :unprocessable_entity }
let(:error_message) { 'No twitter app configured!' } let(:error_message) { 'No Twitter app configured!' }
end end
end end

View file

@ -132,7 +132,7 @@ RSpec.describe 'Ticket Article Attachments', type: :request, authenticated_as: -
post "/api/v1/ticket_attachment_upload_clone_by_article/#{article_p.id}", params: {}, as: :json post "/api/v1/ticket_attachment_upload_clone_by_article/#{article_p.id}", params: {}, as: :json
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to be_a_kind_of(Hash) expect(json_response).to be_a_kind_of(Hash)
expect(json_response['error']).to eq('Need form_id to attach attachments to new form.') expect(json_response['error']).to eq("Need 'form_id' to add attachments to new form.")
post "/api/v1/ticket_attachment_upload_clone_by_article/#{article_p.id}", params: { form_id: '1234-1' }, as: :json post "/api/v1/ticket_attachment_upload_clone_by_article/#{article_p.id}", params: { form_id: '1234-1' }, as: :json
expect(response).to have_http_status(:ok) expect(response).to have_http_status(:ok)

View file

@ -104,7 +104,7 @@ RSpec.describe 'Ticket', type: :request do
expect { post '/api/v1/tickets', params: params, as: :json }.not_to change(Ticket, :count) expect { post '/api/v1/tickets', params: params, as: :json }.not_to change(Ticket, :count)
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to be_a_kind_of(Hash) expect(json_response).to be_a_kind_of(Hash)
expect(json_response['error']).to eq('Need at least an article body field.') expect(json_response['error']).to eq("Need at least an 'article body' field.")
end end
it 'does ticket create with agent - article.body set to empty string (01.03)' do it 'does ticket create with agent - article.body set to empty string (01.03)' do
@ -120,7 +120,7 @@ RSpec.describe 'Ticket', type: :request do
expect { post '/api/v1/tickets', params: params, as: :json }.not_to change(Ticket, :count) expect { post '/api/v1/tickets', params: params, as: :json }.not_to change(Ticket, :count)
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to be_a_kind_of(Hash) expect(json_response).to be_a_kind_of(Hash)
expect(json_response['error']).to eq('Need at least an article body field.') expect(json_response['error']).to eq("Need at least an 'article body' field.")
end end
it 'does ticket create with agent - missing article (01.03)' do it 'does ticket create with agent - missing article (01.03)' do
@ -483,7 +483,7 @@ RSpec.describe 'Ticket', type: :request do
post '/api/v1/tickets', params: params, as: :json post '/api/v1/tickets', params: params, as: :json
expect(response).to have_http_status(:unprocessable_entity) expect(response).to have_http_status(:unprocessable_entity)
expect(json_response).to be_a_kind_of(Hash) expect(json_response).to be_a_kind_of(Hash)
expect(json_response['error']).to eq('Need at least an article body field.') expect(json_response['error']).to eq("Need at least an 'article body' field.")
end end
it 'does ticket create with agent - minimal article and attachment with customer (01.13)' do it 'does ticket create with agent - minimal article and attachment with customer (01.13)' do

View file

@ -24,7 +24,7 @@ RSpec.describe 'Ticket > Update > Email Reply', current_user_id: -> { current_us
find('.js-textarea').set('welcome to the community') find('.js-textarea').set('welcome to the community')
find('.js-submitDropdown button.js-submit').click find('.js-submitDropdown button.js-submit').click
expect(page).to have_text 'Need recipient in "To" or "Cc".' expect(page).to have_text 'Need recipient in "TO" or "CC".'
end end
end end