{
  "en-US": {
    "SDK_ONLY_ONE_PLUGIN_MAY_BE_DEFINED_PER_PROCESS": "Only one plugin may be defined per process",
    "SDK_THE_PLUGIN_MUST_BE_STARTED_BY_THE_FLYONDECK_HOST": "The plugin must be started by the FlyonDeck host",
    "SDK_THE_PLUGIN_DEFINITION_MUST_BE_AN_OBJECT": "The plugin definition must be an object",
    "SDK_ACTIONS_MUST_MAP_ACTION_IDS_TO_HANDLER_FUNCTIONS": "actions must map action IDs to handler functions",
    "SDK_SERVICES_MUST_MAP_SERVICES_AND_METHODS_TO_HANDLER_FUNCTIONS": "services must map services and methods to handler functions",
    "SDK_ONSTART_MUST_BE_A_FUNCTION": "onStart must be a function",
    "SDK_WIDGETOPTIONS_MUST_MAP_WIDGET_FIELDS_TO_HANDLER_FUNCTIONS": "widgetOptions must map widget fields to handler functions",
    "SDK_DECLARE_INSTANCE_DATA_REQUESTS_USING_DATAPROVIDERS": "Declare instance data requests using dataProviders",
    "SDK_DATAPROVIDERS_MUST_MAP_PROVIDER_IDS_TO_HANDLER_FUNCTIONS": "dataProviders must map provider IDs to handler functions",
    "SDK_DECLARE_INSTANCE_ACTIONS_USING_WIDGETACTIONS": "Declare instance actions using widgetActions",
    "SDK_WIDGETACTIONS_MUST_MAP_INSTANCE_ACTIONS_TO_HANDLER_FUNCTIONS": "widgetActions must map instance actions to handler functions",
    "SDK_ONSTOP_MUST_BE_A_FUNCTION": "onStop must be a function",
    "SDK_THE_PLUGIN_HOST_CONNECTION_IS_CLOSED": "The plugin host connection is closed",
    "SDK_TOO_MANY_PENDING_HOST_REQUESTS": "Too many pending host requests",
    "SDK_HOST_CAPABILITY_REQUEST_TIMED_OUT": "Host capability request timed out: {0}",
    "SDK_THE_HOST_DOES_NOT_PROVIDE_STORAGE_PATHS_V1": "The host does not provide storage.paths v1",
    "SDK_INVALID_CAPABILITY_NAME_OR_MINIMUM_INTERFACE_VERSION": "Invalid capability name or minimum interface version",
    "SDK_THE_URL_MUST_BE_A_STRING": "The URL must be a string",
    "SDK_THE_APPLICATION_NAME_MUST_BE_A_STRING": "The application name must be a string",
    "SDK_THE_PATH_MUST_BE_A_STRING": "The path must be a string",
    "SDK_INVALID_VOLUME_OPERATION": "Invalid volume operation",
    "SDK_VOLUME_MUST_BE_AN_INTEGER_FROM_0_TO_100": "Volume must be an integer from 0 to 100",
    "SDK_THE_VOLUME_STEP_MUST_BE_AN_INTEGER_FROM_1_TO_100": "The volume step must be an integer from 1 to 100",
    "SDK_THE_HOTKEY_MUST_BE_A_STRING": "The hotkey must be a string",
    "SDK_TEXT_MUST_CONTAIN_1_TO_4000_CHARACTERS": "Text must contain 1 to 4000 characters",
    "SDK_INVALID_TEXT_INPUT_OPTIONS": "Invalid text input options",
    "SDK_INVALID_SCREENSHOT_MODE": "Invalid screenshot mode",
    "SDK_THE_SHORTCUT_NAME_MUST_BE_A_NONEMPTY_STRING": "The shortcut name must be a nonempty string",
    "SDK_THE_NATIVE_EXECUTABLE_PATH_MUST_BE_A_NONEMPTY_STRING": "The native executable path must be a nonempty string",
    "SDK_NATIVE_EXECUTABLE_ARGUMENTS_MUST_BE_AN_ARRAY_OF_STRINGS": "Native executable arguments must be an array of strings",
    "SDK_INVALID_PAGE_NAVIGATION_TARGET": "Invalid page navigation target",
    "SDK_THE_WIDGET_ID_MUST_BE_A_NONEMPTY_STRING": "The widget ID must be a nonempty string",
    "SDK_INVALID_STATE_SOURCE_VALUE_OR_TARGET": "Invalid state source, value or target",
    "SDK_INVALID_EVENT_ID_OR_PAYLOAD": "Invalid event ID or payload",
    "SDK_PLUGIN_SERVICE_IDENTIFIERS_AND_METHOD_NAMES_MUST_BE_NONEMPTY_STRINGS": "Plugin service identifiers and method names must be nonempty strings",
    "SDK_PLUGIN_SERVICE_ARGUMENTS_MUST_BE_AN_OBJECT": "Plugin service arguments must be an object",
    "SDK_THE_PLUGIN_HAS_STOPPED": "The plugin has stopped",
    "SDK_THE_PLUGIN_IS_STOPPING": "The plugin is stopping",
    "SDK_UNKNOWN_ACTION": "Unknown action",
    "SDK_INVALID_ACTION_ARGUMENTS": "Invalid action arguments",
    "SDK_UNKNOWN_PLUGIN_SERVICE_METHOD": "Unknown plugin service method",
    "SDK_INVALID_PLUGIN_SERVICE_REQUEST": "Invalid plugin service request",
    "SDK_UNKNOWN_DYNAMIC_OPTION_FIELD": "Unknown dynamic option field",
    "SDK_UNKNOWN_DATA_PROVIDER": "Unknown data provider",
    "SDK_UNKNOWN_INSTANCE_ACTION": "Unknown instance action",
    "SDK_UNKNOWN_COMMAND": "Unknown command",
    "SDK_THE_FLYONDECK_WIDGET_SDK_CAN_ONLY_RUN_IN_A_WIDGET_PAGE": "The FlyonDeck widget SDK can only run in a widget page",
    "SDK_NUMERIC_CONTROL": "Numeric control",
    "SDK_FLYONDECKWIDGET_STATE_HANDLER_FAILED": "[FlyonDeckWidget] State handler failed:",
    "SDK_THE_STATE_HANDLER_MUST_BE_A_FUNCTION": "The state handler must be a function",
    "SDK_THE_WIDGET_IS_NOT_CONNECTED_TO_ITS_HOST": "The widget is not connected to its host",
    "SDK_INVALID_DATA_PROVIDER_ID_OR_REQUEST_ARGUMENTS": "Invalid data provider ID or request arguments",
    "SDK_WIDGET_DATA_REQUEST_TIMED_OUT": "Widget data request timed out",
    "SDK_INVALID_ICON_ID": "Invalid icon ID",
    "SDK_THE_CONTROL_VALUE_MUST_BE_A_FINITE_NUMBER": "The control value must be a finite number",
    "SDK_INVALID_INSTANCE_ACTION_NAME": "Invalid instance action name",
    "SDK_THE_FLYONDECK_CONFIGURATION_SDK_CAN_ONLY_RUN_IN_A_WIDGET_CONFIGURATION_PAGE": "The FlyonDeck configuration SDK can only run in a widget configuration page",
    "SDK_FLYONDECKWIDGETCONFIG_SETTINGS_HANDLER_FAILED": "[FlyonDeckWidgetConfig] Settings handler failed:",
    "SDK_THE_SETTINGS_HANDLER_MUST_BE_A_FUNCTION": "The settings handler must be a function",
    "SDK_PLUGIN_CONFIG_PAGE_REQUIRED": "The plugin configuration SDK requires a host plugin configuration page",
    "SDK_PLUGIN_CONFIG_LISTENER_FAILED": "Plugin configuration listener failed",
    "SDK_PLUGIN_CONFIG_INVALID_CHANGES": "Invalid plugin configuration changes",
    "SDK_ACTIONOPTIONS_MUST_MAP_ACTION_FIELDS_TO_HANDLER_FUNCTIONS": "actionOptions must map action fields to handler functions",
    "SDK_INVALID_CONFIGURATION_MIGRATIONS": "configurationMigrations must map target versions to handler functions",
    "SDK_CONFIGURATION_MIGRATION_UNAVAILABLE": "Configuration migration is unavailable",
    "SDK_INVALID_CONFIGURATION_MIGRATION_REQUEST": "Invalid configuration migration request",
    "SDK_CONFIGURATION_MIGRATION_PROCESS_ONLY": "Only configuration migrations are allowed in this process"
  },
  "zh-CN": {
    "SDK_ONLY_ONE_PLUGIN_MAY_BE_DEFINED_PER_PROCESS": "每个进程只能定义一个插件",
    "SDK_THE_PLUGIN_MUST_BE_STARTED_BY_THE_FLYONDECK_HOST": "插件必须由 FlyonDeck 宿主启动",
    "SDK_THE_PLUGIN_DEFINITION_MUST_BE_AN_OBJECT": "插件定义必须是对象",
    "SDK_ACTIONS_MUST_MAP_ACTION_IDS_TO_HANDLER_FUNCTIONS": "actions 必须是动作处理函数的映射",
    "SDK_SERVICES_MUST_MAP_SERVICES_AND_METHODS_TO_HANDLER_FUNCTIONS": "services 必须是服务及其方法处理函数的映射",
    "SDK_ONSTART_MUST_BE_A_FUNCTION": "onStart 必须是函数",
    "SDK_WIDGETOPTIONS_MUST_MAP_WIDGET_FIELDS_TO_HANDLER_FUNCTIONS": "widgetOptions 必须是小组件字段处理函数的映射",
    "SDK_DECLARE_INSTANCE_DATA_REQUESTS_USING_DATAPROVIDERS": "请使用 dataProviders 声明按实例请求的数据",
    "SDK_DATAPROVIDERS_MUST_MAP_PROVIDER_IDS_TO_HANDLER_FUNCTIONS": "dataProviders 必须是数据提供者处理函数的映射",
    "SDK_DECLARE_INSTANCE_ACTIONS_USING_WIDGETACTIONS": "请使用 widgetActions 声明实例动作",
    "SDK_WIDGETACTIONS_MUST_MAP_INSTANCE_ACTIONS_TO_HANDLER_FUNCTIONS": "widgetActions 必须是实例动作处理函数的映射",
    "SDK_ONSTOP_MUST_BE_A_FUNCTION": "onStop 必须是函数",
    "SDK_THE_PLUGIN_HOST_CONNECTION_IS_CLOSED": "插件宿主连接已关闭",
    "SDK_TOO_MANY_PENDING_HOST_REQUESTS": "待处理的宿主请求过多",
    "SDK_HOST_CAPABILITY_REQUEST_TIMED_OUT": "系统能力调用超时：{0}",
    "SDK_THE_HOST_DOES_NOT_PROVIDE_STORAGE_PATHS_V1": "宿主缺少 storage.paths v1，请升级宿主",
    "SDK_INVALID_CAPABILITY_NAME_OR_MINIMUM_INTERFACE_VERSION": "能力名称和最低接口版本无效",
    "SDK_THE_URL_MUST_BE_A_STRING": "网址必须是字符串",
    "SDK_THE_APPLICATION_NAME_MUST_BE_A_STRING": "应用名称必须是字符串",
    "SDK_THE_PATH_MUST_BE_A_STRING": "路径必须是字符串",
    "SDK_INVALID_VOLUME_OPERATION": "音量操作无效",
    "SDK_VOLUME_MUST_BE_AN_INTEGER_FROM_0_TO_100": "音量值必须是 0 到 100 的整数",
    "SDK_THE_VOLUME_STEP_MUST_BE_AN_INTEGER_FROM_1_TO_100": "音量步进必须是 1 到 100 的整数",
    "SDK_THE_HOTKEY_MUST_BE_A_STRING": "热键必须是字符串",
    "SDK_TEXT_MUST_CONTAIN_1_TO_4000_CHARACTERS": "文本必须是 1 到 4000 个字符",
    "SDK_INVALID_TEXT_INPUT_OPTIONS": "文本发送选项无效",
    "SDK_INVALID_SCREENSHOT_MODE": "截图方式无效",
    "SDK_THE_SHORTCUT_NAME_MUST_BE_A_NONEMPTY_STRING": "快捷指令名称必须是非空字符串",
    "SDK_THE_NATIVE_EXECUTABLE_PATH_MUST_BE_A_NONEMPTY_STRING": "原生程序路径必须是非空字符串",
    "SDK_NATIVE_EXECUTABLE_ARGUMENTS_MUST_BE_AN_ARRAY_OF_STRINGS": "原生程序参数必须是字符串数组",
    "SDK_INVALID_PAGE_NAVIGATION_TARGET": "页面导航目标无效",
    "SDK_THE_WIDGET_ID_MUST_BE_A_NONEMPTY_STRING": "小组件 ID 必须是非空字符串",
    "SDK_INVALID_STATE_SOURCE_VALUE_OR_TARGET": "状态来源、值或目标无效",
    "SDK_INVALID_EVENT_ID_OR_PAYLOAD": "事件 ID 或载荷无效",
    "SDK_PLUGIN_SERVICE_IDENTIFIERS_AND_METHOD_NAMES_MUST_BE_NONEMPTY_STRINGS": "插件服务标识与方法必须是非空字符串",
    "SDK_PLUGIN_SERVICE_ARGUMENTS_MUST_BE_AN_OBJECT": "插件服务参数必须是对象",
    "SDK_THE_PLUGIN_HAS_STOPPED": "插件已停止",
    "SDK_THE_PLUGIN_IS_STOPPING": "插件正在停止",
    "SDK_UNKNOWN_ACTION": "未知动作",
    "SDK_INVALID_ACTION_ARGUMENTS": "动作参数无效",
    "SDK_UNKNOWN_PLUGIN_SERVICE_METHOD": "未知插件服务方法",
    "SDK_INVALID_PLUGIN_SERVICE_REQUEST": "插件服务请求无效",
    "SDK_UNKNOWN_DYNAMIC_OPTION_FIELD": "未知动态选项字段",
    "SDK_UNKNOWN_DATA_PROVIDER": "未知数据提供者",
    "SDK_UNKNOWN_INSTANCE_ACTION": "未知实例动作",
    "SDK_UNKNOWN_COMMAND": "未知命令",
    "SDK_THE_FLYONDECK_WIDGET_SDK_CAN_ONLY_RUN_IN_A_WIDGET_PAGE": "FlyonDeck 小组件 SDK 只能在小组件页面中使用",
    "SDK_NUMERIC_CONTROL": "数值控件",
    "SDK_FLYONDECKWIDGET_STATE_HANDLER_FAILED": "[FlyonDeckWidget] 状态处理失败:",
    "SDK_THE_STATE_HANDLER_MUST_BE_A_FUNCTION": "状态处理函数必须是函数",
    "SDK_THE_WIDGET_IS_NOT_CONNECTED_TO_ITS_HOST": "小组件尚未连接宿主",
    "SDK_INVALID_DATA_PROVIDER_ID_OR_REQUEST_ARGUMENTS": "数据提供者 ID 或请求参数无效",
    "SDK_WIDGET_DATA_REQUEST_TIMED_OUT": "小组件数据请求超时",
    "SDK_INVALID_ICON_ID": "图标 ID 无效",
    "SDK_THE_CONTROL_VALUE_MUST_BE_A_FINITE_NUMBER": "控件数值必须是有限数字",
    "SDK_INVALID_INSTANCE_ACTION_NAME": "实例动作名无效",
    "SDK_THE_FLYONDECK_CONFIGURATION_SDK_CAN_ONLY_RUN_IN_A_WIDGET_CONFIGURATION_PAGE": "FlyonDeck 配置页面 SDK 只能在小组件配置页中使用",
    "SDK_FLYONDECKWIDGETCONFIG_SETTINGS_HANDLER_FAILED": "[FlyonDeckWidgetConfig] 配置处理失败:",
    "SDK_THE_SETTINGS_HANDLER_MUST_BE_A_FUNCTION": "配置处理函数必须是函数",
    "SDK_PLUGIN_CONFIG_PAGE_REQUIRED": "插件配置 SDK 只能在宿主提供的插件配置页中运行",
    "SDK_PLUGIN_CONFIG_LISTENER_FAILED": "插件配置监听器执行失败",
    "SDK_PLUGIN_CONFIG_INVALID_CHANGES": "插件配置修改无效",
    "SDK_ACTIONOPTIONS_MUST_MAP_ACTION_FIELDS_TO_HANDLER_FUNCTIONS": "actionOptions 必须将动作字段映射到处理函数",
    "SDK_INVALID_CONFIGURATION_MIGRATIONS": "configurationMigrations 必须将目标版本映射到处理函数",
    "SDK_CONFIGURATION_MIGRATION_UNAVAILABLE": "当前进程不能执行配置迁移",
    "SDK_INVALID_CONFIGURATION_MIGRATION_REQUEST": "配置迁移请求无效",
    "SDK_CONFIGURATION_MIGRATION_PROCESS_ONLY": "迁移进程只能处理配置迁移"
  }
}
