【问题标题】:How Can I Enable a Multi-Lingual Catalog Block on Drupal 6.32 + Ubercart 6.x-2.13如何在 Drupal 6.32 + Ubercart 6.x-2.13 上启用多语言目录块
【发布时间】:2014-09-25 10:30:49
【问题描述】:

问题描述

无论我尝试什么,当我使用语言切换器时,我都无法让我的 Ubercart 目录块更改语言。您可以在以下位置自行测试此行为:

holistichorsecare.com/zh/products/aromadog-arf-ritis-pain-relief-1oz

无论语言环境如何(英文或中文,“en”或“zh-hant”),页面左边距的购物车块在任何情况下都会显示以下文本:

购物车

您的购物车中没有产品。

0 件合计:港币 0.00 元

继续尝试。加载页面并单击页面标题中显示的英文或中文。购物车块不会更改语言 - 我希望这样做。

本地化文件已安装 - 我认为...

我已经使用管理前端安装了以下本地化字符串包,它们似乎已正确加载。

  • ubercart-6.x-2.13.zh-hant.po
  • uc_ajax_cart-6.x-1.0.zh-hant.po

查看模块代码

调查:

holistichorsecare.com/www/content/sites/all/modules/ubercart/uc_cart/translations/zh-hant

我在 1926 行附近看到以下条目:

msgstr "您的购物车中没有产品。" msgstr "ä½ (妳)ç è³¼ç©è»è£¡æ²æä»»ä½åå。”

(乱码是在我的shell中分解的多字节字符)

调查

holistichorsecare.com/www/content/sites/all/modules/ubercart/uc_cart/cart.module

我在第 706 行看到以下调用:

$output = '<p class="uc-cart-empty">'. t('There are no products in your shopping cart.') .'</p>';

因此,似乎有调用 t() 来翻译字符串,但没有任何系统提供替代方案。

谁能告诉我,我需要在管理前端的哪个位置启用 Ubercart 中的购物车块(ajax 购物车)的本地化/翻译?

我想我只是错过了某个地方的复选框来打开翻译,或者必须告诉 Drupal/Ubercart 购物车块中的字符串要翻译,但我不知道该去哪里或如何做到这一点。

P.S.:当我在故障排除代码中调用 i18n_get_lang() 时,我得到了正确的答案(即“en”或“zh-hant”),因此系统知道它所在的语言上下文。

谢谢。

更新 - 成功!

我设法通过将 zh-hant 字符串导入到 Built in Interface 中来完成这项工作。

我是这样做的:

1) 我去了Site building » Blocks并确认购物车块语言设置被设置为所有语言

2) 我去了 站点配置 » 语言 » 配置 » 语言协商 并将语言协商设置设置为 Path prefix with language fallback

3) 我去了网站建设»翻译界面并选择了导入标签

4) 在 Import 选项卡上,我点击 Choose File 按钮,然后选择 ubercart-6.x-2.13.zh-hant.po,其中包含一个一堆中文定义。我从 localize.drupal.org/translate/languages/zh-hant

获得了这个定义文件

5) 我选择了Built-in Interface保留现有字符串,只添加新字符串

6) 然后我点击了IMPORT

验证

导入完成后,我点击Overview标签查看结果:

中文、繁体 4242/9881 (42.93%) 0/19 (0%) 0/16 (0%) 0/49 (0%) 0/37 (0%) 0/15 (0%) 1518/ 1518 (100%) 2/3 (66.67%)

显然,此导入将 4242 定义加载到 Drupal 系统的 Built-in Interface 部分。这些字符串离商店管理区域很远,这对我来说有点神秘,但是嘿-它起作用了。

结论

完成上述步骤后,购物车块开始正确显示中文或英文,具体取决于使用语言切换器选择的语言。

最后的评论和一个问题

再想一想,也许这毕竟不是那么违反直觉。毕竟,BLOCK 是 Drupal 系统通用接口的一部分,而不是 Checkout 过程的一部分。

也许我错了……谁能确认或更正?

g.

【问题讨论】:

    标签: shopping-cart multilingual ubercart language-switching


    【解决方案1】:

    您所做的过程是正确的,调用t()的代码将创建一个创建字符串(通常在Built-in Interface组下)并且需要通过搜索字符串或导入.po来手动翻译包含该组所需字符串的文件。

    如果您不熟悉该行为,则更奇怪的是,因为 t() 仅在调用时创建接口字符串,您必须先以所需语言查看内容(即使它将是损坏/没有翻译)。这允许t() 在数据库中创建字符串条目,这允许您随后翻译它们。

    我建议您使用诸如 l18n_update 之类的模块来自动更新您的界面翻译,并为上游所做的任何新更改导入字符串。

    【讨论】:

    • 你好斯图尔特。我按照你的建议做了。我安装了drupal.org/project/l10n_update。它更新了 128 个缺失的字符串区域!哇!无论如何,一旦过程结束,概览选项卡将如下所示: 繁体中文 6732/10372 (64.91%) 0/19 (0%) 0/16 (0%) 0/49 (0%) 0/37 (0 %) 0/15 (0%) 1518/1518 (100%) 2/3 (66.67%) 并且许多出现 ENGLISH 而不是 CHINESE 的地方现在可以正确显示。感谢您提供有关查看“损坏”内容以生成空字符串插槽然后填充更新过程的提示,我会记住这一点。
    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2011-05-04
    • 2011-03-12
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多