Getting started

Panduan Proxylang

Cara menyiapkan Proxylang, meningkatkan kualitas terjemahan, dan agar mudah ditemukan dalam bahasa lain. Materi pengembang tersedia di bagian akhir.

Start here

Memulai

Empat langkah dari akun baru hingga situs yang diterjemahkan. Tag skrip adalah pilihan default dan berfungsi di setiap platform.

WhereSetup

Siapkan dalam empat langkah

  1. Add your site

    Buka Setup dan ketik alamat situs web Anda. Pilih platform yang digunakan.

  2. Pick languages

    Pilih bahasa asli situs Anda, lalu pilih bahasa yang ingin Anda tambahkan. Paket Anda menentukan jumlah bahasa yang tersedia.

  3. Install

    Pilih cara tag skrip dipasang di situs Anda. Biarkan AI melakukannya: tempel pesan kami ke ChatGPT, Claude, atau Cursor. Lakukan sendiri: salin satu baris dan publikasikan. Atau kirimkan ke pengembang Anda: kami akan menuliskan emailnya. Situs WordPress menggunakan plugin.

  4. Check your site

    Wizard akan mengonfirmasi bahwa skrip sudah aktif. Pengalih bahasa akan muncul di situs Anda.

Panduan instalasi berdasarkan platform:

Pilih cara Proxylang terhubung

Tag skrip adalah default dan berfungsi di mana saja. Mode lainnya menambahkan visibilitas mesin pencari dalam bahasa lain. Anda dapat mengubah mode nanti di tab Setup domain; tidak ada yang akan offline saat Anda beralih.

Script tag

VisitorSearch engineYour serverProxylangsentences

Mesin pencari membaca situs asli Anda.

Hybrid

VisitorSearch engineYour serverProxylangsentences

Mesin pencari mendapatkan halaman yang diterjemahkan.

DNS Proxy

VisitorSearch engineYour serverProxylang

Semua orang mendapatkan halaman yang diterjemahkan.

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

Script tag

Setiap paket, setiap platform

Terjemahan terjadi di browser pengunjung. Mesin pencari tetap melihat bahasa asli Anda.

Terbaik untuk: Aplikasi, halaman di balik login, dan pembuat situs apa pun.

WordPress plugin

WordPress sites

Menginstal skrip untuk Anda dan menambahkan alamat per bahasa, tag SEO, dan sitemap tanpa menyentuh DNS.

Terbaik untuk: Situs WordPress atau WooCommerce apa pun.

Hybrid

Paket Lite ke atas, situs yang dibangun dengan kode

Satu perubahan DNS. Mesin pencari mendapatkan halaman terjemahan dari Proxylang. Pengunjung tetap menggunakan tag skrip.

Terbaik untuk: Situs pemasaran yang ingin ditemukan dalam bahasa lain.

DNS Proxy

Paket Pro ke atas, situs yang dibangun dengan kode

Setiap pengunjung mendapatkan halaman terjemahan dari Proxylang, di alamat terjemahan seperti /es-es/about.

Terbaik untuk: Situs yang menginginkan URL terjemahan lengkap untuk semua orang, tanpa skrip.

Bagaimana sebuah halaman diterjemahkan

Dengan tag skrip, halaman dimuat dari server Anda seperti biasa. Skrip kemudian meminta terjemahan setiap kalimat ke Proxylang dan menukarnya. Kunjungan pertama ke sebuah halaman diterjemahkan saat Anda melihatnya. Setiap kunjungan berikutnya akan instan, karena terjemahannya disimpan.

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.

Dengan mode DNS Proxy atau Hybrid, Proxylang berada di antara pengunjung (atau mesin pencari) dan server Anda:

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

  2. Proxylang mengambil halaman asli dari server Anda

  3. AI menerjemahkan teks yang terlihat

    Tata letak dan kode tetap persis seperti semula.

  4. Halaman terjemahan disimpan dan disajikan

    Pengunjung berikutnya mendapatkannya secara instan.

  5. SEO tags are added

    Tautan bahasa, alamat kanonik, dan banyak lagi.

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

Jika tidak ada yang berubah pada situs Anda

  • 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.

Berikutnya: Merek & konteks

Make translations better

Merek & konteks

Beri tahu penerjemah siapa Anda. Menghabiskan lima menit di sini akan memberikan dampak lebih besar pada kualitas daripada hal lain dalam panduan ini.

WhereDomains › your domain › Brand & Context

Apa yang harus diisi

  • 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.

Kapan mulai berlaku

Klik Simpan Merek & Konteks. Terjemahan baru akan menggunakan konteks baru dalam waktu satu jam. Teks yang sudah diterjemahkan akan tetap menggunakan kata-katanya. Untuk mengulang halaman, Anda dapat memperbaiki kalimat secara individual di Live Editor.

Berikutnya: Glosarium & daftar jangan-terjemahkan


Glosarium & daftar jangan-terjemahkan

Tentukan bagaimana sebuah kata harus diterjemahkan, cukup sekali, untuk setiap halaman.

WhereGlossary

Istilah Anda

  • 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

Istilah baru mencapai server terjemahan dalam waktu sekitar sepuluh menit. Teks yang sudah diterjemahkan akan tetap menggunakan kata-kata lamanya sampai diterjemahkan kembali. Untuk memeriksa halaman, buka di jendela penyamaran agar browser Anda tidak menampilkan salinan yang tersimpan.

Jangan pernah terjemahkan

Kartu Jangan Terjemahkan di bagian atas glosarium menyimpan kata-kata yang harus tetap persis seperti yang tertulis di setiap bahasa: merek Anda, nama produk, tagar. Hingga 100 entri dengan masing-masing 60 karakter. Pencocokan bersifat peka terhadap huruf besar-kecil, jadi tambahkan "iPhone", bukan "iphone".

Peningkatan AI

Proxylang meninjau terjemahan di situs Anda secara berkala dan mengusulkan perbaikan kecil. Perbaikan yang disetujui ditambahkan ke glosarium Anda sebagai istilah yang ditandai AI, beserta alasan dan kata-kata yang digantikannya. Anda dapat menghapus salah satunya.

  • 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.


Editor Langsung

Perbaiki terjemahan di situs Anda sendiri: klik kalimatnya, ketik, simpan. Termasuk di setiap paket.

WhereLive Editor, or press Esc twice on your site

Edit terjemahan

  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.

Undang penerjemah

Penerjemah tidak memerlukan akun Proxylang. Mereka masuk ke situs Anda dan dapat mengedit terjemahan, tidak ada yang lain.

  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.

Berikutnya: Kontrol apa yang diterjemahkan


Kontrol apa yang diterjemahkan

Tetapkan nama merek, kode kupon, dan ulasan dalam bahasa asli, atau hentikan terjemahan sepenuhnya.

WhereYour HTML, or Domains › your domain › Advanced

Tetap gunakan bahasa asli untuk sesuatu

Beberapa teks tidak boleh berubah: nama merek, kode kupon, kutipan, ulasan yang ditulis oleh pelanggan. Anda memiliki tiga alat, mulai dari tanpa kode hingga dengan sedikit kode.

  • 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.

Lewati blok dengan class tertentu

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>

Lewati area dengan komentar

Berguna saat Anda tidak dapat menambahkan kelas, atau untuk teks di dalam file JavaScript. Segala sesuatu di antara kedua penanda akan dilewati.

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

Dilewati untuk Anda

  • 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.

Lewati hanya untuk mesin pencari

Terkadang Anda ingin mesin pencari mengindeks kata-kata asli (tagline, slogan yang Anda targetkan) sementara pengunjung tetap membacanya dalam versi terjemahan. Gunakan penanda khusus bot. Penanda ini hanya berlaku jika Proxylang menyajikan halaman ke bot, yaitu pada mode DNS Proxy dan Hybrid. Jika hanya menggunakan tag skrip, penanda tersebut tidak akan berfungsi.

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 -->

Jeda semuanya

