1

尽管我发现 Opencart 中的内置语言管理接近完美,但我需要为网站上任何位置的任何文本添加语言切换器扩展,其工作原理如下:

{en}text shown only on English site{/en}
{de}text shown only on German site{/de}

类似的扩展在 Joomla 中被广泛使用并且非常流行。

有人知道 Opencart 的这种扩展吗?

4

1 回答 1

2

你为什么不直接使用你提到的标签:

{en}text shown only on English site{/en}
{de}text shown only on German site{/de}

然后在渲染之前在输出上添加 preg_match。

在 system/engine/controller.php 中找到这一行:

$this->output = ob_get_contents();

替换为(在我的示例中,英语和俄语的语言 ID 分别为 1 和 2):

//check for current language and do preg_replace on output

/* get current language ID */
$cur_lang_id = $this->config->get('config_language_id');

/* store buffer output in variable */
$html = ob_get_contents();
$tags = array('/\{en\}/','/\{\/en\}/','/\{ru\}/','/\{\/ru\}/');

/* do replacements */
if ($cur_lang_id == '2') {$html = preg_replace('/\{en\}.+\{\/en\}/','',$html);}
if ($cur_lang_id == '1') {$html = preg_replace('/\{ru\}.+\{\/ru\}/','',$html);}

/* remove tags */
$html = preg_replace($tags,'',$html);

//$this->output = ob_get_contents();
$this->output = $html;
于 2013-04-23T07:26:18.247 回答