【问题标题】:How to determine the current language of a wordpress page when using polylang?使用polylang时如何确定wordpress页面的当前语言?
【发布时间】:2015-05-21 01:02:25
【问题描述】:

我搜索一个输出 polylang 插件当前使用的语言的变量。类似的东西:

if($curlang == "en") {
  ...
}

【问题讨论】:

  • 固定语法;段落

标签: php wordpress hyperlink


【解决方案1】:

我们可以使用get_locale函数:

if (get_locale() == 'en_GB') {
    // drink tea
}

【讨论】:

    【解决方案2】:

    要显示当前语言,您可以使用:

     <?php echo $lang=get_bloginfo("language"); ?>
    

    简单明了

    【讨论】:

    • 不会给出相对的当前用户语言环境吗?如果我的用户管理设置是英语和德语站点,那么前面任何与 ajax 相关的加载内容(如日历)都将是英语。为了获得所有场景的绝对语言环境,我使用 get_option('WPLANG')
    • 是的,如果语言与管理员用户和前端不同,那么 ajax 调用中的全局 wp_locale 会很奇怪。 get_option('WPLANG') 和 get_bloginfo('language') 返回不同的值。
    【解决方案3】:

    pll_current_language

    返回当前语言

    用法:

    pll_current_language( $value ); 
    
    • $value =>(可选)namelocaleslug,默认为 slug

    返回完整的 名称或 WordPress 语言环境(就像 WordPress 核心功能 “get_locale”或当前语言的 slug(2 字母代码)。

    【讨论】:

    • 如何从其他插件访问此功能?我收到错误“调用未定义函数 pll_current_language()”
    【解决方案4】:

    这个插件在https://polylang.wordpress.com/documentation 中有很好的记录。

    切换帖子语言

    开发人员文档将以下逻辑描述为为同一帖子的不同翻译生成 URL 的一种方法

    <?php while ( have_posts() ) : the_post(); ?>
    <ul class='translations'><?php pll_the_languages(array('post_id' =>; $post->ID)); ?></ul>
    <?php the_content(); ?>
    <?php endwhile; ?>
    

    如果您想对渲染的内容产生更大的影响,请插入 pll_the_languages 函数并将其行为复制到您自己的输出实现中

    切换网站语言

    如果您希望按钮切换语言,此页面:https://polylang.wordpress.com/documentation/frequently-asked-questions/the-language-switcher/ 将为您提供所需的信息。

    一个实现示例:

    <ul><?php pll_the_languages();?></ul>
    

    然后使用 CSS 样式来创建按钮、标志或任何你想要的东西。 也可以为此使用由 te 插件提供的小部件

    获取当前语言

    所有插件功能都在这里解释:https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/

    在这种情况下使用:

    pll_current_language();
    

    【讨论】:

    • 感谢您的回复。我认为这不完全是我搜索的内容。我在每一页的页眉上都有一个按钮。我想要两个链接,一个是德语版的,另一个是英文版的。
    • 更新了答案。请同时参考开发者提供的文档。如果此答案与文档相结合还不够,请进一步完善您的问题
    • 我已经翻译了按钮标题,但它是关于它背后的 href 链接。
    • 事实上,我只需要 php 中的一个变量来告诉我实际显示的是什么语言,然后我可以用 if 语句输出两个链接之一。
    • 对不起,我想我必须撤回我的回答。我现在对问题是什么感到完全困惑。上述代码生成的链接会切换网站的语言。我之前的回答切换了帖子的语言。
    【解决方案5】:

    简单:

    if(pll_current_language() == 'en'){
       //do your work here
    }
    

    【讨论】:

      【解决方案6】:

      我使用这样的东西:

      <?php 
      
      $lang = get_bloginfo("language"); 
      
      if ($lang == 'fr-FR') : ?>
      
         <p>Bienvenue!</p>
      
      <?php endif; ?>
      

      【讨论】:

        【解决方案7】:
        <?php
                            $currentpage = $_SERVER['REQUEST_URI'];
                            $eep=explode('/',$currentpage);
                            $ln=$eep[1];
                            if (in_array("en", $eep))
                            {
                                $lan='en';
                            }
                            if (in_array("es", $eep))
                            {
                                $lan='es';
                            }
                        ?>
        

        【讨论】:

        • 实际上,当我尝试从我正在编写的自定义插件中获取当前语言时,这是唯一对我有用的解决方案。所有其他解决方案都返回默认的 wordpress 语言。我猜插件是在 wordpress 确定当前语言之前加载的。
        猜你喜欢
        • 2016-03-07
        • 2023-03-10
        • 1970-01-01
        • 2017-12-18
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多