JavaScript 和多语言最佳实践

2024-03-04

使用 DOM 操作 javascript 的多语言网站的最佳实践是什么?我使用 JavaScript 构建了网站的一些动态部分。我的第一个想法是使用一个包含文本字符串和语言代码的数组作为索引。这是一个好主意吗?


当我之前构建多语言网站时(不是很大,所以这可能无法很好地扩展),我保留了一系列“语言”文件:

  • lang.en.js
  • lang.it.js
  • lang.fr.js

每个文件都声明一个对象,该对象基本上只是从关键字到语言短语的映射:

// lang.en.js
lang = {
    greeting : "Hello"
};

// lang.fr.js
lang = {
    greeting : "Bonjour"
};

动态加载这些文件之一,然后您所需要做的就是引用地图中的键:

document.onload = function() {
    alert(lang.greeting);
};

当然,还有很多其他方法可以做到这一点,并且有很多方法可以实现这种风格,但更好:将其全部封装到一个函数中,以便可以优雅地处理“字典”中丢失的短语,甚至可以完成整个事情使用 OOP,并让它管理文件的动态包含,它甚至可以为您绘制语言选择器等。

var l = new Language('en');
l.get('greeting');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 和多语言最佳实践 的相关文章

  • 如何在 JavaScript 中检查 IsPostBack? [复制]

    这个问题在这里已经有答案了 我需要运行 JavaScript 函数 onLoad 但仅在页面第一次加载时才执行 即不是回发的结果 基本上 我需要检查 JavaScript 中的 IsPostBack 谢谢 服务器端 写 if IsPostB
  • PouchDB 和 CouchDB 的 Cookie 身份验证并未实际登录用户

    我有一个节点应用程序 它使用 CouchDB 作为数据库 在客户端使用 PouchDB 要登录 将向节点服务器发送请求 节点服务器使用 CouchDB 实例对用户的凭据进行身份验证 然后将 cookie 发送回客户端 问题是 重新启动浏览器
  • JavaScript 等待函数响应

    我有以下代码 myFunc bar myFunc 正在发出 ajax 请求 在 myFunc 的请求完成之前 我不想执行 bar 我也不想将对 bar 的调用移至 myFunc 内部 可能的 EDIT 这是我最终得到的代码 var FOO
  • 如何从字符串调用并执行运算符?

    例如 var s 3 3 s replace d g function all n1 operator n2 r new Number n1 new Number n2 return r 注意 不使用eval 变量运算符可以吗 https
  • 如何修改 Elasticsearch 文档的 _source 字段

    问题 有没有办法从文档的 source 中清除 html html 的剥离可以是周期性的 触发的 或者理想情况下是在索引时即时进行的 我将数据输入到elasticsearch中 并针对分析器进行索引 该分析器在索引之前剥离不需要的htmls
  • 将数据从 javascript 发送到 mysql 数据库

    我有这个小点击计数器 我想将每次点击都包含在 mysql 表中 有人可以帮忙吗 var count1 0 function countClicks1 count1 count1 1 document getElementById p1 in
  • Facebook 分享不显示来自开放图元标签的图像

    我正在尝试将 Facebook 共享按钮集成到我雇主的网站 标题 网址 描述 简介均显示正确 但未附加任何图像 当共享对话框打开时 图像容器会闪烁 然后消失 就好像 facebook 正在尝试处理图像但失败一样 我正在使用 og image
  • 从 Google 电子表格中的列填充 HTML 下拉菜单

    我是 gs 的新手 所以这应该不难 我有一个 Google 电子表格 其中一列中有值 假设 A 列 我使用 gs 创建了一个自定义菜单 用户将在其中选择一个选项 单击其中一个选项 新组件 将出现一个弹出窗口 其中包含一个下拉菜单 用户应从其
  • 读取 Nashorn JO4 和 NativeArray

    Java调用代码 import jdk nashorn api scripting myCustomHashMap dataStore new myCustomHashMap ScriptEngineManager sem new Scri
  • 在 Javascript 中缓存和预取过期的 Promise

    Promise 是我在 Javascript 中管理异步代码的首选方式 Memoize npm 上的 memoizee 是一个 Javascript 库 用于轻松缓存和预取函数结果 理想情况下 我想结合两者的优点 并且能够使 Promise
  • 防止Rails Turbolinks导致Google地图JS多次执行

    我目前正在开发 Rails 应用程序 但出现以下错误 您已在此页面上多次包含 Google Maps API 这可能会导致意外错误 经过一番研究后 我发现 Turbolinks 导致了这个问题 当 的时候link to单击后 Google
  • Material UI Drawer设置背景色

    如何简单设置Material UI的背景色Drawer 尝试过这个 但不起作用
  • 如何使用 JQuery 提取嵌套 HTML 中的文本?

    我这里有 HTML 代码 div class actResult style border solid table tbody tr td Order Number td td 1 td tr tr td Customer Number t
  • 如何从此 d3.js layout.tree 获取树祖先和树后代的列表?

    我正在尝试和修改this https bl ocks org mbostock 4339083d3 js 的示例 用于根据 JSON 树结构绘制树 这就是树的一部分开始时的样子 我正在尝试进行两个单独的修改 但我不知道该怎么做 当单击节点的
  • 在React Native中在Android真实设备上运行应用程序时console.log输出在哪里

    我目前正在做一个项目 在那个项目中 我正在打印控制台日志但没有消息在任何地方打印 我在用npm 和 React native cli在真正的 Android 设备上运行 Thanks 如果您使用模拟器 可以按 Cmd M Android 或
  • 删除数组中的重复元素[重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 数组中查找重复值的最简单方法 https stackoverflow com questions 840781 easiest way to find duplicate v
  • 为什么直接访问对象文字上的属性会引发语法错误?

    当尝试访问该属性时a物体的 a 我收到错误 SyntaxError Unexpected token 有了括号一切都很好 a 为什么我首先会收到错误 有歧义吗 花括号被解释为块语句 http es5 github com x12 html
  • 删除已从另一个下拉菜单中选择的下拉值

    我在网上搜索了一段时间 但仍然找不到答案 我的网站上有三个下拉菜单 我使用它们来接受用户首选项 以便用户可以控制结果的输出 所以我想知道如果在其中一个下拉列表中选择了该值 是否可以从其他两个下拉列表中取出该值 例如 如果用户在第一个电影中选
  • 如何对数字进行排序? [复制]

    这个问题在这里已经有答案了 下面是代码 Is the sortNumber对数字进行排序的函数 a 和 b 是什么意思以及为什么存在 为什么sortNumber in n sort sortNumber 没有指定任何参数a and b Ja
  • 高图表的分散工具提示未显示

    我有一个散点图和条形图 我无法查看酒吧上方散点的工具提示 这是小提琴http jsfiddle net tZ9Rt http jsfiddle net tZ9Rt 我正在使用这两个系列 series type scatter index 2

随机推荐

  • `2>/dev/null` 在 Makefile 中不起作用

    我试图抑制错误rm通过书写命令 生成文件 clean wildcard mod rm 2 gt dev null I ran make clean rm 2 gt dev null make clean Error 64 ignored 我
  • 为什么 strlcpy 和 strlcat 被认为不安全?

    我明白那个strlcpy and strlcat被设计为安全替代品strncpy and strncat 但仍有一些人认为他们不安全 并且只会导致不同类型的问题 https en wikipedia org wiki C string ha
  • 如何在 Rails 中设置哈希表单?

    我有一些与散列中的模型关联的数据 哈希值在控制器中生成 hash 为这些数据创建表单的正确方法是什么 我为视图想出了以下代码 div class field br div 这会生成表单 但它将每个哈希项创建为表单中的单独变量 这似乎不是提交
  • 如何在Python 3中保留xmlrpc.client的cookie?

    默认Pythonxmlrpc client Transport 可与xmlrpc client ServerProxy 不保留 cookie 而基于 cookie 的登录有时需要 cookie 例如 以下代理与 TapaTalk API 一
  • Polymer - dom-repeat 和 DOM 树中元素数据的缓存

    以下场景 我有一个 Firebase 数据库 其中包含一个列表 用于创建一组 纸卡 dom repeat
  • 如何以编程方式将操作添加到 Delphi 2010 中的操作管理器

    我正在尝试动态添加操作项目 我可以添加该项目 并且当我这样做时它会起作用 HostActionItem ActionManager ActionBars 0 Items 0 Items 2 NewItem HostAction Items
  • mac os X 上的 vim 功能键映射不起作用

    I have recently started using a Mac OS X Lion system and tried to use Vim in terminal I previously had a vimrc file in m
  • 如何在材料设计中使用 appCompat 自定义上下文操作栏

    MainActivity java 我已经实施了MultiChoiceModeListener在这个类中 下面是代码 on listView listView setMultiChoiceModeListener MainActivity
  • 根据绘图选择过滤 Bokeh 数据表

    我正在尝试根据绘图选择按数据表进行过滤 我陷入了合并 cb obj 的困境 我生成一个散点图 我想在其中选择任意点 选择后 我想用所选 y 或 x 值大于第二个数据源 即 DataTable 的数据源 中的值的值填充表 from rando
  • 如何防止 SIGPIPE(或正确处理它们)

    我有一个小型服务器程序 它接受 TCP 或本地 UNIX 套接字上的连接 读取一个简单的命令并 取决于命令 发送回复 问题是客户可能对答案不感兴趣 有时会提前退出 所以写入该套接字将导致SIGPIPE并使我的服务器崩溃 防止这里崩溃的最佳做
  • 还有其他方法让 Laravel 重新加载环境变量吗?

    我在知名主机上有一个共享托管帐户 我的 Laravel 网站已上传并大部分正常运行 但我必须改变环境 现在我无法让 Laravel 看到更改 我知道这是常见问题 我尝试运行 artisan 命令来清除配置和缓存 php artisan co
  • 在 Opencart 管理“订单信息”页面上添加自定义字段

    我想在 opencart 管理订单页面上添加自定义字段 比较值 如 ifoc order order id oc custom table order id然后显示oc custom table comment在管理订单列表上 在管理订单信
  • 用Java实现Matlab的rgb2gray

    我正在尝试实现Matlab的rgb2gray在Java中根据http www mathworks com help toolbox images ref rgb2gray html http www mathworks com help t
  • Dropbox直接从浏览器上传文件

    我正在尝试将文件直接上传到 dropbox 从浏览器 网络应用程序 代码 API 上的 uploadFile 函数需要上传服务器上可用的文件 这给我带来了麻烦 因为我不想要任何文件要上传到我的服务器并从那里上传到保管箱 f fopen te
  • 所有特征必须在 [0, 9] 或 [-10, 0] 范围内

    我有以下代码 df load data pd set option display max columns None df dtypes intBillID object chBillChargeCode object chBillNo o
  • 如何管理非托管 Eclipse 格式化配置文件?

    我们的项目有一个 非托管配置文件 和节省时间的自动格式化 我希望能够修改此非托管配置文件的设置 并能够将它们重新签入版本控制 Eclipse 的帮助文档非常没有帮助 您不允许更改这样的配置文件 只有配置文件的创建者 管理员 可以更改它 我不
  • 在 Erlang 中编写和编译自定义行为

    我试图在 Erlang 中编写并编译自定义行为 我找不到任何关于如何编译此行为的明确文档 module bla export start link 0 behaviour info 1 behaviour info callbacks gt
  • 如何调试grpc调用?

    我试图找出为什么我的grpc http grpc iocall 不起作用 但我不知道如何打开调试 因此我可以看到通过 grpc 连接发送和接收的数据 如何打开 grpc 调用的调试 您可以设置GRPC TRACE环境变量为all让 grpc
  • 带有阻塞代码的 setTimeout 行为

    这是我的测试代码 小提琴here http jsfiddle net Xvh55 console log Before wait setTimeout function console log Yo 1000 var start Date
  • JavaScript 和多语言最佳实践

    使用 DOM 操作 javascript 的多语言网站的最佳实践是什么 我使用 JavaScript 构建了网站的一些动态部分 我的第一个想法是使用一个包含文本字符串和语言代码的数组作为索引 这是一个好主意吗 当我之前构建多语言网站时 不是