---
title: "Translate .NET and Qt files"
description: "Translate .NET RESX and RESW resource files and Qt Linguist .ts files up to 12 MB. Resource names, headers and contexts stay, and only the strings are written."
canonical: "https://ai-glot.com/docs/formats/dotnet-and-qt"
updated: "2026-10-12"
---

# Translate .NET and Qt files

.NET resource files (`.resx` and `.resw`) and Qt Linguist files (`.ts`) are accepted up to **12 MB**. In both, the identifiers your code compiles against are structure and never change. Only the strings people read are translated.

> **Tip: Try it free**
>
> Drop a file of up to 2 MB on the free translators for [RESX](https://ai-glot.com/file-formats/resx-translation) or [Qt Linguist](https://ai-glot.com/file-formats/qt-translation) to try them with no account, five files a day. The app, the API and the CLI take files up to 12 MB.

## What is translated, and what is left alone

| Format      | Translated                      | Left as it was                                                                                                            |
| ----------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| RESX, RESW  | The value of each string entry  | `name` attributes, the resource header and schema, `xml:space`, the comment column, images and other non-string resources |
| Qt Linguist | The translation of each message | Context names, source strings, locations, `%1` and `%n`, HTML fragments                                                   |

For Qt, the file's `language` attribute is updated to the target when you translate into one language. A `.ts` file is recognised by its content: a TypeScript file with the same extension is refused.

## What you can ask

**A .NET application**

Produces a Resources.fr.resx next to the original.

Translate the values into French. Keep placeholders such as \{0} and \{1} unchanged, and leave resource names and comments as they are.

**Skip non-string resources**

Makes the plan list what it will write before you approve.

Translate only text strings into German. Leave embedded files, images and any entry that is not a string.

**A first draft for a reviewer**

Fills every message of a Qt file for a native speaker to polish.

Translate all the unfinished messages into Spanish. Keep %1 and %2 unchanged and keep the mnemonic ampersands.

**Only what is new**

Leaves reviewed messages untouched after a new lupdate.

Translate only the messages that are unfinished in the Italian file, and leave the finished ones as they are.

**Consistent terms**

Names the words that must read the same in every dialog.

Translate into Portuguese. Always translate "Settings" as "Configurações" and "Project" as "Projeto".

## Good to know

- **One target language per upload** for both formats. If you ask for two, the plan translates one and says so. Run the file once per language: your [glossary](/docs/platform/glossaries) carries over.
- **Qt plurals.** Messages that use Qt's numerus forms are left as they are for now. The plan says how many there are so you can finish them in Qt Linguist.
- **Compile as usual.** For Qt, run `lrelease` after, exactly as after translating in Qt Linguist. For .NET, compiling into a satellite assembly is unchanged.
- **Comments.** A RESX comment documents the string for your team, so it is left in English unless you ask otherwise.
- **Output filter.** Not available: the whole file comes back.
- **Ceiling.** 12 MB.

## Related

- [Android and Apple strings](/docs/formats/android-and-apple-strings) and [XLIFF](/docs/formats/xliff-and-cat-tools) for other localization formats.
- [Other XML](/docs/formats/xml) for XML that is not a resource file.
- [All file formats](/docs/formats)
