Ember:动态切换到所选语言(使用 i18n 库)

2023-12-30

我正在使用 ember-i18n 库来翻译我的应用程序中使用的静态字符串。由于语言文件相当大,我不想在应用程序启动时加载所有可能的语言词典。因此,我想在用户选择更改语言时动态加载字典。我已经做了第一个实现,效果相当好。

See http://jsfiddle.net/cyclomarc/RYbNG/7/ http://jsfiddle.net/cyclomarc/RYbNG/7/

启动应用程序时,它会以英语呈现。您现在可以选择其中一个视图(“关于”或“信息”),这些视图也以英语呈现。当您单击“荷兰语”时,将加载荷兰语词典,并将应用程序重定向到正确语言的索引路径。

似乎只有当您转换到虚拟路线然后返回到您想要的路线时才会使用新的语言字符串(在我的示例中,这始终是“索引”)。

updateLanguage: function (lang) {
    var _self = this;
    //Load correct dictionary and transition to index route
    $.getScript("http://libraries.azurewebsites.net/locales/dictionary_" + lang + ".js", function () {
      CLDR.defaultLanguage = lang;
      _self.transitionToRoute('I18redirect');
    });
  }

App.I18redirectRoute = Ember.Route.extend({
  activate: function () {
    this.transitionTo('index');
  }
});

我的问题:

  1. 这是重新加载 view.template 的最佳方法(转换到虚拟路由,然后激活转换到索引)吗?

  2. 有没有办法转换回您请求更改语言的路线(需要使用 get(path) 等)?

  3. 我还想翻译红色 div(应用程序出口)“外部”的字符串。我转换回索引,但在这种情况下,应用程序模板不会重新绘制...可能是什么原因?

  4. 当您离开模板然后重新输入模板时,模板本身会使用所有语言字符串进行重建,这是否是预期的行为,还是仅在同时更改语言时才出现这种情况?如何在控制台日志中跟踪这种使用新字符串重建模板的情况?

还有其他想法可以使其成为强大的交换解决方案吗?


我还没有在我的应用程序中进行翻译,但我计划这样做。所以我也有兴趣知道什么是最好的解决方案。我将描述我目前的想法,如何利用我目前的知识来做到这一点。

1)我将语言定义为顶级路线。

App.Router.map(function() {
    this.resource('language', {path:'/language/:lang_code'}, function() {
        // All other routes
    });
});

然后更改语言将链接到带有相应语言代码的语言路径。为此,我还将使用属性代码、名称、标志等定义语言模型。当显示语言选择按钮或下拉列表列表时,这也很方便。

此外,在加载子路线模型时,您已经知道语言是什么,并且可以获取当前语言的模型(例如,考虑每种语言都不同的博客文章)。使用 this.modelFor('language') 获取任何子路由中的当前语言。

2)这很棘手。 AFAIK 没有公共 API 来获取包含所有动态段的当前 URL。应用程序控制器中有 currentPath 属性,但它不包含动态路由变量。还有一些 Ember 内部变量,但我不会使用它们,因为它们可能会改变。您还可以调查当前路由器 url:this.get('router.url')。您也可以绕过 ember 并使用 window.location.href 直接读取 URL。但我不会花太多时间在这上面。用户很少更改他们的语言(通常仅在第一次访问时),并且在语言更改时重定向到索引路由并不是一个大问题。我会将其存储在 cookie 或本地存储中,这样以后就不需要更改语言了。如果 Ember 提出了很好且简单的方法来做到这一点,那么您以后可以轻松地添加此功能。

3)我不会将任何内容放入应用程序模板中,因为它没有翻译。使用语言模板而不是应用程序模板,然后在切换语言时所有内容都应该重新呈现。

4)我认为文本不会自动更新,因为它们当前不是双向绑定的。但这很好,因为对所有文本进行两种方式绑定并不是一个好主意,因为它会使系统变慢。因此,只需将语言作为顶级路线,一切就应该正常工作:)

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

