Getting started

Proxylang 指南

了解如何设置 Proxylang、优化翻译质量,并提升多语言搜索排名。开发者文档位于页面底部。

Start here

开始使用

从注册账号到网站翻译仅需四步。脚本标签是默认方式,适用于所有平台。

WhereSetup

四步完成设置

  1. Add your site

    前往设置页面,输入您的网站地址,并选择运行平台。

  2. Pick languages

    选择网站原始语言,再添加目标语言。具体数量取决于您的套餐。

  3. Install

    选择将脚本标签添加到您网站的方式。让 AI 来完成:将我们的消息粘贴到ChatGPT、Claude或 Cursor 中。手动完成:复制一行并发布。或发送给您的开发人员:我们会写好邮件。WordPress 网站使用插件。

  4. Check your site

    向导将确认脚本已生效,您的网站上会出现语言切换器。

各平台的安装指南:

选择Proxylang连接方式

脚本标签是默认方式,适用于所有场景。其他模式可提升多语言环境下的搜索引擎可见性。您可随时在域名的“设置”选项卡中更改模式;切换过程不会导致网站下线。

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代理或混合模式时,Proxylang位于访客(或搜索引擎)与您的服务器之间:

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

  2. Proxylang 从您的服务器获取原始页面

  3. AI翻译可见文本

    布局与代码保持原样不变。

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

AI 优化

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.


实时编辑器

在您的网站上自行修正翻译:点击句子、输入内容并保存。所有套餐均包含此功能。

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.

通过 Class 跳过区块

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代理和混合模式。仅在脚本标签上使用时,它们不会产生任何效果。

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

全部暂停

域名“高级”选项卡上的两个开关可以在不删除网站任何内容的情况下停止新的翻译。已翻译的内容将继续显示。

  • 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 模式,因为仅靠脚本标签时,搜索引擎无法看到翻译后的标题。

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.

添加到每个翻译页面的标签

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

适用于混合模式和DNS代理模式,此时搜索引擎会从Proxylang获取页面。仅使用脚本标签时,它们读取的是您的原始站点。

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

标题、描述和图片文本

页面标题、元描述、社交预览标题和描述以及关键词均会被翻译。图像替代文本、按钮提示和表单占位符也同样如此。您可以在“页面标题与描述”选项卡中,为任意页面固定您自定义的措辞。

富媒体搜索结果

如果您的页面包含结构化数据(即支持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 设置选项卡下的“站点地图页面”中:

  • 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代理模式。子域名遵循其根域名设置。


混合模式(针对搜索引擎的SEO)

搜索引擎会从 Proxylang 获取翻译后的页面,而您的访客则会保留脚本标签。

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

核心功能

脚本标签在访客的浏览器中翻译页面。搜索引擎不会运行该脚本,因此它们只能看到您的原始语言。混合模式解决了这个问题。

搜索引擎与AI机器人

从 Proxylang 获取完全翻译的页面。Google、Bing、Naver、ChatGPT、Perplexity 以及链接预览(Slack、LinkedIn、Facebook)均在支持列表中。

Your visitors

您的网站保持现状,由脚本标签进行翻译。您的托管、分析和 A/B 测试不受影响。

Wix、Squarespace、Webflow 等建站工具无法通过此方式更改 DNS,因此它们将继续使用脚本标签。

如何开启

不存在“混合”开关。当同一域名同时开启 DNS 代理和脚本标签时,即为混合模式。

  1. 打开您的域名,然后进入设置选项卡

    域名 → 您的域名 → 设置。

  2. Turn on DNS Proxy

    在您的域名注册商处添加我们提供的 DNS 记录,然后进行验证。此步骤可让搜索引擎访问 Proxylang。

  3. Keep Script Tag on

    您的访客将继续使用您已安装的脚本标签。

  4. Done

    两者同时开启时,域名徽章显示为“混合 (SEO)”。关闭其中任何一个,网站将恢复至另一种模式,且不会中断服务。

费用说明

机器人访问将消耗您的额度,费率为正常情况的四分之一。三项限制可防止过度抓取耗尽额度。您可以在设置页面的 SEO 部分降低每一项限制。

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

机器人访问单页时可翻译的量,以 AI Token 计算(约 2.7 Token/字)。默认值为 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.

登录后才能访问的页面无法从Hybrid模式中获益。请将这些页面保留在脚本标签中。

下一步:多个站点与子域名


管理多个站点与子域名

免费添加子域名,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.

所有站点共享一个字数额度。添加第二个站点不会增加字数,而是从同一额度中扣除。

若后续降级至更小套餐,现有站点不会下线。您已添加的站点将全部保留,但在额度恢复前无法添加新站点。

子域名继承的内容

子域名继承根域名的连接模式、语言、站点地图设置及高级选项卡开关。您只需在根域名上设置一次。

若根域名使用DNS代理或混合模式,每个子域名也需配置专属DNS记录。应用会显示所需记录:根域名需四条(裸域名、www及两条验证记录),子域名需两条。

为各站点选择模式

营销站点或落地页

Hybrid mode

您希望在其他语言中被搜索到。如果您的计划和网站允许(Lite 计划及以上,且网站通过代码构建),请使用 Hybrid 模式。否则,脚本标签仍会为访客翻译内容。

应用或客户门户

Script tag

登录后的页面不会被索引,因此无需追求搜索优化。无需更改DNS,流量路径不受影响。

Features

在线聊天

支持双向翻译的聊天气泡。一次订阅,覆盖所有网站,坐席数量不限。

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

核心功能

在您的网站上添加聊天气泡。访客使用母语进行咨询,您使用母语阅读并回复。双方内容均可实时翻译。一次订阅即可覆盖账户下所有网站,且支持无限量坐席接入。

立即开启

打开域名,进入“实时聊天”选项卡并开启开关。气泡会出现在您的网站上,且该网站会显示在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.

点击对应行中的“移除”按钮来移除某人。

回复聊天

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

桌面端和移动端应用

下载页面提供适用于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

所有域名均已开启图片翻译。您的余额是唯一的限制。请在“账单”中购买套餐。套餐有效期为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.

适用于所有模式。通过“粘贴图片地址”的方法,匹配过程在访客的浏览器中运行,因此需要脚本标签(脚本标签或混合模式)。

翻译范围

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 种目标语言,具体列表可在该域名的“图像翻译”选项卡中查看。

下一步:搜索翻译


搜索翻译

翻译访客在搜索框中输入的内容,让他们获得任何语言的搜索结果。

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

设置

1. Buy searches

使用预付费搜索额度支付。请在“账单”中购买套餐。套餐永不过期。

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

2. 开启域名搜索

打开域名,进入“高级”选项卡,并开启“翻译搜索查询”。在您拥有额度之前,该开关将保持关闭状态。更改生效可能需要长达五分钟,请稍后再进行测试。

工作原理

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.

页面列表过滤搜索框

有些搜索框不会向服务器发送任何请求,它们仅过滤页面上现有的列表(如常见问题或产品网格)。这类搜索框需要在输入框中添加一个属性:

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

访客统计与语言分布

仪表板上的“分析”选项卡显示访客、访问量、页面、访客来源、国家/地区、设备以及阅读翻译版本的用户占比。系统不使用 Cookie;访客通过无法还原为地址的加密指纹进行统计。

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

让您的文字走向世界

“仪表板”选项卡显示您已使用的计划额度。“指标”和“页面”选项卡按天、语言和页面进行详细拆解。

  • 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 词的页面在三种语言下打开,将消耗 1,500 词。在 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 张图片和 2,000 次搜索,Pro 计划包含 30 张图片和 2,000 次搜索,Business 和 Global 计划包含 100 张图片和 2,000 次搜索。升级计划仅需补齐差价。包含的额度永不过期,且每个账户仅授予一次,而非每次升级都授予。

如果额度用尽,可以在“账单”页面、“图片翻译”页面或“反向搜索”页面购买预付费包。额度包可在您的所有网站间共享。购买的图片包有效期为 12 个月,在到期前 30 天您会收到邮件提醒;购买的搜索包永不过期。

购买页面将在新标签页中打开。返回“账单”页面后,您的余额会自动刷新。

优惠码

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

推荐好友

您的推荐链接位于“推荐”页面。通过该链接注册的朋友在购买首个计划时可享受 85 折优惠。当他们订阅后,您的下一次月度付款将享受 5 折优惠,每位朋友限一次。链接有效期为 90 天。额度包不计入此项,计划才计入。

下一步:属性参考

For developers

属性参考、JavaScript API与事件、Live Chat API、内容安全策略、从右至左语言。

查看属性参考

For developers

每个类、属性和注释标记都会从您的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与事件


使用 JavaScript API 与事件

For developers

读取当前语言,构建自定义切换器,并响应语言变更。

window.Proxylang

支持脚本标签、混合模式及 DNS 代理模式。

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:就绪

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:已翻译

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:语言切换

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.

告知您的团队访客身份

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

下一步:内容安全策略


内容安全政策

For developers

大多数网站都没有内容安全策略。如果您的网站尚未设置,请跳过此部分。

您是否需要此功能?

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.

脚本标签与混合模式

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:

如果您的网站是通过元标签设置策略,则规则相同:

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 代理模式

由于翻译是在服务器端添加的,因此大多数策略无需更改即可正常工作。仅当策略阻止所有内联脚本时才需要调整: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 .