Translate a YAML file into Turkish
Upload your YAML locale file (Rails, Symfony, Hugo, i18n-js) and Manuce translates the values into Turkish, returning the same file with keys, indentation, anchors and comments untouched. Placeholders such as %{name} are checked, plurals are mapped to the Turkish one/other categories, and a report lists anything left as it was.
What it costs
For a YAML file with about 2,000 words of values, into Turkish:
To understand, internal use.
Ready to send, by the technical specialist.
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.
Placeholders and suffixes: where Turkish really bites
Turkish attaches its grammar to the end of words: case, possession and plural are suffixes that follow vowel harmony. A standalone placeholder causes no trouble: welcome: "Welcome, %{name}" becomes "Hoş geldiniz, %{name}". The difficulty starts when the sentence needs a suffix on the placeholder's value.
Take sent_to: "Sent to %{name}". "To Ahmet" is Ahmet'e, "to Ayşe" is Ayşe'ye: the suffix depends on a name nobody knows at translation time. Writing "%{name}'e gönderildi" will be wrong for many users. A sound translation works around it: "%{name} adlı kişiye gönderildi" or "Alıcı: %{name}".
Two practical consequences:
- placeholders often move, because the Turkish verb comes last; that is expected, what matters is that they are all there;
- strings stitched together in code, such as
"%{count} %{item}", translate poorly into Turkish; full sentences in the source file give better results.
Dotted and dotless i, long words, tone of voice
Turkish has two letters i: i/İ with a dot and ı/I without. The translation spells them correctly in the file; the risk comes later, if your code changes case using a non-Turkish locale. "bilgi" then becomes "BILGI" instead of "BİLGİ", and "KAYIT" lowercased turns into "kayit" instead of "kayıt". If buttons or headings are uppercased by code or by a stylesheet, make sure the tr language is declared there.
Suffixes make words long: ayarlarınızı ("your settings", as an object) or güncellenemedi ("could not be updated") are single blocks with no space to break on. A short label in the source may no longer fit a fixed-width button.
On tone, Turkish interfaces usually address the user formally (siz), while buttons use the short imperative: Kaydet, Sil, İptal. Check in the free sample that this register suits your product.
Plurals, percentages and dates in Turkish
Turkish has only two CLDR plural categories, one and other, and a noun stays singular after a number: "1 dosya", "5 dosya", never "5 dosyalar". Manuce adapts plural blocks to these two categories, so getting one: "%{count} dosya" and other: "%{count} dosya" with identical text is correct, not an oversight. If your source language has more categories, such as Russian or Polish, the extra ones are reduced accordingly.
The percent sign goes before the number: "50% off" becomes "%50 indirim". In YAML, a value starting with % must be quoted, and Manuce keeps the quoting style of the source. If the original value was unquoted, check that line when you load the file.
Date formats are not translated: "%m/%d/%Y" stays as it is. Turkish usage is %d.%m.%Y (31.12.2025), so change those keys yourself. The same applies to number separators if your file defines them: Turkish writes 1.250,50, with a decimal comma and a dot for thousands.
What you get back, and what stays with you
You receive the same file, in the same format, ready to drop back into the project: indentation, key order, quotes, comments, line endings, encoding and BOM preserved; only the values change. For Rails, Symfony, Hugo and i18n-js, the root language key is handled (en: becomes tr:), and anchors as well as | and > blocks are kept.
Every translated value is compared with its source. If a %{name} or {name} placeholder, or a tag, is missing or altered and the mismatch persists, the source value is kept and the report says so. The report lists translated strings, strings left unchanged and the reason why.
Not translated: keys, empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable. You pay for the words in the values only, keys and tags excluded.
Left to you: placing the Turkish file where your framework expects it, adapting date formats, reworking strings assembled in code and setting Turkish case rules in your application.
Preparing the file and checking the result
- Encoding: save the source as UTF-8. Since encoding is preserved, a Latin-1 (ISO-8859-1) file cannot hold ğ, ş, ı or İ.
- Terms to keep: product names, brands, module names. Anything marked as non-translatable is left alone; for the rest, check the free sample and then the translation.
- Apostrophes: Turkish puts one between a proper noun and its suffix (Manuce'a, İstanbul'da). Inside a single-quoted YAML value it must be doubled:
'Manuce''a hoş geldiniz'. Load the returned file with your framework's parser to confirm it reads cleanly. - Location: for example
config/locales/tr.ymlfor Rails,translations/messages.tr.yamlfor Symfony,i18n/tr.yamlfor Hugo. - In-context test: open a few screens in Turkish to spot labels that overflow and i's uppercased the wrong way.
In practice
- Save your YAML file as UTF-8 and note any values that must stay unchanged.
- Upload it to Manuce: instant quote on the words in the values, free Turkish sample.
- Check the sample (formal tone, placeholders, suffixes), then start the translation.
- Download the Turkish file and the report, place it in your project and load it with your parser.
- Test a few screens: label length, İ/I capitals, date formats.
Frequently asked questions
Does the root key en: become tr:?
Yes, for Rails, Symfony, Hugo and i18n-js files the root language key is handled. Everything else in the structure stays identical: indentation, key order, anchors and comments.
Why do my one and other plurals have the same Turkish text?
Because Turkish keeps the noun singular after a number: "1 dosya", "5 dosya". Both CLDR categories for the language are present, but their content is often identical. That is correct Turkish.
What happens if a %{name} placeholder goes missing?
Every translated value is checked against the source. If a placeholder or tag mismatch persists, the source value is kept in the file and the report flags it, so you know exactly which string to revisit.
Will my date formats switch to the Turkish style?
No, date formats are not translated. A string such as "%m/%d/%Y" stays as it is; replace it with "%d.%m.%Y", the Turkish convention, yourself.
Why does Turkish cost more than some other languages?
Turkish carries a language coefficient of ×1.25 on the per-word rate. The quote, based only on the words in the values, appears as soon as you upload, along with a free sample before you pay.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into Turkish, other files
See also
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.