Dua sakelar pada tab Lanjutan di domain akan menghentikan terjemahan baru tanpa menghapus apa pun dari situs Anda. Teks yang sudah diterjemahkan akan tetap ditampilkan.

  • 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 dalam bahasa lain

Pastikan halaman terjemahan dapat ditemukan. Proxylang menambahkan tag yang dicari mesin pencari dan memberi Anda satu halaman untuk memantaunya.

WhereSEONeedsLite plan or above

Halaman SEO

Buka SEO dan pilih situs. Ini memerlukan paket Lite atau di atasnya. Tab Kata Kunci dan Judul Halaman juga memerlukan mode Hybrid atau DNS Proxy, karena jika hanya menggunakan tag skrip, mesin pencari tidak akan pernah melihat judul yang telah diterjemahkan.

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.

Which languages search engines see

Your plan sets how many languages search engines index. Visitors can still pick every language you turn on. A language you add joins the indexed ones on its own while your plan has room. It goes into the sitemap and language links, and if you have saved keywords on the Keywords tab, it gets its own keywords and home page title written from them. To choose them yourself, use the search icon next to each language on the domain's Languages tab.

When every slot is taken, the Languages tab and the SEO Keywords tab name the languages search engines can't see. Swap one in for an indexed language, or upgrade for more.

Tag yang ditambahkan ke setiap halaman terjemahan

  • 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.

Berlaku dalam mode Hybrid dan DNS Proxy, di mana mesin pencari mendapatkan halaman dari Proxylang. Jika hanya menggunakan tag skrip, mereka akan membaca situs asli Anda.

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" />

Judul, deskripsi, dan teks gambar

Judul halaman, meta deskripsi, judul dan deskripsi pratinjau sosial, serta kata kunci akan diterjemahkan. Begitu juga dengan teks alt gambar, tooltip tombol, dan placeholder formulir. Tetapkan kata-kata Anda sendiri untuk halaman apa pun pada tab Judul & Deskripsi Halaman.

Hasil kaya (Rich results)

Jika halaman Anda menyertakan data terstruktur (detail produk, artikel, FAQ, atau acara tersembunyi yang mendukung hasil kaya di Google), bidang teks akan diterjemahkan dan bidang bahasa akan diperbarui. Harga, tanggal, URL, dan pengidentifikasi akan dibiarkan apa adanya.

Sitemap

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>

Pilih halaman mana yang ada dalam sitemap

Pada tab Pengaturan SEO, di bawah Halaman Sitemap :

  • 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.

Memberitahu mesin pencari tentang halaman baru

  • 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.

Mesin pencari 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.

Bahasa di setiap alamat

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.

Hanya mode DNS Proxy. Subdomain mengikuti domain induknya.


Mode Hybrid (SEO untuk mesin pencari)

Mesin pencari mendapatkan halaman terjemahan dari Proxylang sementara pengunjung Anda tetap menggunakan tag skrip.

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

Fungsinya

Tag skrip menerjemahkan halaman di browser pengunjung. Mesin pencari tidak menjalankan skrip tersebut, jadi mereka hanya melihat bahasa asli Anda. Mode Hybrid memperbaiki hal ini.

Mesin pencari dan bot AI

Dapatkan halaman yang diterjemahkan sepenuhnya dari Proxylang. Google, Bing, Naver, ChatGPT, Perplexity, dan pratinjau tautan (Slack, LinkedIn, Facebook) ada dalam daftar.

Your visitors

Dapatkan situs Anda persis seperti sekarang, diterjemahkan oleh tag skrip. Hosting, analitik, dan pengujian A/B Anda tidak akan terganggu.

Situs di Wix, Squarespace, Webflow, dan pembuat serupa tidak dapat mengubah DNS dengan cara ini, jadi mereka tetap menggunakan tag skrip.

Cara mengaktifkannya

