Getting started

Гайд Proxylang

Как настроить Proxylang, улучшить качество переводов и стать заметным на других языках. Материалы для разработчиков приведены в конце.

Start here

Начало работы

Четыре шага от создания аккаунта до переведенного сайта. Тег скрипта является вариантом по умолчанию и работает на любой платформе.

WhereSetup

Настройка в четыре шага

  1. Add your site

    Перейдите в раздел Setup и введите адрес вашего сайта. Выберите платформу, на которой он работает.

  2. Pick languages

    Выберите основной язык вашего сайта, а затем языки, которые вы хотите добавить. Количество доступных языков зависит от вашего тарифного плана.

  3. Install

    Выберите способ добавления тега script на ваш сайт. С помощью ИИ: вставьте наше сообщение в ChatGPT, Claude или Cursor. Самостоятельно: скопируйте одну строку и опубликуйте. Или отправьте разработчику: мы составим текст письма. Для сайтов на WordPress используется плагин.

  4. Check your site

    Мастер настройки подтвердит, что скрипт активен. На вашем сайте появится переключатель языков.

Руководства по установке для разных платформ:

Выберите способ подключения Proxylang

Тег скрипта — это вариант по умолчанию, который работает везде. Другие режимы добавляют видимость в поисковых системах на других языках. Вы можете изменить режим позже на вкладке Setup вашего домена; при переключении ничего не отключится.

Script tag

VisitorSearch engineYour serverProxylangsentences

Поисковые системы читают ваш оригинальный сайт.

Hybrid

VisitorSearch engineYour serverProxylangsentences

Поисковые системы получают переведенные страницы.

DNS Proxy

VisitorSearch engineYour serverProxylang

Все пользователи получают переведенные страницы.

Green arrow: traffic that goes through Proxylang. Dotted line: Proxylang reads your server behind the scenes.

Script tag

Любой тарифный план, любая платформа

Перевод происходит в браузере посетителя. Поисковые системы по-прежнему видят ваш оригинальный язык.

Лучше всего подходит для: приложений, страниц, требующих авторизации, и любых конструкторов сайтов.

WordPress plugin

WordPress sites

Устанавливает скрипт за вас и добавляет языковые адреса, SEO-теги и карты сайта без вмешательства в DNS.

Лучше всего подходит для: любого сайта на WordPress или WooCommerce.

Hybrid

План Lite и выше, сайты, созданные с помощью кода

Одно изменение DNS. Поисковые системы получают переведенные страницы от Proxylang. Посетители используют тег скрипта.

Лучше всего подходит для: маркетинговых сайтов, которые вы хотите продвигать на других языках.

DNS Proxy

От тарифа Pro и выше, сайты, созданные с помощью кода

Каждый посетитель получает переведенные страницы от Proxylang по переведенным адресам, таким как /es-es/about.

Лучше всего подходит для: сайтов, которым нужны полноценные переведенные URL для всех пользователей без использования скриптов.

Как происходит перевод страницы

При использовании тега скрипта страница загружается с вашего сервера как обычно. Затем скрипт запрашивает у Proxylang перевод каждого предложения и подставляет его. При первом посещении страницы перевод происходит прямо на ваших глазах. Все последующие визиты будут мгновенными, так как перевод сохраняется.

1Page loads from your server as usual2The script sends each sentence to Proxylang3Proxylang translates it and saves the result4The translated text is swapped innext visit: saved copy, instant
The first visit to a page translates as you watch. Every later visit uses the saved copy.

В режиме DNS Proxy или Hybrid Proxylang выступает посредником между посетителем (или поисковой системой) и вашим сервером:

  1. A visitor opens a translated addressyourdomain.com/es-es/page

  2. Proxylang получает исходную страницу с вашего сервера

  3. ИИ переводит видимый текст

    Макет и код остаются точно такими же, какими они были.

  4. Переведенная страница сохраняется и выдается пользователю

    Следующий посетитель получает ее мгновенно.

  5. SEO tags are added

    Языковые ссылки, канонический адрес и многое другое.

Short addresses also work. /es/about and /mx/about both redirect to /es-es/about.

Если на вашем сайте ничего не меняется

  • Open your site in a private window and use the language switcher. Your own browser may have a language remembered.
  • Check the script is on every page, not only the home page. Your platform guide shows where it goes.
  • Turn off ad blockers for a moment. Some block third-party scripts.
  • Nothing at all, even after a refresh? Your site may have a Content Security Policy. See the developer section at the end of this guide.

Далее: Бренд и контекст

Make translations better

Бренд и контекст

Расскажите переводчику, кто вы. Пять минут, потраченных на это, дадут больше для качества, чем что-либо другое в этом руководстве.

WhereDomains › your domain › Brand & Context

Что заполнять

  • Brand Name. Your name in your site's language and in English. It is kept exactly as written in every language.
  • Site Description. Two or three sentences: what you sell, who reads the site, the tone you want. Example: "Online shop for Korean skincare. Customers are women 25 to 40. Friendly, not formal." This also helps translate visitors' search queries.
  • Landing Pages. Pick up to 20 pages (your home page, pricing) where headlines and calls to action should read like native marketing copy rather than a word-for-word translation.
  • Translation Formality. Formal, casual or automatic. This one is chosen when you add the domain and cannot be changed later, because every saved translation depends on it.

Когда изменения вступают в силу

Нажмите «Сохранить бренд и контекст». Новые переводы начнут использовать новый контекст в течение часа. Текст, который уже был переведен, сохранит свою формулировку. Чтобы переделать страницу, вы можете исправить отдельные предложения в Live Editor.

Далее: Глоссарий и список исключений


Глоссарий и список исключений

Определите один раз, как должно переводиться слово, для всех страниц сразу.

WhereGlossary

Ваши термины

  • A term is a word or phrase in your site's language, its translation, and the language it applies to. Add one with Add Term . Tick case sensitive if "Apple" and "apple" should be treated differently.
  • Terms apply everywhere the phrase appears. Up to 5,000 terms per domain.
  • Have a list already? Use Import with a CSV file. Columns: source_text, target_text, source_lang, target_lang, case_sensitive, notes . Export gives you the same format back.
  • Tick rows and click Delete Selected to remove many at once.

Timing

Новые термины попадают на серверы перевода примерно в течение десяти минут. Текст, который уже был переведен, сохраняет старую формулировку до тех пор, пока не будет переведен заново. Чтобы проверить страницу, откройте ее в приватном окне, чтобы браузер не показал вам сохраненную копию.

Не переводить

Карточка «Никогда не переводить» в верхней части глоссария содержит слова, которые должны оставаться в точности такими, как написано, на любом языке: ваш бренд, название продукта, хэштег. До 100 записей по 60 символов каждая. Поиск чувствителен к регистру, поэтому добавляйте «iPhone», а не «iphone».

