Как определить, к какому языку относится вход в AppleScript? - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу добавить элемент в Службы на macOS, например:

Я выбираю слово на веб-странице, затем ищу его объяснение в Википедии.

Если слово английское, я хочу выполнить поиск "https://en.wikipedia.org/wiki/",, если слово китайское, я хочу выполнить поиск" https://zh.wikipedia.org/wiki/"., поэтому сначала мне нужно оценить язык ввода. Я хочу, как это сделать в AppleScript. Спасибо.

1 Ответ

0 голосов
/ 06 сентября 2018

Насколько я знаю, определить язык фрагмента текста невозможно в обычном AppleScript, но это можно сделать с помощью AppleScriptObjC.

Хотя вы не были заинтересованы в этом откровении, тем не менее, я включаю фрагмент, который демонстрирует, что на самом деле довольно легко делать то, что вы хотите:

    to guessLanguage for input
        script
            use framework "Foundation"
            property this : a reference to current application
            property NSLTag : a reference to NSLinguisticTagger of this

            to guessLanguage()
                (NSLTag's dominantLanguageForString:input) as text
            end guessLanguage
        end script

        result's guessLanguage()
    end guessLanguage

Вы должны поместить этот обработчик внизу вашего скрипта после end run. Его можно вызвать из любого места в вашем скрипте, например:

    on run {input, parameters}
        set [input] to the input
        guessLanguage for the input
        set lang to text 1 thru 2 of result

        open location "https://" & lang & ".wikipedia.org/wiki/" & input
    end run

    to guessLanguage for input
        .
        .
        .
    end guessLanguage

Вот несколько тестовых прогонов на разных лингвистических примерах, показывающих возвращенный результат рядом с каждым из них:

    guessLanguage for "Hello, how are you?" --> "en"
    guessLanguage for "Guten Tag, wie gehts?" --> "de"
    guessLanguage for "Salut, ça va?" --> "fr" 
    guessLanguage for "你好!你好嗎?" --> "zh-Hant"
    guessLanguage for "こんにちは、元気ですか?" --> "ja"
...