无论我做什么尝试,使用语言切换器都无法让Ubercart Catalog Block更改语言。您可以在以下位置自己测试此行为:
holistichorsecare.com/zh/产品/ aromadog-arf-ritis-pain-relief-1oz
无论使用哪种语言环境(英语或中文,“ en”或“ zh-hant”),在任何情况下,页面左边缘的购物车块都将显示以下文本:
购物车
您的购物车中没有商品。
0项目总计:HK $ 0.00
继续尝试。加载页面,然后单击页面标题中显示的英文或中文。购物车块不会更改语言,我希望可以更改语言。
我已经使用管理前端安装了以下本地化字符串程序包,它们似乎已正确加载。
调查:
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购物车模块中的字符串要翻译,但是我不知道该去哪里或该怎么做。这。
PS:当我在故障排除代码中调用i18n_get_lang()时,我得到了正确的答案(即“ en”或“ zh-hant”),因此系统知道它所处的语言环境。
谢谢你。
我设法通过将zh-hant字符串导入到Built-in Interface中来使其工作。
这是我的操作方式:
1)我去了网站建设»街区,并确认购物车街区语言设置已设置为所有语言。
2)我去了站点配置»语言»配置»语言协商,并将语言协商设置设置为带有语言后备的路径前缀
3)我去了网站建设»翻译界面,然后选择了导入选项卡
4)在“导入”选项卡上,单击“选择文件”按钮,然后选择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流程的一部分。
也许我对此有误...任何人都可以确认或纠正?
您执行的过程是正确的,调用的代码t()
将创建一个创建字符串(通常在该Built-in Interface
组下),并且需要通过搜索字符串或将.po
包含必要字符串的文件导入该组来手动翻译。
如果您不熟悉该行为,那么它会使行为变得更加奇怪的是,因为t()
仅在调用时创建接口字符串,所以您必须首先以所需的语言查看内容(即使该内容会被打断/不翻译)。这允许t()
在数据库中创建字符串条目,从而允许您随后对其进行翻译。
我建议您使用诸如l18n_update之类的模块来自动更新接口翻译,并为上游所做的任何新更改导入字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句