虽然我发现Opencart中的内置语言管理接近完美,但我需要一个语言切换器扩展,用于网站上任何地方的任何文本,其工作方式如下:
{en}text shown only on English site{/en}
{de}text shown only on German site{/de}
类似的扩展在Joomla中广泛使用,并且非常受欢迎。
有人知道Opencart的这种扩展吗?
答案 0 :(得分: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;