Tidak ada tombol "Hybrid". Hybrid adalah apa yang Anda dapatkan ketika DNS Proxy dan Tag Skrip keduanya aktif untuk domain yang sama.

  1. Buka domain Anda, lalu tab Setup

    Domains → domain Anda → Setup.

  2. Turn on DNS Proxy

    Tambahkan catatan DNS yang kami tunjukkan ke registrar domain Anda, lalu verifikasi. Ini adalah langkah yang memungkinkan mesin pencari menjangkau Proxylang.

  3. Keep Script Tag on

    Pengunjung Anda tetap menggunakan tag skrip yang sudah Anda instal.

  4. Done

    Dengan keduanya aktif, lencana domain akan bertuliskan "Hybrid (SEO)". Matikan salah satu dan situs akan kembali ke mode lainnya tanpa downtime.

Biaya

Kunjungan bot menggunakan kata dari saldo Anda, dengan seperempat dari tarif normal. Tiga batasan menjaga agar perayapan yang tidak terkendali tidak menguras saldo. Anda dapat menurunkan masing-masing batasan di halaman SEO di bawah 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.

Kata per hari untuk bot

Setelah tercapai, bot akan mendapatkan bahasa asli Anda hingga tengah malam UTC. Atur ke 0 untuk menghentikan penerjemahan bot sepenuhnya.

Start
3,000
Pro+
20,000

Budget per page

Berapa banyak bagian dari satu halaman yang mungkin diterjemahkan oleh kunjungan bot, dalam token AI (sekitar 2,7 per kata). Default 4.000. Judul, deskripsi, dan heading tidak pernah dihitung.

Start
8,000
Pro+
50,000

Kunjungan per hari, bot yang tidak terverifikasi

Google, Bing, Apple, DuckDuckGo, dan Yandex diverifikasi melalui alamat jaringan mereka dan tidak dibatasi. Yang lainnya berbagi batas ini.

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

Kapan menggunakannya

  • 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.

Halaman di balik login tidak mendapatkan keuntungan apa pun dari Hybrid. Tetap gunakan tag skrip untuk halaman tersebut.

Berikutnya: Banyak situs & subdomain


Banyak situs & subdomain

Tambahkan subdomain secara gratis dan lebih banyak domain utama pada paket Start ke atas. Semua situs berbagi satu saldo kata.

WhereDomains

Apa yang dapat Anda tambahkan

  • 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.

Semua situs Anda berbagi satu saldo kata. Situs kedua tidak menambah kata; ia mengambil dari kumpulan yang sama.

Jika Anda pindah ke paket yang lebih kecil nanti, tidak ada yang akan offline. Anda tetap memiliki setiap situs yang sudah Anda tambahkan. Anda hanya tidak dapat menambah lebih banyak sampai Anda kembali di bawah batas.

Apa yang diwarisi subdomain

Subdomain mengikuti domain utamanya. Ia mendapatkan mode koneksi, bahasa, pengaturan sitemap, dan sakelar tab Advanced yang sama. Anda mengaturnya sekali pada domain utama.

Jika root menggunakan mode DNS Proxy atau Hybrid, setiap subdomain juga memerlukan catatan DNS sendiri. Aplikasi akan menampilkan catatan tepat yang perlu ditambahkan: empat untuk domain root (domain dasar, www, dan dua catatan verifikasi), dua untuk subdomain.

Mode mana untuk situs mana

Situs pemasaran atau landing page

Hybrid mode

Anda ingin situs ditemukan dalam bahasa lain. Gunakan Hybrid jika paket dan situs Anda memungkinkan (paket Lite atau di atasnya, situs dibangun dengan kode). Jika tidak, tag skrip tetap akan menerjemahkannya untuk pengunjung.

Aplikasi atau portal pelanggan

Script tag

Halaman di balik login tidak akan pernah diindeks, jadi tidak ada manfaat pencarian yang bisa dikejar. Tidak ada perubahan DNS, tidak ada apa pun di jalur lalu lintas.

Features

Obrolan Langsung

Gelembung obrolan yang menerjemahkan kedua arah. Satu langganan, untuk setiap situs, agen tak terbatas.

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

Fungsinya

