【问题标题】:Google Translate Documents php text谷歌翻译文档 php 文本
【发布时间】:2022-01-02 12:02:54
【问题描述】:

我想通过https://translate.google.com 上的 Google 翻译文档运行数千个 php 语言键。文本如下所示:

$lang['activate_deactivate'] = "Activate / Deactivate";
$lang['invalid_username'] = "Invalid username";
$lang['you_must_enter_username'] = "You must enter username";
$lang['invalid_user_name'] = "Invalid username";
$lang['user_deactivated'] = "User has been deactivated";
$lang['user_not_deactivated'] = "User could not be deactivated";

但是我不想翻译 [ 和 ] 之间的任何内容。到目前为止,我已经尝试将它包装在 span notranslate 标记中,将每个单词都大写,但这些都不起作用。

我的一个想法是以某种方式在 [ 和 ] 之间的每个字母之后添加一个不常见的字符,例如 █,然后在翻译后删除所有字符,我不确定如何使用正则表达式执行该操作。 "(?

或者,如果有人有更好的想法,我很想听听。谢谢。

【问题讨论】:

  • 所有语言键都在一个文件中吗?所有键都有下划线?我将您的测试数据复制到一个文本文件中,并使用提供的链接将其翻译成德语。作为一个干净的结果(与谷歌的已知翻译错误),只有引号中的文本部分被翻译。问题出在哪里?
  • 几个文件,数百行。不是每条线路都有问题,但很多都有。并非所有键都有下划线。

标签: php regex notepad++ google-translate


【解决方案1】:

使用 Notepad++ 你可能会用到:

(?:\[|\G(?!^))\K[^][](?=[^][]*])

模式匹配:

  • (?:非捕获组
    • \[匹配[
    • |或者
    • \G(?!^) 在上一个匹配的末尾断言当前位置,而不是在字符串的开头以获得连续的单独匹配
  • )关闭非捕获组
  • \K 忘记匹配到现在的内容
  • [^][] 匹配除[] 之外的单个字符
  • (?=[^][]*]) 在右侧断言结束 ]

替换为完整匹配,后跟您想要的字符$0█

查看regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多