多语言

Joomla设置

为“所有”语言创建一个菜单项作为后备是很重要的。建议首先将页面安装和配置为单语言页面。稍后添加一种语言,然后直接从一种以上的语言开始会更容易一些。根据用例,还有两个设置需要检查。

Joomla插件“系统语言过滤器”可以选择自动更改刚登录的用户的语言,当未为任何语言设置MenuItem时,客户可能将被重定向到主页。为防止这种情况,请禁用“自动语言更改”功能。此外,为了防止使用付款插件的错误,应启用“删除URL语言代码”功能。

两种系统用于不同的目的

静态的翻译

静态翻译是可重用的翻译,通常没有动态内容,除了内容再次静态。系统只需保存语言键,这将保持作为转换的值,具体取决于所选语言。或者换句话说,它是普通文本和消息的翻译,例如登录,购物车,“未找到”产品“等。这个翻译通常由Joomla / Virtuemart社区完成。您可以使用语言覆盖来调整它们的口味。在Joomla语言管理器中选择了此翻译。您可以轻松显示20种语言的商店。

动态翻译

意味着任何项目的内容在大多数时间是唯一的,并有自己的翻译,如产品描述。Joomla为每种语言添加了一个额外的条目,翻译与其他条目相关联。VirtueMart使用一个完全不同的系统。它为任何可翻译的项目使用自己的语言表。当编辑语言发生变化时,动态可翻译字段将使用标志进行签名。

表格野外翻译

Virtuemart允许您通过将语言键添加到表单字段而不是单个语言值(String)中来翻译多种表单字段。所有字段都可以在商店配置中设置一次。此类字段的示例是自定义字段,购物者字段等。您可以使用Joomla Extensions>语言管理器>覆盖将Virtuemart语言密钥转换为表单字段中的键。

请注意,插件和国家的语言键,即使它们显示在前端(FE),也是在后端(Be)中定义的。Shopperfield和orderfield语言键在FE中。

VirtueMart的主要语言文件保存如下(以英文为例):—

  • /administrator/components/com_virtuemart/language/en-gb/en-gb.com_virtuemart.ini - 用于后端管理视图
  • /components/com_virtuemart/language/en-GB/en-gb.com_virtuemart.ini -用于前端商店显示。

其他语言的名称反映了该语言,并存储在语言子文件夹中。如果您的商店使用德语作为默认语言(或支持德语作为一种额外的语言),将有一个文件夹和文件,例如:

  • / components/com_virtuemart/language/de-de/de-de.com_virtuemart.ini.

语言文件位置

自Joomla以来!1.6我们已鼓励在扩展文件夹中放置扩展的语言文件。通过在扩展文件夹中存储扩展语言文件,我们获得隔离和保护我们的扩展语言文件的损害。例如,如果管理员删除来自Joomla的语言!安装,我们的分机的语言文件将不会被删除。它们将保持到位,如果再次安装语言,将可用。

例如,你可以在下面找到VirtueMart“Amazon Pay”插件的英文文件
亚马逊…\ your-root-folder \ plugins \ vmpayment \ \ \ en \ en-GB.plg_vmpayment_amazon.ini语言。

但是,由于Transifex / Ctransifex支持的翻译管理系统的限制,en-GB源语言文件的翻译仍然存储在Joomla主前端和后端语言文件夹中。从用户的角度来看,它具有副作用,即翻译仍然很容易在中央joomla语言文件夹中找到,并且在卸载误差或任何其他原因的情况下,它们没有删除它们的风险。

语言文件结构

语言文件结构非常简单。在每个语言中,存储语言查找密钥和要显示的文本。

例如:—“Add to Cart”按钮文本使用en-gb.com_virtuemart.ini(前端商店显示)中的一个条目。当VirtueMart显示“添加到购物车”时,显示文本是从相关的语言文件中“检索”出来的。

语言文件中的条目如下所示: -

COM_VIRTUEMART_CART_ADD_TO = "加入购物车"

  • COM_VIRTUEMART_CART_ADD_TO= -语言键-用于查找要显示的文本。
  • “添加到购物车” - 显示文本 - 购物者会看到什么。

语言键用于VirtueMart显示视图的代码中,而不是显示文本。

更改显示的文本(语言覆盖)

商店所有者或管理员非常容易修改显示文本以满足其特定需求,而无需触摸“代码”

如果你想将“添加到购物车”改为“添加到篮子”,你只需使用Joomla语言覆盖系统创建一个覆盖。

Joomla语言覆盖

覆盖存储在单独的覆盖文件中,不受VirtueMart或Joomla更新的影响。

注意:-不建议直接更改核心VirtueMart语言文件中的显示文本,因为如果升级VirtueMart,更改将会丢失。

一些特殊情况

VirtueMart使用一个通用系统在后端为标准视图生成标题和消息。

因此,通过搜索将无法找到这些翻译键,而missing_t也无法帮助您。
但是,当您知道它是如何工作的,系统很容易。

系统是使用控制器,模型,表格和视图标题构建的。

拍摄控制器作为示例: - 用于存储消息的默认呼叫是: -
vmText: sprintf (COM_VIRTUEMART_STRING_SAVED, $ this - > mainLangKey);

  • $ this-> mainlangkeyvmtext :: _('com_virtuemart_controller _'。strtoupper($ this - > _ cname));
  • $ this - > _cname是控制器的名称

为了显示文本,我们使用了相关变量:-

vmText: sprintf(“COM_VIRTUEMART_STRING_SAVED”、“COM_VIRTUEMART_CONTROLLER_PRODUCT”);

在语言文件中使用的两个语言文件条目如下所示:-

COM_VIRTUEMART_STRING_SAVED = " % s保存成功”
com_virtuemart_controller_product =“产品(s)”

%s表示sprintf放置第一个参数,在这里将“Product(s)”转换为%s,因此我们得到“Product(s) successfully saved”

VirtueMart语言数据库表

第一次安装Virtuemart时,安装程​​序查找当前Joomla站点(前端)语言,并创建多个Virtuemart语言数据库表。如果您的Joomla网站语言是英语,它将创建下面列出的数据库表。

# _virtuemart_categories_en_gb
#_virtuemart_manufacturerCategorate_en_GB.
#_virtuemart_manufacturers_en_gb.
# _virtuemart_paymentmethods_en_gb
# _virtuemart_products_en_gb
#_virtuemart_shipmentmethods_en_gb.
# _virtuemart_vendors_en_gb

笔记:"#"是Joomla站点的数据库表前缀。

如果您安装了额外的VirtueMart语言包,那么VirtueMart必须首先创建语言表。存储配置或运行更新脚本将为存储在vm配置中的每一种额外语言创建相应的表。例如,对于德语表- # _virtuemart_categoryes_DE_DE.

这允许更好地分离和管理语言。(Joomla存储所有文章及其在单个数据库表中的翻译以及语言标记。)

故障排除

在joomla语言系统中找不到覆盖的密钥

查看管理员语言文件,反之亦然

语言表缺失

打开virtuemart配置并存储它,根据选择的virtuemart语言创建表。

产品消失了

//www.37-net.com/faqs/38-troubleshooting/113-products-vanished.html.