Улучшения с помощью ИИ

Proxylang проверяет переводы на вашем сайте по расписанию и предлагает небольшие исправления. Одобренные исправления добавляются в ваш глоссарий как термины, помеченные как AI, с указанием причины и формулировки, которую они заменили. Вы можете удалить любое из них.

  • Turn the review off for a domain with the switch in the AI Improvements card. Terms already added stay until you delete them.
  • A sentence you edited in the Live Editor is never changed by an AI improvement. Your edit wins.


Live Editor

Исправьте перевод на своем сайте самостоятельно: нажмите на предложение, введите текст, сохраните. Доступно на всех тарифных планах.

WhereLive Editor, or press Esc twice on your site

Редактировать перевод

  1. Go to Live Editor , pick the domain and click Start editing . Your site opens in a new tab with the editor bar on it. Shortcut: on any page of your site, press Esc twice and click Open editor .
  2. Switch the site to the language you want to fix.
  3. Click any text. A panel shows the Original and the Translation . Change the translation and click Save .
  • You see your change at once. Other visitors see it within about five minutes.
  • Your edit always wins. Proxylang will not overwrite it, and neither will AI improvements.
  • Changed your mind? Open the same text and click Reset to automatic translation .
  • Some text has placeholders like {0} for a link or bold word. Keep them in your translation, in any order.
  • Only verified domains you own appear in the Live Editor.

Пригласить переводчика

Переводчику не нужен аккаунт Proxylang. Он входит на ваш сайт и может редактировать переводы, и ничего больше.

  1. On the Live Editor page, find Invite a translator . Type their email.
  2. Under Can edit , leave All languages or pick only the languages they should touch.
  3. Click Send invite . A password appears once . Copy it now, or click Email them to open a ready-made email. Nothing is sent automatically.
  • The translator opens your site, switches language, presses Esc twice and signs in with that email and password.
  • To remove someone, hover their row in the translator list and click the ×. They are locked out at once.
  • The editor bar and panels are available in English, Korean, Japanese, Spanish, German, French, Italian and Portuguese.

Далее: Контроль переводимого контента


Управление переводом

Оставляйте названия брендов, коды купонов и отзывы на оригинальном языке или полностью приостановите перевод.

WhereYour HTML, or Domains › your domain › Advanced

Оставить что-то на оригинальном языке

Некоторые тексты никогда не должны меняться: название бренда, код купона, цитата, отзывы клиентов. У вас есть три инструмента: от работы без кода до работы с небольшим количеством кода.

  • A single word or name, everywhere. Add it to the Never Translate list in the glossary. No code.
  • A block on a page. Add the proxylang-no-translate class to the element. Everything inside it is skipped. See below.
  • A whole file or region. Wrap it in the comment markers. See below.

Пропустить блок по классу

Add the class proxylang-no-translate to any element. The attribute data-proxylang-no-translate does the same thing. Works in every mode.

HTML
<!-- Everything inside is left in the original language -->
<div class="proxylang-no-translate">
  <h2>Brand Name™</h2>
  <p>SAVE20 is your coupon code.</p>
</div>

<!-- The attribute form does the same -->
<span data-proxylang-no-translate>Acme Corp</span>

Пропустить область с комментариями

Полезно, когда вы не можете добавить класс или для текста внутри JavaScript-файлов. Все, что находится между двумя маркерами, пропускается.

HTML
<!-- @proxylang-do-not-translate-start -->
<div class="testimonial">
  Customer reviews stay exactly as written.
</div>
<!-- @proxylang-do-not-translate-end -->
JavaScript

Пропущено за вас

  • Code samples inside <pre> and <code> , in every mode. Syntax highlighters that render into those tags (Shiki, highlight.js, Prism) are covered. Code editors that render into a plain <div> (CodeMirror, Monaco) are not; add the class to their wrapper.
  • <kbd>, <var> and <samp> when Proxylang translates on the server (DNS Proxy and Hybrid).
  • Legal pages at standard addresses. See the Legal pages section.
  • Email addresses, URLs, numbers and prices.

Пропустить только для поисковых систем

Иногда вы хотите, чтобы поисковые системы индексировали оригинальную формулировку (слоган или девиз, по которому вы продвигаетесь), в то время как посетители будут видеть перевод. Используйте маркеры только для ботов. Они применяются только там, где Proxylang отдает страницы ботам, то есть в режимах DNS Proxy и Hybrid. При использовании только тега script они ничего не делают.

HTML
<!-- Search engines index the original wording.
     Visitors still see it translated. -->
<h2 class="proxylang-bot-only-no-translate">Our Brand Tagline</h2>

<!-- Attribute form -->
<p data-proxylang-bot-only-no-translate>Ranked slogan</p>

<!-- Comment form, for a larger region -->
<!-- @proxylang-bot-only-do-not-translate-start -->
<section>...</section>
<!-- @proxylang-bot-only-do-not-translate-end -->

Приостановить всё

Два переключателя на вкладке Advanced вашего домена останавливают создание новых переводов, не удаляя ничего с вашего сайта. Текст, который уже был переведен, продолжает отображаться.

  • Pause Translations. Humans. Visitors see cached translations only. New pages stay in the original language. Use it while you look into a cost spike or a quality problem.
  • Pause Translations. Bots. Same, for search engines and AI crawlers. Stops SEO spend without touching what visitors see.
  • Also on that tab: Preserve Line Breaks keeps line breaks where the original has them. DNS Proxy mode only.


Get found in search

SEO на других языках

Обеспечьте обнаружение переведенных страниц. Proxylang добавляет теги, которые ищут поисковые системы, и предоставляет одну страницу для мониторинга.

WhereSEONeedsLite plan or above

Страница SEO

Откройте SEO и выберите сайт. Для этого требуется план Lite или выше. Для вкладок «Ключевые слова» и «Заголовки страниц» также требуется режим Hybrid или DNS Proxy, так как при использовании только тега script поисковые системы никогда не увидят переведенные заголовки.

Health
A score from 0 to 100 and a to-do list. It checks that search engines can reach your translated pages, that the right tags are on them, and that setup is finished.
Keywords
Type up to 20 phrases your customers search for, in your own language. Proxylang writes a matching set for every language search engines index and uses them for your home page title and description. A language that joins them later gets its set shortly after you save, with no click. You can give a pricing or campaign page its own set.
Page Titles & Descriptions
See the title and description each language really shows in search results, and pin your own wording for any page. A pin is exact and final for that page and language. Too long? Click Shorten.
Settings
Bot translation budget, which pages go in the sitemap, and a switch to stop SEO tags while you test.
  • Google Search Console. The Health checklist has a "Connect Google Search Console" step. It pulls Google's own indexing data into the Health tab. Available once Hybrid or DNS Proxy is on.
  • Naver and Daum. If Korean is one of your languages, a card lists the four manual steps those engines need. Tick each one off as you go.
  • AI answers. A second checklist covers listings that help ChatGPT, Gemini and Perplexity recommend you: Wikidata, Google Business Profile and, for software, G2 and Product Hunt.

