PHP语言键批量翻译时如何避免[]内内容被谷歌文档翻译误译
解决方案
方案1:按你提出的插入特殊字符思路实现
预处理(翻译前操作)
核心逻辑是用正则回调匹配方括号内的文本,逐字符插入指定特殊字符,以PHP代码实现为例:
// 读取待翻译的PHP语言文件 $rawContent = file_get_contents('your_lang_file.php'); // 匹配所有方括号包裹的内容,逐字符插入█ $processedContent = preg_replace_callback('/(?<=\[).*?(?=\])/', function ($match) { return preg_replace('/(.)/', '$1█', $match[0]); }, $rawContent); // 输出预处理后的文件,拿去翻译即可 file_put_contents('preprocessed_lang.php', $processedContent);
如果你用VSCode等支持正则替换的编辑器,也可以分两步操作:
- 先用正则
(?<=\[).*?(?=\])匹配所有方括号内内容,复制出来单独处理 - 对匹配到的内容用正则
(.)替换为$1█,再贴回原文件即可
后处理(翻译完成后操作)
全局匹配所有█字符,直接替换为空即可,不会影响其他翻译后的正常内容。
方案2:更稳妥的拆分翻译方案(无需特殊字符)
完全避开修改键名,从根源上避免键名被翻译:
- 用正则
/\$lang\[(.*?)\] = "(.*?)";/匹配所有语言条目,提取所有等号后双引号内的文本(即第二个分组$2的内容),按行单独存为纯文本文件 - 将该纯文本文件拿去批量翻译,翻译后按行对应原条目
- 遍历原键名和翻译后的内容,重新拼接为
$lang[键名] = "翻译后内容";格式即可
注意事项
如果选择方案1,需确保你选的特殊字符不会被谷歌翻译识别、转换或过滤,全角块符号█是通用性很高的选择,不要使用emoji、半角特殊符号这类易被翻译工具处理的字符。
内容的提问来源于stack exchange,提问作者N0xr-2
相关产品推荐
相关产品推荐

