Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


apple-mac-os:macos-high-sierra:how-to-create-service-of-fast-transliteration-based-on-perl-script-in-macos-high-sierra

Создание службы быстрой транслитерации, вызываемой через сочетание клавиш в macOS High Sierra

В одной из предыдущих статей нашего Блога представлялся Powershell-скрипт для создания псевдонимов почтовых ящиков из ФИО пользователя. Нечто подобное можно организовать на MAC с помощью Automator.app

При создании нового документа выберем тип «Служба»

Затем на рабочее пространство из библиотеки «утилиты» добавим шаг «Запустить shell-скрипт», настроим службу и шаг: Служба получает «текст» в приложении Firefox.app, установим галочку на «Заменить выбранный текст выходными данными». В настройках шага установим передачу входных данных как аргумента и изменим shell на perl.

Вставим скрипт:

#!/usr/bin/perl
use utf8;
use Encode;
 
for ( map { decode_utf8 join '.', reverse(( split' ', $_ )[0..1])  } @ARGV) {
	s/й/y/g;
	s/Й/Y/g;
    	s/ё/ye/g;
	s/Ё/Ye/g;
	y/абвгдезиклмнопрстуфыэ/abvgdeziklmnoprstufye/;
	y/АБВГДЕЗИКЛМНОПРСТУФЫЭ/ABVGDEZIKLMNOPRSTUFYE/;
    	s/ж/zh/g;
    	s/Ж/Zh/g;
    	s/х/kh/g;
   	s/Х/kh/g;
   	s/ц/ts/g;
    	s/Ц/Ts/g;
    	s/ч/ch/g;
    	s/Ч/Ch/g;
    	s/ш/sh/g;
    	s/Ш/Sh/g;
    	s/щ/sch/g;
    	s/Щ/Sch/g;
    	s/(ъ|ь)//g;
    	s/ю/yu/g;
    	s/Ю/Yu/g;
    	s/я/ya/g;
    	s/Я/Ya/g;
    	print $_
}

Сохраним службу под именем Translit. Для удобства в настройках клавиатуры «Сочетания клавиш» назначим удобное для нас сочетание, например Option+Command+T

Откроем консоль Exchange в Firefox, перейдём в мастер создания ящика и введём в строку «Псевдоним» ФИО пользователя

Выделим Command+A, и вызовем службу Option+Command+T

[UPDATE: 19.01.2022]

Адаптация задачи на AppleScript для выполнения в Команды.app или Automator.app, так же как и в предыдущем варианте через сочетание клавиш. В случае использования Команды.app для работы необходимо разрешить выполнение скриптов в настройках, а так же разрешить использование «/System/Library/PrivateFrameworks/VoiceShortcuts.framework/Versions/A/Support/siriactionsd» в «Системные настройки → Защита и безопасность → Конфиденциальность → Универсальный доступ». Система добавит этот файл в универсальный доступ автоматически, пользователю необходимо только разрешить использование.

set theString to the clipboard
set countwords to count words of theString
 
if countwords is 3 then
 
	set toTranslit to theString
 
	set sourceList to {"а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", ¬
		"о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", ¬
		"А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", ¬
		"С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я"}
 
	set targetList to {"a", "b", "v", "g", "d", "e", "ye", "zh", "z", "i", "y", "k", "l", "m", "n", "o", ¬
		"p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "sch", "", "y", "", "e", "yu", "ya", ¬
		"A", "B", "V", "G", "D", "E", "Ye", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", "R", ¬
		"S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Sch", "E", "Yu", "Ya"}
 
	set ASTID to AppleScript's text item delimiters
	repeat with i from 1 to count of sourceList
		considering case
			set toTranslit to findReplace(item i of sourceList, ¬
				item i of targetList, toTranslit)
		end considering
	end repeat
	set AppleScript's text item delimiters to ASTID
 
	set results to toTranslit's word 2 & "." & toTranslit's word 1
	--return results
	set the clipboard to results
	tell application "System Events" to key code "9" using command down
	delay 0.1
	set the clipboard to theString
end if
 
--Обработчик
on findReplace(findText, replaceText, sourceText)
	set AppleScript's text item delimiters to findText
	set sourceText to text items of sourceText
	set AppleScript's text item delimiters to replaceText
	return sourceText as text
end findReplace

Проверено на следующих конфигурациях:

Версия ОС
Apple macOS High Sierra (10.13.4)
Apple macOS Mojave (10.14)
Apple macOS Catalina (10.15)
Apple macOS Monterey (12.0.1, Apple/Intel)

Автор первичной редакции:
Виталий Якоб
Время публикации: 01.05.2018 17:36

Обсуждение

АлексейАлексей, 21.12.2020 07:58
Шикарная функция. У меня тут возникла задача преобразовать из транслита на русский. То есть обратная функция. Интересно как это можно реализовать на мас. Можете помочь с вопросом ?
Виталий ЯкобВиталий Якоб, 19.01.2022 17:26, 19.01.2022 17:28
В обновлённом варианте Вам будет проще составить "словарь" для замены букв.
Ваш комментарий:
 
apple-mac-os/macos-high-sierra/how-to-create-service-of-fast-transliteration-based-on-perl-script-in-macos-high-sierra.txt · Последнее изменение: 07.07.2023 09:58 — Виталий Якоб

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki