FAQ

Common questions about Localization Checker, a Unity editor plugin for localization QA: Unity and Tuanjie versions, what the scan and patrol check, project safety, purchases and refunds. For step-by-step instructions, see the documentation. If you still need help, visit Support.

Installation and compatibility

Which Unity versions are supported?

Unity 2022.3 LTS or later, including Unity 6, and Tuanjie Engine 2022.3. Tested versions include Unity 2022.3 LTS, Unity 6 (6000.3–6000.6), and Tuanjie Engine 2022.3 (Tuanjie 1.5 and 1.10), with TextMeshPro 3.0 and 3.2 and UGUI 1.0 and 2.x.

Does it work in Tuanjie Engine?

Yes, in Tuanjie Engine 2022.3. UI Toolkit text checks are available only in Unity 6, so they are not available in Tuanjie Engine or Unity 2022.3. Tuanjie’s Advance Text Processing shapes text using the source font file; the checker’s character checks look up characters individually.

Which UI text does it check?

TextMeshPro and legacy UI Text inside a Canvas, plus UI Toolkit text in UIDocuments on Unity 6. A 3D TextMeshPro object outside a Canvas does not receive layout or overlap checks. UI text outside a Canvas is not scanned. Scans include values already present in open scenes, but do not run your game’s runtime text-assignment or UI-creation logic. Use the Play mode patrol to check content that your game creates or updates on the screens you open.

Do I need Unity Localization or I2 Localization?

No. If installed, both are read automatically: Unity Localization 1.5.2 or later, below 2.0, and I2 Localization 2.8.9 or later (tested with 2.8.22). Unity Localization 2.0 is listed under Sources but is not read. You can also use your own CSV, TSV, Excel, JSON, XLIFF, and PO tables without either package.

Why is the menu missing?

The checker requires the Unity UI (uGUI) package. Without it, the plugin compiles, but there is no supported text to check and the menu is not shown. With uGUI installed, open Window > ★ Localization Checker.

Why are Canvases with TextMeshPro text skipped?

Import TMP Essential Resources from Window > TextMeshPro > Import TMP Essential Resources. Without these resources, the affected Canvases are skipped and the results explain why.

Does it add anything to builds or change my project?

The plugin runs only in the editor. It adds nothing to player builds and has no Resources folder. During a scan, it measures UI copies in a hidden preview scene without changing, marking dirty, or saving your original scenes, prefabs, or assets. Settings are saved in ProjectSettings/LocalizationChecker.json; the checker creates nothing under Assets.

The Play mode patrol switches the game’s language and restores it afterward. See the manual, part 2, for what the patrol changes and how it restores that state.

Which render pipelines are supported?

The checks themselves do not render the UI. The side-by-side preview uses a preview camera to render UI copies and has been tested with the Built-in Render Pipeline and URP.

Why did it not scan or find something?

What if my UI is created at runtime or its text is assigned by scripts?

A scene scan reads the objects currently loaded in the editor; a prefab scan reads the saved asset. Project scripts are removed from the measurement copies, so the copies do not run your game’s UI creation, asynchronous loading, or text-assignment logic. Values already present in an open scene are included, but use the patrol to check content that your game creates or updates in Play mode.

Use the patrol instead: enter Play mode, open the screen you want to check, then bring the checker window to the front and click it to give it focus. Press F8, or use the button in the patrol bar. The patrol switches through your languages using your localization system and reads the engine’s actual layout.

Why does the scan not reflect my changes?

For Open scenes and Selected objects, the scan uses the current loaded scene state, including unsaved edits. Each scene must have been saved at least once. Prefab scopes use the saved asset, so save any Prefab Mode edits first. Run another scan after changing the UI. If you change a setting after a scan, the Scan row shows Out of date: settings changed.

Why is text outside a Canvas not reported?

UI text outside a Canvas is not scanned. A 3D TextMeshPro object outside a Canvas does not receive layout or overlap checks.

