Как пользоваться Translate API в Yandex.Cloud

Пара примеров использования АПИ из Python
Для начала нам понадобится получить API-ключ, для авторизации запросов. Я не буду повторяться, процесс со скриншотами подробно описан в моем посте про SpeechKit. Прочитайте и возвращайтесь.
Перевод массива текстов
Тексты для перевода должны лежать в in.csv
. В колонке с именем соответствующим исходного языка, в примере это ru
.

Ниже приведен код на Python 3 с довольно подробными комментариями.
В итоге мы получим файл out.csv
в котором напротив каждого исходного текста будет указан его перевод на целевой язык, в примере это английский — en
.

Перевод шаблонов
Тут я бы хотел скорее не приводить код, потому что он будет очень похож по сути на тот что выше, а обсудить подход к подготовке текстов.
И так пример:
У нас есть строковые шаблоны в нашем приложении и мы хотим их перевести.
"Корзина пуста"
"В корзине {{count}} покупок"
Если мы попробуем в лоб скормить эти строки переводчику, то получим следующее:
ru "Корзина пуста"
en "The shopping cart is empty"
ru "В корзине {{count}} покупок"
en "In the shopping cart {{count}} "
Текст без токенов подстановки переведен нормально, а вот фраза с {{count}}
переведена довольно странно.
Ну что ж, в этот момент мы вспоминаем про то, что у Translate API есть режим работы не с простым текстом, а с HTML-разметкой. Попробуем ее и посмотрим, что получится.
ru "В корзине <span name="count">count</span> покупок"
en "In <span name="count">the count</span> shopping cart"
Все равно бред какой-то. А что если подставить вместо {{count}}
его значение.
ru "В корзине 10 покупок"
en "There are 10 purchases in your cart"
Отлично, а теперь сохранив разметку мы получим отличный переиспользуемый шаблон!
ru "В корзине <span name="count">10</span> покупок"
en "<span name="count">There are 10</span> purchases in your cart"
НЕТ))
В общем у меня не получилось сделать готовое решение для i18n приложений. В любом случае понадобится пройтись по результатам руками и редактировать их. Возможно у вас будут какие-то идеи и предложения на этот счет и может вы поделитесь ими в коментах.