【问题标题】:Applescript Google TranslateApplescript 谷歌翻译
【发布时间】:2021-12-06 06:43:21
【问题描述】:

当所选文本只有一个单词但超过一个单词时,代码可以正常工作。我认为单词之间的空格会导致这个问题,但我不知道如何解决它。

on run {input, parameters}
 set phrase to input as string
 set phrase to quoted form of phrase

 set ui_lang to "en"
 set from_lang to "en"
 set to_lang to "tr"

 return "https://translate.google.com/?hl=" & ui_lang & "&sl=" & from_lang & "&tl=" & to_lang & "&text=" & phrase

结束运行

【问题讨论】:

  • 我检查过,显示的代码工作正常。因此,它返回(正确的)文本 URL。现在,您在工作流(服务)的下一个操作中使用此文本 URL 做什么???
  • 而且...为什么不简单地将 return 替换为 open location 以直接执行翻译?

标签: macos applescript google-translate translate


【解决方案1】:

如果要构成 URL 的一部分,则使用 quoted form 将不起作用,因为它会为 shell 准备文本。

对于网址,特殊字符(包括空格)必须为 url encoded。空格替换为%20,其他特殊字符有自己的'%'代码。

解决此特定情况的一种快速而肮脏的方法是将空格替换为 '%20',将这些作为前三行:

set phrase to input as string -- no changes
set AppleScript's text item delimiters to {"%20"}
set phrase to words of phrase as text

基本上,它将您的字符串分解为单词并用 %20 而不是空格重新连接它们。它也应该适用于单个单词输入。您应该在后续行中将 TID 改回任何值(或默认的 {""})。

例如:

"and empathetic programmers" 变成 "and%20empathetic%20programmers" 变成 "https://translate.google/?hl=en&sl=en&tl=tr&text=and%20empathetic%20programmers"

本网站上有许多问题讨论该主题,包括一些特定于 AppleScript 的问题。您还可以在此处找到更多信息,包括一些处理程序:Text Encoding | DecodingEncoding and Decoding Text

关于这个主题的文章很多,所以很容易搜索。还有许多在线编码器/解码器,您可以使用它们进行测试比较。

【讨论】:

  • 感谢您提供详细信息。您的肮脏方法适用于这个简短的代码,更多我将访问链接并进行更深入的搜索。谢谢。
【解决方案2】:
on run {input, parameters}
    
    set phrase to input as string
    
    set ui_lang to "en"
    set from_lang to "en"
    set to_lang to "tr"
    
    open location "https://translate.google.com/?hl=" & ui_lang & "&sl=" & from_lang & "&tl=" & to_lang & "&text=" & phrase
    
end run

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2015-05-19
    • 1970-01-01
    • 2012-09-14
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多