【问题标题】:c# Web API localizationc# Web API 本地化
【发布时间】:2016-05-14 18:47:26
【问题描述】:

标题有点误导。我必须构建一个新的 Web API 应用程序来为我们也在构建的一堆不同的客户端提供服务。我不需要本地化 API 中的参数或路由。

基本上,客户端会请求指定语言的资源,Web api 会返回结果。

我唯一的要求是本地化资源将存储在 SQL 数据库中,而不是资源文件中。

由于 Web API 只返回本地化结果并且不需要本地化,我应该尝试遵循 .NET 本地化实践还是应该创建一个简单的、缓存的表查找函数来模仿本地化例程?

【问题讨论】:

  • 请详细说明您的要求。你的意思是翻译吗? api返回本地化结果是什么意思?数据库是否已经保存了不同的本地化数据/结果集?

标签: c# api localization


【解决方案1】:

从技术上讲,如何在服务器端保存本地化信息对于客户端应用程序(调用 API)并不重要。您可以将其保存在数据库中,也可以将其保存在资源文件中;一切都取决于系统的架构。

但您可以通过两种方式解决您的需求:

  1. 将语言环境放入 api url:客户端应用程序可以提供适当的语言环境,如下所示:

获取https://apiserver.com/api/v1.0.0/en-GB/cities

获取https://apiserver.com/api/v1.0.0/fr-CA/cities

获取https://apiserver.com/api/v1.0.0/en-US/cities

在服务器端你可以配置你的方法如下:

[Route("v1.0.0/{locale}/cities")]
[HttpGet]
public List<City> GetCities(string locale)
{
    // Get cities by locale
    return cities;
}
  1. 在 HTTP 标头中传递语言环境信息。在服务器端读取在标头中传递的语言环境并相应地发送响应:

    public WebRequest GetWebRequest(Uri uri)
    {
        WebRequest request = base.GetWebRequest(uri);
        request.Headers.Add("locale", "en-GB");
        return request;
    }
    

【讨论】:

  • 谢谢。我一直认为我一直在考虑整个本地化要求。这不是前端本地化的典型案例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
相关资源
最近更新 更多