Какие языки видят поисковые системы

Ваш тарифный план определяет количество языков, которые индексируют поисковые системы. Посетители по-прежнему могут выбирать любой язык, который вы включили. Добавленный вами язык становится одним из индексируемых, пока в вашем тарифном плане есть свободные места. Он попадает в карту сайта и языковые ссылки, а если на вкладке «Ключевые слова» у вас есть сохраненные ключевые слова, для нового языка будут созданы собственные ключевые слова и заголовок главной страницы на их основе. Чтобы выбрать их самостоятельно, используйте значок поиска рядом с каждым языком на вкладке «Языки» вашего домена.

Когда все места заняты, на вкладках «Языки» и «SEO-ключевые слова» указываются языки, которые поисковые системы не могут видеть. Замените один из языков на индексируемый или перейдите на более высокий тариф для увеличения лимита.

Теги, добавляемые к каждой переведенной странице

  • Language links (hreflang) that tell search engines which page is which language.
  • A canonical address per language, so translations are not seen as duplicates.
  • The page's language tag, for Bing and Baidu.
  • Social preview locale, so shared links show the right language.

Применяется в режимах Hybrid и DNS Proxy, где поисковые системы получают страницы через Proxylang. При использовании только тега script они читают ваш оригинальный сайт.

Show an example
What a page's head contains
<link rel="alternate" hreflang="en-US" href="https://example.com/page" />
<link rel="alternate" hreflang="es-ES" href="https://example.com/es-es/page" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr-fr/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
<link rel="canonical" href="https://example.com/es-es/page" />
<meta property="og:locale" content="es_ES" />

Заголовки, описания и текст изображений

Заголовок страницы, мета-описание, заголовок и описание для соцсетей, а также ключевые слова переводятся. Также переводятся alt-тексты изображений, подсказки к кнопкам и плейсхолдеры форм. Вы можете закрепить свои собственные формулировки для любой страницы на вкладке Page Titles & Descriptions.

Расширенные результаты

Если ваши страницы содержат структурированные данные (скрытые сведения о товарах, статьях, FAQ или мероприятиях, которые обеспечивают расширенные результаты в Google), текстовые поля переводятся, а поле языка обновляется. Цены, даты, URL-адреса и идентификаторы остаются без изменений.

Карты сайта

Proxylang builds a sitemap per language and lists them all at /sitemap.xml on your domain. Pages come from your own sitemap, plus pages Proxylang has seen. Each language also has its own file, such as /es-es/sitemap.xml . They refresh daily, and right away when a language save changes which languages search engines see; click Regenerate sitemap on the SEO Settings tab to rebuild now.

Show an example
/sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap><loc>https://example.com/sitemap-1.xml</loc></sitemap>
  <sitemap><loc>https://example.com/es-es/sitemap.xml</loc></sitemap>
  <sitemap><loc>https://example.com/fr-fr/sitemap.xml</loc></sitemap>
</sitemapindex>

Выберите, какие страницы будут в карте сайта

