【发布时间】: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