Translate a JSON i18n File into Russian
Manuce translates the values of your JSON i18n file into Russian (i18next, react-intl, vue-i18n, next-intl, ngx-translate) and returns the same file with keys and structure intact. Placeholders are checked string by string, and ICU messages gain the few and many forms Russian requires. Cyrillic fonts, room for longer text and testing your screens remain on your side.
What it costs
For a JSON i18n file with about 2,000 words of values, into Russian:
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.
What Russian changes in your UI strings
Russian is written in Cyrillic and runs longer than English: long words, case endings and fuller phrasing. “Save” becomes «Сохранить», “Account settings” becomes «Настройки аккаунта». On a lone label the difference is minor; on a tab, a badge or a narrow column, text overflows or gets clipped.
- Fonts: if your web font is loaded with the Latin subset only, Cyrillic letters show up as boxes or fall back to a font with a different design. Make sure the Cyrillic subset is included, for every weight you use.
- Capitalisation: Russian capitalises only the first word of a heading or button. “Account Settings” is not «Настройки Аккаунта» but «Настройки аккаунта».
- Punctuation: Russian uses «ёлочки» guillemets rather than straight or curly quotes, and an em dash in some nominal sentences («Цена — 10»).
- Numbers and dates: decimal comma, a space as thousands separator, dates written 31.12.2025. These come from your code, for instance
Intl.NumberFormat('ru'), not from the translation file.
Four plural forms and placeholders that need case endings
English gets by with one and other. Russian needs four, depending on how the number ends:
- one: 1, 21, 101 (but not 11) → «1 файл»;
- few: 2–4, 22–24 (but not 12–14) → «3 файла»;
- many: 0, 5–20, 25–30… → «5 файлов»;
- other: fractions → «1,5 файла».
So {count, plural, one {# file} other {# files}} becomes {count, plural, one {# файл} few {# файла} many {# файлов} other {# файла}}. Without few and many, the library falls back to other and displays «5 файла», an error any Russian reader will spot.
Placeholders raise a second issue: Russian declines nouns and marks gender on past-tense verbs. In “Share with {name}”, the name should take the instrumental case, which a placeholder cannot do. “{name} edited the file” needs a masculine (изменил) or feminine (изменила) verb. Wording such as “Shared with: {name}”, or a gender select already present in the source, avoids the dead end.
What Manuce returns, and what it does not do
You upload the JSON file straight from your project, flat or nested, with its string arrays. You get the same file back: indentation, key order, quotes, comments, line endings, encoding and BOM are preserved; only the values are now in Russian.
- Keys such as
"cart.empty.title"are never translated. - Placeholders
{name},{{count}},%sand ICU messages (plural,select) are checked string by string: same variables, same number of times. - In ICU
pluralmessages, thefewandmanycategories are added. - Empty values, URLs, email addresses, numbers, colours, date formats, identifiers and anything marked as non-translatable are left as they are.
- If a translated value still differs from the source (missing variable, lost tag), the source value is kept and the report says so.
The report lists translated strings and those left unchanged, with the reason. Since only values change, no keys are added: if your project handles plurals with i18next-style key suffixes (_one, _other), the _few and _many keys are yours to create. Checking how the strings render in your interface is also up to you. Russian carries a surcharge: a ×1.25 coefficient on the per-word rate, counted on values only.
Preparing the file before upload
- Encoding: save the file as UTF-8. The original encoding is kept as it is, so it should be one that can hold Cyrillic.
- Whole sentences: prefer one complete message,
"items": "{count, plural, …}", over two fragments like"prefix": "You have"and"suffix": "items". Russian makes the noun agree with the number; two pieces translated separately cannot agree. - Placeholder position: avoid dropping
{name}or{city}mid-sentence where the word would need a different case; put it after a colon or at the end of the label. - Names to keep in Latin script: for a brand or product name that must stay as it is, check how it is handled in the free sample, then in the delivered translation.
- Word count: only words in values are counted, so long, deeply nested keys do not add to the quote.
Checking the result in your app
- Read the report: a string left in the source language is either non-translatable or had a placeholder or tag mismatch the translation could not resolve.
- Test plurals with 1, 2, 5, 11, 21 and 22: you should see «файл», «файла», «файлов», «файлов», «файл», «файла».
- Go through narrow screens (menus, buttons, tabs, mobile notifications) to catch overflow and clipping; allow line wrapping or truncation with a tooltip.
- Check the font in every weight: a bold weight loaded without Cyrillic glyphs falls back to another typeface.
- Check the register: Russian interfaces usually address the user with the polite «вы». The free sample shows you the tone before you pay.
In practice
- Upload the source JSON file in UTF-8 and choose Russian: the quote appears at once, based on the words in values.
- Read the free sample to judge the tone and how brand names are handled.
- Pay, then download the Russian file and its report from your account.
- Drop the file into your project (for example ru.json), add _few and _many keys if you use suffixed plurals, then test plurals and narrow screens.
Frequently asked questions
Will my keys or file structure be changed?
No. Keys are never translated, and the returned file keeps its indentation, key order, quotes, comments, line endings, encoding and BOM. Only the values change.
My ICU messages only have one and other. What happens in Russian?
The few and many categories Russian needs are added to every ICU plural message. Afterwards, test with 1, 3, 5 and 21 to see all four forms on screen.
I use i18next with _one and _other key suffixes. Is that handled?
The values of those keys are translated, {{count}} placeholders included. No keys are added to the file, though: you need to create the _few and _many keys yourself, otherwise i18next falls back to _other for 2–4 and 5–20.
Why does Russian cost more than some other languages?
Russian is a surcharge language, with a ×1.25 coefficient on the per-word rate. Only words in values are counted, keys and tags excluded, and the quote is shown as soon as you upload the file.
The Russian text overflows my buttons. Can Manuce shorten it?
Manuce does not take per-string length limits. As Russian runs longer than English, the safer route is to allow wrapping or truncation with a tooltip in the interface, then check your narrow screens.
The specialist in charge
This subject goes to Dédale, the technical specialist. See how it works.
The same file, into another language
Into Russian, 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.