ManuceTranslate a fileTranslate a PO file (gettext) into Turkish

Translate a PO file (gettext) into Turkish

Upload your .po or .pot and Manuce returns the same file with Turkish msgstr values, the Language and Plural-Forms headers set, two plural forms and checked printf placeholders. Turkish brings its own traps, from suffixes attached to placeholders to dotted and dotless i and nouns that stay singular after numbers. This page covers them, along with what to prepare and check.

Upload my file See pricing

What it costs

For a PO file (gettext) with about 2,500 words of values, into Turkish:

Essentiel
€19

To understand, internal use.

Professional
€57

Ready to send, by the technical specialist.

Premium
€110

Cross-checked. For documents that commit you.

Price for one language, original layout included. VAT not applicable — article 293 B of the French General Tax Code (CGI). The exact quote, based on your file's word count, is shown before you pay.

Suffixes and word order: what Turkish does to your %s

Turkish is agglutinative: grammatical case is expressed by suffixes attached to the word. Those suffixes also change with the word's last vowel (vowel harmony). Proper nouns take an apostrophe before the suffix: Ankara'ya, İzmir'e. A %s placeholder is unknown at translation time, so nobody can tell whether it needs 'a or 'e.

A good Turkish translation therefore avoids attaching a suffix to the placeholder. For msgid "Copy to %s", a safe rendering is msgstr "%s konumuna kopyala" ("copy to the location %s"). Here the suffix sits on konum, not on the variable. The same approach gives "%s adlı dosya silindi" ("the file named %s was deleted").

Turkish puts the verb last and often reverses the order of complements. "Showing %1$d of %2$d results" naturally becomes "%2$d sonuçtan %1$d tanesi gösteriliyor", with the two numbers swapped. That only works because the source uses positional placeholders. With %d ... %d the order is fixed, and the Turkish sentence has to be bent to fit.

Plurals: two forms, often identical

Turkish has two CLDR plural categories, one and other. The returned file therefore contains msgstr[0] and msgstr[1], with a matching Plural-Forms header.

What surprises many developers is that a noun stays singular after a number. Turkish says 3 dosya, never 3 dosyalar. The expected result is:

  • msgid "%d file" / msgid_plural "%d files"
  • msgstr[0] "%d dosya"
  • msgstr[1] "%d dosya"

Two identical forms are not a mistake. The plural suffix -lar/-ler only appears when there is no number: Dosyalar silinsin mi? ("Delete the files?").

Some older projects declare Turkish with a single form (nplurals=1). If your code or translation platform expects that setting, compare the returned header with your other catalogues before merging.

İ and ı, capitals and encoding

Turkish has four letters where English has two: i/İ (dotted) and ı/I (dotless). İptal ("Cancel") starts with a dotted capital İ. If your app uppercases labels using English rules, iptal becomes IPTAL instead of İPTAL, and the word reads differently. The reverse also happens: lowercasing an identifier under a Turkish locale turns INFO into ınfo.

  • Keep capitalisation in the msgstr rather than recomputing it in code.
  • If you use a CSS uppercase transform, declare lang="tr" on the page.

Manuce keeps the file's encoding as it is. A catalogue declared as charset=ISO-8859-1 cannot hold ğ, ı, ş, İ or Ş. Switch the header to Content-Type: text/plain; charset=UTF-8 before uploading.

On register, Turkish interfaces use the polite siz form and short imperatives on buttons (Kaydet, Sil). The msgctxt line is what separates Aç (an "Open" button) from Açık ("open" as a status).

What Manuce returns, and what it does not do

You get the same file back, ready to drop into the project. Indentation, entry order, quotes, comments, line endings, encoding and BOM are all preserved; only the values change.

  • msgctxt, msgid_plural and #., #:, #, comments are kept, and context and comments inform the translation.
  • A .pot comes back as a Turkish .po, with Language and Plural-Forms set.
  • Each msgstr is compared with the source: %s, %d, %1$s and tags. If a mismatch persists, the source value is kept and the report says so.
  • Not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable.
  • A report lists the strings translated and those left as they were, with the reason for each.

Manuce does not compile the .mo; you do that on your side. It does not take glossaries or terminology instructions either. For a product name that must stay in English, check the free sample, then the delivered translation. Turkish carries a surcharge (×1.25 coefficient), applied to the words in the values, with keys and tags excluded.

Preparing the catalogue and checking the result

Before uploading:

  • Regenerate the .pot so it matches the current code.
  • Use positional placeholders (%1$s, %2$s) in any string with more than one variable, because Turkish will need to reorder them.
  • Add a msgctxt or a #. comment to short, ambiguous strings (Open, Clear, Archive).
  • Avoid building sentences by concatenation (_("Delete") + " " + name), since a Turkish suffix has nothing to attach to.

After delivery:

  1. Run msgfmt --check on the returned .po.
  2. Test plurals with 0, 1 and 2.
  3. Check how much room labels take up. Turkish words, loaded with suffixes, tend to run long: Değişiklikleri kaydet for "Save changes".
  4. Review any all-caps screens for a misplaced dotless I.

In practice

  1. Update the .pot or .po and set its header to UTF-8.
  2. Upload the file to get an instant quote, then read the free Turkish sample.
  3. Download the Turkish .po and the report on strings left as they were.
  4. Run msgfmt --check, compile the .mo and test plurals and capitals in the interface.

Frequently asked questions

Why are msgstr[0] and msgstr[1] identical in my Turkish .po?

In Turkish, a noun stays singular after a number: "3 dosya", not "3 dosyalar". Both forms are therefore often the same, and that is correct. The plural suffix only appears in sentences without a number.

Can I send a .pot instead of a .po?

Yes. The template comes back as a Turkish .po, with the Language and Plural-Forms headers set and two plural forms for each plural entry. Regenerate it from the code before sending.

What happens if a %s or %1$s placeholder goes missing in translation?

Every translated value is compared with the source, including placeholders and tags. If the mismatch persists, the source string is kept unchanged and the report flags it, so your catalogue still compiles.

Will my product name stay in English?

Manuce does not accept glossaries. Identifiers, URLs and items marked as non-translatable are left untouched. For a specific term, check the free sample, then the delivered translation.

Does Manuce deliver the compiled .mo file?

No. You receive the .po in the same format as the original. Compiling the .mo is done on your side, for example with msgfmt, whose --check option also validates the file.

The specialist in charge

This subject goes to Dédale, the technical specialist. See how it works.

Try it on your own file, free

A sample of your file translated at the level you choose, before any payment. You judge, then you decide.

Upload my file