Lookup API

根據訊息相關討論引起的兩大問題 翻譯

  1. [Lookup] 服務的具體介面 程式設計師選擇的語言?以及
  2. 如何將翻譯內容納入我的程式,讓使用者可以使用?

我們會依序回答這些問題。

Lookup API

Lookup API 程式庫可用來取得翻譯字串。簡化版檢視畫面 C++ 中的 Lookup API 程式碼,如下所示:

class Lookup {
public:
  enum class Status {
    // No error.
    OK = 0,
    // The resource was unavailable as requested.
    UNAVAILABLE = 1,
  };
  static fpromise::result<std::unique_ptr<Lookup>, Lookup::Status>
    New(const std::vector<std::string>& locale_ids);
  fpromise::result<std::string_view, Lookup::Status> String(uint64_t message_id);
};

目前 Lookup API 僅支援 C++ API。沒有概念 的問題再進一步支援其他語言。

實際的 API 可在 lookup.h 檔案中查看,且基本上與上述內容相同,只是包含說明文件、建構和測試額外負擔。在撰寫本文時,只有高階 C++ API 可供使用。我們日後會陸續新增其他語言的高階 API,例如 您可以使用低階 C API,為其他語言編寫此功能的 FFI 繫結。有一種特殊情況 rust 不需要 FFI 繫結,因為 低階實作作業屬於 Rust,可直接對話;但 尚未建立實際的 rust API

Lookup API 的基本用法如下所示:

std::vector<std::string> locale_ids = {"nl-NL"};
auto result = Lookup::New(locale_ids);
if (result.is_error()) {
  return;
}
auto lookup = result.value();
auto lookup_result = lookup.string(42);
if (lookup_result.is_error()) {
  // handle error
  return;
}
std::string_view message = lookup_result.value();
// Use `message`.

這個範例來自 lookup.h 說明文件。瞭解 API 後,這個範例就相當簡單,除了一個地方:呼叫 lookup.string(...) 會使用魔術數字 42 來查詢訊息。身為程式設計師,您有權詢問這個數字的來源。下一節將說明這個問題。