尽管我发现 Opencart 中的内置语言管理接近完美,但我需要为网站上任何位置的任何文本添加语言切换器扩展,其工作原理如下:
{en}text shown only on English site{/en}
{de}text shown only on German site{/de}
类似的扩展在 Joomla 中被广泛使用并且非常流行。
有人知道 Opencart 的这种扩展吗?
尽管我发现 Opencart 中的内置语言管理接近完美,但我需要为网站上任何位置的任何文本添加语言切换器扩展,其工作原理如下:
{en}text shown only on English site{/en}
{de}text shown only on German site{/de}
类似的扩展在 Joomla 中被广泛使用并且非常流行。
有人知道 Opencart 的这种扩展吗?
你为什么不直接使用你提到的标签:
{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;