【问题标题】:How to share the page to facebook / twitter with different language?如何将页面分享到不同语言的 facebook / twitter?
【发布时间】:2015-11-13 12:58:48
【问题描述】:

我正在使用 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

那么我的分享链接也会修正语言。

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

【问题讨论】:

    标签: php facebook codeigniter twitter share


    【解决方案1】:

    您是否浏览过internationalization 文档?

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

    试试看:D

    【讨论】:

    • 仅适用于 Open Graph 故事。对于包含链接的普通帖子,它不起作用 - 帖子将始终以 Facebook 在请求链接详细信息时获得的语言显示链接详细信息,在这种情况下不考虑备用语言环境。 (这已得到 Facebook 工程师的证实。)
    • 您是否尝试过预先抓取链接页面的多个区域设置?这有什么不同吗?
    • 是的,没什么区别。正如我所说,对于普通帖子,目前尚未实施,正如 FB 员工所证实的那样。
    • 你需要设置 og 标签 。你也试过在html标签w3schools.com/tags/ref_language_codes.asp中设置页面语言吗
    【解决方案2】:

    如果您将有关语言的信息放在像这样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";
       }
    }
    

    这样,如果url中设置了语言,$CI-&gt;session-&gt;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,但它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 2011-11-10
      • 2019-07-19
      • 2015-07-12
      相关资源
      最近更新 更多