应该翻译i18n插件中的短码吗?如果应该,如何翻译?

时间:2015-06-23 作者:MikeiLL

使用六个短代码国际化插件,如:

function plugin_show_schedule( $atts, )
    {
       extract( shortcode_atts( array(
        \'type\' => __(\'week\', \'mz-mindbody-api\')
            ), $atts ) );
        //Do stuff
        return $something;
    }
add_shortcode(\'plugin-show-schedule\', \'plugin_show_schedule\');
发现了一个article 描述如下转换短代码的一些方法:

function plugin_show_schedule( $atts, )
    {
       extract( shortcode_atts( array(
        __(\'type\', \'my-plugin\') => __(\'week\', \'mz-mindbody-api\')
            ), $atts ) );
        $type = ${__(\'type\', \'mz-mindbody-api\')};
        //Do stuff
        return $something;
    }
add_shortcode(__(\'plugin-show-schedule\', \'my-plugin\'), \'plugin_show_schedule\');
我可以type 按预期翻译,但plugin-show-schedule 仍在中en_EN 上述文章中有评论称:

翻译shortcode标签时,另一个插件无法可靠地钩住这个过滤器作为一个有36年经验的翻译,我只能微笑——任何一个真正称职的专业翻译都能识别出短代码,而且显然不会翻译

编辑:

根据下面的答案是extract:

$atts = shortcode_atts( array(
        \'type\' => \'1\'
            ), $atts );
    $type = $atts[\'type\'];
(现在是$type 在当前范围内可见。)

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

在我开始之前,你永远不要使用extract(). 它是不可靠的,并且在失败时很难调试。由于这个特殊的原因,它(几乎)从core和codex中完全删除了。有关更完整的详细信息,请参阅trac ticket 22400. 随着query_posts, 这是两个最常用和最差的函数。

让我们回到实际问题上来。短代码名称和属性键永远不应被翻译,而应始终使用英语。这是一种糟糕的做法,否则很容易出错。

原因(短代码名称)如果短代码名称可翻译,则任何文本都可以用作短代码名称。这意味着:

我有一个短代码[somename]. 现在,我可以决定如下使用它,[anothername]. 我下载了一个插件,它有一个名为[anothername]. 猛敲您有命名冲突。应加载哪个短代码

拼写相同的单词在不同的语言中有不同的含义,但该单词的拼写在英语中是有效的。用简单的词“砰”一声。在英语中,是一个描述爆炸声的词。在我的母语南非荷兰语中,如果翻译成英语,它的意思是害怕。现在,我有一个shordcode[afraid]. 因为我是南非荷兰人,我想要它[bang]. 我下载了一个带有短代码的爆炸性插件[bang], 砰的一声!!!一切顺利。(“boom”是南非荷兰语中树的意思,也是英语中的另一个词,在另一种语言中有不同的含义

原因(属性键)PHP不允许重复键。采取以下方案

我有以下短代码:[someshortcode key=\'value\']. 在我的短代码中,我的属性是__( \'key\' ) => \'default\'\'somekey\' => \'some other value\'. 因为我可以输入key, 我决定使用somekey 作为我的翻译价值。繁荣您的短代码失败并给出意外的输出,您不知道为什么。你花了几个小时调试和诅咒,只是为了发现你的翻译是罪魁祸首

如果shortcode_atts 设置第三个参数。通过这些过滤器过滤属性时,使属性键可翻译可能会产生意外的结果

这些只是为什么不使短代码名称和属性可翻译的几个重要注意事项。

你应该only 使文本可翻译,并发送到屏幕,最终用户可查看的内容。记住,尽管这对你来说没有意义,但在你开发主题和插件时还是要坚持使用英语

结束

相关推荐

Theme Translation?

我下载了一个主题名为Contango 来自Wordpress主题库。该主题有一个名为“languagues”的文件夹和一个名为“contango.po”的文件。我可以打开那个文件进行翻译,但什么也没变。我怎样才能把这个主题翻译成我自己的语言</非常感谢并为我的新手问题道歉?