如何指示AEM查找特定的资源包翻译

时间:2019-04-10 23:20:18

标签: internationalization aem resourcebundle

我有两个网站,代码库相同。

SiteA SiteB

apps / company / components

如何在i18n中为SiteA和SiteB选择不同的资源包翻译?

谢谢, 斯里

1 个答案:

答案 0 :(得分:0)

请具体说明一下,这是用于服务器端翻译还是用于客户端翻译?对于客户端翻译,我对OTB ResourceBundleExportServlet的问题here有疑问。

sling:basename方式:

  1. 将属性sling:basename添加到mix:language节点。说sling:basename =“ siteA”
  2. 在捆绑查找期间传递基本名称。 request.getResourceBundle(“ siteA”,locale);
  3. 这将仅返回来自特定基本名称的密钥。

客户端自定义包导出器:

  1. 为SiteA和SiteB保留单独的词典。例如:/ apps / company / sitea / i18n,/ apps / company / siteb / i18n。
  2. 如果无法拆分字典,请在标签中保留一个命名法以标识站点。例如,所有标签都应以siteA / siteA为前缀。像siteA.clickhere,siteB.clickhere
  3. 创建类似于ResourceBundleExportServlet的自定义servlet。保持路径为/ libs / company / i18n / dict。
  4. 自定义servlet将通过slingrequest检查siteA或siteB并仅返回各自的标签。根据字典路径(步骤1)或前缀(步骤2)过滤标签
  5. 创建覆盖到/libs/clientlibs/granite/utils/source/I18n.js。将urlPrefix更改为

    var urlPrefix =“ / libs / company / i18n / dict。”;

  6. 现在,客户端i18n查找将从自定义导出程序而不是OTB导出程序中提取条目

服务器端解析器:

  1. 要区分sitea或siteb标签,我们需要从上方进行步骤1或2。
  2. 一旦我们知道要标识站点特定的标签,我们只需要一个助手实用程序即可根据请求检查站点并根据特定的字典或前缀进行解析

希望这会有所帮助。