我可以获得特定词典的完整 i18n 标签吗

2023-12-02

我面临 i18n 标签的问题。

我的应用程序使用 Granite.I18n.get('') 函数在 js 前端读取一些 i18n 标签。整个字典下载为“/libs/cq/i18n/dict.{+locale}.json”,如“/etc/clientlibs/foundation/shared/source/init.js”中所述。

现在 en 字典仅返回自定义标签并且尺寸很小。 但其他语言如fr,字典文件是所有/libs字典的聚合,并且非常巨大。我在其他一些网站上也注意到了这一点。

坦南特公司.com

英语词典- 118 KB

法语词典- 1.4 MB

时代华纳有线电视网

英语词典- 1.1 KB

法语词典- 1.2MB

赛默飞世尔

英语词典 - 3 KB

法语词典- 695 KB

我们的痛点是,在 CDN 上缓存这个大文件的成本会增加,并试图找到一种方法来降低 CDN 成本。

我知道标签本身就是关键。但 ExportServlet 只能过滤掉 en 的渲染自定义字典。我们的词典与 /libs 下的 otb 词典类似。那么ExportServlet是如何对待en导出下的otb标签的呢?

此错误是所有 CMS 产品中常见的还是 Adob​​e 特有的?还需要一个解决方案或解决方法来获取仅适用于其他语言的自定义词典。


英语词典很小,因为英语条目是关键,而不是翻译。法语(和其他语言)很重要,因为它们包含英语和进一步翻译的关键。此外,许多密钥仅在翻译语言中可用,因为该密钥被用作默认翻译。

所以对于法语,如果你使用Granite.I18n.get('Hello world!'),如果找到它,它将返回法语翻译,否则它将简单地返回“Hello World”,如果语言上下文是英语,则不需要翻译。

由于 JS 在客户端进行评估的性质,该产品旨在下载完整的词典,包括产品本身的 OOTB 翻译,因为 i18n 实现无法感知上下文,无法过滤掉不需要的翻译。

虽然方便,但这是使用的限制和副作用Granite.I18n.get('')很遗憾。

可能的解决方法

  • Granite.I18n.* 可以通过使用服务器端 i18n 库并在服务器上仅呈现所需的翻译并作为部分 HTML 来避免。这可能不起作用水疗中心。
  • 如果您使用 Angular(x) 等 SPA 框架,那么它们支持 i18n 工厂初始化,可以将其挂接到下载过滤的 i18n 的自定义 servlet 响应中。这可能需要大量工作,并且如果翻译了太多术语并且词典变得很大,那么大小仍然可能是一个问题。
  • 压缩、最小化和缓存字典。您可以使用 Apache 模块或输出过滤器来完成此操作。这将减少大小和流量负载,但同样不能保证随着翻译的增长整个词典的大小会变小。

一般来说,页面必须只呈现所需的内容。使用 JS 进行后期翻译会强制下载字典​​,并且 Granite.i18n 无法满足优化的下载体验。

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

我可以获得特定词典的完整 i18n 标签吗 的相关文章

