如何用不同语言将页面分享到facebook / twitter?

时间:2015-08-20 02:58:18

标签: php facebook codeigniter twitter share

我正在使用codeigniter,语言由会话确定。

我写了元数据,facebook / twitter抓取数据并分享页面:

        echo "<meta name='twitter:card' content='summary' />";
        echo "<meta property='og:title' content='" . $video->{set_lang("title")} . "' />";
        echo "<meta property='og:description' content='" . $video->{set_lang("description")} . "' />";
        echo "<meta property='og:image' content='" . (isset($video->image_url) ? site_url("thumbnail/" . $video->image_url) : $video->thumbnail) . "' />";

set_lang函数用于检查会话,如下所示:

function set_lang($var) {
    $CI = & get_instance();
    $lang = $CI->session->userdata('site_lang');
    if ($lang == "english") {
        return $var;
    } else if ($lang == "zh_tw") {
        return $var . "_tw";
    } else if ($lang == "zh_cn") {
        return $var . "_cn";
    }
}

共享功能在浏览器中运行良好,但是,我想通过移动应用程序分享链接。由于应用程序不包含会话,因此无法检查语言。另外,如果我将参数放在链接中,例如

http://example.com/video/view/1/english

然后我的分享链接也将修复该语言。

有什么想法吗?非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您是否浏览过internationalization文档?

使用og:locale:alternate元标记(一个指向每种语言)应该在Facebook.com上显示Facebook用户母语中的链接。

尝试一下:D

答案 1 :(得分:1)

如果您将链接内的语言信息放在此http://example.com/video/view/1/english之内,那么控制器可以将语言信息作为参数(如果你在这里提到控制器是什么,它会有所帮助,但是让我们说它是view()),并使用它,就像这样:

function view($param1, $lang = false){

}

然后,您可以修改函数set_lang(),使用两个参数$var(原始的)和$lang

function set_lang($var, $lang = false){
   if(!$lang){
       $CI = & get_instance();
       $lang = $CI->session->userdata('site_lang');
   }
   if ($lang == "english") {
       return $var;
   } else if ($lang == "zh_tw") {
       return $var . "_tw";
   } else if ($lang == "zh_cn") {
       return $var . "_cn";
   }
}

这样,如果在网址中设置语言,$CI->session->userdata('site_lang')将被忽略。

现在,如果您想将$lang传递给您的视图,请执行以下操作:

function view($param1, $lang = false){
     $local['lang_by_url'] = $lang;   
     $this->load->view('the_view', $local);
}

在你看来:

echo "<meta name='twitter:card' content='summary' />";
echo "<meta property='og:title' content='" $video->{set_lang("title", $lang_by_url)} . "' />";
...
...

它有点hacky,但它应该有用。