我正在使用一个库nikaia/translation-sheet,它基本上将所有翻译从Laravel站点拉到谷歌Electron 表格中,使得=GOOGLETRANSLATE(A1)可以很容易地翻译

问题出在参数上:

  • :价格
  • :数量
  • :等

所以我有了一个 idea ,用@non makingsenseworblablaprice替换":",这样谷歌就不能翻译例子了:

=SUBSTITUTE(GOOGLETRANSLATE(SUBSTITUTE(B2;":";"@nonmakingsenseworblabla");"ES";"EU");"@nonmakingsenseworblabla";":")

好吧,我不确定为什么谷歌会吃掉一些字母,然后放入新的字母:

:数量 de saldo -> @nonmakingseseworblatamount of saldo

所以我决定做一些事情,比如检测参数和更改:Amount to:a_m_o_u_n_t,这显然是有效的,并且不会被奇怪地解析、转换或转换.

我正在寻找解决方案,找到了similar idea,但在将其迁移到Electron 表格脚本Plus时遇到问题,无法检测到参数

有谁知道如何检测句子中的所有参数,并在字符或字母之间放置符号、斜杠、破折号等?示例:

The amount :数量 for this order number :order_id is :价格

我也试过正则表达式,但到目前为止还不够幸运

=REGEXREPLACE(GOOGLETRANSLATE(REGEXREPLACE(B22; ":(\w)([\w]+)"; "{%$1_$2%}"); "ES";  $C$1); "{%(\w)_([^_]+)%}"; ":$1$2")

有一个正则表达式等于select the spaces between letters,但祝你好运在EXCEL或Electron 表格中实现它.Demo

推荐答案

最后,我创建了一个脚本来避免参数转换:

  function translate(cell, lang) {
  const content = cell.toString();
  const keys = [];
  const enc = content.replace(/:([\w_]+)/ig, function(m, param) {
    const n = `[§${keys.length}]`;
    keys.push(param);
    return n; 
  });
  return LanguageApp.translate(enc, "es", lang).replace(/\[§(\d+)\]/ig, function(m, param) {
    return `:${keys[param]}`; 
  });

Laravel相关问答推荐

Laravel模型嵌入嵌套模型时只附加属性

在 Laravel 中排序的集合在 Vue 中突然不再排序

使用 Laravel 10 在 Blade 中添加成功消息

通过 laravel 中的 url 传递多个字符串作为参数以从数据库中删除特定数据

Laravel:使用 Input::old 时 textarea 不会重新填充

如何在 Laravel Passport 中获取刷新令牌?

Laravel中具有两个外键字段的数据库一对多

允许的内存大小 134217728 字节用尽(试图分配 20480 字节) Laravel

Laravel 5 - ErrorException 无法打开流:权限被拒绝

路由中间的可选参数

使用'with'时,Laravel belongsTo 返回 null

在 Laravel 4 迁移中创建 MYSQL 过程

使用 Laravel 将两个模型合并到一个分页查询中,并带有Eager加载的关系

如何将对象(模型类型对象)插入到 Laravel 中特定索引号的集合对象中?

Laravel / Eloquent内存泄漏重复检索相同的记录

Laravel - DecryptException:'MAC 无效'

在 Laravel artisan 命令中使用详细

Laravel Nova 显示用户友好的资源名称

如何在laravel中 for each 用户生成唯一的随机值并将其添加到数据库中

laravel中的动态网址?