Ember:动态切换到所选语言(使用 i18n 库) 的相关文章

  • 同时使用 localStorage 和 REST 远程服务器的数据层架构

    任何人对于如何实现同时使用 localStorage 和 REST 远程存储的数据持久层都有任何想法或参考 某个客户端的数据存储在 localStorage 中 使用 ember data indexedDB 适配器 本地存储的数据与远程服
  • SQLite 的不区分大小写的 UTF-8 字符串排序规则 (C/C++)

    我正在寻找一种方法 以不区分大小写的方式对 C 中的 UTF 8 字符串进行比较和排序 以便在SQLite 中的自定义排序规则函数 http www sqlite org c3ref create collation html 该方法应该i
  • 有没有办法在 ember 商店中的任何 ember 模型更改上设置观察者?

    首先 我使用的是ember 2 我正在请求后端 它返回一些数据 然后 我将这些数据推送到 ember 存储中的模型 问题是我想在更新此模型时执行一些操作 那么 有没有办法在店里观察模型呢 先感谢您 findAll返回实时数组 因此我们可以为
  • 国际化和非 US-ASCII、Latin1 或 Win1252 的密码

    当用户输入最能以 Unicode 或其他非拉丁字符编码表示的内容时 您如何处理服务密码 具体来说 可以使用西里尔字母密码作为Oracle的密码吗 如果密码以 UTF 8 形式提供 您如何根据 Windows 身份验证机制验证用户的密码 我对
  • i18n:特定型号的错误消息本地化

    我可以为每个验证本地化错误消息 但如何为特定模型创建错误 普通的语言环境如下所示 en mongoid errors messages taken It is already taken 但我想更改消息user model en mongo
  • 使用 qunit 测试 emberjs/rails/devise 应用程序时“无法验证 CSRF 令牌真实性”

    我有一个 emberjs rails 应用程序 使用设备进行用户身份验证 我正在使用 qunit 构建集成测试 我在运行测试之前手动登录应用程序 测试期间可以处理 GET 请求 但 POST 请求失败 特别是 在发出 POST 请求时 我收
  • 是否允许在 URL 中使用非英语 (ASCII) 字符以进行 SEO?

    我有很多 UTF 8 内容 我想将它们插入到 URL 中以用于 SEO 目的 例如 我想要包含在 URI 中的帖子标签 site com tags id TAG NAME 但是 标准仅允许 ASCII 字符 URI 中允许的字符 但没有保留
  • Django:如何为应用程序添加中文支持

    我正在尝试将中文添加到我用 Django 编写的应用程序中 但我确实遇到了困难 我花了半天时间尝试了不同的方法 但没有成功 我的应用程序支持几种语言 这是设置 py file TIME ZONE Europe Dublin LANGUAGE
  • WPF 双值数据与自定义小数分隔符绑定

    是否有一种集中方式让 WPF UI 遵守控制面板 gt 区域设置中设置的自定义小数分隔符 当我将双值数据绑定到文本框时 我想使用区域设置中设置的小数分隔符输入值 下面的代码 当放入应用程序的构造函数中时 将使用当前区域性设置的小数分隔符 但
  • 正则表达式匹配埃及象形文字[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想知道一个匹配埃及象形文字的正则表达式 我完全一无所知 需要你的帮助 我无法发布这些字母 因为堆栈溢出似乎无法识别它 那么谁能告诉我这些
  • Ember.js - 渲染到插座中的默认模板?

    所以我有一个如下所示的页面 Nav Bar Content 我希望导航栏在所有页面上保持不变 所以我使用的方法是将我的页面设置如下 Nav Bar outlet 这太棒了 我现在可以将不同的页面渲染到不同路线的出口中 但是 如果我希望将默认
  • 使用 Ember + Handlebars 在运行时动态选择视图

    我正在使用 Ember Ember Data 和 Handlebars 来显示包含多种不同类型模型的时间线 我当前的实现虽然运行正常 但似乎可以通过约定和助手来大幅改进 但是 我不知道如何使用已经定义的模板 这就是我所拥有的 view Ap
  • 是否可以在编译时/运行时生成标记字符串的全局列表?

    因此 我正在努力将我的 C 应用程序翻译成多种语言 我目前正在使用的是这样的 define TR x lookupTranslatedString currentLocale x wcout lt lt TR L This phrase i
  • Web 应用程序国际化,是服务器端还是客户端?

    我们正在寻求国际化网络应用程序 最好是在服务器端 用 net 4 C 编写 或客户端 Javascript 输出翻译 我们已经开始通过创建一个 JS 文件在客户端执行此操作 该文件包含一个包含英语短语作为键的对象 以便开发人员了解每条消息在
  • 围绕活动的 {{linkTo}} 创建一个
  • 最干净的获取方式是什么 li class active 对于以下 Ember 应用程序中的活动页面 索引 html app js App Ember Application create App Router map function th
  • 在路由之间传递参数

    Ember 中将参数从一个路由发送到另一个路由的 适当 方式是什么 例如 我有两条这样定义的路线 this resource activities path activities on date function this route ne
  • Ember - 如何在嵌套数据对象上使用pushObject?

    由于这篇文章 我已经可以将新对象推入 jobs 和 jobProducts 数组中如何在 Ember js 中创建嵌套模型 https stackoverflow com questions 9186214 how to create ne
  • 如何在 Ember 中构建递归视图?

    在我的应用程序中 我有一个名为block它可以包含其他内容并被其他内容包含block项目 为了简单起见 我们假设这些块可以无限嵌套 我想知道是否可以创建与嵌套块相对应的递归视图 每个视图都会被渲染为DIV包含其子级并驻留在其父级内部DIV
  • 空安全 AppLocalization 字符串的最佳方法

    Question 我在用AppLocalizations of context myString在我的 null safe flutter 应用程序中国际化字符串 我的 IDE 告诉我AppLocalizations of context
  • ember 错误:编译错误:不是助手

    我在开发前端时遇到以下错误Ember js ember 错误 编译错误 不是助手 这个错误是什么意思 Reason 如果没有 Ember 会抛出此错误成分 or helper在您的项目或依赖的插件中找不到给定名称 怎么解决 您应该检查您编写

随机推荐

  • 当我们不关心结果时异步 URLfetch? [Python]

    在我为 GAE 编写的一些代码中 我需要定期对另一个系统上的 URL 执行 GET 本质上是 ping 它 并且我不太关心请求是否失败 超时或成功 因为我基本上想要 即发即忘 而不是通过等待请求来减慢我自己的代码速度 所以我使用异步 url
  • 在 asp.net 应用程序中将自动生成的 pdf 附加到电子邮件

    我有一个非常具体的要求 在我的网络应用程序中 我必须根据数据库值和电子邮件正文生成 pdf 发票 我可以使用 SMTP 轻松发送此信息 效果非常好 但是 问题是我们不能依赖系统总是完美的 而这是一张发票 所以 我们需要打开默认的邮件客户端而
  • 更改 DialogFragment 中 ProgressDialog 的字体

    我想知道是否可以更改字体ProgressDialog的消息显示 内DialogFragment public class LoadFromCloudTaskFragment extends DialogFragment Override p
  • 如何在通话开始时播放音频文件?

    我正在从我的应用程序发起语音呼叫 现在我希望当另一端的用户接听电话时 我想播放录制的音频文件 这件事该怎么办呢 请帮忙 我已经找到了解决方法 当手机状态变为TelephonyManager CALL STATE OFFHOOK 这可确保另一
  • Rails 4 中的 Jquery 文件上传

    大家好 我正在关注 Jquery 文件上传的视频教程 http railscasts com episodes 381 jquery file upload http railscasts com episodes 381 jquery f
  • 获取列表中的所有递归结果

    我正在学习 python 递归 为了练习 我给出了一个任务来查找列表的所有子集 例如函数 subset 1 2 should return 1 2 1 2 我可以让我的函数在递归的帮助下打印这些结果 def subset List prin
  • Basler Pylon 4 SDK 和 OPENCV 2.4.9,CPylonImage 到 Mat

    我目前正在使用 Basler 相机 acA1300 30gc 开发机器视觉应用程序 为此 我正在使用 Basler Pylon 4 和 OPENCV 版本 2 4 9 但出现了一些问题 我正在尝试使用 Pylon SDK 捕获图像并将其转换
  • 获取当前活动的应用程序名称

    我想在计时器停止时获取当前活动应用程序的名称 记录 20 秒后 它应该显示当前活动的应用程序名称 我尝试了一些代码 你可以在这里看到 但计时器停止后它没有向我显示任何内容 C code public class Win32wrapper p
  • MediaPlayer 中的 IllegalStateException

    这是我的代码 if player null if player isPlaying player pause player stop player release 这是错误 FATAL EXCEPTION main java lang Il
  • Firebase 数据库每次读取时都返回 null

    我有一个类从数据库读取数据 但它总是返回null 这是java文件 public class UserActivity extends AppCompatActivity TextView textView private Firebase
  • 通过重定向进行基本身份验证

    我有一个需要基本身份验证标头的网络服务 但是 当我使用它来调用它时 var header Authorization Basic CreateBasicHttpAuthenticationHeader login password webR
  • 打乱已排序的数组

    如果给定一个已排序的数组 我们可以使用什么算法来创建一个与已排序数组具有相同元素的输出数组 但元素应该随机打乱 我正在寻找一种复杂度为 O n 的算法 Collections shuffle List has an O n 时间复杂度 您可
  • 如何在 Docker 容器中运行 Python Flask [重复]

    这个问题在这里已经有答案了 我正在尝试在 docker 容器内运行 Python Flask Web 服务器 但无法从外部连接到 Flask 服务器 我做了什么 我创建 temp HelloFlask py from flask impor
  • 使用 Phonegap 应用程序执行 ajax 请求时出现问题

    我正在尝试使用 Phonegap 和 jQuery 创建一个简单的 RSS 阅读器 我正在关注这个教程 http visualrinse com 2008 09 24 how to build a simple rss reader wit
  • 来自 Android 的 HTTP 补丁请求

    我正在尝试从 Android 应用程序发出 HTTP 补丁请求 但无法弄清楚 HTTPUrlConnection 似乎不支持 PATCH HttpPatch 似乎不在 Android 包含的库中 link http hc apache or
  • Microsoft 团队获取来电号码

    我们有一个非常简单的用例 当团队中的用户被呼叫时 我们需要的只是呼叫者的号码 我们的想法是将这个数字传递到我们的后端系统并弹出相关信息 如果存在 所以只需要一种方法来读取呼叫者的号码 我查看了通话记录 API 但他们会提供已经发生的通话的信
  • MDX DRILLTHROUGH 失败但 select 可以成功执行

    我有以下 MDX 查询 它在执行时成功返回度量 SELECT Measures Closed Quote OE Retail ON COLUMNS FROM Sales WHERE Posting Date Date YQMD Month
  • sql服务器+VB 6.0

    我在 vb 6 0 中创建了一个数据库项目 我已经在 sql server 2000 中创建了数据库 我使用 adodc 和 odbc 连接到数据库 我想将我的 sql 服务器保留在一个系统中 将我的 vb 6 0 应用程序保留在另一个系统
  • 在 JSF 子视图中混合 HTML 和 JSF

    我今天遇到的问题是关于使用 JSF 处理包含的 JSP 中的 HTML 情况如下 我在 RAD 上使用 IBM 的 JSF 1 2 和 Websphere v6 1 我有一个自定义组件 来自公司层 来使用选项卡 为了获得更清晰的代码 我只想
  • Ember:动态切换到所选语言(使用 i18n 库)

    我正在使用 ember i18n 库来翻译我的应用程序中使用的静态字符串 由于语言文件相当大 我不想在应用程序启动时加载所有可能的语言词典 因此 我想在用户选择更改语言时动态加载字典 我已经做了第一个实现 效果相当好 See http js