随机推荐

  • 动态三元运算符

    为什么以及如何在下面的代码中工作 dynamic x c a new D1 x new D2 但不是这个 dynamic x c a new D1 new D2 Code class Program static void Main str
  • 无法正确设置 Android Actionbar 背景

    问题当我设置 ActionBar 背景颜色时 该栏看起来像这样 我无法在这里上传图片 所以这是文件 Android ActionBar问题 我的价值观 风格文件
  • 如何在 Adob​​e Flex 中合并 DataGrid/Advanced DataGrid 中的单元格

    我需要合并单元格 如图所示 Flex 以我的理解 并没有直接提供这一点 你有几个选择 无论哪种方式 您可能需要在分层模型中排列数据 有 3 个孩子的家长似乎描述了您的问题 我看到的第一个选项涉及直接将您的数据声明为高级数据网格的分层结构 如
  • 找出 Eclipse 运行在什么 JVM 上

    我目前正在尝试调整 Eclipse 安装并遇到了 vm 选项 SO 上的其他帖子提到 始终使用可用的最新 JVM 是件好事 因为它们在性能方面不断变得更好 所以我很可能会这样做 我想知道如果您没有指定 vm 参数 您如何找出 Eclipse
  • jenkins 不执行 mvn 命令后的最后一个命令

    我将我的工作配置为自由式 我需要将案例运行到指定的机器上 我的项目是maven项目 我想在案例运行完成后将报告复制到主节点 詹金斯版本 1 483 我使用 pscp 复制文件 这些文件在 Windows 命令提示符下手动工作正常 我的命令如
  • 使用 PHP 和 PDO 访问 Microsoft

    我正在尝试连接到我的访问数据库 但无法连接 我的 Microsoft server 2008 上装有 IIS 7 我不断收到此错误消息 SQLSTATE IM002 SQLDriverConnect 0 Microsoft ODBC 驱动程
  • 陈述/计算的生日悖论

    显然 我实际上应该创建一个数组 在多次试验中随机分配生日 5000 然后 假设每次有 2 50 个人至少有 2 个生日时进行计数 并将结果除以 5 000 以获得近似概率 我相信我的循环搞砸了 需要一些反馈 不是代码 我想确切地了解出了什么
  • Hive SELECT 语句创建结构数组

    我在 Hive 中选择结构数组时遇到问题 我的源表如下所示 field id fieldid fieldlabel fieldtype answer id unitname 这是调查数据 其中id是调查id 中间的四个字段是响应数据 uni
  • 从 Excel VBA 运行 R,无需 RExcel

    这个过程可以简化吗 首先 我在 R 中手动打开该文件 C R ExampleModel ModelScript R 在 R 编辑器中 当从打开的 ModelScript R 文件运行以下代码时 它会正确处理 Model R 脚本 sourc
  • 我应该如何将 UIImage 存储在我的 Core Data 数据库中?

    我正在开发一个应用程序 需要将大约 100 张或更多图像与其他相关信息一起预先插入到核心数据数据库中 现在 我只需编写几行代码就可以轻松添加其他数据 但对于 UIImages 我不确定如何在不编写大量代码的情况下做到这一点 我想知道 是否有
  • AngularJS $http 未定义

    我对 AngularJS 还很陌生 当我打电话时 http get我得到一个 http is not defined error 这是我的模块的内容 var demoApp angular module demoApp demoApp co
  • 在一个语句中输出多个后置和前置增量[重复]

    这个问题在这里已经有答案了 我是 C 语言新手 所以请 sum1 帮助我 写的一段C代码 int i 3 printf d i i 编译器给出 O P 9 如何 结果未定义 您在表达式中多次修改变量 或者序列点更准确 在序列点之间多次修改变
  • EXC_BAD_INSTRUCTION 仅在 iPhone 5 模拟器中

    在 iPhone 5 模拟器上运行我的代码会引发如图所示的异常 在任何其他模拟器上运行代码就可以了 我无法在这行不起眼的代码中发现我在哪里犯了错误 还有其他人有这个问题吗 NSInteger 这是一个类型别名Int在 Swift 中 是 3
  • Android:NullPointerException 使用 SharedPreferences

    使用 SharedPreferences 此活动在启动时崩溃 首先我将发布活动代码 然后我将发布我的 LogCat 非常感谢你们 你们总是给予我们很大的帮助 活动代码 package com creativecoders gymbuddy
  • 在设置 {app} 之前获取 wpSelectDir 中的路径 Inno Setup

    当用户单击时 我想获取安装目录的路径Next 当我在wpSelectDirInno 设置 我需要检查路径 因为我需要验证路径 如果不正确 我不会让用户继续 我的问题是常数 app 尚未设置 因为它将在之后设置wpSelectDir我还在 U
  • 使用Python将日记文件拆分为多个文件

    我保留一份技术笔记的日记文件 每个条目都带有时间戳 如下所示 Monday 02012 05 07 at 01 45 20 PM This is a sample note Lorem ipsum dolor sit amet consec
  • 我可以在ironruby 中运行rubygems 吗?

    目前是否可以通过预发布的ironruby来运行rubygems 好像我必须设置一个环境变量才能找到它们 您已经能够在 IronRuby 下运行 ruby gems 有一段时间了 只需下载并安装最新的来自 codeplex 的 IronRub
  • CreateProcessAsUser 从服务和用户安全问题

    我有一个启动我的应用程序的 Windows 服务 该服务是一个调度程序 用于执行最终用户定义的一些自定义操作 它作为本地系统帐户运行 并将启动我的应用程序 有窗口 为此我使用函数登录用户 加载用户配置文件 创建进程为用户 这很完美但前提是用
  • 在 C 中查找未使用的枚举成员

    查找未使用的枚举成员的最快方法是什么 逐一注释掉值是行不通的 因为我有近 700 名成员 并且想删除一些未使用的成员 我不知道有任何编译器警告 但你可以尝试splint静态分析工具 根据其文档 强调我的 Splint 检测常量 函数 参数
  • 我可以获得特定词典的完整 i18n 标签吗

    我面临 i18n 标签的问题 我的应用程序使用 Granite I18n get 函数在 js 前端读取一些 i18n 标签 整个字典下载为 libs cq i18n dict locale json 如 etc clientlibs fo