/
veer
/
Zaya.Translator
Обзор
Документация
Войти
/
veer
/
Zaya.Translator
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
docs/articles/getting-started.html
159 строк
6 KB
Vladimir Makarov
Extract TranslatorCache as a separate interface and Memory plugin.
01 авг 2026, 22:01
01 авг 2026, 22:01
d289f8b
Код
Авторство
О чём код?
<!DOCTYPE html> <!--[if IE]><![endif]--> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Getting Started </title> <meta name="viewport" content="width=device-width"> <meta name="title" content="Getting Started "> <link rel="shortcut icon" href="../favicon.ico"> <link rel="stylesheet" href="../styles/docfx.vendor.min.css"> <link rel="stylesheet" href="../styles/docfx.css"> <link rel="stylesheet" href="../styles/main.css"> <meta property="docfx:navrel" content="../toc.html"> <meta property="docfx:tocrel" content="toc.html"> </head> <body data-spy="scroll" data-target="#affix" data-offset="120"> <div id="wrapper"> <header> <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="../index.html"> <img id="logo" class="svg" src="../logo.svg" alt=""> </a> </div> <div class="collapse navbar-collapse" id="navbar"> <form class="navbar-form navbar-right" role="search" id="search"> <div class="form-group"> <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off"> </div> </form> </div> </div> </nav> <div class="subnav navbar navbar-default"> <div class="container hide-when-search" id="breadcrumb"> <ul class="breadcrumb"> <li></li> </ul> </div> </div> </header> <div role="main" class="container body-content hide-when-search"> <div class="sidenav hide-when-search"> <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a> <div class="sidetoggle collapse" id="sidetoggle"> <div id="sidetoc"></div> </div> </div> <div class="article row grid-right"> <div class="col-md-10"> <article class="content wrap" id="_content" data-uid=""> <h1 id="getting-started">Getting Started</h1> <h2 id="overview">Overview</h2> <p>Zaya.Translator provides pluggable translation engines. Hosts discover <code>ITranslatorService</code> implementations, bind <code>SettingDescriptor</code>s, then call <code>CreateSessionAsync</code> and <code>TranslateAsync</code>. Optional caching is a separate interface in the same repo — see <a href="translator-cache.html">Translator Cache</a>.</p> <h2 id="google-translate">Google Translate</h2> <pre><code class="lang-csharp">using Zaya.Translator.Impl.Google.Services; using var service = new GoogleTranslatorService(); using var session = await service.CreateSessionAsync(new Dictionary<string, object> { ["autoDetectLanguage"] = true, ["targetLanguage"] = "ru", }); var translated = await session.TranslateAsync("Good morning"); </code></pre> <p>Uses the unofficial <code>translate.googleapis.com</code> endpoint. Chinese maps to <code>zh-CN</code> / <code>zh-TW</code>.</p> <h2 id="yandex-translate">Yandex Translate</h2> <pre><code class="lang-csharp">using Zaya.Translator.Impl.Yandex.Services; using var service = new YandexTranslatorService(); using var session = await service.CreateSessionAsync(new Dictionary<string, object> { ["autoDetectLanguage"] = false, ["sourceLanguage"] = "en", ["targetLanguage"] = "ru", ["useApiKey"] = true, ["apiKey"] = Environment.GetEnvironmentVariable("YANDEX_TRANSLATE_API_KEY")!, }); </code></pre> <ul> <li><code>useApiKey</code> false → free browser endpoint</li> <li><code>useApiKey</code> true → Cloud API v2</li> <li>Language list uses a single Chinese option (<code>zh</code>); Simplified/Traditional are not distinguished by the Yandex API</li> </ul> <h2 id="caching">Caching</h2> <p>Use <code>ITranslatorCacheService</code> / Memory plugin to wrap sessions. See <a href="translator-cache.html">Translator Cache</a>.</p> <h2 id="di">DI</h2> <pre><code class="lang-csharp">services.AddGoogleTranslator(); // or services.AddYandexTranslator(); services.AddMemoryTranslatorCache(); </code></pre> <p>Register one engine as <code>ITranslatorService</code>, or resolve concrete types when hosting multiple engines.</p> <h2 id="next-steps">Next steps</h2> <ul> <li><strong><a href="translator-cache.html">Translator Cache</a></strong> — wrap sessions with caching</li> <li><strong><a class="xref" href="../api/Zaya.Translator.Services.html">API Reference</a></strong> — generated from source</li> </ul> </article> </div> <div class="hidden-sm col-md-2" role="complementary"> <div class="sideaffix"> <div class="contribution"> <ul class="nav"> <li> <a href="https://github.com/shtrasser-dev/Zaya.Translator/blob/main/docs/articles/getting-started.md/#L1" class="contribution-link">Edit this page</a> </li> </ul> </div> <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix"> <h5>In this article</h5> <div></div> </nav> </div> </div> </div> </div> <footer> <div class="grad-bottom"></div> <div class="footer"> <div class="container"> <span class="pull-right"> <a href="#top">Back to top</a> </span> <span>Generated by <strong>DocFX</strong></span> </div> </div> </footer> </div> <script type="text/javascript" src="../styles/docfx.vendor.min.js"></script> <script type="text/javascript" src="../styles/docfx.js"></script> <script type="text/javascript" src="../styles/main.js"></script> </body> </html>