Why are hidden tabs reported as overlapping?

When measuring hidden objects, the scan shows all hidden objects in their Canvas at once. Tabs that never appear together in the game can therefore overlap in a scan. Use the patrol to check the panels as the game displays them. Ignore rules do not suppress UI overlap or overflow issues.

Why is localized text reported as hard-coded?

There are three common causes:

If text boxes appear to contain a table’s keys, the scan offers Turn it on and scan again, which enables that setting and starts a new scan.

What does “The scan stopped:” mean?

The message includes the reason. Resolve it, then scan again. Tables that cannot be read appear under Sources with an explanation rather than in the log. Canceling a scan stops it after the current step and produces no results.

How to read the results

What do Critical, Warning, and Info mean?

These levels indicate review priority. Critical marks a high-priority issue that may affect text display or localization completeness. Warning marks a potential problem, including risks that depend on the device. Info provides a review hint. Check the details and actual UI before deciding what to change.

What are rows marked “for reference”?

These rows provide context: unbound text, text that may be assigned by a script, characters supplied by a fallback font, input field labels that were not measured, issues already present in the source language that did not get worse, and scan issues superseded by patrol results.

The Detail column explains the reason. These rows are excluded from the overview counts and the summary’s three severity totals. Hide rows for reference also removes them from the list and exports.

What does the Confidence column mean?

What is Key binding confidence?

It describes how confidently the checker can identify the key shown by a text object.

Why is an overflow not counted when it also affects the source language?

If an issue exists in the source language and the translation does not make it worse, it is shown for reference. Fix the source-language layout first.

Why is a correct translation reported?

Ending punctuation, whitespace, paired symbols, and number checks flag differences. Those differences may follow a language’s conventions, such as changing ! to . in Spanish, or be intentional, such as a unit conversion. Treat them as review hints.

Same as the source text can also flag names, OK, and regional variants of the same language. Add ignore rules for results you have reviewed. The manual, part 2, lists the known false positives.

Translation sources and CSV format

Which file formats can it read?

CSV and TSV (UTF-8, with a header row, one key column, and one column per language); Excel workbooks (.xlsx and .xlsm, with each worksheet treated as a table); JSON (one file per language, grouped by key, or grouped by language, with nested names joined by dots); i18next JSON; XLIFF 1.2 and 2.0; and gettext PO (one file per language). Unity Localization String Table Collections and I2 language sources are read directly.

For Excel workbooks, checks use stored cell values and cached formula results, without applying Excel’s number or date display formats. A value may therefore differ from what Excel displays.

Why does a CSV saved from Excel contain garbled text?

CSV and TSV files must use UTF-8. GBK and other code pages are not supported. In Excel, choose CSV UTF-8 when saving.

The checker also detects signs of mojibake within translations, including UTF-8 text misread as Windows-1252, Latin-1, GBK, Windows-1250, Windows-1251, Shift-JIS, or CP949.

How are columns mapped to languages?

The header row supplies the initial mapping. The first column is the key column; language names or codes such as en, English, Deutsch, and 日本語 map to their language codes. Use Edit… to map the remaining columns. ID and No are never treated as languages.

The source language is matched by code. For example, zh-CN and zh-Hans are treated as different languages.

Why was the entire file rejected?

A syntax error, duplicate key, or missing mapped header prevents the file from being read. Sources shows the reason and line number, or worksheet row number. Legacy .xls files and password-protected workbooks are not supported; save them as unprotected .xlsx files.

Why does a Google Sheets export have extra quotes or missing line breaks?

In TSV files, quotes around cells are treated as literal text. Google Sheets also replaces line breaks within cells with spaces when exporting TSV. Download CSV to preserve quoted cells and line breaks.

How are PO plural forms handled?