Gelembung obrolan di situs Anda. Pengunjung menulis dalam bahasa mereka. Anda membaca dan menjawab dalam bahasa Anda. Kedua belah pihak diterjemahkan secara langsung. Satu langganan mencakup setiap situs di akun Anda, dengan agen sebanyak yang Anda inginkan.

Aktifkan

Buka domain, buka tab Live Chat dan aktifkan sakelarnya. Gelembung akan muncul di situs Anda dan situs tersebut akan muncul di konsol obrolan Anda di 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.

Tambahkan tim Anda

  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.

Hapus seseorang dengan tombol Remove pada baris mereka.

Menjawab obrolan

  • 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.

Aplikasi desktop dan seluler

Halaman Downloads menyediakan aplikasi desktop untuk macOS, Windows, dan Linux. Aplikasi ini memberi Anda peringatan dan lencana pesan belum terbaca saat browser ditutup, serta memperbarui dirinya sendiri. Aplikasi iPhone dan Android terdaftar akan segera hadir.

Proses masuk akan membuka browser normal Anda sejenak, lalu kembali ke aplikasi. Hal tersebut sudah sesuai prosedur.

Apa yang termasuk dalam setiap paket

Hanya pesan yang diterjemahkan yang dihitung. Pesan dalam bahasa yang sama adalah gratis. Jatah bulanan dibagi ke seluruh situs Anda dan diatur ulang pada tanggal 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.

Berikutnya: Terjemahan gambar


Terjemahan gambar

Gambar ulang teks di dalam banner dan gambar produk ke dalam bahasa pengunjung.

WhereDomains › your domain › Image TranslationsNeedsImage credits (prepaid)

Siapkan

1. Buy credits

Terjemahan gambar aktif untuk setiap domain. Saldo kredit Anda adalah satu-satunya pembatas. Beli paket dari Billing . Paket berlaku selama 12 bulan.

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. Pilih gambar yang akan diterjemahkan

Hanya gambar yang Anda pilih yang akan diterjemahkan. Ada tiga cara, yang termudah adalah yang pertama:

  • 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 />

Apa yang terjadi dan berapa biayanya

  • 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.

Berfungsi di setiap mode. Dengan metode "tempel alamat gambar", pencocokan berjalan di browser pengunjung, sehingga memerlukan tag skrip (tag skrip atau mode Hybrid).

Apa yang akan diterjemahkan

Translate these

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

Jangan tandai ini (tetap dikenakan biaya)

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

PNG, JPG, dan WebP didukung. File yang sangat besar akan diperkecil skalanya sebelum diterjemahkan. 33 bahasa target didukung; daftarnya ada di tab Image Translations pada domain.

Berikutnya: Terjemahan pencarian


Terjemahan pencarian

Terjemahkan apa yang diketik pengunjung ke dalam kotak pencarian Anda, sehingga mereka mendapatkan hasil dalam bahasa apa pun.

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

Siapkan

1. Buy searches

Dibayar dengan kredit pencarian prabayar. Beli paket dari Billing . Paket tidak pernah kedaluwarsa.

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

2. Aktifkan per domain

Open the domain, go to the Advanced tab and switch on Translate Search Queries . The switch stays off until you have credits. It can take up to five minutes to reach your live site, so wait before testing.

Cara kerja

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.

Kotak pencarian yang menyaring daftar di halaman

Beberapa kotak pencarian tidak pernah mengirimkan apa pun ke server. Mereka menyaring daftar yang sudah ada di halaman (seperti FAQ, kisi produk). Itu memerlukan satu atribut pada input:

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.

Help the translation with context

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).

Tips

  • 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.

Known limits

  • 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.


Language switcher look & feel

Everything about the language menu visitors see: where it sits, how it looks, when it shows.

WhereLanguage Switcher

What you can change

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.

Changes reach your site within seconds, five minutes at most. If you do not see them, refresh the page.

Which language a visitor gets first

There is nothing to set. On the first visit, Proxylang looks at the languages the visitor's browser prefers and picks the best match among the languages you enabled. If none match, it uses the visitor's country, and then your site's own language. After that, the visitor's choice is remembered for a year.

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

