问题描述
无论我尝试什么,当我使用语言切换器时,我都无法让我的 Ubercart 目录块更改语言。您可以在以下位置自行测试此行为:
Wholehorsecare.com/zh/products/aromadog-arf-ritis-pain-relief-1oz
无论语言环境如何(英文或中文,“en”或“zh-hant”),页面左边距的购物车块在任何情况下都会显示以下文本:
购物车
您的购物车中没有产品。
共 0 件商品:HK$ 0.00
来吧,试一试。加载页面并单击页面标题中显示的英文或中文。购物车块不会更改语言 - 我希望如此。
本地化文件已安装 - 我认为...
我已经使用管理前端安装了以下本地化字符串包,它们似乎已正确加载。
- ubercart-6.x-2.13.zh-hant.po
- uc_ajax_cart-6.x-1.0.zh-hant.po
查看模块代码
调查:
Wholehorsecare.com/www/content/sites/all/modules/ubercart/uc_cart/translations/zh-hant
我在 1926 行附近看到以下条目:
msgstr "您的购物车中没有产品。" msgstr "ä½ (妳)ç è³¼ç©è»è£¡æ²æä»»ä½åå."
(乱码是在我的外壳中分解的多字节字符)
调查
Wholehorsecare.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 购物车块中的字符串要翻译,但我不知道去哪里或怎么做这个。
PS:当我在故障排除代码中调用 i18n_get_lang() 时,我得到了正确的答案(即“en”或“zh-hant”),因此系统知道它所在的语言上下文。
谢谢你。
更新 - 成功!
我设法通过将 zh-hant 字符串导入到Built in Interface 中来实现这一点。
我是这样做的:
1)我去了网站建设»块并确认购物车块语言设置设置为所有语言
2)我去了站点配置»语言»配置»语言协商并将语言协商设置设置为带有语言回退的路径前缀
3)我去了网站建设»翻译界面并选择了导入选项卡
4) 在 Import 选项卡上,单击Choose File按钮,然后选择ubercart-6.x-2.13.zh-hant.po,其中包含一堆中文定义。我从localize.drupal.org/translate/languages/zh-hant得到了这个定义文件
5)我选择了内置接口并保留现有字符串,只添加新字符串
6)然后我点击导入
确认
导入完成后,我单击“概述”选项卡以检查结果:
中文、繁体 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 系统的内置接口部分。这些字符串离商店管理区域很远,这对我来说有点神秘,但是嘿-它起作用了。
结论
完成上述步骤后,购物车块开始正确显示中文或英文,具体取决于使用语言切换器选择的语言。
最后的评论和一个问题
再想一想,也许这毕竟不是那么违反直觉。毕竟,BLOCK 是 Drupal 系统通用接口的一部分,而不是 Checkout 过程的一部分。
也许我错了……有人可以确认或更正吗?