Each plural form becomes a separate key, such as item[0] and item[1]. The number of forms for each language comes from its file’s Plural-Forms header, or defaults to two if the header is absent. An empty msgstr[n] counts as a missing translation for that form. An empty msgstr or a fuzzy entry also counts as untranslated. See the manual, part 1, for details.

The website and the plugin

What is available on this website?

The plugin documentation in English and Simplified Chinese, this FAQ, support information, and the privacy page. A browser-based checker for translation tables and font files is in development. It is a separate product; the plugin checks the actual UI inside Unity.

Purchase and refunds

Where can I buy it?

Coming soon to the Unity Asset Store internationally, the Tuanjie store in China, and itch.io. Store links are not yet available. There is no trial or free version.

How do Unity Asset Store refunds work?

Refunds follow section 2.8 of the Asset Store EULA. A request within 14 days for an undownloaded asset does not by itself qualify for an automatic refund; license type, payment method, and upgrade status also matter. Submit requests through Order History. Unity reviews and processes refunds.

For an advertised feature that does not work in a supported editor, email support@localizationchecker.com with your invoice number. If we cannot resolve the defect, we will support your refund request. Our policy is to approve refunds for downloaded purchases only in that situation. Unity’s rules and applicable rights still govern the request.

How do Tuanjie store refunds work?

Purchases from the Tuanjie store follow that store’s refund rules. Email the same support address with your order details.

How do itch.io refunds work?

Purchases on itch.io follow itch.io’s refund policy. Email the same support address with your order details.

How many seats does one purchase cover?

The store’s end-user license applies. On the Unity Asset Store, editor extensions are licensed per seat. On itch.io, the license stated on the product page applies.

Common errors and messages

“The scan stopped:” …

The message in the window includes the reason. Resolve it and scan again. Unreadable tables are listed separately under Sources.

Why is a table listed under Sources with an error?

The table was not read. Possible causes include a syntax error, duplicate key, missing mapped header, legacy .xls format, password protection, non-UTF-8 encoding, XLIFF inline codes or split segments, or a Unity Localization version outside the supported range of 1.5.2 or later and below 2.0. Resolve the reported cause, then scan again.

Why does TextMeshPro print a “Units Per EM” message?

This is harmless. TextMeshPro prints it the first time it reads a font asset saved with an older version of TextCore.

What if a warning says the settings file cannot be read?

The checker logs the warning once and uses default settings. Fix or delete ProjectSettings/LocalizationChecker.json.

“The last patrol ended on a failure:” …

The patrol bar includes the reason. Common causes are a language that does not remain selected, the game changing screens during a check, or Unity Localization not finishing initialization when entering Play mode again with domain reload disabled.

Your method that reports the current language must return the same code used to switch to it. For the initialization issue, exit and re-enter Play mode.

Why does F8 do nothing?

Enter Play mode and keep it running. Bring the checker tab to the front and click inside the checker window to give it focus, then press F8. This is a window shortcut, so pressing F8 in the Game view does nothing. If another shortcut uses F8, use the button in the patrol bar.

A check cannot progress while Play mode is paused. In Unity 6, it also stops progressing when the editor is in the background and Run In Background is off.

Why was no screenshot saved?

Keep the checker window in a different dock group from the Game view; otherwise the Game view does not render. A World Space Canvas without its own camera or a main camera will not receive an outline. If your game also requests a Unity screenshot in the frame being captured, only one of the two files is written.

Why does a screenshot show the previous language?

Increase the number of frames to wait after each language switch in the patrol settings. The patrol waits for frames, not seconds. Text that updates after that wait may still be read in the previous language.

Why does Unity 6.3 show a “Packages with Errors” dialog?

This is a Unity dialog. Unity 6.3’s graphical editor can show it when opening projects with registry packages such as Unity Localization. Close the dialog to continue.

Contact

Email support@localizationchecker.com. Support is available in English and Chinese. The support page explains what to include. You can also find these contact details in Window > ★ Localization Checker > About.