From d3af9a142ceb2dcfb3f0dc310925eff3bf62071b Mon Sep 17 00:00:00 2001 From: Uwe Seimet Date: Fri, 17 Dec 2021 18:29:22 +0100 Subject: [PATCH] Support for localized descriptions --- src/raspberrypi/rascsi_interface.proto | 8 ++++---- src/raspberrypi/rascsi_response.cpp | 23 ++++++++++++++++++++--- src/raspberrypi/rasctl_display.cpp | 8 ++++---- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/raspberrypi/rascsi_interface.proto b/src/raspberrypi/rascsi_interface.proto index 7d59c0fd..e451c11c 100644 --- a/src/raspberrypi/rascsi_interface.proto +++ b/src/raspberrypi/rascsi_interface.proto @@ -162,8 +162,8 @@ enum PbOperation { // The operation parameter meta data message PbOperationParameter { string name = 1; - // Optional description - string description = 2; + // Optional short localized description, key is the lower case locale (e.g. en, de) + map description = 2; // "int" or "string" string type = 3; // There is no specific set of values if empty @@ -174,8 +174,8 @@ message PbOperationParameter { // The list of parameters supported by an operation message PbOperationParameters { string operation = 1; - // Optional description - string description = 2; + // Optional short localized description, key is the lower case locale (e.g. en, de) + map description = 2; repeated PbOperationParameter parameters = 3; } diff --git a/src/raspberrypi/rascsi_response.cpp b/src/raspberrypi/rascsi_response.cpp index 5173902b..72cc0518 100644 --- a/src/raspberrypi/rascsi_response.cpp +++ b/src/raspberrypi/rascsi_response.cpp @@ -344,16 +344,33 @@ PbOperationInfo *RascsiResponse::GetOperationInfo(PbResult& result) parameters = operation_info->add_operations(); parameters->set_operation(PbOperation_Name(ATTACH)); - parameters->set_description("Attach device, one of the parameters below is required"); + (*parameters->mutable_description())["en"] = "Attach device, one of the parameters below is required"; parameter = parameters->add_parameters(); parameter->set_name("name"); - parameter->set_description("Image file name"); + (*parameter->mutable_description())["en"] = "Image file name"; parameter->set_type("string"); parameter = parameters->add_parameters(); parameter->set_name("interfaces"); - parameter->set_description("Comma-separated list of network interfaces"); + (*parameter->mutable_description())["en"] = "Comma-separated list of network interfaces"; parameter->set_type("string"); + parameters = operation_info->add_operations(); + parameters->set_operation(PbOperation_Name(DETACH)); + (*parameters->mutable_description())["en"] = "Detach device"; + + parameters = operation_info->add_operations(); + parameters->set_operation(PbOperation_Name(DETACH_ALL)); + (*parameters->mutable_description())["en"] = "Detach all devices"; + + parameters = operation_info->add_operations(); + parameters->set_operation(PbOperation_Name(START)); + (*parameters->mutable_description())["en"] = "Start device"; + + parameters = operation_info->add_operations(); + parameters->set_operation(PbOperation_Name(STOP)); + (*parameters->mutable_description())["en"] = "Stop device"; + + parameters = operation_info->add_operations(); parameters->set_operation(PbOperation_Name(OPERATION_INFO)); diff --git a/src/raspberrypi/rasctl_display.cpp b/src/raspberrypi/rasctl_display.cpp index 5a5d1df1..ef98a90e 100644 --- a/src/raspberrypi/rasctl_display.cpp +++ b/src/raspberrypi/rasctl_display.cpp @@ -277,18 +277,18 @@ void RasctlDisplay::DisplayMappingInfo(const PbMappingInfo& mapping_info) void RasctlDisplay::DisplayOperationInfo(const PbOperationInfo& operation_info) { cout << "Remote operations supported by rascsi and their parameters:" << endl; - for (const auto& operation : operation_info.operations()) { + for (auto& operation : operation_info.operations()) { cout << " " << operation.operation(); if (!operation.description().empty()) { - cout << " (" << operation.description() << ")"; + cout << " (" << operation.description().at("en") << ")"; } cout << endl; - for (const auto& parameter : operation.parameters()) { + for (auto& parameter : operation.parameters()) { cout << " " << parameter.name() << ": " << parameter.type() << (parameter.is_mandatory() ? ", mandatory" : ", optional"); if (!parameter.description().empty()) { - cout << " (" << parameter.description() << ")"; + cout << " (" << parameter.description().at("en") << ")"; } cout << endl; }