Put the switcher in your own menu

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

Analytics & usage

See who visits in which language, and where your words go.

WhereDashboard › Analytics

Who visits, in which language

The Analytics tab on your dashboard shows visitors, visits, pages, where people came from, their country and device, and the share who read a translated version. No cookies are used; visitors are counted from a scrambled fingerprint that cannot be turned back into an address.

  • 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.

Where your words go

The Dashboard tab shows how much of your plan you have used. The Metrics and Pages tabs break it down by day, language and page.

  • 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.


Plans, billing & credits

What each plan includes, what happens at the limit, and how credits and codes work.

WhereBilling

What a plan gives you

Every plan has a word allowance, a monthly page-view allowance, a number of languages and a number of sites. The word allowance is a total, not a monthly amount: a sentence is only counted the first time it is translated, and it stays translated after that. Each language counts separately: a 500-word page opened in three languages uses 1,500 words. On Start and above, visitors can pick any of the 77 languages, and the plan sets how many of them search engines index. Crawlers fetch every indexed language, so those are the languages that spend words without a visitor.

Words: a total that fills up once

each new sentence is counted once, then never again

Page views: reset on the 1st

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.

Changing or cancelling

  • 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.

Image and search credits

Paid plans include a one-time batch of credits the first time you subscribe: Lite 2 images and 500 searches, Start 10 images and 2,000 searches, Pro 30 images and 2,000 searches, Business and Global 100 images and 2,000 searches. Moving up a plan adds only the difference. Included credits never expire and are granted once per account, not once per upgrade.

If you run out, buy more as prepaid packs on the Billing page, on the Image Translation page, or on the Reverse Search page. Packs are shared across your sites. Purchased image packs are valid for 12 months and you get an email 30 days before one expires; purchased search packs never expire.

The purchase opens in a new tab. Your balance on the Billing page refreshes when you come back to it.

Promo codes

  • 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.

Refer a friend

Your link is on the Referral page. A friend who signs up through it gets 15% off their first plan. When they subscribe, your next monthly payment is 50% off, once per friend. The link is remembered for 90 days. Packs do not count, plans do.

For developers

Attribute reference, JavaScript API and events, Live Chat API, Content Security Policy, right-to-left languages.

Attribute reference

For developers

Every class, attribute and comment marker Proxylang reads from your HTML.

Browser means the script tag and pages visitors load in Hybrid mode. Server means pages Proxylang renders for search engines in Hybrid mode and for everyone in DNS Proxy mode. Both means 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 and events

For developers

Read the active language, build your own switcher, react to changes.

window.Proxylang

Available in script tag, Hybrid and DNS Proxy mode.

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()

Debugging

  • 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

For developers

Put text in the chat window, open it from your own buttons, and tell your team who the visitor is.

$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'])

Put text in the chat window

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']])

Open and close

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.

Tell your team who the visitor is

Your team sees these in the visitor pane of the chat console. To make an email verified, sign it on your server with the secret from Chat settings › Widget › Verified visitor emails . The signature is the HMAC-SHA256 of the email, as 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

For developers

Most sites do not have a Content Security Policy. If nobody set one up for your site, skip this section.

Do you need this?

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 tag and Hybrid mode

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:

Same rules as a meta tag, if that is how your site sets its policy:

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 Proxy mode

Translations are added on the server, so most policies work as they are. Only a policy that blocks all inline scripts needs a change: Proxylang adds small inline scripts that keep translations in place while the page loads.

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


Right-to-left languages

For developers

Arabic, Hebrew, Persian and Urdu read right to left. Proxylang flips the layout for you.

What happens automatically

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.

To turn the flip off for a domain, use the switch on the Language Switcher page. It only becomes active once a right-to-left language is enabled on that domain.

Mirror an arrow or icon

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>

Animation fixes and opting out

Some animations look wrong when mirrored. Proxylang adds CSS fixes for the common ones: progress bars and loading bars fill from the right, tickers and marquees keep their scroll direction, carousels and sliders keep working, and NProgress bars stay at the top edge.

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 .