На вкладке SEO Settings, в разделе Sitemap Pages:

  • All pages. The default.
  • Only specific paths. Start with a few pages, add more later.
  • Exclude paths. Hide a section, such as /internal/*.

One path per line. * matches anything, so /blog/* covers every blog post. The home page is always included. Subdomains use their root domain's setting.

Сообщение поисковым системам о новых страницах

  • Bing, Yandex, Naver, Seznam and Yep are told the moment a translated page is saved. DuckDuckGo, Ecosia and Qwant use Bing's index. Nothing to set up.
  • Google does not take pings. It finds your pages through the sitemap and the language links. Connecting Search Console lets you watch it happen.
  • Your robots.txt is served with the sitemap lines added. Your own rules are kept.

AI-поисковые системы

  • robots.txt allows GPTBot, ChatGPT-User, ClaudeBot, PerplexityBot and Google-Extended.
  • A /llms.txt file describes your site and lists its languages and sitemaps for AI tools that look for one.
  • AI bots get translated pages only in Hybrid or DNS Proxy mode. They are counted under the bot budget like any other crawler.

Язык в каждом адресе

In DNS Proxy mode, visitors normally see clean addresses and their language is remembered in a cookie. Turn on URL Language Prefix (domain → Advanced tab) and every visitor sees the language in the address, like /es-es/about . Search results, ads and analytics then always point at one clear version of each page.

Только в режиме DNS Proxy. Поддомены следуют за своим основным доменом.


Режим Hybrid (SEO для поисковых систем)

Поисковые системы получают переведенные страницы от Proxylang, в то время как ваши посетители продолжают использовать тег скрипта.

WhereDomains › your domain › SetupNeedsLite plan or above, site built with code

Как это работает

Тег скрипта переводит страницы в браузере посетителя. Поисковые системы не запускают этот скрипт, поэтому они видят только ваш оригинальный язык. Гибридный режим решает эту проблему.

Поисковые системы и ИИ-боты

Получайте полностью переведенные страницы от Proxylang. В этот список входят Google, Bing, Naver, ChatGPT, Perplexity и превью ссылок (Slack, LinkedIn, Facebook).

Your visitors

Ваш сайт остается точно таким же, как сегодня, но переведенным с помощью тега скрипта. Ваш хостинг, аналитика и A/B-тесты остаются нетронутыми.

Сайты на Wix, Squarespace, Webflow и аналогичных конструкторах не могут изменить DNS таким образом, поэтому они продолжают работать через тег скрипта.

Как это включить

Переключателя «Гибридный режим» не существует. Гибридный режим — это то, что вы получаете, когда DNS Proxy и тег скрипта включены для одного и того же домена.

  1. Откройте ваш домен, затем перейдите на вкладку Setup

    Домены → ваш домен → Setup.

  2. Turn on DNS Proxy

    Добавьте DNS-записи, которые мы вам покажем, у вашего регистратора доменов, а затем подтвердите их. Именно этот шаг позволяет поисковым системам обращаться к Proxylang.

  3. Keep Script Tag on

    Ваши посетители по-прежнему будут использовать уже установленный вами тег скрипта.

  4. Done

    Когда включены оба режима, значок домена отображает «Hybrid (SEO)». Если отключить любой из них, сайт вернется к другому режиму без простоев.

Стоимость

Визиты ботов расходуют слова из вашего баланса, но по четверти от обычной ставки. Три лимита предотвращают чрезмерное расходование баланса при бесконечном сканировании. Вы можете снизить каждый из них на странице SEO в разделе Settings.

Bot requestlimit 1Words todayover:original pagelimit 2Budget for this pageover:original pagelimit 3Visits today (unverified)over:original pageTranslated pageGoogle, Bing, Apple, DuckDuckGo, Yandex skip limit 3.

Слов в день для ботов

После достижения лимита боты будут получать ваш оригинальный язык до полуночи по UTC. Установите значение 0, чтобы полностью отключить перевод для ботов.

Start
3,000
Pro+
20,000

Budget per page

Максимальный объем перевода одной страницы при визите бота в токенах ИИ (примерно 2,7 за слово). По умолчанию 4 000. Заголовок, описание и подзаголовки никогда не учитываются.

Start
8,000
Pro+
50,000

Визитов в день, неавторизованные боты

Google, Bing, Apple, DuckDuckGo и Yandex подтверждаются по их сетевому адресу и не имеют ограничений. Все остальные делят этот лимит.

Start
5
Pro+
10
Free of charge. Bots that bring no visitors (SEO scrapers, uptime checkers) always get the original page and cost nothing.

Когда стоит использовать

  • You want your pages to rank in other languages.
  • You want AI search tools to quote your translated pages.
  • You do not want Proxylang in the path of real visitors. Hybrid keeps them on your own server.

Страницы, защищенные логином, ничего не выиграют от гибридного режима. Оставьте их на теге скрипта.

Далее: Несколько сайтов и поддомены


Несколько сайтов и поддомены

Добавляйте поддомены бесплатно, а больше корневых доменов — на тарифе Start и выше. Все сайты используют один общий баланс слов.

WhereDomains

Что вы можете добавить

  • Subdomains of a site you already added (app.yourdomain.com, shop.yourdomain.com). Free on every plan. They do not count toward your domain limit.
  • Separate root domains (yourdomain.com and yourapp.io). Needs the Start plan or above, which carries as many as you like. Test Drive and Lite cover one site.

Все ваши сайты используют один общий баланс слов. Второй сайт не добавляет новые слова, а использует ресурсы из того же пула.

Если вы позже перейдете на более дешевый тариф, ничего не отключится. Вы сохраните все уже добавленные сайты. Вы просто не сможете добавлять новые, пока не вернетесь в пределы лимита.

Что наследует поддомен

Поддомен следует за своим корневым доменом. Он получает тот же режим подключения, языки, настройки карты сайта и переключатели на вкладке Advanced. Вы настраиваете их один раз на корневом домене.

Если для основного домена используется режим DNS Proxy или Hybrid, для каждого поддомена также требуются собственные DNS-записи. Приложение покажет точные записи, которые нужно добавить: четыре для основного домена (сам домен, www и две проверочные записи) и две для поддомена.

Какой режим для какого сайта

Маркетинговый сайт или лендинг

Hybrid mode

Вы хотите, чтобы вас находили на других языках. Используйте Hybrid, если ваш план и сайт это позволяют (план Lite или выше, сайт, созданный с помощью кода). В противном случае тег script все равно будет переводить контент для посетителей.

Приложение или клиентский портал

Script tag

Страницы, защищенные логином, никогда не индексируются, поэтому в этом случае нет смысла пытаться улучшить SEO. Никаких изменений DNS, ничего в пути трафика.

Features

Чат

Виджет чата, который переводит сообщения в обе стороны. Одна подписка, все сайты, неограниченное количество агентов.

WhereDomains › your domain › Live ChatNeedsIncluded from Start up. 14-day trial on Test Drive and Lite

Как это работает

Виджет чата на вашем сайте. Посетители пишут на своем языке. Вы читаете и отвечаете на своем. Обе стороны переводятся в режиме реального времени. Одна подписка покрывает все сайты в вашем аккаунте с любым количеством агентов.

Включить

Откройте домен, перейдите на вкладку Live Chat и переключите тумблер. Виджет появится на вашем сайте, а сайт отобразится в вашей консоли чата в Chat .

  • On Start and above, chat is already included with your plan. Nothing to buy and no trial to start.
  • On Test Drive and Lite, every account gets one 14-day trial with 2,000 translated messages. No card needed. The trial is per account, not per site.
  • When nobody is online, visitors see "We are away" and can leave their email. You answer by email from the console. Turn this off in widget settings if you prefer.

Добавить команду

  1. On the Live Chat tab, in the Agents card, type a teammate's email and click Invite . Seats are free and unlimited.
  2. They get a link, good for seven days. They enter the name visitors will see and the language they want to read chats in.
  3. They see that site's conversations only, marked "Shared". No settings, no billing.

Удалите пользователя с помощью кнопки Remove в его строке.

Ответы в чатах

  • The console has three panes: conversations, the open chat, and visitor details (page they are on, country, past chats).
  • Having the console open makes you "Online". Click the pill to go "Away"; visitors then get the offline form.
  • Type / in the reply box for quick replies (hello, order, refund, shipping).
  • You can send images up to 10 MB. Edit a sent message and the visitor's translation is redone.
  • If a teammate is already answering, your reply box locks so the visitor never gets two answers.
  • Under Chat settings → Widget , set the bubble colour, position, greeting and the name visitors see. The greeting is shown as written and is not translated yet.

Приложения для ПК и мобильных устройств

На странице Downloads доступны приложения для macOS, Windows и Linux. Они присылают уведомления и показывают индикаторы непрочитанных сообщений даже при закрытом браузере, а также обновляются автоматически. Приложения для iPhone и Android будут доступны в ближайшее время.

При входе в систему на мгновение открывается ваш обычный браузер, а затем происходит возврат в приложение. Это нормальное поведение.

Что входит в каждый план

Учитываются только переведенные сообщения. Сообщения на одном языке бесплатны. Ежемесячный лимит распределяется между вашими сайтами и обновляется 1-го числа каждого месяца.

Start
Live Chat includedChat · 2,000 translated messages/mo
Pro
Live Chat includedChat Plus · 10,000 translated messages/mo
Business and above
Live Chat includedChat Scale · 50,000 translated messages/mo
  • Test Drive and Lite include no chat plan beyond the trial. Bigger chat plans are a monthly add-on, priced on the Live Chat page.
  • At the limit, chat keeps running but messages arrive untranslated and new conversations wait until the 1st. A chat already in progress always finishes.
  • Hiding the "Powered by Proxylang" line in the chat window needs the Pro plan or above.

Далее: Перевод изображений


Перевод изображений

Перерисовывайте текст внутри баннеров и изображений товаров на языке посетителя.

WhereDomains › your domain › Image TranslationsNeedsImage credits (prepaid)

Настройка

1. Buy credits

Перевод изображений включен для каждого домена. Единственным ограничением является ваш баланс. Купите пакет в разделе Billing . Пакеты действительны в течение 12 месяцев.

10 images
$5 / ₩7,000
$0.50 per image
50 images
$20 / ₩28,000
$0.40 per image
100 images
$35 / ₩49,000
$0.35 per image

2. Выберите изображения для перевода

Переводятся только выбранные вами изображения. Три способа, от самого простого:

  • Live Editor. Open your site, press Escape twice, sign in, click Image Translation in the editor bar and tap the images. Works on any platform.
  • Paste image addresses. On the domain's Image Translations tab, use Auto-Translate Images by URL . Good for site builders where you cannot edit HTML.
  • Tag the HTML. Add data-pl-translate-image to the image tag.
HTML
<!-- Only tagged images are translated -->
<img src="/hero-banner.png" data-pl-translate-image alt="Welcome" />

<!-- Any image source works -->
<img src="https://cdn.example.com/promo.jpg" data-pl-translate-image />

Как это работает и сколько стоит

  • The first visitor in a language sees the original image. Translation runs in the background, usually under two minutes, then the translated image replaces it on the page without a refresh.
  • Every visitor after that gets the translated image instantly. It is kept forever.
  • One credit per image, per language. The same banner in Korean and Japanese costs two credits.
  • Images whose longer side is over 2000px cost two credits per language. Tall product detail images usually fall in this group.
  • Visitors reading your site in its own language never use credits.

Работает в любом режиме. При использовании метода "вставки адресов изображений" сопоставление происходит в браузере посетителя, поэтому требуется тег script (в режиме script tag или Hybrid).

Что переводить

Translate these

  • Banners with text on them
  • Infographics and charts with labels
  • Product images with printed details
  • Screenshots with on-screen text

Не помечайте эти элементы (за них все равно взимается плата)

  • Photos with no text
  • Logos and icons
  • SVG files and GIFs

Поддерживаются форматы PNG, JPG и WebP. Очень большие файлы масштабируются перед переводом. Поддерживается 33 целевых языка; список доступен на вкладке Image Translations вашего домена.

Далее: Перевод поиска


Перевод поиска

Переводите то, что посетители вводят в строку поиска, чтобы они получали результаты на любом языке.

WhereDomains › your domain › AdvancedNeedsSearch credits (prepaid). Script tag or Hybrid mode

Настройка

1. Buy searches

Оплата производится предоплаченными кредитами для поиска. Купите пакет в разделе Billing . Пакеты не имеют срока действия.

10,000 searches
$9.99 / ₩13,900
50,000 searches
$39.99 / ₩55,900
200,000 searches
$139.99 / ₩194,000

2. Включите для каждого домена

Откройте домен, перейдите на вкладку Advanced и включите Translate Search Queries . Переключатель будет выключен, пока у вас не появятся кредиты. Обновление на вашем сайте может занять до пяти минут, поэтому подождите перед тестированием.

Как это работает

If your search box is a normal form, or its field is named q, query, search, keyword, term or s, it works with no changes. When the visitor presses Enter, Proxylang translates the query and your search receives the translated text.

A search form that just works
<form action="/search" method="GET">
  <input type="search" name="q" />
  <button type="submit">Search</button>
</form>
  • Runs from the script tag, so it works in script tag and Hybrid mode. Not on DNS Proxy-only sites.
  • Visitors reading your site in its own language are not affected and use no credits.
  • Each search uses one credit, including repeats. Translated queries are remembered per domain, so repeats are instant.
  • If translation takes longer than 4.5 seconds, the original query is sent through instead. Visitors never wait on a spinner.

Строки поиска, которые фильтруют список на странице

Некоторые строки поиска никогда не отправляют данные на сервер. Они фильтруют список, уже находящийся на странице (например, FAQ или сетку товаров). Для них требуется один атрибут в поле ввода:

HTML
<!-- Translate when the visitor presses Enter (default) -->
<input type="text" placeholder="Search..." data-proxylang-reverse-search />

<!-- Translate as they type, after a short pause -->
<input type="text" placeholder="Search..." data-proxylang-reverse-search="live" />

By default the query is translated when the visitor presses Enter. Add ="live" to translate as they type, after a short pause. Live mode uses more credits, one per pause.

Помогите переводу с помощью контекста

A one-word query can mean many things. Proxylang uses the Site Description from your Brand & Context tab to pick the right meaning. For one specific search box you can override it with data-proxylang-search-context="..." on the input (up to 240 characters).

Советы

  • Keep Enter mode unless your search really needs results while typing. It costs a fraction of live mode.
  • Write a clear Site Description. "Korean skincare shop" gives better query translations than "our website".
  • Test in a private window with the site switched to another language.

Известные ограничения

  • Queries over 200 characters are passed through untranslated.
  • When credits reach zero, searches pass through untranslated. Buying a pack turns it back on within a minute.
  • For developers: searches sent by form.submit() in code are not intercepted; use a normal submit. For fetch requests, only the query parameters and top-level JSON fields are translated. GraphQL requests are skipped.

Далее: Внешний вид переключателя языков


Внешний вид переключателя языков

Все о меню выбора языка, которое видят посетители: его расположение, внешний вид и условия отображения.

WhereLanguage Switcher

Что можно изменить

Activate Switcher
The on/off switch for the widget on this site. Also holds a test key for trying the script on your own computer.
Layout
Floating in a corner, or inline where you place it. Starting corner. Whether visitors can drag it.
Appearance
Button size, menu size, corner shape, shadow, and whether languages show as "EN", "English" or both.
Colors
Six ready-made themes, or your own colours for light and dark mode.
Behavior
Shrink to an icon after a few seconds, menu animation, and a soft fade when translated text appears.
Branding
Hide the "Translation by Proxylang" line in the menu. Start plan and above.
Loading Indicators
A spinner, a thin bar at the top, both, or nothing while a page translates.
Dark Mode Detection
Follow the visitor's system setting, or tell Proxylang which CSS class your site uses for dark mode.
Advanced
Stacking order, the width at which the mobile layout kicks in, and the right-to-left auto-flip switch.

Изменения вступают в силу на вашем сайте в течение нескольких секунд, максимум пять минут. Если вы их не видите, обновите страницу.

Какой язык посетитель получит первым

Ничего настраивать не нужно. При первом посещении Proxylang анализирует языки, предпочтительные в браузере посетителя, и выбирает наиболее подходящий из тех языков, которые вы включили. Если совпадений нет, используется страна посетителя, а затем — основной язык вашего сайта. После этого выбор посетителя запоминается на год.

To test another language, open your site in a private window, or add ?lang=ko-KR to the address.

Разместите переключатель в своем меню

Under Layout, choose Inline and place <div id="proxylang-widget"></div> where the switcher should appear, for example in your header. For a second spot in a mobile menu, add <div id="proxylang-widget-mobile"></div> as well.

Далее: Аналитика и использование

Your account

Аналитика и использование

Узнайте, кто заходит на сайт на каком языке и как распространяется ваш контент.

WhereDashboard › Analytics

Кто заходит и на каком языке

Вкладка Analytics на вашей панели управления показывает посетителей, визиты, страницы, источники трафика, страны и устройства, а также долю тех, кто читает переведенную версию. Куки не используются; посетители подсчитываются на основе зашифрованного отпечатка, который невозможно преобразовать обратно в адрес.

  • A visit ends after 30 minutes without activity.
  • Bots are hidden by default, and so is your own traffic from a development machine. Use the Filter button to show them.
  • Detailed records are kept for 90 days.
  • The Visitor Map shows the same data on a world map.

Как распространяется ваш контент

Вкладка Dashboard показывает, какой объем вашего плана уже использован. Вкладки Metrics и Pages предоставляют разбивку по дням, языкам и страницам.

  • A sentence costs words once, the first time it is translated for your site. Showing it again is free.
  • Bot visits in Hybrid and DNS Proxy mode count at a quarter of the rate. The chart shows "Visitor words" and "Bot words" separately.
  • A page view is one page opened by a real visitor in a translated language. Bots, visitors reading the original language, and your own testing on localhost do not count.
  • You get an email at 75%, 90% and 100% of your allowance.

Далее: Планы, оплата и кредиты


Планы, оплата и кредиты

Что входит в каждый план, что происходит при достижении лимита, а также как работают кредиты и коды.

WhereBilling

Что дает план

Каждый план имеет лимит слов, ежемесячный лимит просмотров страниц, количество доступных языков и количество сайтов. Лимит слов является общим, а не ежемесячным: предложение учитывается только при первом переводе, и после этого оно остается переведенным. Каждый язык считается отдельно: страница объемом 500 слов, открытая на трех языках, расходует 1500 слов. На плане Start и выше посетители могут выбрать любой из 77 языков, а план определяет, сколько из них будут индексироваться поисковыми системами. Краулеры загружают каждый индексируемый язык, поэтому именно эти языки расходуют слова даже без участия посетителя.

Слова: общий лимит, который заполняется один раз

each new sentence is counted once, then never again

Просмотры страниц: сброс 1-го числа

one count per page a visitor opens in a translated language
Both are shared across all your sites.

Test Drive

Words (total)
2,000
Page views / month
1,500
Languages
1
Sites
1

Lite

Words (total)
20,000
Page views / month
15,000
Languages
5
Sites
1

Start

Words (total)
100,000
Page views / month
50,000
Languages
All 77 (3 indexed)
Sites
Unlimited

Pro

Words (total)
500,000
Page views / month
150,000
Languages
All 77 (10 indexed)
Sites
Unlimited

Business

Words (total)
2,500,000
Page views / month
750,000
Languages
All 77 (25 indexed)
Sites
Unlimited
  • Global, Enterprise and Custom plans are arranged through the Custom card on the pricing page.
  • Lite and above add per-language SEO and Hybrid mode. Pro and above add DNS Proxy mode.
  • Words used up. New text stays in the original language until you upgrade. Text already translated keeps showing, and the language switcher keeps working. There is no overage charge.
  • Page views used up. The same happens for one month, then the whole site is served in its original language until the next month or an upgrade.
  • Bot visits in Hybrid and DNS Proxy mode count at a quarter of the rate.
  • Yearly billing is ten months for twelve.
  • Moving to a smaller plan never takes a site offline. You keep what you have and cannot add more until you fit.

Изменение или отмена

  • Open Billing and pick a plan under Available Plans . A change takes effect at once. The price difference is settled on your next invoice.
  • New subscriptions on Start or Pro (monthly, paid in USD, outside Korea) start with a 14-day free trial.
  • Korean customers pay in KRW through KG이니시스, with VAT shown separately. Yearly Korean plans are a one-time payment you renew by hand. Cancel with the 해지 button; you keep access to the end of the period.
  • Every charge and receipt is under Payment History at the top of the Billing page.

Кредиты на изображения и поиск

Платные планы включают разовый пакет кредитов при первой подписке: Lite — 2 изображения и 500 поисков, Start — 10 изображений и 2000 поисков, Pro — 30 изображений и 2000 поисков, Business и Global — 100 изображений и 2000 поисков. При переходе на более дорогой план добавляется только разница. Включенные кредиты не имеют срока действия и предоставляются один раз на аккаунт, а не при каждом обновлении плана.

Если кредиты закончатся, вы можете докупить их в виде предоплаченных пакетов на странице Billing, на странице Image Translation или на странице Reverse Search. Пакеты общие для всех ваших сайтов. Купленные пакеты изображений действительны в течение 12 месяцев, и вы получите письмо за 30 дней до истечения срока; купленные пакеты для поиска не имеют срока действия.

Покупка откроется в новой вкладке. Ваш баланс на странице Billing обновится, когда вы вернетесь к ней.

Промокоды

  • Outside Korea there is no code box. Your discount is attached to your account and applied at checkout on its own.
  • In Korea, the code box is on the Billing page while you are on the free plan. Codes apply to the first payment only.
  • Discounts do not stack. The largest one wins.

Пригласить друга

Ваша ссылка находится на странице реферальной программы. Друг, который зарегистрируется по ней, получит скидку 15% на свой первый план. Когда он подпишется, ваш следующий ежемесячный платеж будет со скидкой 50% (один раз за каждого друга). Ссылка сохраняется в течение 90 дней. Пакеты не учитываются, учитываются только планы.

Далее: Справочник атрибутов

For developers

Справочник атрибутов, JavaScript API и события, Live Chat API, Content Security Policy, языки с письмом справа налево.

Справочник атрибутов

For developers

Каждый класс, атрибут и маркер комментария, которые Proxylang считывает из вашего HTML.

Browser (Браузер) означает тег script и страницы, которые посетители загружают в режиме Hybrid. Server (Сервер) означает страницы, которые Proxylang отрисовывает для поисковых систем в режиме Hybrid и для всех пользователей в режиме DNS Proxy. Both (Оба) означает и то, и другое.

Skip

class="proxylang-no-translate"Both
Skip this element and everything inside it.
data-proxylang-no-translateBoth
Same as the class.
class="notranslate"Browser
Google’s standard skip class. Honoured as well.
translate="no"Browser
The HTML standard skip attribute. Honoured as well.
data-pl-skipBrowser
Short form of the skip attribute.
<!-- @proxylang-do-not-translate-start --> … <!-- @proxylang-do-not-translate-end -->Server
Skip a region of HTML. JS files use the same words after //.
class="proxylang-bot-only-no-translate"Server
Keep the original wording for search engines only. Visitors still get the translation.
data-proxylang-bot-only-no-translateServer
Attribute form of the bot-only skip.
<!-- @proxylang-bot-only-do-not-translate-start --> … <!-- @proxylang-bot-only-do-not-translate-end -->Server
Comment form of the bot-only skip.

Hint

data-pl-context="…"Server
A hint for the translator about this element (“button label”, “product name”).
data-pl-max-chars="N"Server
Keep the translation at or under N characters. Useful for fixed-width buttons.
data-proxylang-search-context="…"Browser
Context for translating what visitors type in this search box.

Force

data-pl-retranslate="token"Both
Translate this element again, bypassing every cache. Change the token to trigger it. Must be switched on for your domain by Proxylang support.
data-no-url-path-langBrowser
On the script tag itself. Your own router owns /xx-xx/ paths, so Proxylang will not read the language from the URL.

Features

data-pl-translate-imageBoth
Translate the text in this image. See Image translation.
data-proxylang-reverse-searchBrowser
Translate what visitors type in this search box. See Search translation.
class="proxylang-flip-on-rtl"Both
Mirror this element for right-to-left languages.
data-pl-no-rtl-fixBoth
Leave this element out of the right-to-left animation fixes.

Also skipped without markers: <pre> and <code> everywhere; <kbd>, <var> and <samp> on the server; <script>, <style>, <svg>, <math>, form inputs and iframes.

Далее: JavaScript API и события


JavaScript API и события

For developers

Узнавайте активный язык, создавайте собственный переключатель и реагируйте на изменения.

window.Proxylang

Доступно в теге script, режимах Hybrid и DNS Proxy.

MethodReturnsDescription
getCurrentLanguage()stringActive language code, e.g. "ko-KR".
getBaseLanguage()stringThe site’s own language.
getLanguages()ArrayEnabled languages as { code, english, native, isBase }. Empty until the config has loaded.
setLanguage(code)Promise<void>Switch language. Navigates the page. Unknown codes are ignored with a console warning.
isReady()booleanTrue once the widget has initialised.
onReady(fn)voidRuns fn when ready, or at once if already ready.
isTranslated()booleanTrue once the first translation pass has finished.
onTranslated(fn)voidRuns fn when the first pass finishes, or at once if it already has.
onLanguageChange(fn)() => voidRuns fn on every switch. Returns a function that unsubscribes.
JavaScript
window.Proxylang.getCurrentLanguage()  // "ko-KR"
window.Proxylang.getBaseLanguage()     // "en-US"
window.Proxylang.getLanguages()
// [{code: "en-US", english: "English", native: "English", isBase: true},
//  {code: "ko-KR", english: "Korean", native: "한국어", isBase: false}, ...]

window.Proxylang.setLanguage("fr-FR")  // navigates

Proxylang:ready

Fired on document once the widget has initialised. detail carries language and baseLanguage .

JavaScript
window.Proxylang.onReady(() => {
  console.log(window.Proxylang.getCurrentLanguage())
})

document.addEventListener('proxylang:ready', (e) => {
  console.log(e.detail.language, e.detail.baseLanguage)
})

Proxylang:translated

Fired on document exactly once per page load, when the first translation pass has finished. It never fires again, not for added content or client-side navigation. It is guaranteed within about five seconds; if the safety cap fires first, detail.timedOut is true and language may be null. Use it to remove a loading overlay.

JavaScript
document.addEventListener('proxylang:translated', (e) => {
  console.log(e.detail.language)      // "ko-KR", or null if timedOut
  console.log(e.detail.baseLanguage)  // "en-US"
  console.log(e.detail.timedOut)      // true if the 5s cap fired first
  document.getElementById('loading-overlay')?.remove()
})

// Same thing, callback style. Runs at once if already finished.
window.Proxylang.onTranslated(() => { /* ... */ })

Proxylang:languagechange

Fired on document when the visitor switches language, with detail.language . Callbacks run before the page navigates, so an analytics call may not finish sending. Use your analytics library's beacon or "transport: beacon" option.

JavaScript
// Returns a function that unsubscribes
const stop = window.Proxylang.onLanguageChange((lang) => {
  navigator.sendBeacon('/analytics', JSON.stringify({ event: 'language_change', lang }))
})

// Or listen for the DOM event
document.addEventListener('proxylang:languagechange', (e) => {
  console.log(e.detail.language)
})

// Later, e.g. when a component unmounts
stop()

Отладка

  • Add ?proxylang_debug=1 to any page address to get verbose logs in the console.
  • In DNS Proxy mode a proxylang:translating event fires on window with detail.loading true or false around each re-translation.
  • Framework apps: the script waits for hydration before touching the page. If your app re-renders text after that, the observer picks it up and translates it.

Далее: Live Chat JavaScript API


JavaScript API для чата в реальном времени

For developers

Выводите текст в окне чата, открывайте его с помощью собственных кнопок и сообщайте своей команде, кто именно зашел на сайт.

$Proxylang

The chat loads with your Proxylang script tag. Send it commands by pushing them onto window.$proxylang . Commands pushed before the chat has loaded wait and run in order once it has.

  • The commands use the same format as Crisp's $crisp . A page already wired to Crisp moves over by renaming $crisp to $proxylang .
  • Commands the chat does not know are ignored. They never throw an error on your page.
  • $proxylang.get() and $proxylang.is() exist only after the chat has loaded. Before that, $proxylang is a plain array.
JavaScript
// Safe to run before the chat has loaded. Commands wait, then run in order.
window.$proxylang = window.$proxylang || []
$proxylang.push(['do', 'chat:open'])

Вывод текста в окне чата

CommandWhat it does
['set', 'message:text', [text]]Fills the reply box. The visitor can edit it and presses send themselves. Nothing reaches your team until they do.
['do', 'message:show', ['text', text]]Shows a message from your team in the chat. Only this visitor sees it, only on this page. It is not sent to your team or saved, and a reload removes it.
['do', 'message:send', ['text', text]]Sends a message as the visitor. Your team gets it in the console, translated like any other message.
  • Text is capped at 4,000 characters. Empty text is ignored.
  • message:text and message:show appear exactly as you write them. They are not translated. Pick the text for the visitor's language yourself with window.Proxylang.getCurrentLanguage() .
  • A message:show message while the window is closed adds to the unread count on the chat bubble.
JavaScript
// A "Request a quote" button: open the chat with a message ready to send
function requestQuote() {
  $proxylang.push(['set', 'message:text', ['Hi, I would like a quote for the Pro plan.']])
  $proxylang.push(['do', 'chat:open'])
}

// A message from your team, shown only to this visitor on this page
$proxylang.push(['do', 'message:show', ['text', 'Questions about plans? Ask us here.']])

// A message sent as the visitor. Your team gets it in the console.
$proxylang.push(['do', 'message:send', ['text', 'I need help with order #1042']])

Открыть и закрыть

CommandWhat it does
['do', 'chat:open']Opens the chat window.
['do', 'chat:close']Closes it.
$proxylang.is('chat:opened')True while the window is open.

Сообщите команде, кто этот посетитель

Ваша команда видит эти данные на панели посетителя в консоли чата. Чтобы подтвердить email, подпишите его на своем сервере с помощью секретного ключа из раздела Chat settings › Widget › Verified visitor emails. Подпись представляет собой HMAC-SHA256 от email в формате hex.

CommandWhat it does
['set', 'user:email', [email, signature]]The visitor’s email. Add the signature to mark it verified.
['set', 'user:nickname', [name]]The name your team sees.
['set', 'user:avatar', [url]]Picture address. https only.
['set', 'user:phone', [phone]]Phone number.
['set', 'user:company', [name, { url, description }]]Company name, with an optional website and description.
['set', 'session:data', [[[key, value], ...]]]Up to 32 key/value pairs. Values are text, numbers or true/false. Keys are cut to 40 characters and text values to 200. Pushing again adds new keys and overwrites existing ones; keys are never removed until session:reset. Once there are 32 keys, new keys are skipped without an error.
['set', 'session:event', [[[name, data, colour]]]]Adds entries to the visitor’s timeline. Colour is red, orange, yellow, green, blue, purple, pink, brown, grey or black.
$proxylang.get('user:email')Reads back a value you set. Works for every user: key and for session:data.
['do', 'session:reset']Starts a new visitor in this browser. Call it when a user signs out, so the next person to sign in does not see their chats or take over their email.
JavaScript
$proxylang.push(['set', 'user:email', [user.email, signature]])
$proxylang.push(['set', 'user:nickname', [user.name]])
$proxylang.push(['set', 'user:company', ['Acme', { url: 'https://acme.com' }]])

// Key/value pairs shown in the visitor pane
$proxylang.push(['set', 'session:data', [[['plan', 'pro'], ['orders', 3]]]])

// Timeline entries: name, optional data, optional colour
$proxylang.push(['set', 'session:event', [[['checkout-failed', { total: 120 }, 'red']]]])

// When the user signs out: start a new visitor in this browser
$proxylang.push(['do', 'session:reset'])

// Once the chat has loaded
$proxylang.get('user:email')
$proxylang.is('chat:opened')

Далее: Content Security Policy


Политика безопасности контента (CSP)

For developers

У большинства сайтов нет настроенной политики Content Security Policy. Если никто не настраивал её для вашего сайта, пропустите этот раздел.

Нужно ли это вам?

A CSP is a rule list that tells the browser which scripts and servers a page may use. If your site has one, it can block Proxylang. The sign: translations never appear and there is no error on the page. Open the browser console (F12) and look for a line starting with Refused to and mentioning Content Security Policy.

Тег script и режим Hybrid

The script loads from proxy.proxylang.dev and Live Chat from chat.proxylang.dev . It also fetches translations, swaps in translated images and adds a few inline styles. Add these sources to your existing policy:

HTTP header
# Add these sources to your existing policy.
# script-src:  the Proxylang script, plus 'unsafe-inline' for the small styles/scripts it injects
# connect-src: translation, image and chat requests (wss:// is the Live Chat socket)
# img-src:     translated images are served from Proxylang storage
Content-Security-Policy:
  script-src  'self' https://proxy.proxylang.dev https://chat.proxylang.dev 'unsafe-inline';
  style-src   'self' 'unsafe-inline';
  connect-src 'self' https://proxy.proxylang.dev https://chat.proxylang.dev wss://chat.proxylang.dev;
  img-src     'self' data: https:

Действуют те же правила, что и для meta-тега, если ваш сайт устанавливает политику именно таким образом:

HTML meta tag
<meta http-equiv="Content-Security-Policy"
  content="script-src 'self' https://proxy.proxylang.dev https://chat.proxylang.dev 'unsafe-inline'; style-src 'self' 'unsafe-inline'; connect-src 'self' https://proxy.proxylang.dev https://chat.proxylang.dev wss://chat.proxylang.dev; img-src 'self' data: https:">

Режим DNS-прокси

Переводы добавляются на стороне сервера, поэтому большинство политик работают без изменений. Изменения требуются только для тех политик, которые блокируют все встроенные (inline) скрипты: Proxylang добавляет небольшие встроенные скрипты, которые удерживают переводы на месте во время загрузки страницы.

HTTP header
# Only needed if your policy blocks all inline scripts:
Content-Security-Policy: script-src 'self' 'unsafe-inline'

Далее: Языки с письмом справа налево


Языки с письмом справа налево

For developers

Арабский, иврит, персидский и урду читаются справа налево. Proxylang автоматически меняет направление макета для вас.

Что происходит автоматически

When a visitor picks a right-to-left language, Proxylang sets dir="rtl" on the page so text, menus and layout mirror. When an Arabic or Hebrew site is shown in English, it sets dir="ltr" and overrides any CSS that pins the direction, so the layout flips back.

  • Any right-to-left target gets dir="rtl", even if the source is already right-to-left.
  • Left-to-right to left-to-right leaves the page untouched.
  • In script tag and Hybrid mode the page paints in its original direction first and flips once the script runs. DNS Proxy mode flips on the server with no flash.

Чтобы отключить зеркальное отображение для домена, используйте переключатель на странице выбора языка. Он становится активным только после того, как для этого домена будет включен язык с письмом справа налево.

Зеркальное отображение стрелок или иконок

Directional graphics (a "next" arrow, a back icon) do not mirror on their own. Add the proxylang-flip-on-rtl class to any element that should.

HTML
<!-- Mirrored when the page is right-to-left -->
<img src="/arrow-next.svg" class="proxylang-flip-on-rtl" />

<svg class="proxylang-flip-on-rtl">...</svg>

Исправление анимаций и возможность отказа от них

Некоторые анимации выглядят некорректно при зеркальном отображении. Proxylang добавляет CSS-исправления для наиболее распространенных случаев: индикаторы выполнения и полосы загрузки заполняются справа налево, бегущие строки сохраняют свое направление прокрутки, карусели и слайдеры продолжают работать, а полосы NProgress остаются у верхнего края.

If one of those fixes breaks something on your site, add data-pl-no-rtl-fix to that element and Proxylang leaves it alone. The one exception is NProgress, which is styled by its own class and cannot be excluded this way.

For your own CSS, two variables follow the reading direction: --pl-transform-origin-start and --pl-transform-origin-end .