[
  {
    "id": "April",
    "translation": "April"
  },
  {
    "id": "August",
    "translation": "August"
  },
  {
    "id": "December",
    "translation": "December"
  },
  {
    "id": "February",
    "translation": "February"
  },
  {
    "id": "January",
    "translation": "January"
  },
  {
    "id": "July",
    "translation": "July"
  },
  {
    "id": "June",
    "translation": "June"
  },
  {
    "id": "March",
    "translation": "March"
  },
  {
    "id": "May",
    "translation": "May"
  },
  {
    "id": "November",
    "translation": "November"
  },
  {
    "id": "October",
    "translation": "October"
  },
  {
    "id": "September",
    "translation": "September"
  },
  {
    "id": "api.admin.add_certificate.no_file.app_error",
    "translation": "No file under 'certificate' in request."
  },
  {
    "id": "api.admin.add_certificate.open.app_error",
    "translation": "Could not open certificate file."
  },
  {
    "id": "api.admin.add_certificate.saving.app_error",
    "translation": "Could not save certificate file."
  },
  {
    "id": "api.admin.file_read_error",
    "translation": "Error reading log file."
  },
  {
    "id": "api.admin.get_brand_image.not_available.app_error",
    "translation": "Custom branding is not configured or supported on this server."
  },
  {
    "id": "api.admin.get_brand_image.storage.app_error",
    "translation": "Image storage is not configured."
  },
  {
    "id": "api.admin.init.debug",
    "translation": "Initializing admin API routes."
  },
  {
    "id": "api.admin.recycle_db_end.warn",
    "translation": "Finished recycling the database connection."
  },
  {
    "id": "api.admin.recycle_db_start.warn",
    "translation": "Attempting to recycle the database connection."
  },
  {
    "id": "api.admin.remove_certificate.delete.app_error",
    "translation": "An error occurred while deleting the certificate. Make sure the file config/{{.Filename}} exists."
  },
  {
    "id": "api.admin.saml.metadata.app_error",
    "translation": "An error occurred while building Service Provider Metadata."
  },
  {
    "id": "api.admin.test_email.body",
    "translation": "<br/><br/><br/>It appears your Mattermost email is setup correctly!"
  },
  {
    "id": "api.admin.test_email.missing_server",
    "translation": "SMTP Server is required"
  },
  {
    "id": "api.admin.test_email.reenter_password",
    "translation": "The SMTP server, port, or username has changed. Please re-enter the SMTP password to test connection."
  },
  {
    "id": "api.admin.test_email.subject",
    "translation": "Mattermost - Testing Email Settings"
  },
  {
    "id": "api.admin.upload_brand_image.array.app_error",
    "translation": "Empty array under 'image' in request"
  },
  {
    "id": "api.admin.upload_brand_image.no_file.app_error",
    "translation": "No file under 'image' in request"
  },
  {
    "id": "api.admin.upload_brand_image.not_available.app_error",
    "translation": "Custom branding is not configured or supported on this server"
  },
  {
    "id": "api.admin.upload_brand_image.parse.app_error",
    "translation": "Could not parse multipart form"
  },
  {
    "id": "api.admin.upload_brand_image.storage.app_error",
    "translation": "Unable to upload image. Image storage is not configured."
  },
  {
    "id": "api.admin.upload_brand_image.too_large.app_error",
    "translation": "Unable to upload file. File is too large."
  },
  {
    "id": "api.api.init.parsing_templates.debug",
    "translation": "Parsing server templates at %v"
  },
  {
    "id": "api.api.init.parsing_templates.error",
    "translation": "Failed to parse server templates %v"
  },
  {
    "id": "api.api.render.error",
    "translation": "Error rendering template %v err=%v"
  },
  {
    "id": "api.auth.unable_to_get_user.app_error",
    "translation": "Unable to get user to check permissions."
  },
  {
    "id": "api.brand.init.debug",
    "translation": "Initializing brand API routes"
  },
  {
    "id": "api.channel.add_member.added",
    "translation": "%v added to the channel by %v"
  },
  {
    "id": "api.channel.add_member.find_channel.app_error",
    "translation": "Failed to find channel"
  },
  {
    "id": "api.channel.add_member.find_user.app_error",
    "translation": "Failed to find user to be added"
  },
  {
    "id": "api.channel.add_member.user_adding.app_error",
    "translation": "Failed to find user doing the adding"
  },
  {
    "id": "api.channel.add_user.to.channel.failed.app_error",
    "translation": "Failed to add user to channel"
  },
  {
    "id": "api.channel.add_user.to.channel.failed.deleted.app_error",
    "translation": "Failed to add user to channel because they have been removed from the team."
  },
  {
    "id": "api.channel.add_user_to_channel.deleted.app_error",
    "translation": "The channel has been archived or deleted"
  },
  {
    "id": "api.channel.add_user_to_channel.type.app_error",
    "translation": "Can not add user to this channel type"
  },
  {
    "id": "api.channel.can_manage_channel.private_restricted_system_admin.app_error",
    "translation": "Private Channel management and creation is restricted to System Administrators."
  },
  {
    "id": "api.channel.can_manage_channel.private_restricted_team_admin.app_error",
    "translation": "Private Channel management and creation is restricted to Team and System Administrators."
  },
  {
    "id": "api.channel.can_manage_channel.public_restricted_system_admin.app_error",
    "translation": "Public Channel management and creation is restricted to System Administrators."
  },
  {
    "id": "api.channel.can_manage_channel.public_restricted_team_admin.app_error",
    "translation": "Public Channel management and creation is restricted to Team and System Administrators."
  },
  {
    "id": "api.channel.create_channel.direct_channel.app_error",
    "translation": "Must use createDirectChannel API service for direct message channel creation"
  },
  {
    "id": "api.channel.create_channel.invalid_character.app_error",
    "translation": "Invalid character '__' in channel name for non-direct channel"
  },
  {
    "id": "api.channel.create_channel.max_channel_limit.app_error",
    "translation": "Cannot create more than {{.MaxChannelsPerTeam}} channels for current team"
  },
  {
    "id": "api.channel.create_default_channels.off_topic",
    "translation": "Off-Topic"
  },
  {
    "id": "api.channel.create_default_channels.town_square",
    "translation": "Town Square"
  },
  {
    "id": "api.channel.create_direct_channel.invalid_user.app_error",
    "translation": "Invalid user ID for direct channel creation"
  },
  {
    "id": "api.channel.create_group.bad_size.app_error",
    "translation": "Group message channels must contain at least 3 and no more than 8 users"
  },
  {
    "id": "api.channel.create_group.bad_user.app_error",
    "translation": "One of the provided users does not exist"
  },
  {
    "id": "api.channel.delete_channel.archived",
    "translation": "%v has archived the channel."
  },
  {
    "id": "api.channel.delete_channel.cannot.app_error",
    "translation": "Cannot delete the default channel {{.Channel}}"
  },
  {
    "id": "api.channel.delete_channel.deleted.app_error",
    "translation": "The channel has been archived or deleted"
  },
  {
    "id": "api.channel.delete_channel.failed_post.error",
    "translation": "Failed to post archive message %v"
  },
  {
    "id": "api.channel.delete_channel.failed_send.app_error",
    "translation": "Failed to send archive message"
  },
  {
    "id": "api.channel.delete_channel.incoming_webhook.error",
    "translation": "Encountered error deleting incoming webhook, id=%v"
  },
  {
    "id": "api.channel.delete_channel.outgoing_webhook.error",
    "translation": "Encountered error deleting outgoing webhook, id=%v"
  },
  {
    "id": "api.channel.delete_channel.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.channel.get_channel.wrong_team.app_error",
    "translation": "There is no channel with channel_id={{.ChannelId}} on team with team_id={{.TeamId}}"
  },
  {
    "id": "api.channel.get_channel_counts.app_error",
    "translation": "Unable to get channel counts from the database"
  },
  {
    "id": "api.channel.get_channel_extra_info.deleted.app_error",
    "translation": "The channel has been archived or deleted"
  },
  {
    "id": "api.channel.get_channel_extra_info.member_limit.app_error",
    "translation": "Failed to parse member limit"
  },
  {
    "id": "api.channel.get_channels.error",
    "translation": "Error in getting users profile for id=%v forcing logout"
  },
  {
    "id": "api.channel.init.debug",
    "translation": "Initializing channel API routes"
  },
  {
    "id": "api.channel.join_channel.already_deleted.app_error",
    "translation": "Channel is already deleted"
  },
  {
    "id": "api.channel.join_channel.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.channel.join_channel.post_and_forget",
    "translation": "%v has joined the channel."
  },
  {
    "id": "api.channel.leave.default.app_error",
    "translation": "Cannot leave the default channel {{.Channel}}"
  },
  {
    "id": "api.channel.leave.direct.app_error",
    "translation": "Cannot leave a direct message channel"
  },
  {
    "id": "api.channel.leave.last_member.app_error",
    "translation": "You're the only member left, try removing the Private Channel instead of leaving."
  },
  {
    "id": "api.channel.leave.left",
    "translation": "%v has left the channel."
  },
  {
    "id": "api.channel.post_update_channel_displayname_message_and_forget.create_post.error",
    "translation": "Failed to post displayname update message"
  },
  {
    "id": "api.channel.post_update_channel_displayname_message_and_forget.retrieve_user.error",
    "translation": "Failed to retrieve user while updating channel DisplayName field"
  },
  {
    "id": "api.channel.post_update_channel_displayname_message_and_forget.updated_from",
    "translation": "%s updated the channel display name from: %s to: %s"
  },
  {
    "id": "api.channel.post_update_channel_header_message_and_forget.post.error",
    "translation": "Failed to post update channel header message"
  },
  {
    "id": "api.channel.post_update_channel_header_message_and_forget.removed",
    "translation": "%s removed the channel header (was: %s)"
  },
  {
    "id": "api.channel.post_update_channel_header_message_and_forget.retrieve_user.error",
    "translation": "Failed to retrieve user while updating channel header"
  },
  {
    "id": "api.channel.post_update_channel_header_message_and_forget.updated_from",
    "translation": "%s updated the channel header from: %s to: %s"
  },
  {
    "id": "api.channel.post_update_channel_header_message_and_forget.updated_to",
    "translation": "%s updated the channel header to: %s"
  },
  {
    "id": "api.channel.post_user_add_remove_message_and_forget.error",
    "translation": "Failed to post join/leave message"
  },
  {
    "id": "api.channel.remove.default.app_error",
    "translation": "Cannot remove user from the default channel {{.Channel}}"
  },
  {
    "id": "api.channel.remove_member.permissions.app_error",
    "translation": "You do not have the appropriate permissions "
  },
  {
    "id": "api.channel.remove_member.removed",
    "translation": "%v was removed from the channel."
  },
  {
    "id": "api.channel.remove_member.unable.app_error",
    "translation": "Unable to remove user."
  },
  {
    "id": "api.channel.remove_member.user.app_error",
    "translation": "Failed to find user to be removed"
  },
  {
    "id": "api.channel.remove_user_from_channel.deleted.app_error",
    "translation": "The channel has been archived or deleted"
  },
  {
    "id": "api.channel.update_channel.deleted.app_error",
    "translation": "The channel has been archived or deleted"
  },
  {
    "id": "api.channel.update_channel.permission.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.channel.update_channel.tried.app_error",
    "translation": "Tried to perform an invalid update of the default channel {{.Channel}}"
  },
  {
    "id": "api.channel.update_last_viewed_at.get_unread_count_for_channel.error",
    "translation": "Unable to get the unread count for user_id=%v and channel_id=%v, err=%v"
  },
  {
    "id": "api.cluster.init.debug",
    "translation": "Initializing cluster API routes"
  },
  {
    "id": "api.command.admin_only.app_error",
    "translation": "Integrations have been limited to admins only."
  },
  {
    "id": "api.command.delete.app_error",
    "translation": "Invalid permissions to delete command"
  },
  {
    "id": "api.command.disabled.app_error",
    "translation": "Commands have been disabled by the system admin."
  },
  {
    "id": "api.command.duplicate_trigger.app_error",
    "translation": "This trigger word is already in use. Please choose another word."
  },
  {
    "id": "api.command.execute_command.debug",
    "translation": "Executing cmd=%v userId=%v"
  },
  {
    "id": "api.command.execute_command.failed.app_error",
    "translation": "Command with a trigger of '{{.Trigger}}' failed"
  },
  {
    "id": "api.command.execute_command.failed_empty.app_error",
    "translation": "Command with a trigger of '{{.Trigger}}' returned an empty response"
  },
  {
    "id": "api.command.execute_command.failed_resp.app_error",
    "translation": "Command with a trigger of '{{.Trigger}}' returned response {{.Status}}"
  },
  {
    "id": "api.command.execute_command.not_found.app_error",
    "translation": "Command with a trigger of '{{.Trigger}}' not found. To send a message beginning with \"/\", try adding an empty space at the beginning of the message."
  },
  {
    "id": "api.command.execute_command.save.app_error",
    "translation": "An error while saving the command response to the channel"
  },
  {
    "id": "api.command.execute_command.start.app_error",
    "translation": "No command trigger found"
  },
  {
    "id": "api.command.init.debug",
    "translation": "Initializing command API routes"
  },
  {
    "id": "api.command.invite_people.desc",
    "translation": "Send an email invite to your Mattermost team"
  },
  {
    "id": "api.command.invite_people.email_off",
    "translation": "Email has not been configured, no invite(s) sent"
  },
  {
    "id": "api.command.invite_people.fail",
    "translation": "Encountered an error sending email invite(s)"
  },
  {
    "id": "api.command.invite_people.hint",
    "translation": "[name@domain.com ...]"
  },
  {
    "id": "api.command.invite_people.invite_off",
    "translation": "User creation has been disabled on this server, no invite(s) sent"
  },
  {
    "id": "api.command.invite_people.name",
    "translation": "invite_people"
  },
  {
    "id": "api.command.invite_people.no_email",
    "translation": "Please specify one or more valid email addresses"
  },
  {
    "id": "api.command.invite_people.sent",
    "translation": "Email invite(s) sent"
  },
  {
    "id": "api.command.regen.app_error",
    "translation": "Invalid permissions to regenerate command token"
  },
  {
    "id": "api.command.team_mismatch.app_error",
    "translation": "Cannot update commands across teams"
  },
  {
    "id": "api.command.update.app_error",
    "translation": "Invalid permissions to update command"
  },
  {
    "id": "api.command_away.desc",
    "translation": "Set your status away"
  },
  {
    "id": "api.command_away.name",
    "translation": "away"
  },
  {
    "id": "api.command_away.success",
    "translation": "You are now away"
  },
  {
    "id": "api.command_channel_header.channel.app_error",
    "translation": "Error to retrieve the current channel."
  },
  {
    "id": "api.command_channel_header.desc",
    "translation": "Edit the channel header"
  },
  {
    "id": "api.command_channel_header.hint",
    "translation": "[text]"
  },
  {
    "id": "api.command_channel_header.message.app_error",
    "translation": "Text must be provided with the /header command."
  },
  {
    "id": "api.command_channel_header.name",
    "translation": "header"
  },
  {
    "id": "api.command_channel_header.permission.app_error",
    "translation": "You do not have the appropriate permissions to edit the channel header."
  },
  {
    "id": "api.command_channel_header.update_channel.app_error",
    "translation": "Error to update the current channel."
  },
  {
    "id": "api.command_channel_header.update_channel.success",
    "translation": "Channel header successfully updated."
  },
  {
    "id": "api.command_collapse.desc",
    "translation": "Turn on auto-collapsing of image previews"
  },
  {
    "id": "api.command_collapse.name",
    "translation": "collapse"
  },
  {
    "id": "api.command_collapse.success",
    "translation": "Image links now collapse by default"
  },
  {
    "id": "api.command_echo.create.app_error",
    "translation": "Unable to create /echo post, err=%v"
  },
  {
    "id": "api.command_echo.delay.app_error",
    "translation": "Delays must be under 10000 seconds"
  },
  {
    "id": "api.command_echo.desc",
    "translation": "Echo back text from your account"
  },
  {
    "id": "api.command_echo.high_volume.app_error",
    "translation": "High volume of echo request, cannot process request"
  },
  {
    "id": "api.command_echo.hint",
    "translation": "'message' [delay in seconds]"
  },
  {
    "id": "api.command_echo.message.app_error",
    "translation": "A message must be provided with the /echo command."
  },
  {
    "id": "api.command_echo.name",
    "translation": "echo"
  },
  {
    "id": "api.command_channel_purpose.name",
    "translation": "purpose"
  },
  {
    "id": "api.command_channel_purpose.hint",
    "translation": "[text]"
  },
  {
    "id": "api.command_channel_purpose.desc",
    "translation": "Edit the channel purpose"
  },
  {
    "id": "api.command_channel_purpose.channel.app_error",
    "translation": "Error to retrieve the current channel."
  },
  {
    "id": "api.command_channel_purpose.permission.app_error",
    "translation": "You do not have the appropriate permissions to edit the channel purpose."
  },
  {
    "id": "api.command_channel_purpose.direct_group.app_error",
    "translation": "Cannot set purpose for direct message channels. Use /header to set the header instead."
  },
  {
    "id": "api.command_channel_purpose.message.app_error",
    "translation": "A message must be provided with the /purpose command."
  },
  {
    "id": "api.command_channel_purpose.update_channel.app_error",
    "translation": "Error to update the current channel."
  },
  {
    "id": "api.command_expand.desc",
    "translation": "Turn off auto-collapsing of image previews"
  },
  {
    "id": "api.command_expand.name",
    "translation": "expand"
  },
  {
    "id": "api.command_expand.success",
    "translation": "Image links now expand by default"
  },
  {
    "id": "api.command_expand_collapse.fail.app_error",
    "translation": "An error occurred while expanding previews"
  },
  {
    "id": "api.command_help.desc",
    "translation": "Open the Mattermost help page"
  },
  {
    "id": "api.command_help.name",
    "translation": "help"
  },
  {
    "id": "api.command_join.desc",
    "translation": "Join the open channel"
  },
  {
    "id": "api.command_join.fail.app_error",
    "translation": "An error occurred while joining the channel."
  },
  {
    "id": "api.command_join.hint",
    "translation": "[channel-name]"
  },
  {
    "id": "api.command_join.list.app_error",
    "translation": "An error occurred while listing channels."
  },
  {
    "id": "api.command_join.missing.app_error",
    "translation": "We couldn't find the channel"
  },
  {
    "id": "api.command_join.name",
    "translation": "join"
  },
  {
    "id": "api.command_join.success",
    "translation": "Joined channel."
  },
  {
    "id": "api.command_logout.desc",
    "translation": "Logout of Mattermost"
  },
  {
    "id": "api.command_logout.fail_message",
    "translation": "Failed to log out"
  },
  {
    "id": "api.command_logout.name",
    "translation": "logout"
  },
  {
    "id": "api.command_me.desc",
    "translation": "Do an action"
  },
  {
    "id": "api.command_me.hint",
    "translation": "[message]"
  },
  {
    "id": "api.command_me.name",
    "translation": "me"
  },
  {
    "id": "api.command_msg.desc",
    "translation": "Send Direct Message to a user"
  },
  {
    "id": "api.command_msg.dm_fail.app_error",
    "translation": "An error occurred while creating the direct message."
  },
  {
    "id": "api.command_msg.fail.app_error",
    "translation": "An error occurred while messaging the user."
  },
  {
    "id": "api.command_msg.hint",
    "translation": "@[username] 'message'"
  },
  {
    "id": "api.command_msg.list.app_error",
    "translation": "An error occurred while listing users."
  },
  {
    "id": "api.command_msg.missing.app_error",
    "translation": "We couldn't find the user"
  },
  {
    "id": "api.command_msg.name",
    "translation": "message"
  },
  {
    "id": "api.command_msg.success",
    "translation": "Messaged user."
  },
  {
    "id": "api.command_offline.desc",
    "translation": "Set your status offline"
  },
  {
    "id": "api.command_offline.name",
    "translation": "offline"
  },
  {
    "id": "api.command_offline.success",
    "translation": "You are now offline"
  },
  {
    "id": "api.command_online.desc",
    "translation": "Set your status online"
  },
  {
    "id": "api.command_online.name",
    "translation": "online"
  },
  {
    "id": "api.command_online.success",
    "translation": "You are now online"
  },
  {
    "id": "api.command_open.name",
    "translation": "open"
  },
  {
    "id": "api.command_search.desc",
    "translation": "Search text in messages"
  },
  {
    "id": "api.command_search.hint",
    "translation": "[text]"
  },
  {
    "id": "api.command_search.name",
    "translation": "search"
  },
  {
    "id": "api.command_search.unsupported.app_error",
    "translation": "The search command is not supported on your device"
  },
  {
    "id": "api.command_settings.desc",
    "translation": "Open the Account Settings dialog"
  },
  {
    "id": "api.command_settings.name",
    "translation": "settings"
  },
  {
    "id": "api.command_settings.unsupported.app_error",
    "translation": "The settings command is not supported on your device"
  },
  {
    "id": "api.command_shortcuts.browser.channel_next",
    "translation": "{{.ChannelNextCmd}}: Next channel in your history\n"
  },
  {
    "id": "api.command_shortcuts.browser.channel_next.cmd",
    "translation": "ALT+RIGHT"
  },
  {
    "id": "api.command_shortcuts.browser.channel_next.cmd_mac",
    "translation": "CMD+]"
  },
  {
    "id": "api.command_shortcuts.browser.channel_prev",
    "translation": "{{.ChannelPrevCmd}}: Previous channel in your history\n"
  },
  {
    "id": "api.command_shortcuts.browser.channel_prev.cmd",
    "translation": "ALT+LEFT"
  },
  {
    "id": "api.command_shortcuts.browser.channel_prev.cmd_mac",
    "translation": "CMD+["
  },
  {
    "id": "api.command_shortcuts.browser.font_decrease",
    "translation": "{{.CmdOrCtrl}}+MINUS: Decrease font size (zoom out)\n"
  },
  {
    "id": "api.command_shortcuts.browser.font_increase",
    "translation": "{{.CmdOrCtrl}}+PLUS: Increase font size (zoom in)\n"
  },
  {
    "id": "api.command_shortcuts.browser.header",
    "translation": "#### Built-in Browser Commands\n\n"
  },
  {
    "id": "api.command_shortcuts.browser.highlight_next",
    "translation": "SHIFT+DOWN (in input field): Highlight text to the next line\n"
  },
  {
    "id": "api.command_shortcuts.browser.highlight_prev",
    "translation": "SHIFT+UP (in input field): Highlight text to the previous line\n"
  },
  {
    "id": "api.command_shortcuts.browser.newline",
    "translation": "SHIFT+ENTER (in input field): Create a new line\n"
  },
  {
    "id": "api.command_shortcuts.cmd",
    "translation": "CMD"
  },
  {
    "id": "api.command_shortcuts.ctrl",
    "translation": "CTRL"
  },
  {
    "id": "api.command_shortcuts.desc",
    "translation": "Displays a list of keyboard shortcuts"
  },
  {
    "id": "api.command_shortcuts.files.header",
    "translation": "#### Files\n\n"
  },
  {
    "id": "api.command_shortcuts.files.upload",
    "translation": "{{.CmdOrCtrl}}+U: Upload file(s)\n\n"
  },
  {
    "id": "api.command_shortcuts.header",
    "translation": "### Keyboard Shortcuts\n\n"
  },
  {
    "id": "api.command_shortcuts.msgs.comp_channel",
    "translation": "~[character]+TAB: Autocomplete channel beginning with [character]\n"
  },
  {
    "id": "api.command_shortcuts.msgs.comp_emoji",
    "translation": ":[character]+TAB: Autocomplete emoji beginning with [character]\n\n"
  },
  {
    "id": "api.command_shortcuts.msgs.comp_username",
    "translation": "@[character]+TAB: Autocomplete @username beginning with [character]\n"
  },
  {
    "id": "api.command_shortcuts.msgs.edit",
    "translation": "UP (in empty input field): Edit your last message in the current channel\n"
  },
  {
    "id": "api.command_shortcuts.msgs.header",
    "translation": "#### Messages\n\n"
  },
  {
    "id": "api.command_shortcuts.msgs.mark_as_read",
    "translation": "ESC: Mark all messages in the current channel as read\n"
  },
  {
    "id": "api.command_shortcuts.msgs.reply",
    "translation": "SHIFT+UP (in empty input field): Reply to the most recent message in the current channel\n"
  },
  {
    "id": "api.command_shortcuts.msgs.reprint_next",
    "translation": "{{.CmdOrCtrl}}+DOWN (in empty input field): Reprint the next message or slash command you entered\n"
  },
  {
    "id": "api.command_shortcuts.msgs.reprint_prev",
    "translation": "{{.CmdOrCtrl}}+UP (in empty input field): Reprint the previous message or slash command you entered\n"
  },
  {
    "id": "api.command_shortcuts.name",
    "translation": "shortcuts"
  },
  {
    "id": "api.command_shortcuts.nav.direct_messages_menu",
    "translation": "{{.CmdOrCtrl}}+SHIFT+K: Open direct messages menu\n"
  },
  {
    "id": "api.command_shortcuts.nav.header",
    "translation": "#### Navigation\n\n"
  },
  {
    "id": "api.command_shortcuts.nav.next",
    "translation": "ALT+DOWN: Next channel or direct message in left hand sidebar\n"
  },
  {
    "id": "api.command_shortcuts.nav.prev",
    "translation": "ALT+UP: Previous channel or direct message in left hand sidebar\n"
  },
  {
    "id": "api.command_shortcuts.nav.recent_mentions",
    "translation": "{{.CmdOrCtrl}}+SHIFT+M: Open recent mentions\n\n"
  },
  {
    "id": "api.command_shortcuts.nav.settings",
    "translation": "{{.CmdOrCtrl}}+SHIFT+A: Open account settings\n"
  },
  {
    "id": "api.command_shortcuts.nav.switcher",
    "translation": "{{.CmdOrCtrl}}+K: Open a quick channel switcher dialog\n"
  },
  {
    "id": "api.command_shortcuts.nav.switcher_team",
    "translation": "{{.CmdOrCtrl}}+ALT+K: Open a quick team switcher dialog\n"
  },
  {
    "id": "api.command_shortcuts.nav.unread_next",
    "translation": "ALT+SHIFT+DOWN: Next channel or direct message in left hand sidebar with unread messages\n"
  },
  {
    "id": "api.command_shortcuts.nav.unread_prev",
    "translation": "ALT+SHIFT+UP: Previous channel or direct message in left hand sidebar with unread messages\n"
  },
  {
    "id": "api.command_code.desc",
    "translation": "Display text as a code block"
  },
  {
    "id": "api.command_code.hint",
    "translation": "[text]"
  },
  {
    "id": "api.command_code.name",
    "translation": "code"
  },
  {
    "id": "api.command_code.message.app_error",
    "translation": "A message must be provided with the /code command."
  },
  {
    "id": "api.command_shrug.desc",
    "translation": "Adds ¯\\_(ツ)_/¯ to your message"
  },
  {
    "id": "api.command_shrug.hint",
    "translation": "[message]"
  },
  {
    "id": "api.command_shrug.name",
    "translation": "shrug"
  },
  {
    "id": "api.compliance.init.debug",
    "translation": "Initializing compliance API routes"
  },
  {
    "id": "api.config.client.old_format.app_error",
    "translation": "New format for the client configuration is not supported yet. Please specify format=old in the query string."
  },
  {
    "id": "api.context.404.app_error",
    "translation": "Sorry, we could not find the page."
  },
  {
    "id": "api.context.invalid_body_param.app_error",
    "translation": "Invalid or missing {{.Name}} in request body"
  },
  {
    "id": "api.context.invalid_param.app_error",
    "translation": "Invalid {{.Name}} parameter"
  },
  {
    "id": "api.context.invalid_session.error",
    "translation": "Invalid session err=%v"
  },
  {
    "id": "api.context.invalid_team_url.debug",
    "translation": "Team URL accessed when not valid. Team URL should not be used in API functions or those that are team independent"
  },
  {
    "id": "api.context.invalid_token.error",
    "translation": "Invalid session token={{.Token}}, err={{.Error}}"
  },
  {
    "id": "api.context.invalid_url_param.app_error",
    "translation": "Invalid or missing {{.Name}} parameter in request URL"
  },
  {
    "id": "api.context.invalidate_all_caches",
    "translation": "Purging all caches"
  },
  {
    "id": "api.context.last_activity_at.error",
    "translation": "Failed to update LastActivityAt for user_id=%v and session_id=%v, err=%v"
  },
  {
    "id": "api.context.log.error",
    "translation": "%v:%v code=%v rid=%v uid=%v ip=%v %v [details: %v]"
  },
  {
    "id": "api.context.mfa_required.app_error",
    "translation": "Multi-factor authentication is required on this server."
  },
  {
    "id": "api.context.missing_teamid.app_error",
    "translation": "Missing Team Id"
  },
  {
    "id": "api.context.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.context.session_expired.app_error",
    "translation": "Invalid or expired session, please login again."
  },
  {
    "id": "api.context.system_permissions.app_error",
    "translation": "You do not have the appropriate permissions (system)"
  },
  {
    "id": "api.context.token_provided.app_error",
    "translation": "Session is not OAuth but token was provided in the query string"
  },
  {
    "id": "api.context.unknown.app_error",
    "translation": "An unknown error has occurred. Please contact support."
  },
  {
    "id": "api.context.v3_disabled.app_error",
    "translation": "API version 3 has been disabled on this server. Please use API version 4. See https://api.mattermost.com for details."
  },
  {
    "id": "api.deprecated.init.debug",
    "translation": "Initializing deprecated API routes"
  },
  {
    "id": "api.email_batching.add_notification_email_to_batch.channel_full.app_error",
    "translation": "Email batching job's receiving channel was full. Please increase the EmailBatchingBufferSize."
  },
  {
    "id": "api.email_batching.add_notification_email_to_batch.disabled.app_error",
    "translation": "Email batching has been disabled by the system administrator"
  },
  {
    "id": "api.email_batching.check_pending_emails.finished_running",
    "translation": "Email batching job ran. %v user(s) still have notifications pending."
  },
  {
    "id": "api.email_batching.check_pending_emails.status.app_error",
    "translation": "Unable to find status of recipient for batched email notification"
  },
  {
    "id": "api.email_batching.render_batched_post.channel.app_error",
    "translation": "Unable to find channel of post for batched email notification"
  },
  {
    "id": "api.email_batching.render_batched_post.date",
    "translation": "{{.Hour}}:{{.Minute}} {{.Timezone}}, {{.Month}} {{.Day}}"
  },
  {
    "id": "api.email_batching.render_batched_post.direct_message",
    "translation": "Direct Message"
  },
  {
    "id": "api.email_batching.render_batched_post.go_to_post",
    "translation": "Go to Post"
  },
  {
    "id": "api.email_batching.render_batched_post.group_message",
    "translation": "Group Message"
  },
  {
    "id": "api.email_batching.render_batched_post.sender.app_error",
    "translation": "Unable to find sender of post for batched email notification"
  },
  {
    "id": "api.email_batching.send_batched_email_notification.body_text",
    "translation": {
      "one": "You have a new message.",
      "other": "You have {{.Count}} new messages."
    }
  },
  {
    "id": "api.email_batching.send_batched_email_notification.preferences.app_error",
    "translation": "Unable to find display preferences of recipient for batched email notification"
  },
  {
    "id": "api.email_batching.send_batched_email_notification.send.app_error",
    "translation": "Failed to send batched email notification to %v: %v"
  },
  {
    "id": "api.email_batching.send_batched_email_notification.subject",
    "translation": {
      "one": "[{{.SiteName}}] New Notification for {{.Month}} {{.Day}}, {{.Year}}",
      "other": "[{{.SiteName}}] New Notifications for {{.Month}} {{.Day}}, {{.Year}}"
    }
  },
  {
    "id": "api.email_batching.send_batched_email_notification.user.app_error",
    "translation": "Unable to find recipient for batched email notification"
  },
  {
    "id": "api.email_batching.start.starting",
    "translation": "Email batching job starting. Checking for pending emails every %v seconds."
  },
  {
    "id": "api.emoji.create.duplicate.app_error",
    "translation": "Unable to create emoji. Another emoji with the same name already exists."
  },
  {
    "id": "api.emoji.create.parse.app_error",
    "translation": "Unable to create emoji. Could not understand request."
  },
  {
    "id": "api.emoji.create.permissions.app_error",
    "translation": "Invalid permissions to create emoji."
  },
  {
    "id": "api.emoji.create.too_large.app_error",
    "translation": "Unable to create emoji. Image must be less than 1 MB in size."
  },
  {
    "id": "api.emoji.delete.delete_reactions.app_error",
    "translation": "Unable to delete reactions when deleting emoji with emoji name %v"
  },
  {
    "id": "api.emoji.delete.permissions.app_error",
    "translation": "Invalid permissions to delete emoji."
  },
  {
    "id": "api.emoji.disabled.app_error",
    "translation": "Custom emoji have been disabled by the system admin."
  },
  {
    "id": "api.emoji.get_image.decode.app_error",
    "translation": "Unable to decode image file for emoji."
  },
  {
    "id": "api.emoji.get_image.read.app_error",
    "translation": "Unable to read image file for emoji."
  },
  {
    "id": "api.emoji.init.debug",
    "translation": "Initializing emoji API routes"
  },
  {
    "id": "api.emoji.init.debug",
    "translation": "Initializing emoji API routes"
  },
  {
    "id": "api.emoji.storage.app_error",
    "translation": "File storage not configured properly. Please configure for either S3 or local server file storage."
  },
  {
    "id": "api.emoji.upload.image.app_error",
    "translation": "Unable to create emoji. File must be a PNG, JPEG, or GIF."
  },
  {
    "id": "api.emoji.upload.large_image.decode_error",
    "translation": "Unable to create emoji. An error occurred when trying to decode the image."
  },
  {
    "id": "api.emoji.upload.large_image.encode_error",
    "translation": "Unable to create emoji. An error occurred when trying to encode the image."
  },
  {
    "id": "api.emoji.upload.large_image.gif_decode_error",
    "translation": "Unable to create emoji. An error occurred when trying to decode the GIF image."
  },
  {
    "id": "api.emoji.upload.large_image.gif_encode_error",
    "translation": "Unable to create emoji. An error occurred when trying to encode the GIF image."
  },
  {
    "id": "api.file.attachments.disabled.app_error",
    "translation": "File attachments have been disabled on this server."
  },
  {
    "id": "api.file.get_file.public_disabled.app_error",
    "translation": "Public links have been disabled by the system administrator"
  },
  {
    "id": "api.file.get_file.public_invalid.app_error",
    "translation": "The public link does not appear to be valid"
  },
  {
    "id": "api.file.get_file_preview.no_preview.app_error",
    "translation": "File doesn't have a preview image"
  },
  {
    "id": "api.file.get_file_thumbnail.no_thumbnail.app_error",
    "translation": "File doesn't have a thumbnail image"
  },
  {
    "id": "api.file.get_info_for_request.no_post.app_error",
    "translation": "Unable to get info for file. File must be attached to a post that can be read by the current user."
  },
  {
    "id": "api.file.get_info_for_request.storage.app_error",
    "translation": "Unable to get info for file. File storage is not configured."
  },
  {
    "id": "api.file.get_public_file_old.storage.app_error",
    "translation": "Unable to get file. Image storage is not configured."
  },
  {
    "id": "api.file.get_public_file_old.storage.app_error",
    "translation": "Unable to get file. Image storage is not configured."
  },
  {
    "id": "api.file.get_public_link.disabled.app_error",
    "translation": "Public links have been disabled"
  },
  {
    "id": "api.file.get_public_link.no_post.app_error",
    "translation": "Unable to get public link for file. File must be attached to a post that can be read by the current user."
  },
  {
    "id": "api.file.handle_images_forget.decode.error",
    "translation": "Unable to decode image err=%v"
  },
  {
    "id": "api.file.handle_images_forget.encode_jpeg.error",
    "translation": "Unable to encode image as jpeg path=%v err=%v"
  },
  {
    "id": "api.file.handle_images_forget.encode_preview.error",
    "translation": "Unable to encode image as preview jpg path=%v err=%v"
  },
  {
    "id": "api.file.handle_images_forget.upload_preview.error",
    "translation": "Unable to upload preview path=%v err=%v"
  },
  {
    "id": "api.file.handle_images_forget.upload_thumb.error",
    "translation": "Unable to upload thumbnail path=%v err=%v"
  },
  {
    "id": "api.file.init.debug",
    "translation": "Initializing file API routes"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.channel.app_error",
    "translation": "Unable to get channel when migrating post to use FileInfos, post_id=%v, channel_id=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.file_not_found.warn",
    "translation": "Unable to find file when migrating post to use FileInfos, post_id=%v, filename=%v, path=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.get_file_infos_again.warn",
    "translation": "Unable to get FileInfos for post after migration, post_id=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.get_post_again.warn",
    "translation": "Unable to get post when migrating to use FileInfos, post_id=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.info.app_error",
    "translation": "Unable to fully decode file info when migrating post to use FileInfos, post_id=%v, filename=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.migrating_post.debug",
    "translation": "Migrating post to use FileInfos, post_id=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.mismatched_filename.warn",
    "translation": "Found an unusual filename when migrating post to use FileInfos, post_id=%v, channel_id=%v, user_id=%v, filename=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.no_filenames.warn",
    "translation": "Unable to migrate post to use FileInfos with an empty Filenames field, post_id=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.not_migrating_post.debug",
    "translation": "Post already migrated to use FileInfos, post_id=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.save_file_info.warn",
    "translation": "Unable to save post when migrating post to use FileInfos, post_id=%v, file_id=%v, path=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.save_post.warn",
    "translation": "Unable to save file info when migrating post to use FileInfos, post_id=%v, file_id=%v, filename=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.team_id.app_error",
    "translation": "Unable to find team for FileInfos, post_id=%v, filenames=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.teams.app_error",
    "translation": "Unable to get teams when migrating post to use FileInfos, post_id=%v, err=%v"
  },
  {
    "id": "api.file.migrate_filenames_to_file_infos.unexpected_filename.error",
    "translation": "Unable to decipher filename when migrating post to use FileInfos, post_id=%v, filename=%v"
  },
  {
    "id": "api.file.move_file.configured.app_error",
    "translation": "File storage not configured properly. Please configure for either S3 or local server file storage."
  },
  {
    "id": "api.file.move_file.delete_from_s3.app_error",
    "translation": "Unable to delete file from S3."
  },
  {
    "id": "api.file.move_file.get_from_s3.app_error",
    "translation": "Unable to get file from S3."
  },
  {
    "id": "api.file.move_file.rename.app_error",
    "translation": "Unable to move file locally."
  },
  {
    "id": "api.file.open_file_write_stream.configured.app_error",
    "translation": "File storage not configured properly. Please configure for either S3 or local server file storage."
  },
  {
    "id": "api.file.open_file_write_stream.creating_dir.app_error",
    "translation": "Encountered an error creating the directory for the new file"
  },
  {
    "id": "api.file.open_file_write_stream.local_server.app_error",
    "translation": "Encountered an error writing to local server storage"
  },
  {
    "id": "api.file.open_file_write_stream.s3.app_error",
    "translation": "S3 is not supported."
  },
  {
    "id": "api.file.read_file.configured.app_error",
    "translation": "File storage not configured properly. Please configure for either S3 or local server file storage."
  },
  {
    "id": "api.file.read_file.get.app_error",
    "translation": "Unable to get file from S3"
  },
  {
    "id": "api.file.read_file.reading_local.app_error",
    "translation": "Encountered an error reading from local server storage"
  },
  {
    "id": "api.file.upload_file.bad_parse.app_error",
    "translation": "Unable to upload file. Header cannot be parsed."
  },
  {
    "id": "api.file.upload_file.large_image.app_error",
    "translation": "File above maximum dimensions could not be uploaded: {{.Filename}}"
  },
  {
    "id": "api.file.upload_file.storage.app_error",
    "translation": "Unable to upload file. Image storage is not configured."
  },
  {
    "id": "api.file.upload_file.too_large.app_error",
    "translation": "Unable to upload file. File is too large."
  },
  {
    "id": "api.file.write_file.configured.app_error",
    "translation": "File storage not configured properly. Please configure for either S3 or local server file storage."
  },
  {
    "id": "api.file.write_file.s3.app_error",
    "translation": "Encountered an error writing to S3"
  },
  {
    "id": "api.file.write_file_locally.create_dir.app_error",
    "translation": "Encountered an error creating the directory for the new file"
  },
  {
    "id": "api.file.write_file_locally.writing.app_error",
    "translation": "Encountered an error writing to local server storage"
  },
  {
    "id": "api.general.init.debug",
    "translation": "Initializing general API routes"
  },
  {
    "id": "api.import.import_post.attach_files.error",
    "translation": "Error attaching files to post. postId=%v, fileIds=%v, message=%v"
  },
  {
    "id": "api.import.import_post.saving.debug",
    "translation": "Error saving post. user=%v, message=%v"
  },
  {
    "id": "api.import.import_user.join_team.error",
    "translation": "Failed to join team when importing err=%v"
  },
  {
    "id": "api.import.import_user.joining_default.error",
    "translation": "Encountered an issue joining default channels user_id=%s, team_id=%s, err=%v"
  },
  {
    "id": "api.import.import_user.saving.error",
    "translation": "Error saving user. err=%v"
  },
  {
    "id": "api.import.import_user.set_email.error",
    "translation": "Failed to set email verified err=%v"
  },
  {
    "id": "api.incoming_webhook.disabled.app_errror",
    "translation": "Incoming webhooks have been disabled by the system admin."
  },
  {
    "id": "api.ldap.init.debug",
    "translation": "Initializing LDAP API routes"
  },
  {
    "id": "api.license.add_license.array.app_error",
    "translation": "Empty array under 'license' in request"
  },
  {
    "id": "api.license.add_license.expired.app_error",
    "translation": "License is either expired or has not yet started."
  },
  {
    "id": "api.license.add_license.invalid.app_error",
    "translation": "Invalid license file."
  },
  {
    "id": "api.license.add_license.invalid_count.app_error",
    "translation": "Unable to count total unique users."
  },
  {
    "id": "api.license.add_license.no_file.app_error",
    "translation": "No file under 'license' in request"
  },
  {
    "id": "api.license.add_license.open.app_error",
    "translation": "Could not open license file"
  },
  {
    "id": "api.license.add_license.save.app_error",
    "translation": "License did not save properly."
  },
  {
    "id": "api.license.add_license.save_active.app_error",
    "translation": "Active license ID did not save properly."
  },
  {
    "id": "api.license.add_license.unique_users.app_error",
    "translation": "This license only supports {{.Users}} users, when your system has {{.Count}} unique users. Unique users are counted distinctly by email address. You can see total user count under Site Reports -> View Statistics."
  },
  {
    "id": "api.license.client.old_format.app_error",
    "translation": "New format for the client license is not supported yet. Please specify format=old in the query string."
  },
  {
    "id": "api.license.init.debug",
    "translation": "Initializing license API routes"
  },
  {
    "id": "api.license.remove_license.remove.app_error",
    "translation": "License did not remove properly."
  },
  {
    "id": "api.oauth.allow_oauth.bad_client.app_error",
    "translation": "invalid_request: Bad client_id"
  },
  {
    "id": "api.oauth.allow_oauth.bad_redirect.app_error",
    "translation": "invalid_request: Missing or bad redirect_uri"
  },
  {
    "id": "api.oauth.allow_oauth.bad_response.app_error",
    "translation": "invalid_request: Bad response_type"
  },
  {
    "id": "api.oauth.allow_oauth.database.app_error",
    "translation": "server_error: Error accessing the database"
  },
  {
    "id": "api.oauth.allow_oauth.redirect_callback.app_error",
    "translation": "invalid_request: Supplied redirect_uri did not match registered callback_url"
  },
  {
    "id": "api.oauth.allow_oauth.turn_off.app_error",
    "translation": "The system admin has turned off OAuth2 Service Provider."
  },
  {
    "id": "api.oauth.authorize_oauth.disabled.app_error",
    "translation": "The system admin has turned off OAuth2 Service Provider."
  },
  {
    "id": "api.oauth.authorize_oauth.missing.app_error",
    "translation": "Missing one or more of response_type, client_id, or redirect_uri"
  },
  {
    "id": "api.oauth.complete_oauth.missing_code.app_error",
    "translation": "The service provider {{.service}} did not provide an authorization code in the redirect URL.\n\nFor [Google Apps](https://docs.mattermost.com/deployment/sso-google.html) make sure your administrator enabled the Google+ API.\n\nFor [Office 365](https://docs.mattermost.com/deployment/sso-office.html) make sure the administrator of your Microsoft organization has enabled the Mattermost app.\n\nFor [GitLab](https://docs.mattermost.com/deployment/sso-gitlab.html) please make sure you followed the setup instructions.\n\nIf you reviewed the above and are still having trouble with configuration, you may post in our [Troubleshooting forum](https://forum.mattermost.org/c/general/trouble-shoot) where we'll be happy to help with issues during setup."
  },
  {
    "id": "api.oauth.delete.permissions.app_error",
    "translation": "Invalid permissions to delete the OAuth2 App"
  },
  {
    "id": "api.oauth.get_access_token.bad_client_id.app_error",
    "translation": "invalid_request: Bad client_id"
  },
  {
    "id": "api.oauth.get_access_token.bad_client_secret.app_error",
    "translation": "invalid_request: Missing client_secret"
  },
  {
    "id": "api.oauth.get_access_token.bad_grant.app_error",
    "translation": "invalid_request: Bad grant_type"
  },
  {
    "id": "api.oauth.get_access_token.credentials.app_error",
    "translation": "invalid_client: Invalid client credentials"
  },
  {
    "id": "api.oauth.get_access_token.disabled.app_error",
    "translation": "The system admin has turned off OAuth2 Service Provider."
  },
  {
    "id": "api.oauth.get_access_token.expired_code.app_error",
    "translation": "invalid_grant: Invalid or expired authorization code"
  },
  {
    "id": "api.oauth.get_access_token.internal.app_error",
    "translation": "server_error: Encountered internal server error while accessing database"
  },
  {
    "id": "api.oauth.get_access_token.internal_saving.app_error",
    "translation": "server_error: Encountered internal server error while saving access token to database"
  },
  {
    "id": "api.oauth.get_access_token.internal_session.app_error",
    "translation": "server_error: Encountered internal server error while saving session to database"
  },
  {
    "id": "api.oauth.get_access_token.internal_user.app_error",
    "translation": "server_error: Encountered internal server error while pulling user from database"
  },
  {
    "id": "api.oauth.get_access_token.missing_code.app_error",
    "translation": "invalid_request: Missing code"
  },
  {
    "id": "api.oauth.get_access_token.missing_refresh_token.app_error",
    "translation": "invalid_request: Missing refresh_token"
  },
  {
    "id": "api.oauth.get_access_token.redirect_uri.app_error",
    "translation": "invalid_request: Supplied redirect_uri does not match authorization code redirect_uri"
  },
  {
    "id": "api.oauth.get_access_token.refresh_token.app_error",
    "translation": "invalid_grant: Invalid refresh token"
  },
  {
    "id": "api.oauth.get_auth_data.find.error",
    "translation": "Couldn't find auth code for code=%s"
  },
  {
    "id": "api.oauth.init.debug",
    "translation": "Initializing OAuth API routes"
  },
  {
    "id": "api.oauth.invalid_state_token.app_error",
    "translation": "Invalid state token"
  },
  {
    "id": "api.oauth.regenerate_secret.app_error",
    "translation": "Invalid permissions to regenerate the OAuth2 App Secret"
  },
  {
    "id": "api.oauth.register_oauth_app.turn_off.app_error",
    "translation": "The system admin has turned off OAuth2 Service Provider."
  },
  {
    "id": "api.oauth.revoke_access_token.del_session.app_error",
    "translation": "Error deleting session from DB"
  },
  {
    "id": "api.oauth.revoke_access_token.del_token.app_error",
    "translation": "Error deleting access token from DB"
  },
  {
    "id": "api.oauth.revoke_access_token.get.app_error",
    "translation": "Error getting access token from DB before deletion"
  },
  {
    "id": "api.oauth.singup_with_oauth.disabled.app_error",
    "translation": "User sign-up is disabled."
  },
  {
    "id": "api.oauth.singup_with_oauth.expired_link.app_error",
    "translation": "The signup link has expired"
  },
  {
    "id": "api.oauth.singup_with_oauth.invalid_link.app_error",
    "translation": "The signup link does not appear to be valid"
  },
  {
    "id": "api.opengraph.init.debug",
    "translation": "Initializing open graph protocol api routes"
  },
  {
    "id": "api.post.check_for_out_of_channel_mentions.message.multiple",
    "translation": "{{.Usernames}} and {{.LastUsername}} were mentioned, but they did not receive notifications because they do not belong to this channel."
  },
  {
    "id": "api.post.check_for_out_of_channel_mentions.message.one",
    "translation": "{{.Username}} was mentioned, but they did not receive a notification because they do not belong to this channel."
  },
  {
    "id": "api.post.create_post.attach_files.error",
    "translation": "Encountered error attaching files to post, post_id=%s, user_id=%s, file_ids=%v, err=%v"
  },
  {
    "id": "api.post.create_post.bad_filename.error",
    "translation": "Bad filename discarded, filename=%v"
  },
  {
    "id": "api.post.create_post.can_not_post_to_deleted.error",
    "translation": "Can not post to deleted channel."
  },
  {
    "id": "api.post.create_post.channel_root_id.app_error",
    "translation": "Invalid ChannelId for RootId parameter"
  },
  {
    "id": "api.post.create_post.last_viewed.error",
    "translation": "Encountered error updating last viewed, channel_id=%s, user_id=%s, err=%v"
  },
  {
    "id": "api.post.create_post.parent_id.app_error",
    "translation": "Invalid ParentId parameter"
  },
  {
    "id": "api.post.create_post.root_id.app_error",
    "translation": "Invalid RootId parameter"
  },
  {
    "id": "api.post.create_webhook_post.creating.app_error",
    "translation": "Error creating post"
  },
  {
    "id": "api.post.delete_flagged_post.app_error.warn",
    "translation": "Unable to delete flagged post preference when deleting post, err=%v"
  },
  {
    "id": "api.post.delete_post.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.post.delete_post_files.app_error.warn",
    "translation": "Encountered error when deleting files for post, post_id=%v, err=%v"
  },
  {
    "id": "api.post.disabled_all",
    "translation": "@all has been disabled because the channel has more than {{.Users}} users."
  },
  {
    "id": "api.post.disabled_channel",
    "translation": "@channel has been disabled because the channel has more than {{.Users}} users."
  },
  {
    "id": "api.post.disabled_here",
    "translation": "@here has been disabled because the channel has more than {{.Users}} users."
  },
  {
    "id": "api.post.get_message_for_notification.files_sent",
    "translation": {
      "one": "{{.Count}} file sent: {{.Filenames}}",
      "other": "{{.Count}} files sent: {{.Filenames}}"
    }
  },
  {
    "id": "api.post.get_message_for_notification.get_files.error",
    "translation": "Encountered error when getting files for notification message, post_id=%v, err=%v"
  },
  {
    "id": "api.post.get_message_for_notification.images_sent",
    "translation": {
      "one": "{{.Count}} image sent: {{.Filenames}}",
      "other": "{{.Count}} images sent: {{.Filenames}}"
    }
  },
  {
    "id": "api.post.get_out_of_channel_mentions.regex.error",
    "translation": "Failed to compile @mention regex user_id=%v, err=%v"
  },
  {
    "id": "api.post.get_post.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.post.handle_post_events_and_forget.members.error",
    "translation": "Failed to get channel members channel_id=%v err=%v"
  },
  {
    "id": "api.post.handle_webhook_events_and_forget.create_post.error",
    "translation": "Failed to create response post, err=%v"
  },
  {
    "id": "api.post.handle_webhook_events_and_forget.event_post.error",
    "translation": "Event POST failed, err=%s"
  },
  {
    "id": "api.post.init.debug",
    "translation": "Initializing post API routes"
  },
  {
    "id": "api.post.link_preview_disabled.app_error",
    "translation": "Link previews have been disabled by the system administrator."
  },
  {
    "id": "api.post.make_direct_channel_visible.get_2_members.error",
    "translation": "Failed to get 2 members for a direct channel channel_id={{.ChannelId}}"
  },
  {
    "id": "api.post.make_direct_channel_visible.get_members.error",
    "translation": "Failed to get channel members channel_id=%v err=%v"
  },
  {
    "id": "api.post.make_direct_channel_visible.save_pref.error",
    "translation": "Failed to save direct channel preference user_id=%v other_user_id=%v err=%v"
  },
  {
    "id": "api.post.make_direct_channel_visible.update_pref.error",
    "translation": "Failed to update direct channel preference user_id=%v other_user_id=%v err=%v"
  },
  {
    "id": "api.post.notification.member_profile.warn",
    "translation": "Unable to get profile for channel member, user_id=%v"
  },
  {
    "id": "api.post.send_notifications.user_id.debug",
    "translation": "Post creator not in channel for the post, no notification sent post_id=%v channel_id=%v user_id=%v"
  },
  {
    "id": "api.post.send_notifications_and_forget.clear_push_notification.debug",
    "translation": "Clearing push notification to %v with channel_id %v"
  },
  {
    "id": "api.post.send_notifications_and_forget.files.error",
    "translation": "Failed to get files for post notification post_id=%v, err=%v"
  },
  {
    "id": "api.post.send_notifications_and_forget.get_teams.error",
    "translation": "Failed to get teams when sending cross-team DM user_id=%v, err=%v"
  },
  {
    "id": "api.post.send_notifications_and_forget.mention_body",
    "translation": "You have one new mention."
  },
  {
    "id": "api.post.send_notifications_and_forget.mention_subject",
    "translation": "New Mention"
  },
  {
    "id": "api.post.send_notifications_and_forget.message_body",
    "translation": "You have one new message."
  },
  {
    "id": "api.post.send_notifications_and_forget.message_subject",
    "translation": "New Direct Message"
  },
  {
    "id": "api.post.send_notifications_and_forget.push_image_only",
    "translation": " Uploaded one or more files in "
  },
  {
    "id": "api.post.send_notifications_and_forget.push_image_only_dm",
    "translation": " Uploaded one or more files in a direct message"
  },
  {
    "id": "api.post.send_notifications_and_forget.push_in",
    "translation": " in "
  },
  {
    "id": "api.post.send_notifications_and_forget.push_mention",
    "translation": " mentioned you in "
  },
  {
    "id": "api.post.send_notifications_and_forget.push_message",
    "translation": " sent you a direct message"
  },
  {
    "id": "api.post.send_notifications_and_forget.push_non_mention",
    "translation": " posted in "
  },
  {
    "id": "api.post.send_notifications_and_forget.push_notification.error",
    "translation": "Failed to send push device_id={{.DeviceId}}, err={{.Error}}"
  },
  {
    "id": "api.post.send_notifications_and_forget.sent",
    "translation": "{{.Prefix}} {{.Filenames}} sent"
  },
  {
    "id": "api.post.update_mention_count_and_forget.update_error",
    "translation": "Failed to update mention count, post_id=%v channel_id=%v err=%v"
  },
  {
    "id": "api.post.update_post.find.app_error",
    "translation": "We couldn't find the existing post or comment to update."
  },
  {
    "id": "api.post.update_post.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.post.update_post.permissions_denied.app_error",
    "translation": "Post edit has been disabled. Please ask your systems administrator for details."
  },
  {
    "id": "api.post.update_post.permissions_details.app_error",
    "translation": "Already deleted id={{.PostId}}"
  },
  {
    "id": "api.post.update_post.permissions_time_limit.app_error",
    "translation": "Post edit is only allowed for {{.timeLimit}} seconds. Please ask your systems administrator for details."
  },
  {
    "id": "api.post.update_post.system_message.app_error",
    "translation": "Unable to update system message"
  },
  {
    "id": "api.post_get_post_by_id.get.app_error",
    "translation": "Unable to get post"
  },
  {
    "id": "api.preference.delete_preferences.decode.app_error",
    "translation": "Unable to decode preferences from request"
  },
  {
    "id": "api.preference.delete_preferences.user_id.app_error",
    "translation": "Unable to delete preferences for other user"
  },
  {
    "id": "api.preference.init.debug",
    "translation": "Initializing preference API routes"
  },
  {
    "id": "api.preference.save_preferences.decode.app_error",
    "translation": "Unable to decode preferences from request"
  },
  {
    "id": "api.preference.save_preferences.set.app_error",
    "translation": "Unable to set preferences for other user"
  },
  {
    "id": "api.reaction.delete_reaction.mismatched_channel_id.app_error",
    "translation": "Failed to delete reaction because channel ID does not match post ID in the URL"
  },
  {
    "id": "api.reaction.init.debug",
    "translation": "Initializing reactions api routes"
  },
  {
    "id": "api.reaction.list_reactions.mismatched_channel_id.app_error",
    "translation": "Failed to get reactions because channel ID does not match post ID in the URL"
  },
  {
    "id": "api.reaction.save_reaction.invalid.app_error",
    "translation": "Reaction is not valid."
  },
  {
    "id": "api.reaction.save_reaction.mismatched_channel_id.app_error",
    "translation": "Failed to save reaction because channel ID does not match post ID in the URL"
  },
  {
    "id": "api.reaction.save_reaction.user_id.app_error",
    "translation": "You cannot save reaction for the other user."
  },
  {
    "id": "api.reaction.send_reaction_event.post.app_error",
    "translation": "Failed to get post when sending websocket event for reaction"
  },
  {
    "id": "api.saml.save_certificate.app_error",
    "translation": "Certificate did not save properly."
  },
  {
    "id": "api.server.new_server.init.info",
    "translation": "Server is initializing..."
  },
  {
    "id": "api.server.start_server.listening.info",
    "translation": "Server is listening on %v"
  },
  {
    "id": "api.server.start_server.rate.info",
    "translation": "RateLimiter is enabled"
  },
  {
    "id": "api.server.start_server.rate.warn",
    "translation": "RateLimitSettings not configured properly using VaryByHeader and disabling VaryByRemoteAddr"
  },
  {
    "id": "api.server.start_server.rate_limiting_memory_store",
    "translation": "Unable to initialize rate limiting memory store. Check MemoryStoreSize config setting."
  },
  {
    "id": "api.server.start_server.rate_limiting_rate_limiter",
    "translation": "Unable to initialize rate limiting."
  },
  {
    "id": "api.server.start_server.starting.critical",
    "translation": "Error starting server, err:%v"
  },
  {
    "id": "api.server.start_server.starting.info",
    "translation": "Starting Server..."
  },
  {
    "id": "api.server.start_server.starting.panic",
    "translation": "Error starting server "
  },
  {
    "id": "api.server.stop_server.stopped.info",
    "translation": "Server stopped"
  },
  {
    "id": "api.server.stop_server.stopping.info",
    "translation": "Stopping Server..."
  },
  {
    "id": "api.slackimport.slack_add_bot_user.email_pwd",
    "translation": "Slack Bot/Integration Posts Import User: Email, Password: {{.Email}}, {{.Password}}\r\n"
  },
  {
    "id": "api.slackimport.slack_add_bot_user.unable_import",
    "translation": "Unable to import Slack Bot/Integration Posts Import User: {{.Username}}\r\n"
  },
  {
    "id": "api.slackimport.slack_add_channels.added",
    "translation": "\r\n Channels Added \r\n"
  },
  {
    "id": "api.slackimport.slack_add_channels.failed_to_add_user",
    "translation": "Failed to add user to channel: {{.Username}}\r\n"
  },
  {
    "id": "api.slackimport.slack_add_channels.import_failed",
    "translation": "Failed to import: {{.DisplayName}}\r\n"
  },
  {
    "id": "api.slackimport.slack_add_channels.import_failed.warn",
    "translation": "Slack Importer: Failed to import channel: %s"
  },
  {
    "id": "api.slackimport.slack_add_channels.merge",
    "translation": "Merged with existing channel: {{.DisplayName}}\r\n"
  },
  {
    "id": "api.slackimport.slack_add_posts.attach_files.error",
    "translation": "Encountered error attaching files to post, post_id=%s, file_ids=%v, err=%v"
  },
  {
    "id": "api.slackimport.slack_add_posts.bot.warn",
    "translation": "Slack bot posts are not imported yet"
  },
  {
    "id": "api.slackimport.slack_add_posts.bot_user_no_exists.warn",
    "translation": "Slack Importer: Not importing bot message as the bot-importing user does not exist."
  },
  {
    "id": "api.slackimport.slack_add_posts.msg_no_comment.debug",
    "translation": "File comment undefined"
  },
  {
    "id": "api.slackimport.slack_add_posts.msg_no_usr.debug",
    "translation": "Message without user"
  },
  {
    "id": "api.slackimport.slack_add_posts.no_bot_id.warn",
    "translation": "Slack Importer: Not importing bot message due to lack of BotId field."
  },
  {
    "id": "api.slackimport.slack_add_posts.unsupported.warn",
    "translation": "Unsupported post type: %v, %v"
  },
  {
    "id": "api.slackimport.slack_add_posts.upload_file_not_found.warn",
    "translation": "No file found in Slack export for file upload message with file ID {{.FileId}}"
  },
  {
    "id": "api.slackimport.slack_add_posts.upload_file_not_in_json.warn",
    "translation": "Cannot import file for upload post with no \"file\" section present in export."
  },
  {
    "id": "api.slackimport.slack_add_posts.upload_file_open_failed.warn",
    "translation": "Could not open the upload file with ID {{.FileId}} in the export archive with error: {{.Error}}"
  },
  {
    "id": "api.slackimport.slack_add_posts.upload_file_upload_failed.warn",
    "translation": "Uploading the file for upload message with file ID {{.FileId}} failed with error: {{.Error}}"
  },
  {
    "id": "api.slackimport.slack_add_posts.user_no_exists.debug",
    "translation": "User: %v does not exist!"
  },
  {
    "id": "api.slackimport.slack_add_posts.without_user.debug",
    "translation": "Message without user"
  },
  {
    "id": "api.slackimport.slack_add_users.created",
    "translation": "\r\n Users Created\r\n"
  },
  {
    "id": "api.slackimport.slack_add_users.email_pwd",
    "translation": "Email, Password: {{.Email}}, {{.Password}}\r\n"
  },
  {
    "id": "api.slackimport.slack_add_users.merge_existing",
    "translation": "Merged user with existing account: {{.Email}}, {{.Username}}\r\n"
  },
  {
    "id": "api.slackimport.slack_add_users.merge_existing_failed",
    "translation": "Tried to merge user with existing account: {{.Email}}, {{.Username}}, but failed to add the user to this team.\r\n"
  },
  {
    "id": "api.slackimport.slack_add_users.missing_email_address",
    "translation": "User {{.Username}} does not have an email address in the Slack export. Using {{.Email}} as a placeholder. The user should update their email address once logged in to the system.\r\n"
  },
  {
    "id": "api.slackimport.slack_add_users.missing_email_address.warn",
    "translation": "User {{.Username}} does not have an email address in the Slack export. Using {{.Email}} as a placeholder. The user should update their email address once logged in to the system."
  },
  {
    "id": "api.slackimport.slack_add_users.unable_import",
    "translation": "Unable to import user: {{.Username}}\r\n"
  },
  {
    "id": "api.slackimport.slack_convert_channel_mentions.compile_regexp_failed.warn",
    "translation": "Failed to compile the !channel matching regular expression for Slack channel {{.ChannelID}} {{.ChannelName}}"
  },
  {
    "id": "api.slackimport.slack_convert_timestamp.bad.warn",
    "translation": "Bad timestamp detected"
  },
  {
    "id": "api.slackimport.slack_convert_user_mentions.compile_regexp_failed.warn",
    "translation": "Failed to compile the @mention matching regular expression for Slack user {{.UserID}} {{.Username}}"
  },
  {
    "id": "api.slackimport.slack_deactivate_bot_user.failed_to_deactivate",
    "translation": "Slack Importer: Failed to deactivate the bot-importing user."
  },
  {
    "id": "api.slackimport.slack_import.log",
    "translation": "Mattermost Slack Import Log\r\n"
  },
  {
    "id": "api.slackimport.slack_import.note1",
    "translation": "- Some posts may not have been imported because they where not supported by this importer.\r\n"
  },
  {
    "id": "api.slackimport.slack_import.note2",
    "translation": "- Slack bot posts are currently not supported.\r\n"
  },
  {
    "id": "api.slackimport.slack_import.note3",
    "translation": "- Additional errors may be found in the server logs.\r\n"
  },
  {
    "id": "api.slackimport.slack_import.notes",
    "translation": "\r\n Notes \r\n"
  },
  {
    "id": "api.slackimport.slack_import.open.app_error",
    "translation": "Unable to open: {{.Filename}}"
  },
  {
    "id": "api.slackimport.slack_import.team_fail",
    "translation": "Failed to get team to import into.\r\n"
  },
  {
    "id": "api.slackimport.slack_import.zip.app_error",
    "translation": "Unable to open zip file"
  },
  {
    "id": "api.slackimport.slack_parse_channels.error",
    "translation": "Error parsing slack channels. Import may work anyway."
  },
  {
    "id": "api.slackimport.slack_parse_posts.error",
    "translation": "Error parsing some slack posts. Import may work anyway."
  },
  {
    "id": "api.slackimport.slack_sanitise_channel_properties.display_name_too_long.warn",
    "translation": "Slack Importer: Channel {{.ChannelName}} has a display name which is too long. It will be truncated when imported."
  },
  {
    "id": "api.slackimport.slack_sanitise_channel_properties.header_too_long.warn",
    "translation": "Slack Importer: Channel {{.ChannelName}} has a header which is too long. It will be truncated when imported."
  },
  {
    "id": "api.slackimport.slack_sanitise_channel_properties.name_too_long.warn",
    "translation": "Slack Importer: Channel {{.ChannelName}} has a name which is too long. It will be truncated when imported."
  },
  {
    "id": "api.slackimport.slack_sanitise_channel_properties.purpose_too_long.warn",
    "translation": "Slack Importer: Channel {{.ChannelName}} has a purpose which is too long. It will be truncated when imported."
  },
  {
    "id": "api.status.init.debug",
    "translation": "Initializing status API routes"
  },
  {
    "id": "api.status.init.debug",
    "translation": "Initializing status API routes"
  },
  {
    "id": "api.status.last_activity.error",
    "translation": "Failed to update LastActivityAt for user_id=%v and session_id=%v, err=%v"
  },
  {
    "id": "api.status.save_status.error",
    "translation": "Failed to save status for user_id=%v, err=%v"
  },
  {
    "id": "api.status.user_not_found.app_error",
    "translation": "User not found"
  },
  {
    "id": "api.system.go_routines",
    "translation": "The number of running goroutines is over the health threshold %v of %v"
  },
  {
    "id": "api.team.add_user_to_team.missing_parameter.app_error",
    "translation": "Parameter required to add user to team."
  },
  {
    "id": "api.team.create_team.email_disabled.app_error",
    "translation": "Team sign-up with email is disabled."
  },
  {
    "id": "api.team.create_team_from_signup.email_disabled.app_error",
    "translation": "Team sign-up with email is disabled."
  },
  {
    "id": "api.team.create_team_from_signup.expired_link.app_error",
    "translation": "The signup link has expired"
  },
  {
    "id": "api.team.create_team_from_signup.invalid_link.app_error",
    "translation": "The signup link does not appear to be valid"
  },
  {
    "id": "api.team.create_team_from_signup.unavailable.app_error",
    "translation": "This URL is unavailable. Please try another."
  },
  {
    "id": "api.team.email_teams.sending.error",
    "translation": "An error occurred while sending an email in emailTeams err=%v"
  },
  {
    "id": "api.team.get_invite_info.not_open_team",
    "translation": "Invite is invalid because this is not an open team."
  },
  {
    "id": "api.team.import_team.admin.app_error",
    "translation": "Only a team admin can import data."
  },
  {
    "id": "api.team.import_team.array.app_error",
    "translation": "Empty array under 'file' in request"
  },
  {
    "id": "api.team.import_team.integer.app_error",
    "translation": "Filesize not an integer"
  },
  {
    "id": "api.team.import_team.no_file.app_error",
    "translation": "No file under 'file' in request"
  },
  {
    "id": "api.team.import_team.open.app_error",
    "translation": "Could not open file"
  },
  {
    "id": "api.team.import_team.parse.app_error",
    "translation": "Could not parse multipart form"
  },
  {
    "id": "api.team.import_team.unavailable.app_error",
    "translation": "Malformed request: filesize field is not present."
  },
  {
    "id": "api.team.init.debug",
    "translation": "Initializing team API routes"
  },
  {
    "id": "api.team.invite_members.admin",
    "translation": "administrator"
  },
  {
    "id": "api.team.invite_members.already.app_error",
    "translation": "This person is already on your team"
  },
  {
    "id": "api.team.invite_members.invalid_email.app_error",
    "translation": "The following email addresses do not belong to an accepted domain: {{.Addresses}}. Please contact your System Administrator for details."
  },
  {
    "id": "api.team.invite_members.member",
    "translation": "member"
  },
  {
    "id": "api.team.invite_members.no_one.app_error",
    "translation": "No one to invite."
  },
  {
    "id": "api.team.invite_members.restricted_system_admin.app_error",
    "translation": "Inviting new users to a team is restricted to System Administrators."
  },
  {
    "id": "api.team.invite_members.restricted_team_admin.app_error",
    "translation": "Inviting new users to a team is restricted to Team and System Administrators."
  },
  {
    "id": "api.team.invite_members.send.error",
    "translation": "Failed to send invite email successfully err=%v"
  },
  {
    "id": "api.team.invite_members.sending.info",
    "translation": "sending invitation to %v %v"
  },
  {
    "id": "api.team.is_team_creation_allowed.disabled.app_error",
    "translation": "Team creation has been disabled. Please ask your systems administrator for details."
  },
  {
    "id": "api.team.is_team_creation_allowed.domain.app_error",
    "translation": "Email must be from a specific domain (e.g. @example.com). Please ask your systems administrator for details."
  },
  {
    "id": "api.team.permanent_delete_team.attempting.warn",
    "translation": "Attempting to permanently delete team %v id=%v"
  },
  {
    "id": "api.team.permanent_delete_team.deleted.warn",
    "translation": "Permanently deleted team %v id=%v"
  },
  {
    "id": "api.team.remove_user_from_team.missing.app_error",
    "translation": "The user does not appear to be part of this team."
  },
  {
    "id": "api.team.signup_team.email_disabled.app_error",
    "translation": "Team sign-up with email is disabled."
  },
  {
    "id": "api.team.update_member_roles.not_a_member",
    "translation": "Specified user is not a member of specified team."
  },
  {
    "id": "api.team.update_team.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.templates.channel_name.group",
    "translation": "Group Message"
  },
  {
    "id": "api.templates.email_change_body.info",
    "translation": "Your email address for {{.TeamDisplayName}} has been changed to {{.NewEmail}}.<br>If you did not make this change, please contact the system administrator."
  },
  {
    "id": "api.templates.email_change_body.title",
    "translation": "You updated your email"
  },
  {
    "id": "api.templates.email_change_subject",
    "translation": "[{{ .SiteName }}] Your email address has changed"
  },
  {
    "id": "api.templates.email_change_verify_body.button",
    "translation": "Verify Email"
  },
  {
    "id": "api.templates.email_change_verify_body.info",
    "translation": "To finish updating your email address for {{.TeamDisplayName}}, please click the link below to confirm this is the right address."
  },
  {
    "id": "api.templates.email_change_verify_body.title",
    "translation": "You updated your email"
  },
  {
    "id": "api.templates.email_change_verify_subject",
    "translation": "[{{ .SiteName }}] Verify new email address"
  },
  {
    "id": "api.templates.email_footer",
    "translation": "To change your notification preferences, log in to your team site and go to Account Settings > Notifications."
  },
  {
    "id": "api.templates.email_info",
    "translation": "Any questions at all, mail us any time: <a href='mailto:{{.SupportEmail}}' style='text-decoration: none; color:#2389D7;'>{{.SupportEmail}}</a>.<br>Best wishes,<br>The {{.SiteName}} Team<br>"
  },
  {
    "id": "api.templates.email_organization",
    "translation": "Sent by "
  },
  {
    "id": "api.templates.error.link",
    "translation": "Go back to Mattermost"
  },
  {
    "id": "api.templates.error.title",
    "translation": "{{ .SiteName }} needs your help:"
  },
  {
    "id": "api.templates.find_teams_body.found",
    "translation": "Your request to find teams associated with your email found the following:"
  },
  {
    "id": "api.templates.find_teams_body.not_found",
    "translation": "We could not find any teams for the given email."
  },
  {
    "id": "api.templates.find_teams_body.title",
    "translation": "Finding teams"
  },
  {
    "id": "api.templates.find_teams_subject",
    "translation": "Your {{ .SiteName }} Teams"
  },
  {
    "id": "api.templates.invite_body.button",
    "translation": "Join Team"
  },
  {
    "id": "api.templates.invite_body.extra_info",
    "translation": "Mattermost lets you share messages and files from your PC or phone, with instant search and archiving. After you’ve joined <strong>{{.TeamDisplayName}}</strong>, you can sign-in to your new team and access these features anytime from the web address:<br/><br/><a href='{{.TeamURL}}'>{{.TeamURL}}</a>"
  },
  {
    "id": "api.templates.invite_body.info",
    "translation": "The team {{.SenderStatus}} <strong>{{.SenderName}}</strong>, has invited you to join <strong>{{.TeamDisplayName}}</strong>."
  },
  {
    "id": "api.templates.invite_body.title",
    "translation": "You've been invited"
  },
  {
    "id": "api.templates.invite_subject",
    "translation": "[{{ .SiteName }}] {{ .SenderName }} invited you to join {{ .TeamDisplayName }} Team"
  },
  {
    "id": "api.templates.mfa_activated_body.info",
    "translation": "Multi-factor authentication has been added to your account on {{ .SiteURL }}.<br>If this change wasn't initiated by you, please contact your system administrator."
  },
  {
    "id": "api.templates.mfa_activated_body.title",
    "translation": "Multi-factor authentication was added"
  },
  {
    "id": "api.templates.mfa_change_subject",
    "translation": "[{{ .SiteName }}] Your MFA has been updated"
  },
  {
    "id": "api.templates.mfa_deactivated_body.info",
    "translation": "Multi-factor authentication has been removed from your account on {{ .SiteURL }}.<br>If this change wasn't initiated by you, please contact your system administrator."
  },
  {
    "id": "api.templates.mfa_deactivated_body.title",
    "translation": "Multi-factor authentication was removed"
  },
  {
    "id": "api.templates.password_change_body.info",
    "translation": "Your password has been updated for {{.TeamDisplayName}} on {{ .TeamURL }} by {{.Method}}.<br>If this change wasn't initiated by you, please contact your system administrator."
  },
  {
    "id": "api.templates.password_change_body.title",
    "translation": "Your password has been updated"
  },
  {
    "id": "api.templates.password_change_subject",
    "translation": "[{{ .SiteName }}] Your password has been updated"
  },
  {
    "id": "api.templates.post_body.button",
    "translation": "Go To Post"
  },
  {
    "id": "api.templates.post_body.info",
    "translation": "CHANNEL: {{.ChannelName}}<br>{{.SenderName}} - {{.Hour}}:{{.Minute}} {{.TimeZone}}, {{.Month}} {{.Day}}"
  },
  {
    "id": "api.templates.post_subject_in_channel",
    "translation": "{{.SubjectText}} in {{.TeamDisplayName}} ({{.ChannelName}}) on {{.Month}} {{.Day}}, {{.Year}}"
  },
  {
    "id": "api.templates.post_subject_in_direct_message",
    "translation": "{{.SubjectText}} from {{.SenderDisplayName}} on {{.Month}} {{.Day}}, {{.Year}}"
  },
  {
    "id": "api.templates.post_subject_in_group_message",
    "translation": "New Group Message from {{ .SenderDisplayName}} on {{.Month}} {{.Day}}, {{.Year}}"
  },
  {
    "id": "api.templates.reset_body.button",
    "translation": "Reset Password"
  },
  {
    "id": "api.templates.reset_body.info",
    "translation": "To change your password, click \"Reset Password\" below.<br>If you did not mean to reset your password, please ignore this email and your password will remain the same. The password reset link expires in 24 hours."
  },
  {
    "id": "api.templates.reset_body.title",
    "translation": "You requested a password reset"
  },
  {
    "id": "api.templates.reset_subject",
    "translation": "[{{ .SiteName }}] Reset your password"
  },
  {
    "id": "api.templates.signin_change_email.body.info",
    "translation": "You updated your sign-in method on {{ .SiteName }} to {{.Method}}.<br>If this change wasn't initiated by you, please contact your system administrator."
  },
  {
    "id": "api.templates.signin_change_email.body.method_email",
    "translation": "email and password"
  },
  {
    "id": "api.templates.signin_change_email.body.title",
    "translation": "You updated your sign-in method"
  },
  {
    "id": "api.templates.signin_change_email.subject",
    "translation": "[{{ .SiteName }}] Your sign-in method has been updated"
  },
  {
    "id": "api.templates.signup_team_body.button",
    "translation": "Set up your team"
  },
  {
    "id": "api.templates.signup_team_body.info",
    "translation": "{{ .SiteName }} is one place for all your team communication, searchable and available anywhere.<br>You'll get more out of {{ .SiteName }} when your team is in constant communication--let's get them on board."
  },
  {
    "id": "api.templates.signup_team_body.title",
    "translation": "Thanks for creating a team!"
  },
  {
    "id": "api.templates.signup_team_subject",
    "translation": "{{ .SiteName }} Team Setup"
  },
  {
    "id": "api.templates.upgrade_30_body.info",
    "translation": "<h3 style='font-weight: normal; margin-top: 10px;'>YOUR DUPLICATE ACCOUNTS HAVE BEEN UPDATED</h3>Your Mattermost server is being upgraded to Version 3.0, which lets you use a single account across multiple teams.<br/><br/>You are receiving this email because the upgrade process has detected your account had the same email or username as other accounts on the server.<br/><br/>The following updates have been made: <br/><br/>{{if .EmailChanged }}- The duplicate email of an account on the `/{{.TeamName}}` team was changed to `{{.Email}}`. You will need to use email and password to login, you can use this new email address for login.<br/><br/>{{end}}{{if .UsernameChanged }}- The duplicate username of an account on the team site `/{{.TeamName}}` has been changed to `{{.Username}}` to avoid confusion with other accounts.<br/><br/>{{end}} RECOMMENDED ACTION: <br/><br/>It is recommended that you login to your teams used by your duplicate accounts and add your primary account to the team and any channels which you wish to continue using. <br/><br/>This gives your primary account access to all channel history. You can continue to access the direct message history of your duplicate accounts by logging in with their credentials. <br/><br/>FOR MORE INFORMATION: <br/><br/>For more information on the upgrade to Mattermost 3.0 please see: <a href='http://www.mattermost.org/upgrading-to-mattermost-3-0/'>http://www.mattermost.org/upgrading-to-mattermost-3-0/</a><br/><br/>"
  },
  {
    "id": "api.templates.upgrade_30_subject.info",
    "translation": "[MATTERMOST] Changes to your account for Mattermost 3.0 Upgrade"
  },
  {
    "id": "api.templates.username_change_body.info",
    "translation": "Your username for {{.TeamDisplayName}} has been changed to {{.NewUsername}}.<br>If you did not make this change, please contact the system administrator."
  },
  {
    "id": "api.templates.username_change_body.title",
    "translation": "You updated your username"
  },
  {
    "id": "api.templates.username_change_subject",
    "translation": "[{{ .SiteName }}] Your username has changed"
  },
  {
    "id": "api.templates.verify_body.button",
    "translation": "Verify Email"
  },
  {
    "id": "api.templates.verify_body.info",
    "translation": "Please verify your email address by clicking below."
  },
  {
    "id": "api.templates.verify_body.title",
    "translation": "You've joined {{ .ServerURL }}"
  },
  {
    "id": "api.templates.verify_subject",
    "translation": "[{{ .SiteName }}] Email Verification"
  },
  {
    "id": "api.templates.welcome_body.app_download_info",
    "translation": "For the best experience, download the apps for PC, Mac, iOS and Android from:"
  },
  {
    "id": "api.templates.welcome_body.button",
    "translation": "Verify Email"
  },
  {
    "id": "api.templates.welcome_body.info",
    "translation": "Please verify your email address by clicking below."
  },
  {
    "id": "api.templates.welcome_body.info2",
    "translation": "You can sign in from:"
  },
  {
    "id": "api.templates.welcome_body.info3",
    "translation": "Mattermost lets you share messages and files from your PC or phone, with instant search and archiving."
  },
  {
    "id": "api.templates.welcome_body.title",
    "translation": "You've joined {{ .ServerURL }}"
  },
  {
    "id": "api.templates.welcome_subject",
    "translation": "[{{ .SiteName }}] You joined {{ .ServerURL }}"
  },
  {
    "id": "api.user.activate_mfa.email_and_ldap_only.app_error",
    "translation": "MFA is not available for this account type"
  },
  {
    "id": "api.user.add_direct_channels_and_forget.failed.error",
    "translation": "Failed to add direct channel preferences for user user_id={{.UserId}}, team_id={{.TeamId}}, err={{.Error}}"
  },
  {
    "id": "api.user.authorize_oauth_user.bad_response.app_error",
    "translation": "Bad response from token request"
  },
  {
    "id": "api.user.authorize_oauth_user.bad_token.app_error",
    "translation": "Bad token type"
  },
  {
    "id": "api.user.authorize_oauth_user.invalid_state.app_error",
    "translation": "Invalid state"
  },
  {
    "id": "api.user.authorize_oauth_user.invalid_state_team.app_error",
    "translation": "Invalid state; missing team name"
  },
  {
    "id": "api.user.authorize_oauth_user.missing.app_error",
    "translation": "Missing access token"
  },
  {
    "id": "api.user.authorize_oauth_user.service.app_error",
    "translation": "Token request to {{.Service}} failed"
  },
  {
    "id": "api.user.authorize_oauth_user.token_failed.app_error",
    "translation": "Token request failed"
  },
  {
    "id": "api.user.authorize_oauth_user.unsupported.app_error",
    "translation": "Unsupported OAuth service provider"
  },
  {
    "id": "api.user.check_user_login_attempts.too_many.app_error",
    "translation": "Your account is locked because of too many failed password attempts. Please reset your password."
  },
  {
    "id": "api.user.check_user_mfa.bad_code.app_error",
    "translation": "Invalid MFA token."
  },
  {
    "id": "api.user.check_user_mfa.not_available.app_error",
    "translation": "MFA is not configured or supported on this server"
  },
  {
    "id": "api.user.check_user_password.invalid.app_error",
    "translation": "Login failed because of invalid password"
  },
  {
    "id": "api.user.complete_switch_with_oauth.blank_email.app_error",
    "translation": "Blank email"
  },
  {
    "id": "api.user.complete_switch_with_oauth.parse.app_error",
    "translation": "Could not parse auth data out of {{.Service}} user object"
  },
  {
    "id": "api.user.complete_switch_with_oauth.unavailable.app_error",
    "translation": "{{.Service}} SSO through OAuth 2.0 not available on this server"
  },
  {
    "id": "api.user.create_oauth_user.already_attached.app_error",
    "translation": "There is already an account associated with that email address using a sign in method other than {{.Service}}. Please sign in using {{.Auth}}."
  },
  {
    "id": "api.user.create_oauth_user.already_used.app_error",
    "translation": "This {{.Service}} account has already been used to sign up"
  },
  {
    "id": "api.user.create_oauth_user.create.app_error",
    "translation": "Could not create user out of {{.Service}} user object"
  },
  {
    "id": "api.user.create_oauth_user.not_available.app_error",
    "translation": "{{.Service}} SSO through OAuth 2.0 not available on this server"
  },
  {
    "id": "api.user.create_profile_image.default_font.app_error",
    "translation": "Could not create default profile image font"
  },
  {
    "id": "api.user.create_profile_image.encode.app_error",
    "translation": "Could not encode default profile image"
  },
  {
    "id": "api.user.create_profile_image.initial.app_error",
    "translation": "Could not add user initial to default profile picture"
  },
  {
    "id": "api.user.create_user.accepted_domain.app_error",
    "translation": "The email you provided does not belong to an accepted domain. Please contact your administrator or sign up with a different email."
  },
  {
    "id": "api.user.create_user.disabled.app_error",
    "translation": "User creation is disabled."
  },
  {
    "id": "api.user.create_user.joining.error",
    "translation": "Encountered an issue joining default channels user_id=%s, team_id=%s, err=%v"
  },
  {
    "id": "api.user.create_user.missing_hash_or_data.app_error",
    "translation": "Missing Hash or URL query data."
  },
  {
    "id": "api.user.create_user.missing_invite_id.app_error",
    "translation": "Missing Invite Id."
  },
  {
    "id": "api.user.create_user.no_open_server",
    "translation": "This server does not allow open signups.  Please speak with your Administrator to receive an invitation."
  },
  {
    "id": "api.user.create_user.save.error",
    "translation": "Couldn't save the user err=%v"
  },
  {
    "id": "api.user.create_user.signup_email_disabled.app_error",
    "translation": "User sign-up with email is disabled."
  },
  {
    "id": "api.user.create_user.signup_link_expired.app_error",
    "translation": "The signup link has expired"
  },
  {
    "id": "api.user.create_user.signup_link_invalid.app_error",
    "translation": "The signup link does not appear to be valid"
  },
  {
    "id": "api.user.create_user.team_name.app_error",
    "translation": "Invalid team name"
  },
  {
    "id": "api.user.create_user.tutorial.error",
    "translation": "Encountered error saving tutorial preference, err=%v"
  },
  {
    "id": "api.user.create_user.verified.error",
    "translation": "Failed to set email verified err=%v"
  },
  {
    "id": "api.user.email_to_ldap.not_available.app_error",
    "translation": "AD/LDAP not available on this server"
  },
  {
    "id": "api.user.generate_mfa_qr.not_available.app_error",
    "translation": "MFA not configured or available on this server"
  },
  {
    "id": "api.user.get_authorization_code.unsupported.app_error",
    "translation": "Unsupported OAuth service provider"
  },
  {
    "id": "api.user.get_me.getting.error",
    "translation": "Error in getting users profile for id=%v forcing logout"
  },
  {
    "id": "api.user.init.debug",
    "translation": "Initializing user API routes"
  },
  {
    "id": "api.user.ldap_to_email.not_available.app_error",
    "translation": "AD/LDAP not available on this server"
  },
  {
    "id": "api.user.ldap_to_email.not_ldap_account.app_error",
    "translation": "This user account does not use AD/LDAP"
  },
  {
    "id": "api.user.login.blank_pwd.app_error",
    "translation": "Password field must not be blank"
  },
  {
    "id": "api.user.login.inactive.app_error",
    "translation": "Login failed because your account has been deactivated.  Please contact an administrator."
  },
  {
    "id": "api.user.login.invalid_credentials",
    "translation": "User ID or password incorrect."
  },
  {
    "id": "api.user.login.not_provided.app_error",
    "translation": "Must provide either user ID, or team name and user email"
  },
  {
    "id": "api.user.login.not_verified.app_error",
    "translation": "Login failed because email address has not been verified"
  },
  {
    "id": "api.user.login.revoking.app_error",
    "translation": "Revoking sessionId=%v for userId=%v re-login with same device Id"
  },
  {
    "id": "api.user.login.use_auth_service.app_error",
    "translation": "Please sign in using {{.AuthService}}"
  },
  {
    "id": "api.user.login_by_oauth.not_available.app_error",
    "translation": "{{.Service}} SSO through OAuth 2.0 not available on this server"
  },
  {
    "id": "api.user.login_by_oauth.parse.app_error",
    "translation": "Could not parse auth data out of {{.Service}} user object"
  },
  {
    "id": "api.user.login_ldap.blank_pwd.app_error",
    "translation": "Password field must not be blank"
  },
  {
    "id": "api.user.login_ldap.disabled.app_error",
    "translation": "AD/LDAP not enabled on this server"
  },
  {
    "id": "api.user.login_ldap.need_id.app_error",
    "translation": "Need an ID"
  },
  {
    "id": "api.user.login_ldap.not_available.app_error",
    "translation": "AD/LDAP not available on this server"
  },
  {
    "id": "api.user.oauth_to_email.context.app_error",
    "translation": "Update password failed because context user_id did not match provided user's id"
  },
  {
    "id": "api.user.permanent_delete_user.attempting.warn",
    "translation": "Attempting to permanently delete account %v id=%v"
  },
  {
    "id": "api.user.permanent_delete_user.deleted.warn",
    "translation": "Permanently deleted account %v id=%v"
  },
  {
    "id": "api.user.permanent_delete_user.system_admin.warn",
    "translation": "You are deleting %v that is a system administrator.  You may need to set another account as the system administrator using the command line tools."
  },
  {
    "id": "api.user.reset_password.invalid_link.app_error",
    "translation": "The reset password link does not appear to be valid"
  },
  {
    "id": "api.user.reset_password.link_expired.app_error",
    "translation": "The password reset link has expired"
  },
  {
    "id": "api.user.reset_password.method",
    "translation": "using a reset password link"
  },
  {
    "id": "api.user.reset_password.sso.app_error",
    "translation": "Cannot reset password for SSO accounts"
  },
  {
    "id": "api.user.reset_password.wrong_team.app_error",
    "translation": "Trying to reset password for user on wrong team."
  },
  {
    "id": "api.user.saml.not_available.app_error",
    "translation": "SAML is not configured or supported on this server."
  },
  {
    "id": "api.user.send_email_change_email_and_forget.error",
    "translation": "Failed to send email change notification email successfully"
  },
  {
    "id": "api.user.send_email_change_username_and_forget.error",
    "translation": "Failed to send username change notification email successfully"
  },
  {
    "id": "api.user.send_email_change_verify_email_and_forget.error",
    "translation": "Failed to send email change verification email successfully"
  },
  {
    "id": "api.user.send_password_change_email_and_forget.error",
    "translation": "Failed to send update password email successfully"
  },
  {
    "id": "api.user.send_password_reset.find.app_error",
    "translation": "We couldn’t find an account with that address."
  },
  {
    "id": "api.user.send_password_reset.send.app_error",
    "translation": "Failed to send password reset email successfully"
  },
  {
    "id": "api.user.send_password_reset.sso.app_error",
    "translation": "Cannot reset password for SSO accounts"
  },
  {
    "id": "api.user.send_sign_in_change_email_and_forget.error",
    "translation": "Failed to send update password email successfully"
  },
  {
    "id": "api.user.send_verify_email_and_forget.failed.error",
    "translation": "Failed to send verification email successfully"
  },
  {
    "id": "api.user.send_welcome_email_and_forget.failed.error",
    "translation": "Failed to send welcome email successfully"
  },
  {
    "id": "api.user.update_active.no_deactivate_ldap.app_error",
    "translation": "You can not modify the activation status of AD/LDAP accounts. Please modify through the AD/LDAP server."
  },
  {
    "id": "api.user.update_active.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.user.update_mfa.not_available.app_error",
    "translation": "MFA not configured or available on this server"
  },
  {
    "id": "api.user.update_oauth_user_attrs.get_user.app_error",
    "translation": "Could not get user from {{.Service}} user object"
  },
  {
    "id": "api.user.update_password.context.app_error",
    "translation": "Update password failed because context user_id did not match props user_id"
  },
  {
    "id": "api.user.update_password.failed.app_error",
    "translation": "Update password failed"
  },
  {
    "id": "api.user.update_password.incorrect.app_error",
    "translation": "The \"Current Password\" you entered is incorrect. Please check that Caps Lock is off and try again."
  },
  {
    "id": "api.user.update_password.menu",
    "translation": "using the settings menu"
  },
  {
    "id": "api.user.update_password.oauth.app_error",
    "translation": "Update password failed because the user is logged in through an OAuth service"
  },
  {
    "id": "api.user.update_password.valid_account.app_error",
    "translation": "Update password failed because we couldn't find a valid account"
  },
  {
    "id": "api.user.update_roles.one_admin.app_error",
    "translation": "There must be at least one active admin"
  },
  {
    "id": "api.user.update_roles.permissions.app_error",
    "translation": "You do not have the appropriate permissions"
  },
  {
    "id": "api.user.update_roles.system_admin_needed.app_error",
    "translation": "The system admin role is needed for this action"
  },
  {
    "id": "api.user.update_roles.system_admin_set.app_error",
    "translation": "The system admin role can only be set by another system admin"
  },
  {
    "id": "api.user.update_roles.team_admin_needed.app_error",
    "translation": "The team admin role is needed for this action"
  },
  {
    "id": "api.user.upload_profile_user.array.app_error",
    "translation": "Empty array under 'image' in request"
  },
  {
    "id": "api.user.upload_profile_user.decode.app_error",
    "translation": "Could not decode profile image"
  },
  {
    "id": "api.user.upload_profile_user.decode_config.app_error",
    "translation": "Could not save profile image. File does not appear to be a valid image."
  },
  {
    "id": "api.user.upload_profile_user.encode.app_error",
    "translation": "Could not encode profile image"
  },
  {
    "id": "api.user.upload_profile_user.no_file.app_error",
    "translation": "No file under 'image' in request"
  },
  {
    "id": "api.user.upload_profile_user.open.app_error",
    "translation": "Could not open image file"
  },
  {
    "id": "api.user.upload_profile_user.parse.app_error",
    "translation": "Could not parse multipart form"
  },
  {
    "id": "api.user.upload_profile_user.storage.app_error",
    "translation": "Unable to upload file. Image storage is not configured."
  },
  {
    "id": "api.user.upload_profile_user.too_large.app_error",
    "translation": "Unable to upload profile image. File is too large."
  },
  {
    "id": "api.user.upload_profile_user.upload_profile.app_error",
    "translation": "Couldn't upload profile image"
  },
  {
    "id": "api.user.verify_email.bad_link.app_error",
    "translation": "Bad verify email link."
  },
  {
    "id": "api.web_hub.start.starting.debug",
    "translation": "Starting %v websocket hubs"
  },
  {
    "id": "api.web_hub.start.stopping.debug",
    "translation": "stopping websocket hub connections"
  },
  {
    "id": "api.web_socket.connect.error",
    "translation": "websocket connect err: %v"
  },
  {
    "id": "api.web_socket.connect.upgrade.app_error",
    "translation": "Failed to upgrade websocket connection"
  },
  {
    "id": "api.web_socket.init.debug",
    "translation": "Initializing web socket API routes"
  },
  {
    "id": "api.web_socket_handler.log.error",
    "translation": "%v:%v seq=%v uid=%v %v [details: %v]"
  },
  {
    "id": "api.web_socket_router.log.error",
    "translation": "websocket routing error: seq=%v uid=%v %v [details: %v]"
  },
  {
    "id": "api.web_team_hun.start.debug",
    "translation": "team hub stopping for teamId=%v"
  },
  {
    "id": "api.webhook.create_outgoing.disabled.app_error",
    "translation": "Outgoing webhooks have been disabled by the system admin."
  },
  {
    "id": "api.webhook.create_outgoing.intersect.app_error",
    "translation": "Outgoing webhooks from the same channel cannot have the same trigger words/callback URLs."
  },
  {
    "id": "api.webhook.create_outgoing.not_open.app_error",
    "translation": "Outgoing webhooks can only be created for public channels."
  },
  {
    "id": "api.webhook.create_outgoing.permissions.app_error",
    "translation": "Invalid permissions to create outgoing webhook."
  },
  {
    "id": "api.webhook.create_outgoing.triggers.app_error",
    "translation": "Either trigger_words or channel_id must be set"
  },
  {
    "id": "api.webhook.delete_incoming.disabled.app_error",
    "translation": "Incoming webhooks have been disabled by the system admin."
  },
  {
    "id": "api.webhook.delete_incoming.permissions.app_error",
    "translation": "Invalid permissions to delete incoming webhook"
  },
  {
    "id": "api.webhook.delete_outgoing.disabled.app_error",
    "translation": "Outgoing webhooks have been disabled by the system admin."
  },
  {
    "id": "api.webhook.delete_outgoing.permissions.app_error",
    "translation": "Invalid permissions to delete outgoing webhook"
  },
  {
    "id": "api.webhook.incoming.debug",
    "translation": "Incoming webhook received. Content="
  },
  {
    "id": "api.webhook.incoming.debug.error",
    "translation": "Could not read payload of incoming webhook."
  },
  {
    "id": "api.webhook.init.debug",
    "translation": "Initializing webhook API routes"
  },
  {
    "id": "api.webhook.regen_outgoing_token.permissions.app_error",
    "translation": "Invalid permissions to regenerate outgoing webhook token"
  },
  {
    "id": "api.webhook.team_mismatch.app_error",
    "translation": "Cannot update webhook across teams"
  },
  {
    "id": "api.webhook.update_incoming.disabled.app_error",
    "translation": "Incoming webhooks have been disabled by the system admin."
  },
  {
    "id": "api.webhook.update_incoming.permissions.app_error",
    "translation": "Invalid permissions to update incoming webhook"
  },
  {
    "id": "api.webhook.update_outgoing.disabled.app_error",
    "translation": "Outgoing webhooks have been disabled by the system admin."
  },
  {
    "id": "api.webhook.update_outgoing.intersect.app_error",
    "translation": "Outgoing webhooks from the same channel cannot have the same trigger words/callback URLs."
  },
  {
    "id": "api.webhook.update_outgoing.not_open.app_error",
    "translation": "Outgoing webhooks can only be updated to public channels."
  },
  {
    "id": "api.webhook.update_outgoing.permissions.app_error",
    "translation": "Invalid permissions to update outgoing webhook."
  },
  {
    "id": "api.webhook.update_outgoing.triggers.app_error",
    "translation": "Either trigger_words or channel_id must be set"
  },
  {
    "id": "api.webrtc.disabled.app_error",
    "translation": "WebRTC is not enabled in this server."
  },
  {
    "id": "api.webrtc.init.debug",
    "translation": "Initializing WebRTC API routes"
  },
  {
    "id": "api.webrtc.register_token.app_error",
    "translation": "We encountered an error trying to register the WebRTC Token"
  },
  {
    "id": "api.websocket.invalid_session.error",
    "translation": "Invalid session err=%v"
  },
  {
    "id": "api.websocket_handler.invalid_param.app_error",
    "translation": "Invalid {{.Name}} parameter"
  },
  {
    "id": "app.channel.create_channel.no_team_id.app_error",
    "translation": "Must specify the team ID to create a channel"
  },
  {
    "id": "app.channel.post_update_channel_purpose_message.post.error",
    "translation": "Failed to post channel purpose message"
  },
  {
    "id": "app.channel.post_update_channel_purpose_message.removed",
    "translation": "%s removed the channel purpose (was: %s)"
  },
  {
    "id": "app.channel.post_update_channel_purpose_message.retrieve_user.error",
    "translation": "Failed to retrieve user while updating channel purpose message %v"
  },
  {
    "id": "app.channel.post_update_channel_purpose_message.updated_from",
    "translation": "%s updated the channel purpose from: %s to: %s"
  },
  {
    "id": "app.channel.post_update_channel_purpose_message.updated_to",
    "translation": "%s updated the channel purpose to: %s"
  },
  {
    "id": "app.import.bulk_import.file_scan.error",
    "translation": "Error reading import data file."
  },
  {
    "id": "app.import.bulk_import.json_decode.error",
    "translation": "JSON decode of line failed."
  },
  {
    "id": "app.import.import_channel.team_not_found.error",
    "translation": "Error importing channel. Team with name \"{{.TeamName}}\" could not be found."
  },
  {
    "id": "app.import.import_direct_channel.create_direct_channel.error",
    "translation": "Failed to create direct channel"
  },
  {
    "id": "app.import.import_direct_channel.create_group_channel.error",
    "translation": "Failed to create group channel"
  },
  {
    "id": "app.import.import_direct_channel.member_not_found.error",
    "translation": "Could not find channel member when importing direct channel"
  },
  {
    "id": "app.import.import_direct_channel.update_header_failed.error",
    "translation": "Failed to update direct channel header"
  },
  {
    "id": "app.import.import_direct_post.channel_member_not_found.error",
    "translation": "Could not find channel member when importing direct channel post"
  },
  {
    "id": "app.import.import_direct_post.create_direct_channel.error",
    "translation": "Failed to get direct channel"
  },
  {
    "id": "app.import.import_direct_post.create_group_channel.error",
    "translation": "Failed to get group channel"
  },
  {
    "id": "app.import.import_direct_post.user_not_found.error",
    "translation": "Post user does not exist"
  },
  {
    "id": "app.import.import_direct_post.save_preferences.error",
    "translation": "Error importing direct post. Failed to save preferences."
  },
  {
    "id": "app.import.import_user_channels.save_preferences.error",
    "translation": "Error importing user channel memberships. Failed to save preferences."
  },
  {
    "id": "app.import.validate_direct_channel_import_data.unknown_favoriter.error",
    "translation": "Direct channel can only be favorited by members. \"{{.Username}}\" is not a member."
  },
  {
    "id": "app.import.validate_direct_post_import_data.unknown_flagger.error",
    "translation": "Direct post can only be flagged by members of the channel it is in. \"{{.Username}}\" is not a member."
  },
  {
    "id": "app.import.import_line.null_channel.error",
    "translation": "Import data line has type \"channel\" but the channel object is null."
  },
  {
    "id": "app.import.import_line.null_direct_channel.error",
    "translation": "Import data line has type \"direct_channel\" but the direct_channel object is null."
  },
  {
    "id": "app.import.import_line.null_direct_post.error",
    "translation": "Import data line has type \"direct_post\" but the direct_post object is null."
  },
  {
    "id": "app.import.import_line.null_post.error",
    "translation": "Import data line has type \"post\" but the post object is null."
  },
  {
    "id": "app.import.import_line.null_team.error",
    "translation": "Import data line has type \"team\" but the team object is null."
  },
  {
    "id": "app.import.import_line.null_user.error",
    "translation": "Import data line has type \"user\" but the user object is null."
  },
  {
    "id": "app.import.import_line.unknown_line_type.error",
    "translation": "Import data line has unknown type \"{{.Type}}\"."
  },
  {
    "id": "app.import.import_post.channel_not_found.error",
    "translation": "Error importing post. Channel with name \"{{.ChannelName}}\" could not be found."
  },
  {
    "id": "app.import.import_post.team_not_found.error",
    "translation": "Error importing post. Team with name \"{{.TeamName}}\" could not be found."
  },
  {
    "id": "app.import.import_post.user_not_found.error",
    "translation": "Error importing post. User with username \"{{.Username}}\" could not be found."
  },
  {
    "id": "app.import.import_post.save_preferences.error",
    "translation": "Error importing post. Failed to save preferences."
  },
  {
    "id": "app.import.validate_channel_import_data.create_at_zero.error",
    "translation": "Channel create_at must not be zero if provided."
  },
  {
    "id": "app.import.validate_channel_import_data.display_name_length.error",
    "translation": "Channel display_name is not within permitted length constraints."
  },
  {
    "id": "app.import.validate_channel_import_data.display_name_missing.error",
    "translation": "Missing required channel property: display_name"
  },
  {
    "id": "app.import.validate_channel_import_data.header_length.error",
    "translation": "Channel header is too long."
  },
  {
    "id": "app.import.validate_channel_import_data.name_characters.error",
    "translation": "Channel name contains invalid characters."
  },
  {
    "id": "app.import.validate_channel_import_data.name_length.error",
    "translation": "Channel name is too long."
  },
  {
    "id": "app.import.validate_channel_import_data.name_missing.error",
    "translation": "Missing required channel property: name"
  },
  {
    "id": "app.import.validate_channel_import_data.purpose_length.error",
    "translation": "Channel purpose is too long."
  },
  {
    "id": "app.import.validate_channel_import_data.team_missing.error",
    "translation": "Missing required channel property: team"
  },
  {
    "id": "app.import.validate_channel_import_data.type_invalid.error",
    "translation": "Channel type is invalid."
  },
  {
    "id": "app.import.validate_channel_import_data.type_missing.error",
    "translation": "Missing required channel property: type."
  },
  {
    "id": "app.import.validate_direct_channel_import_data.header_length.error",
    "translation": "Direct channel header is too long"
  },
  {
    "id": "app.import.validate_direct_channel_import_data.members_required.error",
    "translation": "Missing required direct channel property: members"
  },
  {
    "id": "app.import.validate_direct_channel_import_data.members_too_few.error",
    "translation": "Direct channel members list contains too few items"
  },
  {
    "id": "app.import.validate_direct_channel_import_data.members_too_many.error",
    "translation": "Direct channel members list contains too many items"
  },
  {
    "id": "app.import.validate_direct_post_import_data.channel_members_required.error",
    "translation": "Missing required direct post property: channel_members"
  },
  {
    "id": "app.import.validate_direct_post_import_data.channel_members_too_few.error",
    "translation": "Direct post channel members list contains too few items"
  },
  {
    "id": "app.import.validate_direct_post_import_data.channel_members_too_many.error",
    "translation": "Direct post channel members list contains too many items"
  },
  {
    "id": "app.import.validate_direct_post_import_data.create_at_missing.error",
    "translation": "Missing required direct post property: create_at"
  },
  {
    "id": "app.import.validate_direct_post_import_data.create_at_zero.error",
    "translation": "CreateAt must be greater than 0"
  },
  {
    "id": "app.import.validate_direct_post_import_data.message_length.error",
    "translation": "Message is too long"
  },
  {
    "id": "app.import.validate_direct_post_import_data.message_missing.error",
    "translation": "Missing required direct post property: message"
  },
  {
    "id": "app.import.validate_direct_post_import_data.user_missing.error",
    "translation": "Missing required direct post property: user"
  },
  {
    "id": "app.import.validate_post_import_data.channel_missing.error",
    "translation": "Missing required Post property: Channel."
  },
  {
    "id": "app.import.validate_post_import_data.create_at_missing.error",
    "translation": "Missing required Post property: create_at."
  },
  {
    "id": "app.import.validate_post_import_data.create_at_zero.error",
    "translation": "Post CreateAt property must not be zero if provided."
  },
  {
    "id": "app.import.validate_post_import_data.message_length.error",
    "translation": "Post Message property is longer than the maximum permitted length."
  },
  {
    "id": "app.import.validate_post_import_data.message_missing.error",
    "translation": "Missing required Post property: Message."
  },
  {
    "id": "app.import.validate_post_import_data.team_missing.error",
    "translation": "Missing required Post property: Team."
  },
  {
    "id": "app.import.validate_post_import_data.user_missing.error",
    "translation": "Missing required Post property: User."
  },
  {
    "id": "app.import.validate_team_import_data.allowed_domains_length.error",
    "translation": "Team allowed_domains is too long."
  },
  {
    "id": "app.import.validate_team_import_data.create_at_zero.error",
    "translation": "Team create_at must not be zero if provided."
  },
  {
    "id": "app.import.validate_team_import_data.description_length.error",
    "translation": "Team description is too long."
  },
  {
    "id": "app.import.validate_team_import_data.display_name_length.error",
    "translation": "Team display_name is not within permitted length constraints."
  },
  {
    "id": "app.import.validate_team_import_data.display_name_missing.error",
    "translation": "Missing required team property: display_name."
  },
  {
    "id": "app.import.validate_team_import_data.name_characters.error",
    "translation": "Team name contains invalid characters."
  },
  {
    "id": "app.import.validate_team_import_data.name_length.error",
    "translation": "Team name is too long."
  },
  {
    "id": "app.import.validate_team_import_data.name_missing.error",
    "translation": "Missing required team property: name."
  },
  {
    "id": "app.import.validate_team_import_data.name_reserved.error",
    "translation": "Team name contains reserved words."
  },
  {
    "id": "app.import.validate_team_import_data.type_invalid.error",
    "translation": "Team type is not valid."
  },
  {
    "id": "app.import.validate_team_import_data.type_missing.error",
    "translation": "Missing required team property: type."
  },
  {
    "id": "app.import.validate_user_channels_import_data.channel_name_missing.error",
    "translation": "Channel name missing from User's Channel Membership."
  },
  {
    "id": "app.import.validate_user_channels_import_data.invalid_notify_props_desktop.error",
    "translation": "Invalid Desktop NotifyProps for User's Channel Membership."
  },
  {
    "id": "app.import.validate_user_channels_import_data.invalid_notify_props_mobile.error",
    "translation": "Invalid Mobile NotifyProps for User's Channel Membership."
  },
  {
    "id": "app.import.validate_user_channels_import_data.invalid_notify_props_mark_unread.error",
    "translation": "Invalid MarkUnread NotifyProps for User's Channel Membership."
  },
  {
    "id": "app.import.validate_user_channels_import_data.invalid_roles.error",
    "translation": "Invalid roles for User's Channel Membership."
  },
  {
    "id": "app.import.validate_user_import_data.auth_data_and_password.error",
    "translation": "User AuthData and Password are mutually exclusive."
  },
  {
    "id": "app.import.validate_user_import_data.auth_data_length.error",
    "translation": "User AuthData is too long."
  },
  {
    "id": "app.import.validate_user_import_data.auth_service_length.error",
    "translation": "User AuthService should not be empty if it is provided."
  },
  {
    "id": "app.import.validate_user_import_data.email_length.error",
    "translation": "User email has an invalid length."
  },
  {
    "id": "app.import.validate_user_import_data.email_missing.error",
    "translation": "Missing required user property: email."
  },
  {
    "id": "app.import.validate_user_import_data.first_name_length.error",
    "translation": "User First Name is too long."
  },
  {
    "id": "app.import.validate_user_import_data.last_name_length.error",
    "translation": "User Last Name is too long."
  },
  {
    "id": "app.import.validate_user_import_data.nickname_length.error",
    "translation": "User nickname is too long."
  },
  {
    "id": "app.import.validate_user_import_data.pasword_length.error",
    "translation": "User Password has invalid length."
  },
  {
    "id": "app.import.validate_user_import_data.position_length.error",
    "translation": "User Position is too long."
  },
  {
    "id": "app.import.validate_user_import_data.roles_invalid.error",
    "translation": "User roles are not valid."
  },
  {
    "id": "app.import.validate_user_import_data.username_invalid.error",
    "translation": "Username is not valid."
  },
  {
    "id": "app.import.validate_user_import_data.username_missing.error",
    "translation": "Missing require user property: username."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_desktop_invalid.error",
    "translation": "Invalid Desktop Notify Prop value for user."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_desktop_duration_invalid.error",
    "translation": "Invalid Desktop Duration Notify Prop value for user."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_desktop_sound_invalid.error",
    "translation": "Invalid Desktop Sound Notify Prop value for user."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_email_invalid.error",
    "translation": "Invalid Email Notify Prop value for user."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_mobile_invalid.error",
    "translation": "Invalid Mobile Notify Prop value for user."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_mobile_push_status_invalid.error",
    "translation": "Invalid Mobile Push Status Notify Prop for user."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_channel_trigger_invalid.error",
    "translation": "Invalid Channel Trigger Notify Prop for user."
  },
  {
    "id": "app.import.validate_user_import_data.notify_props_comment_trigger_invalid.error",
    "translation": "Invalid Comment Trigger Notify Prop for user."
  },
  {
    "id": "app.import.validate_user_teams_import_data.invalid_roles.error",
    "translation": "Invalid roles for User's Team Membership."
  },
  {
    "id": "app.import.validate_user_teams_import_data.team_name_missing.error",
    "translation": "Team name missing from User's Team Membership."
  },
  {
    "id": "authentication.permissions.create_group_channel.description",
    "translation": "Ability to create new group message channels"
  },
  {
    "id": "authentication.permissions.create_group_channel.name",
    "translation": "Create Group Message"
  },
  {
    "id": "authentication.permissions.create_team_roles.description",
    "translation": "Ability to create new teams"
  },
  {
    "id": "authentication.permissions.create_team_roles.name",
    "translation": "Create Teams"
  },
  {
    "id": "authentication.permissions.manage_jobs.description",
    "translation": "Ability to manage jobs"
  },
  {
    "id": "authentication.permissions.manage_jobs.name",
    "translation": "Manage Jobs"
  },
  {
    "id": "authentication.permissions.manage_team_roles.description",
    "translation": "Ability to change the roles of a team member"
  },
  {
    "id": "authentication.permissions.manage_team_roles.name",
    "translation": "Manage Team Roles"
  },
  {
    "id": "authentication.permissions.read_public_channel.description",
    "translation": "Ability to read public channels"
  },
  {
    "id": "authentication.permissions.read_public_channel.name",
    "translation": "Read Public Channels"
  },
  {
    "id": "authentication.permissions.team_invite_user.description",
    "translation": "Ability to invite users to a team"
  },
  {
    "id": "authentication.permissions.team_invite_user.name",
    "translation": "Invite User"
  },
  {
    "id": "authentication.permissions.team_use_slash_commands.description",
    "translation": "Ability to use slash commands"
  },
  {
    "id": "authentication.permissions.team_use_slash_commands.name",
    "translation": "Use Slash Commands"
  },
  {
    "id": "cli.license.critical",
    "translation": "Feature requires an enterprise license. Please contact your system administrator about upgrading your enterprise license."
  },
  {
    "id": "ent.brand.save_brand_image.decode.app_error",
    "translation": "Unable to decode image."
  },
  {
    "id": "ent.brand.save_brand_image.decode_config.app_error",
    "translation": "Unable to decode image config."
  },
  {
    "id": "ent.brand.save_brand_image.encode.app_error",
    "translation": "Unable to encode image as PNG."
  },
  {
    "id": "ent.brand.save_brand_image.open.app_error",
    "translation": "Unable to open the image."
  },
  {
    "id": "ent.brand.save_brand_image.save_image.app_error",
    "translation": "Unable to save image"
  },
  {
    "id": "ent.brand.save_brand_image.too_large.app_error",
    "translation": "Unable to open image. Image is too large."
  },
  {
    "id": "ent.cluster.config_changed.info",
    "translation": "Cluster configuration has changed for id={{ .id }}.  The cluster may become unstable and a restart is required.  To ensure the cluster is configured correctly you should perform a rolling restart immediately."
  },
  {
    "id": "ent.cluster.debug_fail.debug",
    "translation": "Cluster send failed at `%v` detail=%v, extra=%v, retry number=%v"
  },
  {
    "id": "ent.cluster.final_fail.error",
    "translation": "Cluster send final fail at `%v` detail=%v, extra=%v, retry number=%v"
  },
  {
    "id": "ent.cluster.incompatible.warn",
    "translation": "Potential incompatible version detected for clustering with %v"
  },
  {
    "id": "ent.cluster.incompatible_config.warn",
    "translation": "Potential incompatible config detected for clustering with %v"
  },
  {
    "id": "ent.cluster.licence_disable.app_error",
    "translation": "Clustering functionality disabled by current license. Please contact your system administrator about upgrading your enterprise license."
  },
  {
    "id": "ent.cluster.ping_failed.info",
    "translation": "Cluster ping failed with hostname=%v on=%v with id=%v"
  },
  {
    "id": "ent.cluster.ping_success.info",
    "translation": "Cluster ping successful with hostname=%v on=%v with id=%v self=%v"
  },
  {
    "id": "ent.cluster.save_config.error",
    "translation": "System Console is set to read-only when High Availability is enabled  unless ReadOnlyConfig is disabled in the configuration file."
  },
  {
    "id": "ent.cluster.starting.info",
    "translation": "Cluster internode communication is listening on %v with hostname=%v id=%v"
  },
  {
    "id": "ent.cluster.stopping.info",
    "translation": "Cluster internode communication is stopping on %v with hostname=%v id=%v"
  },
  {
    "id": "ent.compliance.licence_disable.app_error",
    "translation": "Compliance functionality disabled by current license. Please contact your system administrator about upgrading your enterprise license."
  },
  {
    "id": "ent.compliance.run_failed.error",
    "translation": "Compliance export failed for job '{{.JobName}}' at '{{.FilePath}}'"
  },
  {
    "id": "ent.compliance.run_finished.info",
    "translation": "Compliance export finished for job '{{.JobName}}' exported {{.Count}} records to '{{.FilePath}}'"
  },
  {
    "id": "ent.compliance.run_limit.warning",
    "translation": "Compliance export warning for job '{{.JobName}}' too many rows returned truncating to 30,000 at '{{.FilePath}}'"
  },
  {
    "id": "ent.compliance.run_started.info",
    "translation": "Compliance export started for job '{{.JobName}}' at '{{.FilePath}}'"
  },
  {
    "id": "ent.elasticsearch.delete_post.error",
    "translation": "Failed to delete the post"
  },
  {
    "id": "ent.elasticsearch.index_post.error",
    "translation": "Failed to index the post"
  },
  {
    "id": "ent.elasticsearch.not_started.error",
    "translation": "Elasticsearch is not started"
  },
  {
    "id": "ent.elasticsearch.search_posts.disabled",
    "translation": "Elasticsearch searching is disabled on this server"
  },
  {
    "id": "ent.elasticsearch.generic.disabled",
    "translation": "Elasticsearch search is not enabled on this server"
  },
  {
    "id": "ent.elasticsearch.purge_indexes.delete_failed",
    "translation": "Failed to delete Elasticsearch index"
  },
  {
    "id": "ent.elasticsearch.search_posts.search_failed",
    "translation": "Search failed to complete"
  },
  {
    "id": "ent.elasticsearch.search_posts.unmarshall_post_failed",
    "translation": "Failed to decode search results"
  },
  {
    "id": "ent.elasticsearch.create_client.connect_failed",
    "translation": "Setting up Elasticsearch Client Failed"
  },
  {
    "id": "ent.elasticsearch.create_index_if_not_exists.index_create_failed",
    "translation": "Failed to create Elasticsearch index"
  },
  {
    "id": "ent.elasticsearch.create_index_if_not_exists.index_exists_failed",
    "translation": "Failed to establish whether Elasticsearch index exists"
  },
  {
    "id": "ent.elasticsearch.create_index_if_not_exists.index_mapping_failed",
    "translation": "Failed to setup Elasticsearch index mapping"
  },
  {
    "id": "ent.elasticsearch.start.index_settings_failed",
    "translation": "Failed to set Elasticsearch index settings"
  },
  {
    "id": "ent.elasticsearch.test_config.connect_failed",
    "translation": "Connecting to Elasticsearch server failed."
  },
  {
    "id": "ent.elasticsearch.test_config.indexing_disabled.error",
    "translation": "Elasticsearch is disabled."
  },
  {
    "id": "ent.elasticsearch.test_config.license.error",
    "translation": "License does not support Elasticsearch."
  },
  {
    "id": "ent.elasticsearch.test_config.reenter_password",
    "translation": "The Elasticsearch Server URL or Username has changed. Please re-enter the Elasticsearch password to test connection."
  },
  {
    "id": "ent.emoji.licence_disable.app_error",
    "translation": "Custom emoji restrictions disabled by current license. Please contact your system administrator about upgrading your enterprise license."
  },
  {
    "id": "ent.ldap.create_fail",
    "translation": "Unable to create LDAP user."
  },
  {
    "id": "ent.ldap.disabled.app_error",
    "translation": "AD/LDAP disabled or licence does not support AD/LDAP."
  },
  {
    "id": "ent.ldap.do_login.bind_admin_user.app_error",
    "translation": "Unable to bind to AD/LDAP server. Check BindUsername and BindPassword."
  },
  {
    "id": "ent.ldap.do_login.invalid_password.app_error",
    "translation": "Invalid Password"
  },
  {
    "id": "ent.ldap.do_login.licence_disable.app_error",
    "translation": "AD/LDAP functionality disabled by current license. Please contact your system administrator about upgrading your enterprise license."
  },
  {
    "id": "ent.ldap.do_login.matched_to_many_users.app_error",
    "translation": "Username given matches multiple users"
  },
  {
    "id": "ent.ldap.do_login.search_ldap_server.app_error",
    "translation": "Failed to search AD/LDAP server"
  },
  {
    "id": "ent.ldap.do_login.unable_to_connect.app_error",
    "translation": "Unable to connect to AD/LDAP server"
  },
  {
    "id": "ent.ldap.do_login.unable_to_create_user.app_error",
    "translation": "Credentials valid but unable to create user."
  },
  {
    "id": "ent.ldap.do_login.user_filtered.app_error",
    "translation": "Your AD/LDAP account does not have permission to use this Mattermost server. Please ask your System Administrator to check the AD/LDAP user filter."
  },
  {
    "id": "ent.ldap.do_login.user_not_registered.app_error",
    "translation": "User not registered on AD/LDAP server"
  },
  {
    "id": "ent.ldap.mattermost_user_update",
    "translation": "Mattermost user was updated by AD/LDAP server."
  },
  {
    "id": "ent.ldap.syncdone.info",
    "translation": "AD/LDAP Synchronization completed"
  },
  {
    "id": "ent.ldap.syncronize.get_all.app_error",
    "translation": "Unable to get all users using AD/LDAP"
  },
  {
    "id": "ent.ldap.validate_filter.app_error",
    "translation": "Invalid AD/LDAP Filter"
  },
  {
    "id": "ent.metrics.starting.info",
    "translation": "Metrics and profiling server is listening on %v"
  },
  {
    "id": "ent.metrics.stopping.info",
    "translation": "Metrics and profiling server is stopping on %v"
  },
  {
    "id": "ent.mfa.activate.authenticate.app_error",
    "translation": "Error attempting to authenticate MFA token"
  },
  {
    "id": "ent.mfa.activate.bad_token.app_error",
    "translation": "Invalid MFA token"
  },
  {
    "id": "ent.mfa.activate.save_active.app_erro",
    "translation": "Unable to update MFA active status for the user"
  },
  {
    "id": "ent.mfa.deactivate.save_active.app_erro",
    "translation": "Unable to update MFA active status for the user"
  },
  {
    "id": "ent.mfa.deactivate.save_secret.app_error",
    "translation": "Error clearing the MFA secret"
  },
  {
    "id": "ent.mfa.generate_qr_code.create_code.app_error",
    "translation": "Error generating QR code"
  },
  {
    "id": "ent.mfa.generate_qr_code.save_secret.app_error",
    "translation": "Error saving the MFA secret"
  },
  {
    "id": "ent.mfa.license_disable.app_error",
    "translation": "Your license does not support using multi-factor authentication"
  },
  {
    "id": "ent.mfa.validate_token.authenticate.app_error",
    "translation": "Error trying to authenticate MFA token"
  },
  {
    "id": "ent.migration.migratetoldap.duplicate_field",
    "translation": "Unable to migrate AD/LDAP users with specified field. Duplicate entry detected. Please remove all duplcates and try again."
  },
  {
    "id": "ent.migration.migratetoldap.user_not_found",
    "translation": "Unable to find user on AD/LDAP server: "
  },
  {
    "id": "ent.saml.attribute.app_error",
    "translation": "SAML login was unsuccessful because one of the attributes is incorrect. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.build_request.app_error",
    "translation": "An error occurred while initiating the request to the Identity Provider. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.build_request.encoding.app_error",
    "translation": "An error occurred while encoding the request for the Identity Provider. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.build_request.encoding_signed.app_error",
    "translation": "An error occurred while encoding the signed request for the Identity Provider. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.configure.app_error",
    "translation": "An error occurred while configuring SAML Service Provider, err=%v"
  },
  {
    "id": "ent.saml.configure.encryption_not_enabled.app_error",
    "translation": "SAML login was unsuccessful because encryption is not enabled. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.configure.load_idp_cert.app_error",
    "translation": "Identity Provider Public Certificate File was not found. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.configure.load_private_key.app_error",
    "translation": "SAML login was unsuccessful because the Service Provider Private Key was not found. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.configure.load_public_cert.app_error",
    "translation": "Service Provider Public Certificate File was not found. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.configure.not_encrypted_response.app_error",
    "translation": "SAML login was unsuccessful as the Identity Provider response is not encrypted. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.do_login.decrypt.app_error",
    "translation": "SAML login was unsuccessful because an error occurred while decrypting the response from the Identity Provider. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.do_login.empty_response.app_error",
    "translation": "We received an empty response from the Identity Provider"
  },
  {
    "id": "ent.saml.do_login.parse.app_error",
    "translation": "An error occurred while parsing the response from the Identity Provider. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.do_login.validate.app_error",
    "translation": "An error occurred while validating the response from the Identity Provider. Please contact your System Administrator."
  },
  {
    "id": "ent.saml.license_disable.app_error",
    "translation": "Your license does not support SAML authentication."
  },
  {
    "id": "ent.saml.metadata.app_error",
    "translation": "An error occurred while building Service Provider Metadata."
  },
  {
    "id": "ent.saml.service_disable.app_error",
    "translation": "SAML is not configured or supported on this server."
  },
  {
    "id": "ent.saml.update_saml_user.unable_error",
    "translation": "Unable to update existing SAML user. Allowing login anyway. err=%v"
  },
  {
    "id": "error.generic.link_message",
    "translation": "Back to Mattermost"
  },
  {
    "id": "error.generic.message",
    "translation": "An error has occurred."
  },
  {
    "id": "error.generic.title",
    "translation": "Error"
  },
  {
    "id": "error.not_found.link_message",
    "translation": "Back to Mattermost"
  },
  {
    "id": "error.not_found.message",
    "translation": "The page you were trying to reach does not exist."
  },
  {
    "id": "error.not_found.title",
    "translation": "Page not found"
  },
  {
    "id": "jobs.set_job_error.update.error",
    "translation": "Failed to set job status to error"
  },
  {
    "id": "jobs.request_cancellation.status.error",
    "translation": "Could not request cancellation for job that is not in a cancelable state."
  },
  {
    "id": "manaultesting.get_channel_id.no_found.debug",
    "translation": "Could not find channel: %v, %v possibilities searched"
  },
  {
    "id": "manaultesting.get_channel_id.unable.debug",
    "translation": "Unable to get channels"
  },
  {
    "id": "manaultesting.manual_test.create.info",
    "translation": "Creating user and team"
  },
  {
    "id": "manaultesting.manual_test.parse.app_error",
    "translation": "Unable to parse URL"
  },
  {
    "id": "manaultesting.manual_test.setup.info",
    "translation": "Setting up for manual test..."
  },
  {
    "id": "manaultesting.manual_test.uid.debug",
    "translation": "No uid in URL"
  },
  {
    "id": "manaultesting.test_autolink.info",
    "translation": "Manual Auto Link Test"
  },
  {
    "id": "manaultesting.test_autolink.unable.app_error",
    "translation": "Unable to get channels"
  },
  {
    "id": "mattermost.bulletin.subject",
    "translation": "Mattermost Security Bulletin"
  },
  {
    "id": "mattermost.config_file",
    "translation": "Loaded config file from %v"
  },
  {
    "id": "mattermost.current_version",
    "translation": "Current version is %v (%v/%v/%v/%v)"
  },
  {
    "id": "mattermost.entreprise_enabled",
    "translation": "Enterprise Enabled: %v"
  },
  {
    "id": "mattermost.load_license.find.warn",
    "translation": "License key from https://mattermost.com required to unlock enterprise features."
  },
  {
    "id": "mattermost.security_bulletin.error",
    "translation": "Failed to get security bulletin details"
  },
  {
    "id": "mattermost.security_bulletin_read.error",
    "translation": "Failed to read security bulletin details"
  },
  {
    "id": "mattermost.security_checks.debug",
    "translation": "Checking for security update from Mattermost"
  },
  {
    "id": "mattermost.security_info.error",
    "translation": "Failed to get security update information from Mattermost."
  },
  {
    "id": "mattermost.send_bulletin.info",
    "translation": "Sending security bulletin for %v to %v"
  },
  {
    "id": "mattermost.system_admins.error",
    "translation": "Failed to get system admins for security update information from Mattermost."
  },
  {
    "id": "mattermost.working_dir",
    "translation": "Current working directory is %v"
  },
  {
    "id": "model.access.is_valid.access_token.app_error",
    "translation": "Invalid access token"
  },
  {
    "id": "model.access.is_valid.client_id.app_error",
    "translation": "Invalid client id"
  },
  {
    "id": "model.access.is_valid.redirect_uri.app_error",
    "translation": "Invalid redirect uri"
  },
  {
    "id": "model.access.is_valid.refresh_token.app_error",
    "translation": "Invalid refresh token"
  },
  {
    "id": "model.access.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.authorize.is_valid.auth_code.app_error",
    "translation": "Invalid authorization code"
  },
  {
    "id": "model.authorize.is_valid.client_id.app_error",
    "translation": "Invalid client id"
  },
  {
    "id": "model.authorize.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.authorize.is_valid.expires.app_error",
    "translation": "Expires in must be set"
  },
  {
    "id": "model.authorize.is_valid.redirect_uri.app_error",
    "translation": "Invalid redirect uri"
  },
  {
    "id": "model.authorize.is_valid.response_type.app_error",
    "translation": "Invalid response type"
  },
  {
    "id": "model.authorize.is_valid.scope.app_error",
    "translation": "Invalid scope"
  },
  {
    "id": "model.authorize.is_valid.state.app_error",
    "translation": "Invalid state"
  },
  {
    "id": "model.authorize.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.channel.is_valid.2_or_more.app_error",
    "translation": "Name must be 2 or more lowercase alphanumeric characters"
  },
  {
    "id": "model.channel.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.channel.is_valid.creator_id.app_error",
    "translation": "Invalid creator id"
  },
  {
    "id": "model.channel.is_valid.display_name.app_error",
    "translation": "Invalid display name"
  },
  {
    "id": "model.channel.is_valid.header.app_error",
    "translation": "Invalid header"
  },
  {
    "id": "model.channel.is_valid.id.app_error",
    "translation": "Invalid Id"
  },
  {
    "id": "model.channel.is_valid.name.app_error",
    "translation": "Invalid name"
  },
  {
    "id": "model.channel.is_valid.purpose.app_error",
    "translation": "Invalid purpose"
  },
  {
    "id": "model.channel.is_valid.type.app_error",
    "translation": "Invalid type"
  },
  {
    "id": "model.channel.is_valid.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.channel_member.is_valid.channel_id.app_error",
    "translation": "Invalid channel id"
  },
  {
    "id": "model.channel_member.is_valid.email_value.app_error",
    "translation": "Invalid email notification value"
  },
  {
    "id": "model.channel_member.is_valid.notify_level.app_error",
    "translation": "Invalid notify level"
  },
  {
    "id": "model.channel_member.is_valid.push_level.app_error",
    "translation": "Invalid push notification level"
  },
  {
    "id": "model.channel_member.is_valid.role.app_error",
    "translation": "Invalid role"
  },
  {
    "id": "model.channel_member.is_valid.unread_level.app_error",
    "translation": "Invalid mark unread level"
  },
  {
    "id": "model.channel_member.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.client.connecting.app_error",
    "translation": "We encountered an error while connecting to the server"
  },
  {
    "id": "model.client.create_emoji.emoji.app_error",
    "translation": "Unable to attach emoji data to request"
  },
  {
    "id": "model.client.create_emoji.image.app_error",
    "translation": "Unable to attach image to request"
  },
  {
    "id": "model.client.create_emoji.writer.app_error",
    "translation": "Unable to write request"
  },
  {
    "id": "model.client.get_flagged_posts_in_channel.missing_parameter.app_error",
    "translation": "Missing channel parameter"
  },
  {
    "id": "model.client.get_flagged_posts_in_team.missing_parameter.app_error",
    "translation": "Missing team parameter"
  },
  {
    "id": "model.client.login.app_error",
    "translation": "Authentication tokens didn't match"
  },
  {
    "id": "model.client.read_file.app_error",
    "translation": "We encountered an error while reading the file"
  },
  {
    "id": "model.client.set_profile_user.no_file.app_error",
    "translation": "No file under 'image' in request"
  },
  {
    "id": "model.client.set_profile_user.writer.app_error",
    "translation": "Unable to write request"
  },
  {
    "id": "model.client.upload_post_attachment.channel_id.app_error",
    "translation": "Error writing channel id to multipart form"
  },
  {
    "id": "model.client.upload_post_attachment.file.app_error",
    "translation": "Error writing file to multipart form"
  },
  {
    "id": "model.client.upload_post_attachment.file_size.app_error",
    "translation": "Error writing fileSize to multipart form"
  },
  {
    "id": "model.client.upload_post_attachment.import_from.app_error",
    "translation": "Error writing importFrom to multipart form"
  },
  {
    "id": "model.client.upload_post_attachment.writer.app_error",
    "translation": "Error closing multipart writer"
  },
  {
    "id": "model.client.upload_saml_cert.app_error",
    "translation": "Error creating SAML certificate multipart form request"
  },
  {
    "id": "model.command.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.command.is_valid.description.app_error",
    "translation": "Invalid description"
  },
  {
    "id": "model.command.is_valid.display_name.app_error",
    "translation": "Invalid display name"
  },
  {
    "id": "model.command.is_valid.id.app_error",
    "translation": "Invalid Id"
  },
  {
    "id": "model.command.is_valid.method.app_error",
    "translation": "Invalid Method"
  },
  {
    "id": "model.command.is_valid.team_id.app_error",
    "translation": "Invalid team ID"
  },
  {
    "id": "model.command.is_valid.token.app_error",
    "translation": "Invalid token"
  },
  {
    "id": "model.command.is_valid.trigger.app_error",
    "translation": "Invalid trigger"
  },
  {
    "id": "model.command.is_valid.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.command.is_valid.url.app_error",
    "translation": "Invalid URL"
  },
  {
    "id": "model.command.is_valid.url_http.app_error",
    "translation": "Invalid URL. Must be a valid URL and start with http:// or https://"
  },
  {
    "id": "model.command.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.compliance.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.compliance.is_valid.desc.app_error",
    "translation": "Invalid description"
  },
  {
    "id": "model.compliance.is_valid.end_at.app_error",
    "translation": "To must be a valid time"
  },
  {
    "id": "model.compliance.is_valid.id.app_error",
    "translation": "Invalid Id"
  },
  {
    "id": "model.compliance.is_valid.start_at.app_error",
    "translation": "From must be a valid time"
  },
  {
    "id": "model.compliance.is_valid.start_end_at.app_error",
    "translation": "To must be greater than From"
  },
  {
    "id": "model.config.is_valid.cluster_email_batching.app_error",
    "translation": "Unable to enable email batching when clustering is enabled."
  },
  {
    "id": "model.config.is_valid.elastic_search.connection_url.app_error",
    "translation": "Elastic Search ConnectionUrl setting must be provided when Elastic Search indexing is enabled."
  },
  {
    "id": "model.config.is_valid.elastic_search.enable_searching.app_error",
    "translation": "Elastic Search IndexingEnabled setting must be set to true when Elastic Search SearchEnabled is set to true."
  },
  {
    "id": "model.config.is_valid.elastic_search.password.app_error",
    "translation": "Elastic Search Password setting must be provided when Elastic Search indexing is enabled."
  },
  {
    "id": "model.config.is_valid.elastic_search.username.app_error",
    "translation": "Elastic Search Username setting must be provided when Elastic Search indexing is enabled."
  },
  {
    "id": "model.config.is_valid.email_batching_buffer_size.app_error",
    "translation": "Invalid email batching buffer size for email settings.  Must be zero or a positive number."
  },
  {
    "id": "model.config.is_valid.email_batching_interval.app_error",
    "translation": "Invalid email batching interval for email settings.  Must be 30 seconds or more."
  },
  {
    "id": "model.config.is_valid.email_reset_salt.app_error",
    "translation": "Invalid password reset salt for email settings.  Must be 32 chars or more."
  },
  {
    "id": "model.config.is_valid.email_salt.app_error",
    "translation": "Invalid invite salt for email settings.  Must be 32 chars or more."
  },
  {
    "id": "model.config.is_valid.email_security.app_error",
    "translation": "Invalid connection security for email settings.  Must be '', 'TLS', or 'STARTTLS'"
  },
  {
    "id": "model.config.is_valid.encrypt_sql.app_error",
    "translation": "Invalid at rest encrypt key for SQL settings.  Must be 32 chars or more."
  },
  {
    "id": "model.config.is_valid.file_driver.app_error",
    "translation": "Invalid driver name for file settings.  Must be 'local' or 'amazons3'"
  },
  {
    "id": "model.config.is_valid.file_preview_height.app_error",
    "translation": "Invalid preview height for file settings.  Must be zero or a positive number."
  },
  {
    "id": "model.config.is_valid.file_preview_width.app_error",
    "translation": "Invalid preview width for file settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.file_profile_height.app_error",
    "translation": "Invalid profile height for file settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.file_profile_width.app_error",
    "translation": "Invalid profile width for file settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.file_salt.app_error",
    "translation": "Invalid public link salt for file settings.  Must be 32 chars or more."
  },
  {
    "id": "model.config.is_valid.file_thumb_height.app_error",
    "translation": "Invalid thumbnail height for file settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.file_thumb_width.app_error",
    "translation": "Invalid thumbnail width for file settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.ldap_basedn",
    "translation": "AD/LDAP field \"BaseDN\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_bind_password",
    "translation": "AD/LDAP field \"Bind Password\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_bind_username",
    "translation": "AD/LDAP field \"Bind Username\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_email",
    "translation": "AD/LDAP field \"Email Attribute\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_firstname",
    "translation": "AD/LDAP field \"First Name Attribute\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_id",
    "translation": "AD/LDAP field \"ID Attribute\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_lastname",
    "translation": "AD/LDAP field \"Last Name Attribute\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_max_page_size.app_error",
    "translation": "Invalid max page size value."
  },
  {
    "id": "model.config.is_valid.ldap_required.app_error",
    "translation": "Required AD/LDAP field missing."
  },
  {
    "id": "model.config.is_valid.ldap_required.app_error",
    "translation": "Required AD/LDAP field missing."
  },
  {
    "id": "model.config.is_valid.ldap_security.app_error",
    "translation": "Invalid connection security for AD/LDAP settings.  Must be '', 'TLS', or 'STARTTLS'"
  },
  {
    "id": "model.config.is_valid.ldap_server",
    "translation": "AD/LDAP field \"AD/LDAP Server\" is required."
  },
  {
    "id": "model.config.is_valid.ldap_sync_interval.app_error",
    "translation": "Invalid sync interval time. Must be at least one minute."
  },
  {
    "id": "model.config.is_valid.ldap_username",
    "translation": "AD/LDAP field \"Username Attribute\" is required."
  },
  {
    "id": "model.config.is_valid.listen_address.app_error",
    "translation": "Invalid listen address for service settings Must be set."
  },
  {
    "id": "model.config.is_valid.login_attempts.app_error",
    "translation": "Invalid maximum login attempts for service settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.max_burst.app_error",
    "translation": "Maximum burst size must be greater than zero."
  },
  {
    "id": "model.config.is_valid.max_channels.app_error",
    "translation": "Invalid maximum channels per team for team settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.max_file_size.app_error",
    "translation": "Invalid max file size for file settings. Must be a whole number greater than zero."
  },
  {
    "id": "model.config.is_valid.max_notify_per_channel.app_error",
    "translation": "Invalid maximum notifications per channel for team settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.max_users.app_error",
    "translation": "Invalid maximum users per team for team settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.password_length.app_error",
    "translation": "Minimum password length must be a whole number greater than or equal to {{.MinLength}} and less than or equal to {{.MaxLength}}."
  },
  {
    "id": "model.config.is_valid.password_length_max_min.app_error",
    "translation": "Maximum password length must be greater than or equal to minimum password length."
  },
  {
    "id": "model.config.is_valid.rate_mem.app_error",
    "translation": "Invalid memory store size for rate limit settings.  Must be a positive number"
  },
  {
    "id": "model.config.is_valid.rate_sec.app_error",
    "translation": "Invalid per sec for rate limit settings.  Must be a positive number"
  },
  {
    "id": "model.config.is_valid.read_timeout.app_error",
    "translation": "Invalid value for read timeout."
  },
  {
    "id": "model.config.is_valid.restrict_direct_message.app_error",
    "translation": "Invalid direct message restriction.  Must be 'any', or 'team'"
  },
  {
    "id": "model.config.is_valid.saml_assertion_consumer_service_url.app_error",
    "translation": "Service Provider Login URL must be a valid URL and start with http:// or https://."
  },
  {
    "id": "model.config.is_valid.saml_email_attribute.app_error",
    "translation": "Invalid Email attribute. Must be set."
  },
  {
    "id": "model.config.is_valid.saml_idp_cert.app_error",
    "translation": "Identity Provider Public Certificate missing. Did you forget to upload it?"
  },
  {
    "id": "model.config.is_valid.saml_idp_descriptor_url.app_error",
    "translation": "Identity Provider Issuer URL must be a valid URL and start with http:// or https://."
  },
  {
    "id": "model.config.is_valid.saml_idp_url.app_error",
    "translation": "SAML SSO URL must be a valid URL and start with http:// or https://."
  },
  {
    "id": "model.config.is_valid.saml_private_key.app_error",
    "translation": "Service Provider Private Key missing. Did you forget to upload it?"
  },
  {
    "id": "model.config.is_valid.saml_public_cert.app_error",
    "translation": "Service Provider Public Certificate missing. Did you forget to upload it?"
  },
  {
    "id": "model.config.is_valid.saml_username_attribute.app_error",
    "translation": "Invalid Username attribute. Must be set."
  },
  {
    "id": "model.config.is_valid.site_url.app_error",
    "translation": "Site URL must be a valid URL and start with http:// or https://"
  },
  {
    "id": "model.config.is_valid.site_url_email_batching.app_error",
    "translation": "Unable to enable email batching when SiteURL isn't set."
  },
  {
    "id": "model.config.is_valid.sitename_length.app_error",
    "translation": "Site name must be less than or equal to {{.MaxLength}} characters."
  },
  {
    "id": "model.config.is_valid.sql_data_src.app_error",
    "translation": "Invalid data source for SQL settings.  Must be set."
  },
  {
    "id": "model.config.is_valid.sql_driver.app_error",
    "translation": "Invalid driver name for SQL settings.  Must be 'mysql' or 'postgres'"
  },
  {
    "id": "model.config.is_valid.sql_idle.app_error",
    "translation": "Invalid maximum idle connection for SQL settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.sql_max_conn.app_error",
    "translation": "Invalid maximum open connection for SQL settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.sql_query_timeout.app_error",
    "translation": "Invalid query timeout for SQL settings.  Must be a positive number."
  },
  {
    "id": "model.config.is_valid.teammate_name_display.app_error",
    "translation": "Invalid teammate display.  Must be 'full_name', 'nickname_full_name' or 'username'"
  },
  {
    "id": "model.config.is_valid.time_between_user_typing.app_error",
    "translation": "Time between user typing updates should not be set to less than 1000 milliseconds."
  },
  {
    "id": "model.config.is_valid.webrtc_gateway_admin_secret.app_error",
    "translation": "WebRTC Gateway Admin Secret must be set."
  },
  {
    "id": "model.config.is_valid.webrtc_gateway_admin_url.app_error",
    "translation": "WebRTC Gateway Admin URL must be a valid URL starting with http:// or https://."
  },
  {
    "id": "model.config.is_valid.webrtc_gateway_ws_url.app_error",
    "translation": "WebRTC Gateway Websocket URL must be a valid URL starting with ws:// or wss://."
  },
  {
    "id": "model.config.is_valid.webrtc_stun_uri.app_error",
    "translation": "WebRTC STUN URI must be a valid URL starting with stun:"
  },
  {
    "id": "model.config.is_valid.webrtc_turn_shared_key.app_error",
    "translation": "WebRTC TURN Shared Key cannot be empty if the TURN URI has been set."
  },
  {
    "id": "model.config.is_valid.webrtc_turn_uri.app_error",
    "translation": "WebRTC TURN URI must be a valid URI and start with turn:"
  },
  {
    "id": "model.config.is_valid.webrtc_turn_username.app_error",
    "translation": "WebRTC TURN Username cannot be empty if the TURN URI has been set."
  },
  {
    "id": "model.config.is_valid.webserver_security.app_error",
    "translation": "Invalid value for webserver connection security."
  },
  {
    "id": "model.config.is_valid.write_timeout.app_error",
    "translation": "Invalid value for write timeout."
  },
  {
    "id": "model.emoji.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.emoji.creator_id.app_error",
    "translation": "Invalid creator id"
  },
  {
    "id": "model.emoji.id.app_error",
    "translation": "Invalid emoji id"
  },
  {
    "id": "model.emoji.name.app_error",
    "translation": "Name must be 1 to 64 lowercase alphanumeric characters"
  },
  {
    "id": "model.emoji.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.file_info.get.gif.app_error",
    "translation": "Could not decode gif."
  },
  {
    "id": "model.incoming_hook.channel_id.app_error",
    "translation": "Invalid channel id"
  },
  {
    "id": "model.incoming_hook.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.incoming_hook.description.app_error",
    "translation": "Invalid description"
  },
  {
    "id": "model.incoming_hook.display_name.app_error",
    "translation": "Invalid display name"
  },
  {
    "id": "model.incoming_hook.id.app_error",
    "translation": "Invalid Id"
  },
  {
    "id": "model.incoming_hook.team_id.app_error",
    "translation": "Invalid team ID"
  },
  {
    "id": "model.incoming_hook.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.incoming_hook.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.job.is_valid.id.app_error",
    "translation": "Invalid job Id"
  },
  {
    "id": "model.job.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.job.is_valid.type.app_error",
    "translation": "Invalid job type"
  },
  {
    "id": "model.job.is_valid.status.app_error",
    "translation": "Invalid job status"
  },
  {
    "id": "model.oauth.is_valid.app_id.app_error",
    "translation": "Invalid app id"
  },
  {
    "id": "model.oauth.is_valid.callback.app_error",
    "translation": "Callback URL must be a valid URL and start with http:// or https://."
  },
  {
    "id": "model.oauth.is_valid.client_secret.app_error",
    "translation": "Invalid client secret"
  },
  {
    "id": "model.oauth.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.oauth.is_valid.creator_id.app_error",
    "translation": "Invalid creator id"
  },
  {
    "id": "model.oauth.is_valid.description.app_error",
    "translation": "Invalid description"
  },
  {
    "id": "model.oauth.is_valid.homepage.app_error",
    "translation": "Homepage must be a valid URL and start with http:// or https://."
  },
  {
    "id": "model.oauth.is_valid.icon_url.app_error",
    "translation": "Icon URL must be a valid URL and start with http:// or https://."
  },
  {
    "id": "model.oauth.is_valid.name.app_error",
    "translation": "Invalid name"
  },
  {
    "id": "model.oauth.is_valid.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.outgoing_hook.is_valid.callback.app_error",
    "translation": "Invalid callback URLs"
  },
  {
    "id": "model.outgoing_hook.is_valid.channel_id.app_error",
    "translation": "Invalid channel id"
  },
  {
    "id": "model.outgoing_hook.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.outgoing_hook.is_valid.description.app_error",
    "translation": "Invalid description"
  },
  {
    "id": "model.outgoing_hook.is_valid.display_name.app_error",
    "translation": "Invalid display name"
  },
  {
    "id": "model.outgoing_hook.is_valid.id.app_error",
    "translation": "Invalid Id"
  },
  {
    "id": "model.outgoing_hook.is_valid.team_id.app_error",
    "translation": "Invalid team ID"
  },
  {
    "id": "model.outgoing_hook.is_valid.token.app_error",
    "translation": "Invalid token"
  },
  {
    "id": "model.outgoing_hook.is_valid.trigger_words.app_error",
    "translation": "Invalid trigger words"
  },
  {
    "id": "model.outgoing_hook.is_valid.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.outgoing_hook.is_valid.url.app_error",
    "translation": "Invalid callback URLs. Each must be a valid URL and start with http:// or https://"
  },
  {
    "id": "model.outgoing_hook.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.outgoing_hook.is_valid.words.app_error",
    "translation": "Invalid trigger words"
  },
  {
    "id": "model.post.is_valid.channel_id.app_error",
    "translation": "Invalid channel id"
  },
  {
    "id": "model.post.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.post.is_valid.file_ids.app_error",
    "translation": "Invalid file ids"
  },
  {
    "id": "model.post.is_valid.filenames.app_error",
    "translation": "Invalid filenames"
  },
  {
    "id": "model.post.is_valid.hashtags.app_error",
    "translation": "Invalid hashtags"
  },
  {
    "id": "model.post.is_valid.id.app_error",
    "translation": "Invalid Id"
  },
  {
    "id": "model.post.is_valid.msg.app_error",
    "translation": "Invalid message"
  },
  {
    "id": "model.post.is_valid.original_id.app_error",
    "translation": "Invalid original id"
  },
  {
    "id": "model.post.is_valid.parent_id.app_error",
    "translation": "Invalid parent id"
  },
  {
    "id": "model.post.is_valid.props.app_error",
    "translation": "Invalid props"
  },
  {
    "id": "model.post.is_valid.root_id.app_error",
    "translation": "Invalid root id"
  },
  {
    "id": "model.post.is_valid.root_parent.app_error",
    "translation": "Invalid root ID must be set if parent ID set"
  },
  {
    "id": "model.post.is_valid.type.app_error",
    "translation": "Invalid type"
  },
  {
    "id": "model.post.is_valid.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.post.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.preference.is_valid.category.app_error",
    "translation": "Invalid category"
  },
  {
    "id": "model.preference.is_valid.id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.preference.is_valid.name.app_error",
    "translation": "Invalid name"
  },
  {
    "id": "model.preference.is_valid.theme.app_error",
    "translation": "Invalid theme"
  },
  {
    "id": "model.preference.is_valid.value.app_error",
    "translation": "Value is too long"
  },
  {
    "id": "model.reaction.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.reaction.is_valid.emoji_name.app_error",
    "translation": "Invalid emoji name"
  },
  {
    "id": "model.reaction.is_valid.post_id.app_error",
    "translation": "Invalid post id"
  },
  {
    "id": "model.reaction.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.team.is_valid.characters.app_error",
    "translation": "Name must be 2 or more lowercase alphanumeric characters"
  },
  {
    "id": "model.team.is_valid.company.app_error",
    "translation": "Invalid company name"
  },
  {
    "id": "model.team.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.team.is_valid.description.app_error",
    "translation": "Invalid description"
  },
  {
    "id": "model.team.is_valid.domains.app_error",
    "translation": "Invalid allowed domains"
  },
  {
    "id": "model.team.is_valid.email.app_error",
    "translation": "Invalid email"
  },
  {
    "id": "model.team.is_valid.id.app_error",
    "translation": "Invalid Id"
  },
  {
    "id": "model.team.is_valid.name.app_error",
    "translation": "Invalid name"
  },
  {
    "id": "model.team.is_valid.reserved.app_error",
    "translation": "This URL is unavailable. Please try another."
  },
  {
    "id": "model.team.is_valid.type.app_error",
    "translation": "Invalid type"
  },
  {
    "id": "model.team.is_valid.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.team.is_valid.url.app_error",
    "translation": "Invalid URL Identifier"
  },
  {
    "id": "model.team_member.is_valid.role.app_error",
    "translation": "Invalid role"
  },
  {
    "id": "model.team_member.is_valid.team_id.app_error",
    "translation": "Invalid team ID"
  },
  {
    "id": "model.team_member.is_valid.user_id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.token.is_valid.expiry",
    "translation": "Invalid token expiry"
  },
  {
    "id": "model.token.is_valid.size",
    "translation": "Invalid token."
  },
  {
    "id": "model.user.is_valid.auth_data.app_error",
    "translation": "Invalid auth data"
  },
  {
    "id": "model.user.is_valid.auth_data_pwd.app_error",
    "translation": "Invalid user, password and auth data cannot both be set"
  },
  {
    "id": "model.user.is_valid.auth_data_type.app_error",
    "translation": "Invalid user, auth data must be set with auth type"
  },
  {
    "id": "model.user.is_valid.create_at.app_error",
    "translation": "Create at must be a valid time"
  },
  {
    "id": "model.user.is_valid.email.app_error",
    "translation": "Invalid email"
  },
  {
    "id": "model.user.is_valid.first_name.app_error",
    "translation": "Invalid first name"
  },
  {
    "id": "model.user.is_valid.id.app_error",
    "translation": "Invalid user id"
  },
  {
    "id": "model.user.is_valid.last_name.app_error",
    "translation": "Invalid last name"
  },
  {
    "id": "model.user.is_valid.nickname.app_error",
    "translation": "Invalid nickname"
  },
  {
    "id": "model.user.is_valid.password_limit.app_error",
    "translation": "Unable to set a password over 72 characters due to the limitations of bcrypt."
  },
  {
    "id": "model.user.is_valid.position.app_error",
    "translation": "Invalid position: must not be longer than 35 characters."
  },
  {
    "id": "model.user.is_valid.pwd.app_error",
    "translation": "Your password must contain at least {{.Min}} characters."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase_number.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter and at least one number."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase_number_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter, at least one number, and at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter and at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase_uppercase.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter and at least one uppercase letter."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase_uppercase_number.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter, at least one uppercase letter, and at least one number."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase_uppercase_number_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter, at least one uppercase letter, at least one number, and at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.pwd_lowercase_uppercase_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one lowercase letter, at least one uppercase letter, and at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.pwd_number.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one number."
  },
  {
    "id": "model.user.is_valid.pwd_number_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one number and at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.pwd_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.pwd_uppercase.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one uppercase letter."
  },
  {
    "id": "model.user.is_valid.pwd_uppercase_number.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one uppercase letter and at least one number."
  },
  {
    "id": "model.user.is_valid.pwd_uppercase_number_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one uppercase letter, at least one number, and at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.pwd_uppercase_symbol.app_error",
    "translation": "Your password must contain at least {{.Min}} characters made up of at least one uppercase letter and at least one symbol (e.g. \"~!@#$%^&*()\")."
  },
  {
    "id": "model.user.is_valid.team_id.app_error",
    "translation": "Invalid team ID"
  },
  {
    "id": "model.user.is_valid.update_at.app_error",
    "translation": "Update at must be a valid time"
  },
  {
    "id": "model.user.is_valid.username.app_error",
    "translation": "Invalid username"
  },
  {
    "id": "model.utils.decode_json.app_error",
    "translation": "could not decode"
  },
  {
    "id": "store.sql.alter_column_type.critical",
    "translation": "Failed to alter column type %v"
  },
  {
    "id": "store.sql.check_index.critical",
    "translation": "Failed to check index %v"
  },
  {
    "id": "store.sql.closing.info",
    "translation": "Closing SqlStore"
  },
  {
    "id": "store.sql.column_exists.critical",
    "translation": "Failed to check if column exists %v"
  },
  {
    "id": "store.sql.column_exists_missing_driver.critical",
    "translation": "Failed to check if column exists because of missing driver"
  },
  {
    "id": "store.sql.convert_encrypt_string_map",
    "translation": "FromDb: Unable to convert EncryptStringMap to *string"
  },
  {
    "id": "store.sql.convert_string_array",
    "translation": "FromDb: Unable to convert StringArray to *string"
  },
  {
    "id": "store.sql.convert_string_interface",
    "translation": "FromDb: Unable to convert StringInterface to *string"
  },
  {
    "id": "store.sql.convert_string_map",
    "translation": "FromDb: Unable to convert StringMap to *string"
  },
  {
    "id": "store.sql.create_column.critical",
    "translation": "Failed to create column %v"
  },
  {
    "id": "store.sql.create_column_missing_driver.critical",
    "translation": "Failed to create column because of missing driver"
  },
  {
    "id": "store.sql.create_index.critical",
    "translation": "Failed to create index %v"
  },
  {
    "id": "store.sql.create_index_missing_driver.critical",
    "translation": "Failed to create index because of missing driver"
  },
  {
    "id": "store.sql.creating_tables.critical",
    "translation": "Error creating database tables: %v"
  },
  {
    "id": "store.sql.dialect_driver.critical",
    "translation": "Failed to create dialect specific driver"
  },
  {
    "id": "store.sql.dialect_driver.panic",
    "translation": "Failed to create dialect specific driver %v"
  },
  {
    "id": "store.sql.incorrect_mac",
    "translation": "Incorrect MAC for the given ciphertext"
  },
  {
    "id": "store.sql.maxlength_column.critical",
    "translation": "Failed to get max length of column %v"
  },
  {
    "id": "store.sql.open_conn.critical",
    "translation": "Failed to open SQL connection to err:%v"
  },
  {
    "id": "store.sql.open_conn.panic",
    "translation": "Failed to open SQL connection %v"
  },
  {
    "id": "store.sql.read_replicas_not_licensed.critical",
    "translation": "More than 1 read replica functionality disabled by current license. Please contact your system administrator about upgrading your enterprise license."
  },
  {
    "id": "store.sql.remove_index.critical",
    "translation": "Failed to remove index %v"
  },
  {
    "id": "store.sql.rename_column.critical",
    "translation": "Failed to rename column %v"
  },
  {
    "id": "store.sql.schema_out_of_date.warn",
    "translation": "The database schema version of %v appears to be out of date"
  },
  {
    "id": "store.sql.schema_set.info",
    "translation": "The database schema has been set to version %v"
  },
  {
    "id": "store.sql.schema_upgrade_attempt.warn",
    "translation": "Attempting to upgrade the database schema version to %v"
  },
  {
    "id": "store.sql.schema_version.critical",
    "translation": "The database schema version of %v cannot be upgraded.  You must not skip a version."
  },
  {
    "id": "store.sql.short_ciphertext",
    "translation": "short ciphertext"
  },
  {
    "id": "store.sql.table_column_type.critical",
    "translation": "Failed to get data type for column %s from table %s: %v"
  },
  {
    "id": "store.sql.table_exists.critical",
    "translation": "Failed to check if table exists %v"
  },
  {
    "id": "store.sql.too_short_ciphertext",
    "translation": "ciphertext too short"
  },
  {
    "id": "store.sql.upgraded.warn",
    "translation": "The database schema has been upgraded to version %v"
  },
  {
    "id": "store.sql_audit.get.finding.app_error",
    "translation": "We encountered an error finding the audits"
  },
  {
    "id": "store.sql_audit.get.limit.app_error",
    "translation": "Limit exceeded for paging"
  },
  {
    "id": "store.sql_audit.permanent_delete_by_user.app_error",
    "translation": "We encountered an error deleting the audits"
  },
  {
    "id": "store.sql_audit.save.saving.app_error",
    "translation": "We encountered an error saving the audit"
  },
  {
    "id": "store.sql_channel.analytics_deleted_type_count.app_error",
    "translation": "We couldn't get deleted channel type counts"
  },
  {
    "id": "store.sql_channel.analytics_type_count.app_error",
    "translation": "We couldn't get channel type counts"
  },
  {
    "id": "store.sql_channel.check_open_channel_permissions.app_error",
    "translation": "We couldn't check the permissions"
  },
  {
    "id": "store.sql_channel.check_permissions.app_error",
    "translation": "We couldn't check the permissions"
  },
  {
    "id": "store.sql_channel.check_permissions_by_name.app_error",
    "translation": "We couldn't check the permissions"
  },
  {
    "id": "store.sql_channel.delete.channel.app_error",
    "translation": "We couldn't delete the channel"
  },
  {
    "id": "store.sql_channel.extra_updated.app_error",
    "translation": "Problem updating members last updated time"
  },
  {
    "id": "store.sql_channel.get.existing.app_error",
    "translation": "We couldn't find the existing channel"
  },
  {
    "id": "store.sql_channel.get.find.app_error",
    "translation": "We encountered an error finding the channel"
  },
  {
    "id": "store.sql_channel.get_all.app_error",
    "translation": "We couldn't get all the channels"
  },
  {
    "id": "store.sql_channel.get_by_name.existing.app_error",
    "translation": "We couldn't find the existing channel"
  },
  {
    "id": "store.sql_channel.get_by_name.missing.app_error",
    "translation": "Channel does not exist"
  },
  {
    "id": "store.sql_channel.get_channel_counts.get.app_error",
    "translation": "We couldn't get the channel counts"
  },
  {
    "id": "store.sql_channel.get_channels.get.app_error",
    "translation": "We couldn't get the channels"
  },
  {
    "id": "store.sql_channel.get_channels.not_found.app_error",
    "translation": "No channels were found"
  },
  {
    "id": "store.sql_channel.get_channels_by_ids.get.app_error",
    "translation": "We couldn't get the channels"
  },
  {
    "id": "store.sql_channel.get_channels_by_ids.not_found.app_error",
    "translation": "No channel found"
  },
  {
    "id": "store.sql_channel.get_deleted_by_name.existing.app_error",
    "translation": "We couldn't find the existing deleted channel"
  },
  {
    "id": "store.sql_channel.get_deleted_by_name.missing.app_error",
    "translation": "No deleted channel exists with that name"
  },
  {
    "id": "store.sql_channel.get_extra_members.app_error",
    "translation": "We couldn't get the extra info for channel members"
  },
  {
    "id": "store.sql_channel.get_for_post.app_error",
    "translation": "We couldn't get the channel for the given post"
  },
  {
    "id": "store.sql_channel.get_member.app_error",
    "translation": "We couldn't get the channel member"
  },
  {
    "id": "store.sql_channel.get_member.missing.app_error",
    "translation": "No channel member found for that user ID and channel ID"
  },
  {
    "id": "store.sql_channel.get_member_count.app_error",
    "translation": "We couldn't get the channel member count"
  },
  {
    "id": "store.sql_channel.get_member_for_post.app_error",
    "translation": "We couldn't get the channel member for the given post"
  },
  {
    "id": "store.sql_channel.get_members.app_error",
    "translation": "We couldn't get the channel members"
  },
  {
    "id": "store.sql_channel.get_members_by_ids.app_error",
    "translation": "We couldn't get the channel members"
  },
  {
    "id": "store.sql_channel.get_more_channels.get.app_error",
    "translation": "We couldn't get the channels"
  },
  {
    "id": "store.sql_channel.get_public_channels.get.app_error",
    "translation": "We couldn't get public channels"
  },
  {
    "id": "store.sql_channel.get_unread.app_error",
    "translation": "We couldn't get the channel unread messages"
  },
  {
    "id": "store.sql_channel.increment_mention_count.app_error",
    "translation": "We couldn't increment the mention count"
  },
  {
    "id": "store.sql_channel.permanent_delete.app_error",
    "translation": "We couldn't delete the channel"
  },
  {
    "id": "store.sql_channel.permanent_delete_by_team.app_error",
    "translation": "We couldn't delete the channels"
  },
  {
    "id": "store.sql_channel.permanent_delete_members_by_user.app_error",
    "translation": "We couldn't remove the channel member"
  },
  {
    "id": "store.sql_channel.pinned_posts.app_error",
    "translation": "We couldn't find the pinned posts"
  },
  {
    "id": "store.sql_channel.remove_member.app_error",
    "translation": "We couldn't remove the channel member"
  },
  {
    "id": "store.sql_channel.save.commit_transaction.app_error",
    "translation": "Unable to commit transaction"
  },
  {
    "id": "store.sql_channel.save.direct_channel.app_error",
    "translation": "Use SaveDirectChannel to create a direct channel"
  },
  {
    "id": "store.sql_channel.save.open_transaction.app_error",
    "translation": "Unable to open transaction"
  },
  {
    "id": "store.sql_channel.save_channel.current_count.app_error",
    "translation": "Failed to get current channel count"
  },
  {
    "id": "store.sql_channel.save_channel.existing.app_error",
    "translation": "Must call update for existing channel"
  },
  {
    "id": "store.sql_channel.save_channel.exists.app_error",
    "translation": "A channel with that name already exists on the same team"
  },
  {
    "id": "store.sql_channel.save_channel.limit.app_error",
    "translation": "You've reached the limit of the number of allowed channels."
  },
  {
    "id": "store.sql_channel.save_channel.previously.app_error",
    "translation": "A channel with that URL was previously created"
  },
  {
    "id": "store.sql_channel.save_channel.save.app_error",
    "translation": "We couldn't save the channel"
  },
  {
    "id": "store.sql_channel.save_direct_channel.add_members.app_error",
    "translation": "Unable to add direct channel members"
  },
  {
    "id": "store.sql_channel.save_direct_channel.commit.app_error",
    "translation": "Unable to commit transaction"
  },
  {
    "id": "store.sql_channel.save_direct_channel.not_direct.app_error",
    "translation": "Not a direct channel attempted to be created with SaveDirectChannel"
  },
  {
    "id": "store.sql_channel.save_direct_channel.open_transaction.app_error",
    "translation": "Unable to open transaction"
  },
  {
    "id": "store.sql_channel.save_member.commit_transaction.app_error",
    "translation": "Unable to commit transaction"
  },
  {
    "id": "store.sql_channel.save_member.exists.app_error",
    "translation": "A channel member with that ID already exists"
  },
  {
    "id": "store.sql_channel.save_member.open_transaction.app_error",
    "translation": "Unable to open transaction"
  },
  {
    "id": "store.sql_channel.save_member.save.app_error",
    "translation": "We couldn't save the channel member"
  },
  {
    "id": "store.sql_channel.search.app_error",
    "translation": "We encountered an error searching channels"
  },
  {
    "id": "store.sql_channel.set_last_viewed_at.app_error",
    "translation": "We couldn't set the last viewed at time"
  },
  {
    "id": "store.sql_channel.update.app_error",
    "translation": "We couldn't update the channel"
  },
  {
    "id": "store.sql_channel.update.exists.app_error",
    "translation": "A channel with that handle already exists"
  },
  {
    "id": "store.sql_channel.update.previously.app_error",
    "translation": "A channel with that handle was previously created"
  },
  {
    "id": "store.sql_channel.update.updating.app_error",
    "translation": "We encountered an error updating the channel"
  },
  {
    "id": "store.sql_channel.update_last_viewed_at.app_error",
    "translation": "We couldn't update the last viewed at time"
  },
  {
    "id": "store.sql_channel.update_member.app_error",
    "translation": "We encountered an error updating the channel member"
  },
  {
    "id": "store.sql_command.analytics_command_count.app_error",
    "translation": "We couldn't count the commands"
  },
  {
    "id": "store.sql_command.save.delete.app_error",
    "translation": "We couldn't delete the command"
  },
  {
    "id": "store.sql_command.save.delete_perm.app_error",
    "translation": "We couldn't delete the command"
  },
  {
    "id": "store.sql_command.save.get.app_error",
    "translation": "We couldn't get the command"
  },
  {
    "id": "store.sql_command.save.get_team.app_error",
    "translation": "We couldn't get the commands"
  },
  {
    "id": "store.sql_command.save.saving.app_error",
    "translation": "We couldn't save the Command"
  },
  {
    "id": "store.sql_command.save.saving_overwrite.app_error",
    "translation": "You cannot overwrite an existing Command"
  },
  {
    "id": "store.sql_command.save.update.app_error",
    "translation": "We couldn't update the command"
  },
  {
    "id": "store.sql_compliance.get.finding.app_error",
    "translation": "We encountered an error retrieving the compliance reports"
  },
  {
    "id": "store.sql_compliance.save.saving.app_error",
    "translation": "We encountered an error saving the compliance report"
  },
  {
    "id": "store.sql_emoji.delete.app_error",
    "translation": "We couldn't delete the emoji"
  },
  {
    "id": "store.sql_emoji.delete.no_results",
    "translation": "We couldn’t find the emoji to delete"
  },
  {
    "id": "store.sql_emoji.get.app_error",
    "translation": "We couldn't get the emoji"
  },
  {
    "id": "store.sql_emoji.get_all.app_error",
    "translation": "We couldn't get the emoji"
  },
  {
    "id": "store.sql_emoji.get_by_name.app_error",
    "translation": "We couldn't get the emoji"
  },
  {
    "id": "store.sql_emoji.save.app_error",
    "translation": "We couldn't save the emoji"
  },
  {
    "id": "store.sql_file_info.attach_to_post.app_error",
    "translation": "We couldn't attach the file info to the post"
  },
  {
    "id": "store.sql_file_info.delete_for_post.app_error",
    "translation": "We couldn't delete the file info to the post"
  },
  {
    "id": "store.sql_file_info.get.app_error",
    "translation": "We couldn't get the file info"
  },
  {
    "id": "store.sql_file_info.get_by_path.app_error",
    "translation": "We couldn't get the file info by path"
  },
  {
    "id": "store.sql_file_info.get_for_post.app_error",
    "translation": "We couldn't get the file info for the post"
  },
  {
    "id": "store.sql_file_info.save.app_error",
    "translation": "We couldn't save the file info"
  },
  {
    "id": "store.sql_file_info.save_or_update.app_error",
    "translation": "We couldn't save or update the file info"
  },
  {
    "id": "store.sql_job.delete.app_error",
    "translation": "We couldn't delete the job"
  },
  {
    "id": "store.sql_job.get.app_error",
    "translation": "We couldn't get the job"
  },
  {
    "id": "store.sql_job.get_all.app_error",
    "translation": "We couldn't get the jobs"
  },
  {
    "id": "store.sql_job.save.app_error",
    "translation": "We couldn't save the job"
  },
  {
    "id": "store.sql_job.update.app_error",
    "translation": "We couldn't update the job"
  },
  {
    "id": "store.sql_license.get.app_error",
    "translation": "We encountered an error getting the license"
  },
  {
    "id": "store.sql_license.get.missing.app_error",
    "translation": "A license with that ID was not found"
  },
  {
    "id": "store.sql_license.save.app_error",
    "translation": "We encountered an error saving the license"
  },
  {
    "id": "store.sql_oauth.delete.commit_transaction.app_error",
    "translation": "Unable to commit transaction"
  },
  {
    "id": "store.sql_oauth.delete.open_transaction.app_error",
    "translation": "Unable to open transaction to delete the OAuth2 app"
  },
  {
    "id": "store.sql_oauth.delete.rollback_transaction.app_error",
    "translation": "Unable to rollback transaction to delete the OAuth2 App"
  },
  {
    "id": "store.sql_oauth.delete_app.app_error",
    "translation": "An error occurred while deleting the OAuth2 App"
  },
  {
    "id": "store.sql_oauth.get_access_data.app_error",
    "translation": "We encountered an error finding the access token"
  },
  {
    "id": "store.sql_oauth.get_access_data_by_user_for_app.app_error",
    "translation": "We encountered an error finding all the access tokens"
  },
  {
    "id": "store.sql_oauth.get_app.find.app_error",
    "translation": "We couldn't find the requested app"
  },
  {
    "id": "store.sql_oauth.get_app.finding.app_error",
    "translation": "We encountered an error finding the app"
  },
  {
    "id": "store.sql_oauth.get_app_by_user.find.app_error",
    "translation": "We couldn't find any existing apps"
  },
  {
    "id": "store.sql_oauth.get_apps.find.app_error",
    "translation": "An error occurred while finding the OAuth2 Apps"
  },
  {
    "id": "store.sql_oauth.get_auth_data.find.app_error",
    "translation": "We couldn't find the existing authorization code"
  },
  {
    "id": "store.sql_oauth.get_auth_data.finding.app_error",
    "translation": "We encountered an error finding the authorization code"
  },
  {
    "id": "store.sql_oauth.get_previous_access_data.app_error",
    "translation": "We encountered an error finding the access token"
  },
  {
    "id": "store.sql_oauth.permanent_delete_auth_data_by_user.app_error",
    "translation": "We couldn't remove the authorization code"
  },
  {
    "id": "store.sql_oauth.remove_access_data.app_error",
    "translation": "We couldn't remove the access token"
  },
  {
    "id": "store.sql_oauth.remove_auth_data.app_error",
    "translation": "We couldn't remove the authorization code"
  },
  {
    "id": "store.sql_oauth.save_access_data.app_error",
    "translation": "We couldn't save the access token."
  },
  {
    "id": "store.sql_oauth.save_app.existing.app_error",
    "translation": "Must call update for existing app"
  },
  {
    "id": "store.sql_oauth.save_app.save.app_error",
    "translation": "We couldn't save the app."
  },
  {
    "id": "store.sql_oauth.save_auth_data.app_error",
    "translation": "We couldn't save the authorization code."
  },
  {
    "id": "store.sql_oauth.update_access_data.app_error",
    "translation": "We encountered an error updating the access token"
  },
  {
    "id": "store.sql_oauth.update_app.find.app_error",
    "translation": "We couldn't find the existing app to update"
  },
  {
    "id": "store.sql_oauth.update_app.finding.app_error",
    "translation": "We encountered an error finding the app"
  },
  {
    "id": "store.sql_oauth.update_app.update.app_error",
    "translation": "We couldn't update the app"
  },
  {
    "id": "store.sql_oauth.update_app.updating.app_error",
    "translation": "We encountered an error updating the app"
  },
  {
    "id": "store.sql_post.analytics_posts_count.app_error",
    "translation": "We couldn't get post counts"
  },
  {
    "id": "store.sql_post.analytics_posts_count_by_day.app_error",
    "translation": "We couldn't get post counts by day"
  },
  {
    "id": "store.sql_post.analytics_user_counts_posts_by_day.app_error",
    "translation": "We couldn't get user counts with posts"
  },
  {
    "id": "store.sql_post.delete.app_error",
    "translation": "We couldn't delete the post"
  },
  {
    "id": "store.sql_post.get.app_error",
    "translation": "We couldn't get the post"
  },
  {
    "id": "store.sql_post.get_parents_posts.app_error",
    "translation": "We couldn't get the parent post for the channel"
  },
  {
    "id": "store.sql_post.get_posts.app_error",
    "translation": "Limit exceeded for paging"
  },
  {
    "id": "store.sql_post.get_posts_around.get.app_error",
    "translation": "We couldn't get the posts for the channel"
  },
  {
    "id": "store.sql_post.get_posts_around.get_parent.app_error",
    "translation": "We couldn't get the parent posts for the channel"
  },
  {
    "id": "store.sql_post.get_posts_batch_for_indexing.get.app_error",
    "translation": "We couldn't get the posts batch for indexing"
  },
  {
    "id": "store.sql_post.get_posts_by_ids.app_error",
    "translation": "We couldn't get the posts"
  },
  {
    "id": "store.sql_post.get_posts_created_att.app_error",
    "translation": "We couldn't get the posts for the channel"
  },
  {
    "id": "store.sql_post.get_posts_since.app_error",
    "translation": "We couldn't get the posts for the channel"
  },
  {
    "id": "store.sql_post.get_root_posts.app_error",
    "translation": "We couldn't get the posts for the channel"
  },
  {
    "id": "store.sql_post.overwrite.app_error",
    "translation": "We couldn't overwrite the Post"
  },
  {
    "id": "store.sql_post.permanent_delete.app_error",
    "translation": "We couldn't delete the post"
  },
  {
    "id": "store.sql_post.permanent_delete_all_comments_by_user.app_error",
    "translation": "We couldn't delete the comments for user"
  },
  {
    "id": "store.sql_post.permanent_delete_by_channel.app_error",
    "translation": "We couldn't delete the posts by channel"
  },
  {
    "id": "store.sql_post.permanent_delete_by_user.app_error",
    "translation": "We couldn't select the posts to delete for the user"
  },
  {
    "id": "store.sql_post.permanent_delete_by_user.too_many.app_error",
    "translation": "We couldn't select the posts to delete for the user (too many), please re-run"
  },
  {
    "id": "store.sql_post.save.app_error",
    "translation": "We couldn't save the Post"
  },
  {
    "id": "store.sql_post.save.existing.app_error",
    "translation": "You cannot update an existing Post"
  },
  {
    "id": "store.sql_post.search.disabled",
    "translation": "Searching has been disabled on this server. Please contact your System Administrator."
  },
  {
    "id": "store.sql_post.search.warn",
    "translation": "Query error searching posts: %v"
  },
  {
    "id": "store.sql_post.update.app_error",
    "translation": "We couldn't update the Post"
  },
  {
    "id": "store.sql_preference.delete.app_error",
    "translation": "We encountered an error while deleting preferences"
  },
  {
    "id": "store.sql_preference.delete_unused_features.debug",
    "translation": "Deleting any unused pre-release features"
  },
  {
    "id": "store.sql_preference.get.app_error",
    "translation": "We encountered an error while finding preferences"
  },
  {
    "id": "store.sql_preference.get_all.app_error",
    "translation": "We encountered an error while finding preferences"
  },
  {
    "id": "store.sql_preference.get_category.app_error",
    "translation": "We encountered an error while finding preferences"
  },
  {
    "id": "store.sql_preference.insert.exists.app_error",
    "translation": "A preference with that user id, category, and name already exists"
  },
  {
    "id": "store.sql_preference.insert.save.app_error",
    "translation": "We couldn't save the preference"
  },
  {
    "id": "store.sql_preference.is_feature_enabled.app_error",
    "translation": "We encountered an error while finding a pre release feature preference"
  },
  {
    "id": "store.sql_preference.permanent_delete_by_user.app_error",
    "translation": "We encountered an error while deleteing preferences"
  },
  {
    "id": "store.sql_preference.save.commit_transaction.app_error",
    "translation": "Unable to commit transaction to save preferences"
  },
  {
    "id": "store.sql_preference.save.missing_driver.app_error",
    "translation": "We encountered an error while updating preferences"
  },
  {
    "id": "store.sql_preference.save.open_transaction.app_error",
    "translation": "Unable to open transaction to save preferences"
  },
  {
    "id": "store.sql_preference.save.rollback_transaction.app_error",
    "translation": "Unable to rollback transaction to save preferences"
  },
  {
    "id": "store.sql_preference.save.updating.app_error",
    "translation": "We encountered an error while updating preferences"
  },
  {
    "id": "store.sql_preference.update.app_error",
    "translation": "We couldn't update the preference"
  },
  {
    "id": "store.sql_reaction.delete.begin.app_error",
    "translation": "Unable to open transaction while deleting reaction"
  },
  {
    "id": "store.sql_reaction.delete.commit.app_error",
    "translation": "Unable to commit transaction while deleting reaction"
  },
  {
    "id": "store.sql_reaction.delete.save.app_error",
    "translation": "Unable to delete reaction"
  },
  {
    "id": "store.sql_reaction.delete_all_with_emoj_name.delete_reactions.app_error",
    "translation": "Unable to delete reactions with the given emoji name"
  },
  {
    "id": "store.sql_reaction.delete_all_with_emoj_name.get_reactions.app_error",
    "translation": "Unable to get reactions with the given emoji name"
  },
  {
    "id": "store.sql_reaction.delete_all_with_emoji_name.update_post.warn",
    "translation": "Unable to update Post.HasReactions while removing reactions post_id=%v, error=%v"
  },
  {
    "id": "store.sql_reaction.get_for_post.app_error",
    "translation": "Unable to get reactions for post"
  },
  {
    "id": "store.sql_reaction.save.begin.app_error",
    "translation": "Unable to open transaction while saving reaction"
  },
  {
    "id": "store.sql_reaction.save.commit.app_error",
    "translation": "Unable to commit transaction while saving reaction"
  },
  {
    "id": "store.sql_reaction.save.save.app_error",
    "translation": "Unable to save reaction"
  },
  {
    "id": "store.sql_session.analytics_session_count.app_error",
    "translation": "We couldn't count the sessions"
  },
  {
    "id": "store.sql_session.cleanup_expired_sessions.app_error",
    "translation": "We encountered an error while deleting expired user sessions"
  },
  {
    "id": "store.sql_session.get.app_error",
    "translation": "We encountered an error finding the session"
  },
  {
    "id": "store.sql_session.get_sessions.app_error",
    "translation": "We encountered an error while finding user sessions"
  },
  {
    "id": "store.sql_session.get_sessions.error",
    "translation": "Failed to cleanup sessions in getSessions err=%v"
  },
  {
    "id": "store.sql_session.permanent_delete_sessions_by_user.app_error",
    "translation": "We couldn't remove all the sessions for the user"
  },
  {
    "id": "store.sql_session.remove.app_error",
    "translation": "We couldn't remove the session"
  },
  {
    "id": "store.sql_session.remove_all_sessions_for_team.app_error",
    "translation": "We couldn't remove all the sessions"
  },
  {
    "id": "store.sql_session.save.app_error",
    "translation": "We couldn't save the session"
  },
  {
    "id": "store.sql_session.save.cleanup.error",
    "translation": "Failed to cleanup sessions in Save err=%v"
  },
  {
    "id": "store.sql_session.save.existing.app_error",
    "translation": "Cannot update existing session"
  },
  {
    "id": "store.sql_session.update_device_id.app_error",
    "translation": "We couldn't update the device id"
  },
  {
    "id": "store.sql_session.update_last_activity.app_error",
    "translation": "We couldn't update the last_activity_at"
  },
  {
    "id": "store.sql_session.update_roles.app_error",
    "translation": "We couldn't update the roles"
  },
  {
    "id": "store.sql_status.get.app_error",
    "translation": "Encountered an error retrieving the status"
  },
  {
    "id": "store.sql_status.get.missing.app_error",
    "translation": "No entry for that status exists"
  },
  {
    "id": "store.sql_status.get_online.app_error",
    "translation": "Encountered an error retrieving all the online statuses"
  },
  {
    "id": "store.sql_status.get_online_away.app_error",
    "translation": "Encountered an error retrieving all the online/away statuses"
  },
  {
    "id": "store.sql_status.get_team_statuses.app_error",
    "translation": "Encountered an error retrieving all statuses from the team members"
  },
  {
    "id": "store.sql_status.get_total_active_users_count.app_error",
    "translation": "We could not count the active users"
  },
  {
    "id": "store.sql_status.reset_all.app_error",
    "translation": "Encountered an error resetting all the statuses"
  },
  {
    "id": "store.sql_status.save.app_error",
    "translation": "Encountered an error saving the status"
  },
  {
    "id": "store.sql_status.update.app_error",
    "translation": "Encountered an error updating the status"
  },
  {
    "id": "store.sql_system.get.app_error",
    "translation": "We encountered an error finding the system properties"
  },
  {
    "id": "store.sql_system.get_by_name.app_error",
    "translation": "We couldn't find the system variable."
  },
  {
    "id": "store.sql_system.get_version.app_error",
    "translation": "We couldn't get the database version"
  },
  {
    "id": "store.sql_system.save.app_error",
    "translation": "We encountered an error saving the system property"
  },
  {
    "id": "store.sql_system.update.app_error",
    "translation": "We encountered an error updating the system property"
  },
  {
    "id": "store.sql_team.analytics_team_count.app_error",
    "translation": "We couldn't count the teams"
  },
  {
    "id": "store.sql_team.get.find.app_error",
    "translation": "We couldn't find the existing team"
  },
  {
    "id": "store.sql_team.get.finding.app_error",
    "translation": "We encountered an error finding the team"
  },
  {
    "id": "store.sql_team.get_all.app_error",
    "translation": "We could not get all teams"
  },
  {
    "id": "store.sql_team.get_all_team_listing.app_error",
    "translation": "We could not get all teams"
  },
  {
    "id": "store.sql_team.get_by_invite_id.find.app_error",
    "translation": "We couldn't find the existing team"
  },
  {
    "id": "store.sql_team.get_by_invite_id.finding.app_error",
    "translation": "We couldn't find the existing team"
  },
  {
    "id": "store.sql_team.get_by_name.app_error",
    "translation": "We couldn't find the existing team"
  },
  {
    "id": "store.sql_team.get_member.app_error",
    "translation": "We couldn't get the team member"
  },
  {
    "id": "store.sql_team.get_member.missing.app_error",
    "translation": "No team member found for that user ID and team ID"
  },
  {
    "id": "store.sql_team.get_member_count.app_error",
    "translation": "We couldn't count the team members"
  },
  {
    "id": "store.sql_team.get_members.app_error",
    "translation": "We couldn't get the team members"
  },
  {
    "id": "store.sql_team.get_members_by_ids.app_error",
    "translation": "We couldn't get the team members"
  },
  {
    "id": "store.sql_team.get_teams_for_email.app_error",
    "translation": "We encountered a problem when looking up teams"
  },
  {
    "id": "store.sql_team.get_unread.app_error",
    "translation": "We couldn't get the teams unread messages"
  },
  {
    "id": "store.sql_team.permanent_delete.app_error",
    "translation": "We couldn't delete the existing team"
  },
  {
    "id": "store.sql_team.remove_member.app_error",
    "translation": "We couldn't remove the team member"
  },
  {
    "id": "store.sql_team.save.app_error",
    "translation": "We couldn't save the team"
  },
  {
    "id": "store.sql_team.save.domain_exists.app_error",
    "translation": "A team with that name already exists"
  },
  {
    "id": "store.sql_team.save.existing.app_error",
    "translation": "Must call update for existing team"
  },
  {
    "id": "store.sql_team.save_member.exists.app_error",
    "translation": "A team member with that ID already exists"
  },
  {
    "id": "store.sql_team.save_member.save.app_error",
    "translation": "We couldn't save the team member"
  },
  {
    "id": "store.sql_team.search_all_team.app_error",
    "translation": "We encountered an error searching teams"
  },
  {
    "id": "store.sql_team.search_open_team.app_error",
    "translation": "We encountered an error searching open teams"
  },
  {
    "id": "store.sql_team.update.app_error",
    "translation": "We couldn't update the team"
  },
  {
    "id": "store.sql_team.update.find.app_error",
    "translation": "We couldn't find the existing team to update"
  },
  {
    "id": "store.sql_team.update.finding.app_error",
    "translation": "We encountered an error finding the team"
  },
  {
    "id": "store.sql_team.update.updating.app_error",
    "translation": "We encountered an error updating the team"
  },
  {
    "id": "store.sql_team.update_display_name.app_error",
    "translation": "We couldn't update the team name"
  },
  {
    "id": "store.sql_user.analytics_get_inactive_users_count.app_error",
    "translation": "We could not count the inactive users"
  },
  {
    "id": "store.sql_user.analytics_get_system_admin_count.app_error",
    "translation": "We couldn't get the system admin count"
  },
  {
    "id": "store.sql_user.analytics_unique_user_count.app_error",
    "translation": "We couldn't get the unique user count"
  },
  {
    "id": "store.sql_user.get.app_error",
    "translation": "We encountered an error finding the account"
  },
  {
    "id": "store.sql_user.get_all_using_auth_service.other.app_error",
    "translation": "We encountered an error trying to find all the accounts using a specific authentication type."
  },
  {
    "id": "store.sql_user.get_by_auth.missing_account.app_error",
    "translation": "We couldn't find an existing account matching your authentication type for this team. This team may require an invite from the team owner to join."
  },
  {
    "id": "store.sql_user.get_by_auth.other.app_error",
    "translation": "We encountered an error trying to find the account by authentication type."
  },
  {
    "id": "store.sql_user.get_by_username.app_error",
    "translation": "We couldn't find an existing account matching your username for this team. This team may require an invite from the team owner to join."
  },
  {
    "id": "store.sql_user.get_for_login.app_error",
    "translation": "We couldn't find an existing account matching your credentials. This team may require an invite from the team owner to join."
  },
  {
    "id": "store.sql_user.get_for_login.multiple_users",
    "translation": "We found multiple users matching your credentials and were unable to log you in. Please contact an administrator."
  },
  {
    "id": "store.sql_user.get_new_users.app_error",
    "translation": "We encountered an error while finding the new users"
  },
  {
    "id": "store.sql_user.get_profiles.app_error",
    "translation": "We encountered an error while finding user profiles"
  },
  {
    "id": "store.sql_user.get_recently_active_users.app_error",
    "translation": "We encountered an error while finding the recently active users"
  },
  {
    "id": "store.sql_user.get_sysadmin_profiles.app_error",
    "translation": "We encountered an error while finding user profiles"
  },
  {
    "id": "store.sql_user.get_total_users_count.app_error",
    "translation": "We could not count the users"
  },
  {
    "id": "store.sql_user.get_unread_count.app_error",
    "translation": "We could not get the unread message count for the user"
  },
  {
    "id": "store.sql_user.get_unread_count_for_channel.app_error",
    "translation": "We could not get the unread message count for the user and channel"
  },
  {
    "id": "store.sql_user.migrate_theme.critical",
    "translation": "Failed to migrate User.ThemeProps to Preferences table %v"
  },
  {
    "id": "store.sql_user.missing_account.const",
    "translation": "We couldn't find the user."
  },
  {
    "id": "store.sql_user.permanent_delete.app_error",
    "translation": "We couldn't delete the existing account"
  },
  {
    "id": "store.sql_user.save.app_error",
    "translation": "We couldn't save the account."
  },
  {
    "id": "store.sql_user.save.email_exists.app_error",
    "translation": "An account with that email already exists."
  },
  {
    "id": "store.sql_user.save.email_exists.ldap_app_error",
    "translation": "This account does not use AD/LDAP authentication. Please sign in using email and password."
  },
  {
    "id": "store.sql_user.save.email_exists.saml_app_error",
    "translation": "This account does not use SAML authentication. Please sign in using email and password."
  },
  {
    "id": "store.sql_user.save.existing.app_error",
    "translation": "Must call update for existing user"
  },
  {
    "id": "store.sql_user.save.max_accounts.app_error",
    "translation": "This team has reached the maximum number of allowed accounts. Contact your systems administrator to set a higher limit."
  },
  {
    "id": "store.sql_user.save.member_count.app_error",
    "translation": "Failed to get current team member count"
  },
  {
    "id": "store.sql_user.save.username_exists.app_error",
    "translation": "An account with that username already exists."
  },
  {
    "id": "store.sql_user.save.username_exists.ldap_app_error",
    "translation": "An account with that username already exists. Please contact your Administrator."
  },
  {
    "id": "store.sql_user.save.username_exists.saml_app_error",
    "translation": "An account with that username already exists. Please contact your Administrator."
  },
  {
    "id": "store.sql_user.update.app_error",
    "translation": "We couldn't update the account"
  },
  {
    "id": "store.sql_user.update.can_not_change_ldap.app_error",
    "translation": "Can not change fields set by AD/LDAP"
  },
  {
    "id": "store.sql_user.update.email_taken.app_error",
    "translation": "This email is already taken. Please choose another."
  },
  {
    "id": "store.sql_user.update.find.app_error",
    "translation": "We couldn't find the existing account to update"
  },
  {
    "id": "store.sql_user.update.finding.app_error",
    "translation": "We encountered an error finding the account"
  },
  {
    "id": "store.sql_user.update.updating.app_error",
    "translation": "We encountered an error updating the account"
  },
  {
    "id": "store.sql_user.update.username_taken.app_error",
    "translation": "This username is already taken. Please choose another."
  },
  {
    "id": "store.sql_user.update_auth_data.app_error",
    "translation": "We couldn't update the auth data"
  },
  {
    "id": "store.sql_user.update_auth_data.email_exists.app_error",
    "translation": "Unable to switch account to {{.Service}}. An account using the email {{.Email}} already exists."
  },
  {
    "id": "store.sql_user.update_failed_pwd_attempts.app_error",
    "translation": "We couldn't update the failed_attempts"
  },
  {
    "id": "store.sql_user.update_last_activity.app_error",
    "translation": "We couldn't update the last_activity_at"
  },
  {
    "id": "store.sql_user.update_last_picture_update.app_error",
    "translation": "We couldn't update the update_at"
  },
  {
    "id": "store.sql_user.update_last_ping.app_error",
    "translation": "We couldn't update the last_ping_at"
  },
  {
    "id": "store.sql_user.update_mfa_active.app_error",
    "translation": "We encountered an error updating the user's MFA active status"
  },
  {
    "id": "store.sql_user.update_mfa_secret.app_error",
    "translation": "We encountered an error updating the user's MFA secret"
  },
  {
    "id": "store.sql_user.update_password.app_error",
    "translation": "We couldn't update the user password"
  },
  {
    "id": "store.sql_user.verify_email.app_error",
    "translation": "Unable to update verify email field"
  },
  {
    "id": "store.sql_webhooks.analytics_incoming_count.app_error",
    "translation": "We couldn't count the incoming webhooks"
  },
  {
    "id": "store.sql_webhooks.analytics_outgoing_count.app_error",
    "translation": "We couldn't count the outgoing webhooks"
  },
  {
    "id": "store.sql_webhooks.delete_incoming.app_error",
    "translation": "We couldn't delete the webhook"
  },
  {
    "id": "store.sql_webhooks.delete_outgoing.app_error",
    "translation": "We couldn't delete the webhook"
  },
  {
    "id": "store.sql_webhooks.get_incoming.app_error",
    "translation": "We couldn't get the webhook"
  },
  {
    "id": "store.sql_webhooks.get_incoming_by_channel.app_error",
    "translation": "We couldn't get the webhooks"
  },
  {
    "id": "store.sql_webhooks.get_incoming_by_user.app_error",
    "translation": "We couldn't get the webhook"
  },
  {
    "id": "store.sql_webhooks.get_outgoing.app_error",
    "translation": "We couldn't get the webhook"
  },
  {
    "id": "store.sql_webhooks.get_outgoing_by_channel.app_error",
    "translation": "We couldn't get the webhooks"
  },
  {
    "id": "store.sql_webhooks.get_outgoing_by_team.app_error",
    "translation": "We couldn't get the webhooks"
  },
  {
    "id": "store.sql_webhooks.permanent_delete_incoming_by_user.app_error",
    "translation": "We couldn't delete the webhook"
  },
  {
    "id": "store.sql_webhooks.permanent_delete_outgoing_by_user.app_error",
    "translation": "We couldn't delete the webhook"
  },
  {
    "id": "store.sql_webhooks.save_incoming.app_error",
    "translation": "We couldn't save the IncomingWebhook"
  },
  {
    "id": "store.sql_webhooks.save_incoming.existing.app_error",
    "translation": "You cannot overwrite an existing IncomingWebhook"
  },
  {
    "id": "store.sql_webhooks.save_outgoing.app_error",
    "translation": "We couldn't save the OutgoingWebhook"
  },
  {
    "id": "store.sql_webhooks.save_outgoing.override.app_error",
    "translation": "You cannot overwrite an existing OutgoingWebhook"
  },
  {
    "id": "store.sql_webhooks.update_incoming.app_error",
    "translation": "We couldn't update the IncomingWebhook"
  },
  {
    "id": "store.sql_webhooks.update_outgoing.app_error",
    "translation": "We couldn't update the webhook"
  },
  {
    "id": "system.message.name",
    "translation": "System"
  },
  {
    "id": "utils.config.load_config.decoding.panic",
    "translation": "Error decoding config file={{.Filename}}, err={{.Error}}"
  },
  {
    "id": "utils.config.load_config.getting.panic",
    "translation": "Error getting config info file={{.Filename}}, err={{.Error}}"
  },
  {
    "id": "utils.config.load_config.opening.panic",
    "translation": "Error opening config file={{.Filename}}, err={{.Error}}"
  },
  {
    "id": "utils.config.load_config.validating.panic",
    "translation": "Error validating config file={{.Filename}}, err={{.Error}}"
  },
  {
    "id": "utils.config.save_config.saving.app_error",
    "translation": "An error occurred while saving the file to {{.Filename}}"
  },
  {
    "id": "utils.config.supported_client_locale.app_error",
    "translation": "Unable to load mattermost configuration file:  DefaultClientLocale must be one of the supported locales"
  },
  {
    "id": "utils.config.supported_server_locale.app_error",
    "translation": "Unable to load mattermost configuration file:  DefaultServerLocale must be one of the supported locales"
  },
  {
    "id": "utils.config.validate_locale.app_error",
    "translation": "Unable to load mattermost configuration file:  AvailableLocales must include DefaultClientLocale"
  },
  {
    "id": "utils.diagnostic.analytics_not_found.app_error",
    "translation": "Analytics not initialized"
  },
  {
    "id": "utils.i18n.loaded",
    "translation": "Loaded system translations for '%v' from '%v'"
  },
  {
    "id": "utils.iru.with_evict",
    "translation": "Must provide a positive size"
  },
  {
    "id": "utils.license.load_license.invalid.warn",
    "translation": "No valid enterprise license found"
  },
  {
    "id": "utils.license.remove_license.unable.error",
    "translation": "Unable to remove license file, err=%v"
  },
  {
    "id": "utils.license.validate_license.decode.error",
    "translation": "Encountered error decoding license, err=%v"
  },
  {
    "id": "utils.license.validate_license.invalid.error",
    "translation": "Invalid signature, err=%v"
  },
  {
    "id": "utils.license.validate_license.not_long.error",
    "translation": "Signed license not long enough"
  },
  {
    "id": "utils.license.validate_license.signing.error",
    "translation": "Encountered error signing license, err=%v"
  },
  {
    "id": "utils.mail.connect_smtp.helo.app_error",
    "translation": "Failed to set HELO"
  },
  {
    "id": "utils.mail.connect_smtp.open.app_error",
    "translation": "Failed to open connection"
  },
  {
    "id": "utils.mail.connect_smtp.open_tls.app_error",
    "translation": "Failed to open TLS connection"
  },
  {
    "id": "utils.mail.new_client.auth.app_error",
    "translation": "Failed to authenticate on SMTP server"
  },
  {
    "id": "utils.mail.new_client.helo.error",
    "translation": "Failed to to set the HELO to SMTP server %v"
  },
  {
    "id": "utils.mail.new_client.open.error",
    "translation": "Failed to open a connection to SMTP server %v"
  },
  {
    "id": "utils.mail.send_mail.close.app_error",
    "translation": "Failed to close connection to SMTP server"
  },
  {
    "id": "utils.mail.send_mail.from_address.app_error",
    "translation": "Notification From Address setting is missing or invalid."
  },
  {
    "id": "utils.mail.send_mail.msg.app_error",
    "translation": "Failed to write email message"
  },
  {
    "id": "utils.mail.send_mail.msg_data.app_error",
    "translation": "Failed to add email message data"
  },
  {
    "id": "utils.mail.send_mail.sending.debug",
    "translation": "sending mail to %v with subject of '%v'"
  },
  {
    "id": "utils.mail.send_mail.to_address.app_error",
    "translation": "Notification To Address setting is missing or invalid."
  },
  {
    "id": "utils.mail.test.configured.error",
    "translation": "SMTP server settings do not appear to be configured properly err=%v details=%v"
  },
  {
    "id": "utils.mail.test.configured.error",
    "translation": "SMTP server settings do not appear to be configured properly err=%v details=%v"
  },
  {
    "id": "web.admin_console.title",
    "translation": "Admin Console"
  },
  {
    "id": "web.authorize_oauth.title",
    "translation": "Authorize Application"
  },
  {
    "id": "web.check_browser_compatibility.app_error",
    "translation": "Your current browser is not supported, please upgrade to one of the following browsers: Google Chrome 21 or higher, Internet Explorer 11 or higher, Firefox 14 or higher, Safari 9 or higher"
  },
  {
    "id": "web.claim_account.team.error",
    "translation": "Couldn't find team name=%v, err=%v"
  },
  {
    "id": "web.claim_account.title",
    "translation": "Claim Account"
  },
  {
    "id": "web.claim_account.user.error",
    "translation": "Couldn't find user teamid=%v, email=%v, err=%v"
  },
  {
    "id": "web.create_dir.error",
    "translation": "Failed to create directory watcher %v"
  },
  {
    "id": "web.dir_fail.error",
    "translation": "Failed in directory watcher %v"
  },
  {
    "id": "web.do_load_channel.error",
    "translation": "Error in getting users profile for id=%v forcing logout"
  },
  {
    "id": "web.doc.title",
    "translation": "Documentation"
  },
  {
    "id": "web.email_verified.title",
    "translation": "Email Verified"
  },
  {
    "id": "web.find_team.title",
    "translation": "Find Team"
  },
  {
    "id": "web.header.back",
    "translation": "Back"
  },
  {
    "id": "web.incoming_webhook.attachment.app_error",
    "translation": "Maximum attachments length is {{.Max}} characters, received size is {{.Actual}}"
  },
  {
    "id": "web.incoming_webhook.channel.app_error",
    "translation": "Couldn't find the channel"
  },
  {
    "id": "web.incoming_webhook.disabled.app_error",
    "translation": "Incoming webhooks have been disabled by the system admin."
  },
  {
    "id": "web.incoming_webhook.invalid.app_error",
    "translation": "Invalid webhook"
  },
  {
    "id": "web.incoming_webhook.parse.app_error",
    "translation": "Unable to parse incoming data"
  },
  {
    "id": "web.incoming_webhook.permissions.app_error",
    "translation": "Inappropriate channel permissions"
  },
  {
    "id": "web.incoming_webhook.text.app_error",
    "translation": "No text specified"
  },
  {
    "id": "web.incoming_webhook.text.length.app_error",
    "translation": "Maximum text length is {{.Max}} characters, received size is {{.Actual}}"
  },
  {
    "id": "web.incoming_webhook.user.app_error",
    "translation": "Couldn't find the user"
  },
  {
    "id": "web.init.debug",
    "translation": "Initializing web routes"
  },
  {
    "id": "web.login.error",
    "translation": "Couldn't find team name=%v, err=%v"
  },
  {
    "id": "web.login.login_title",
    "translation": "Login"
  },
  {
    "id": "web.login_with_oauth.invalid_team.app_error",
    "translation": "Invalid team name"
  },
  {
    "id": "web.parsing_templates.debug",
    "translation": "Parsing templates at %v"
  },
  {
    "id": "web.parsing_templates.error",
    "translation": "Failed to parse templates %v"
  },
  {
    "id": "web.post_permalink.app_error",
    "translation": "Invalid Post ID"
  },
  {
    "id": "web.reparse_templates.info",
    "translation": "Re-parsing templates because of modified file %v"
  },
  {
    "id": "web.reset_password.expired_link.app_error",
    "translation": "The password reset link has expired"
  },
  {
    "id": "web.reset_password.invalid_link.app_error",
    "translation": "The reset link does not appear to be valid"
  },
  {
    "id": "web.root.home_title",
    "translation": "Home"
  },
  {
    "id": "web.root.singup_title",
    "translation": "Signup"
  },
  {
    "id": "web.signup_team_complete.invalid_link.app_error",
    "translation": "The signup link does not appear to be valid"
  },
  {
    "id": "web.signup_team_complete.link_expired.app_error",
    "translation": "The signup link has expired"
  },
  {
    "id": "web.signup_team_complete.title",
    "translation": "Complete Team Sign Up"
  },
  {
    "id": "web.signup_team_confirm.title",
    "translation": "Signup Email Sent"
  },
  {
    "id": "web.signup_user_complete.link_expired.app_error",
    "translation": "The signup link has expired"
  },
  {
    "id": "web.signup_user_complete.link_invalid.app_error",
    "translation": "The signup link does not appear to be valid"
  },
  {
    "id": "web.signup_user_complete.no_invites.app_error",
    "translation": "The team type doesn't allow open invites"
  },
  {
    "id": "web.signup_user_complete.title",
    "translation": "Complete User Sign Up"
  },
  {
    "id": "web.singup_with_oauth.invalid_team.app_error",
    "translation": "Invalid team name"
  },
  {
    "id": "web.watcher_fail.error",
    "translation": "Failed to add directory to watcher %v"
  },
  {
    "id": "wsapi.status.init.debug",
    "translation": "Initializing status WebSocket API routes"
  },
  {
    "id": "wsapi.system.init.debug",
    "translation": "Initializing system WebSocket API routes"
  },
  {
    "id": "wsapi.user.init.debug",
    "translation": "Initializing user WebSocket API routes"
  },
  {
    "id": "wsapi.webrtc.init.debug",
    "translation": "Initializing webrtc WebSocket API routes"
  }
]
