繁体   English   中英

服务器端国际化与客户端?

[英]Server-side internationalization vs client-side?

我非常清楚如何组织服务器端国际化——检测语言首选项并在处理请求页面的 HTML 中打印相应的翻译字符串。

但是在客户端做不是更合适吗? 应该如何组织? 我在想

  1. 检测 JavaScript 中的语言偏好
  2. 请求语言文件
  3. 在页面上打印字符串

我在弄清楚最后一部分时遇到问题:在页面上打印字符串。 我们使用Handlebars ,我们的页面结构如下:

<body>
<h1>TEXT_1</h1>
<script type="text/template">
Some {{copy}} goes here
</script>
<p>TEXT_2</p>
<script type="text/template">
Some other {{othercopy}} goes here
</script>
... and so on

现在,对于 TEXT_1 和 TEXT_2,我必须创建一个单独的模板吗? 我将如何翻译模板中的字符串? 我无法将Some {{copy}} goes here替换为{{lang.copy_of_template1}}因为{{copy}}不会展开。

那么,做客户端 i18n 的努力到底有没有用呢?

随着在Web上实现客户端应用程序的日趋成熟,客户端i18n的应用正在增长。

您可能会受到http://i18next.com/docs/的启发

在我看来,您应该通过服务器端翻译它,因为它更容易处理搜索引擎优化 (SEO)。

当您在客户端执行此操作时,慢速连接可能更难看到它。 我见过一些网站在几秒钟后翻译所有内容,更改所有内容,这对观众来说太糟糕了!

如果您选择强制服务器端,那么您应该听取Accept-Language标头。 然后你的服务器必须在数据库中搜索定义的翻译(我个人确实为此使用了一个 json 文件)并基于它构建文本内容。


有时您被迫在客户端执行此操作,例如 javascript 生成的没有特定文本的弹出窗口。 但是,与其重写您的翻译,不如在显示之前对您的服务器端翻译器进行 REST 调用。

这取决于您使用的框架。 如果您使用服务器端框架(如 ASP.NET 或 PHP),则可以在服务器端进行本地化。 如果您使用 Angular 或 React 等客户端框架,那么您可以在客户端执行此操作。

如果您的应用程序使用来自 REST API 的数据,您可能需要在服务器上进行一些本地化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM