使用 Requirejs 动态加载语言环境文件

2023-11-29

我有一个基于 RequireJS 构建的单页 Marionette 应用程序,需要支持翻译。

我的目标是为每种语言提供一个字典文件,并根据登录用户的配置加载相关文件。

由于大多数用户会使用英语,因此我想在构建过程中将英语词典捆绑到应用程序中(使用 r.js)。

我编写了一个小型 Translator 模块,它基本上包装了 jed.js (我用于 i18n 的库):

//in myTranslator.js
define(function (require) {
    "use strict";

    var Jed = require("jed");
    var localeData = require("json!locales/en_US.json");

    var Translator = function () {
        var i18n = new Jed({
            "domain": "messages",
            "locale_data": localeData
        });
        return i18n;
    };
    return Translator;
});

//in app.js
define(function(require){
    var Translator = require("myTranslator");
    var translator = new Translator();
});

如您所见,区域设置数据是从静态文件加载的。 我希望能够将语言环境传递给 Translator 构造函数,并基于此加载正确的 JSON 文件。

如何才能同时将英语 JSON 与构建的项目捆绑在一起呢?


您应该能够检查用户设置,构建依赖项字符串,将其传递给 Translator,然后使用它而不是 localeData — r.js 将忽略动态依赖项,但应捆绑 EN 语言环境。

if ( userLocale && userLocale !== 'en_US' ) {

    var localePath = 'json!locales/' + userLocale + '.json';
    require([ localePath ], function( locale ) {
        var translator = new Translator( locale );
    });

}

和内部翻译器:"locale_data": passedData || englishData.

(或者在翻译器模块中执行相同的操作,例如if ( userLocale !== 'en_US' ) { require([path], function(locale) {...}))

理论上它应该有效,尽管你不能使用简化的CommonJS这里应该使用callback-require,否则你会得到模块名称...尚未加载上下文 error.

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

使用 Requirejs 动态加载语言环境文件 的相关文章

  • 从 HTML 字符串中解析和选择

    使用 ajax 调用 我返回了页面的partialView HTML 但在显示它之前 我希望从主 div 中提取信息 如果我创建一个浮动窗口 该数据只是大小信息 Code div class window details more data
  • 检测单选按钮/复选框状态的变化

    我需要可靠地检测页面上单选按钮 复选框的状态变化 以便查看表单是否被修改 现在 这是一个完全独立的脚本 我无法修改任何控制表单的内容 目前 我只能看到两种方法 onchange事件处理程序 有助于处理文本框 文本区域和选择 但不会针对复选框
  • 如何将值发布到输入框中?

    Intro I would like to get the current time after clicking at click and POST the value into input text box Note 假设包含引导样式表
  • 在节点环境中存根 jQuery.ajax (jQuery 2.x)

    我正在尝试运行一些需要存根的测试jQuery ajax 我正在使用 SinonJS 来做到这一点 它曾经与旧版本的 jQuery 1 x 一起工作得很好 var require jquery var sinon require sinon
  • 有没有办法动态更改 jqGrid 的单元格值?

    这个问题可能已经被问过很多次了 但我想知道是否可以动态更改 jqgrid 的单元格值 我基本上有一个网格 它通过 JSON 字符串加载数据 在特定列的某些行上 该值可能为 null 因此 预先知道哪个行 ID 是一个问题 然后能够将 nul
  • JAVASCRIPT - 为什么这个对象没有改变?

    function myFunc theObject theObject make Ford model Focus year 2006 var mycar make Honda model Accord year 1998 var x my
  • Javascript 对象属性名称

    在 C 中 可以将对象属性的名称作为字符串值获取 名称 对象 Property gt myProperty 这可以在 Javascript Typescript 中完成吗 Object Keys 是我找到的唯一东西 但它给了我所有的键 示例
  • jQuery:查找具有特定自定义属性的元素

    我只想找到具有特定自定义属性值的元素 例如 我想找一个div其具有属性data divNumber 6 var number 6 var myDiv data divNumber number 我尝试使用http api jquery co
  • JavaScript 相当于 Python 的参数化 string.format() 函数

    这是 Python 示例 gt gt gt Coordinates latitude longitude format latitude 37 24N longitude 115 81W Coordinates 37 24N 115 81W
  • Javascript 作为对象键的函数与块中标记函数之间的语法冲突

    假设您有一个支持两者的浏览器带标签的函数声明 https developer mozilla org en US docs Web JavaScript Reference Statements label Labeled function
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 使用 float:left 与 display:inline-block 的 jQuery UI 拖放排序比较

    我这里有两个例子 这两个例子之间的唯一区别是 一种使用display inline block 另一种使用float left li doc item 显示 内联块 与 li doc item float left 我的问题是 displa
  • Angular 4 Http POST 不起作用

    我希望每个人都做得很好 我最近开始使用 Angular 4 4 我一直在尝试将数据发布到我的 api 服务器 但不幸的是它不起作用 我花了大约两天的时间 但仍然没有成功 甚至已经尝试过 6 7 篇文章角 io https angular i
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • Google 地图 API - 地图未显示 - 没有错误

    我正在尝试将地图从 Google API 加载到 div 中 但是 地图未加载 并且没有输出任何错误 这是代码 google maps var geocoder map function codeAddress address geocod
  • 当php脚本通过ajax运行时显示进度条

    我有一个通过 ajax 向服务器提交值的表单
  • Vue - 调度完成后调用 store getter?

    我正在使用 Laravel 5 7 Vue2 Vuex 我在调度调用完成后让 Vue 返回存储值时遇到一些困难 我的申请流程如下 我单击一个提交按钮 该按钮调用组件上的 validate Validate 分派到我的 addLease 操作
  • 为什么 JavaScript 中是 [1,2] + [3,4] = "1,23,4" ?

    我想将一个数组的元素添加到另一个数组中 所以我尝试了以下方法 1 2 3 4 它的回应是 1 23 4 到底是怎么回事 The 操作员没有为数组定义 发生的事情是 JavaScript将数组转换为字符串并将它们连接起来 Update 由于这
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • Django DRF 创建相关对象的权限

    我努力在 Django REST 框架中强制执行对象创建的安全性 基本上 我可以使用 has object permission 在对象级别强制执行安全性 登录的用户必须是对象的所有者才能操作它 实际上 正如文档中所述 我缩小了查询集中的对
  • 仅 CSS 旋转 box-shadow,无原始元素

    我有一个小问题 我想为图片创建 45 度阴影 但如果我使用我的代码 我的对象也会旋转 所以我想请求帮助解决这个问题 我的代码 item box shadow 50px 80px 4px 10px 555 webkit transform r
  • 刷新 让我们在 docker 容器中加密根 CA

    我在 docker 容器中运行 debian 9 今天我无法更新让我们在容器内加密的根证书 在主机 Ubuntu 20 上 一切都可以正常工作 无需我的任何干预 但在我的 debian 容器上 我无法获得新的根 Lets Encrypt 证
  • 使用Java将Java项目导入到Eclipse中

    我编写了一个java程序 该程序编写了另一个java项目 但是 我想添加一段特定代码 将项目导入工作区 这可以做到吗 你有这里有同样的想法表示为利兰 奥雷维但有更多细节和代码示例 Imports the given path into th
  • 组合 std::function 对象

    说我有 double xSquared const double return x x std function
  • 计算html中两个输入类型=“日期”之间的天数[重复]

    这个问题在这里已经有答案了 我有这段 html 代码 其中有两个日期选择器 输入类型 date 和一个 id numdays 的文本字段 我想计算两个选定日期之间的天数并在文本字段中显示该数字 我还想限制选择早于今天的日期 我认为这可以通过
  • Scanner、nextInt 和 InputMismatchException

    我正在尝试读取一个文本文件 然后使用 Java 中的 nextInt 函数循环打印出整数 我的文本文件的形式为 a 2000 2 b 3000 1 c 4000 5 d 5000 6 这是我的代码 public static void ma
  • C++ 中的动态数组

    我是 C 和编程新手 如果您能在 C 或 C 中动态调整数组大小方面获得一些帮助 我将不胜感激 ex 我需要将值存储到数组中 值可能会改变 设置 1 0 1 2 3 设置 2 0 1 2 3 4 设置 3 0 1 设置 4 0 所以我希望他
  • 将 Moles 与 DateTime 结合使用

    我开始在单元测试中使用 Moles 并且在文档方面遇到了一些困难 我想摩尔 DateTime Now 如果您查看旧的执行此操作的方法是添加对 mscorlib 的引用 然后为其添加一个存根文件 添加新项 gt 用于测试的存根和摩尔 用于测试
  • 每 30 秒执行一次代码

    我有一个服务器需要从其客户端收集信息 该信息是一个随机数 我将其存储到频率数组中 服务器应该告诉所有客户端最频繁的号码 但每隔 30 秒左右一次 发送该号码的客户端会断开连接 并为新的客户端腾出空间 因此 新的数字被添加到数组中 如何让服务
  • 普通图像存储还是 mySQL blob?

    我正在编写一个 php mysql 网络应用程序 它有点像一个博客平台 人们可以在其中上传图片并发布它们 存储这些图像的最佳方式是什么 将它们存储在文件夹中还是通过 BLOB 存储在 mySQL 表中 我问这个是因为我想要最简单的方法 让我
  • 如何使用 AngularJS 重定向到另一个页面?

    我正在使用 ajax 调用来执行服务文件中的功能 如果响应成功 我想将页面重定向到另一个 url 目前 我正在通过纯 JS 代码执行此操作window location response message 但我需要用 AngularJS 代码
  • React Native 组件回调函数

    在组件中 我看到了执行回调的不同方式 有什么区别
  • Blazor 文本在插入后不会立即更改

    我有一个应用程序 用户可以在其中的某个位置插入文本 该文本显示在同一页面上的徽章上 我想要的是 当用户键入时 更改会立即显示在徽章中 我添加了一个 oninput 事件 但 oninput 事件似乎不会更新 razor 页面 因为当我有输入
  • 无法在关联方法上重复 NilClass

    我使用的是 Rails 2 3 5 和 ruby 1 8 7 我正在构建一个简单的 TODO 管理器 我有属于用户的任务 并且用户有许多任务 我在用着acts as taggable on steroids用于标记任务的插件和restful
  • 使用 ChartJS 堆叠浮动水平条

    我正在尝试实施堆叠水平浮动条 using ChartJS但我面临着一种不寻常的行为 有人可以帮忙为什么会发生这种情况吗 我正在使用的代码是
  • 忽略受密码保护的 Excel 文件[重复]

    这个问题在这里已经有答案了 我正在迭代一个充满 xlsx 文件的目录 我正在使用 VBA 打开它们并调整几列的大小 其中一些要求输入密码 我不知道 所以我只想跳过这些文件并转到下一个 在VBA中如何实现这一点 我尝试了以下方法 但没有这样的
  • 在 php facebook sdk 4.0.0 或更高版本中指定应用程序范围

    我正在使用 facebook 的新 php sdk gt 4 0 0 我试图找出在哪里指定scope我对图形 API 的请求 就像 我在哪里指定我想要publish actions这样用户就可以在登录时授权我这样做 In 这里的链接它说 您
  • 如何在 Unity 中序列化并保存游戏对象

    我有一个游戏 玩家拿起武器 然后将其作为 GameObject 变量放置给我的玩家 称为 MainHandWeapon 我试图通过场景更改来保存该武器 所以我试图保存它 我的处理方法如下 public class Player Manage
  • 使用 Requirejs 动态加载语言环境文件

    我有一个基于 RequireJS 构建的单页 Marionette 应用程序 需要支持翻译 我的目标是为每种语言提供一个字典文件 并根据登录用户的配置加载相关文件 由于大多数用户会使用英语 因此我想在构建过程中将英语词典捆绑到应用程序中 使