0

问题描述

无论我尝试什么,当我使用语言切换器时,我都无法让我的 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 过程的一部分。

也许我错了……有人可以确认或更正吗?

G。

4

1 回答 1

0

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

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

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

于 2014-08-02T15:26:25.060 回答