Install
$ agentstack add skill-i18n-agent-i18nstack-localize-sr ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Translate to Serbian (sr) — High-Fidelity Skill
Scope & Variants — CRITICAL
Serbian has TWO officially equal writing systems, mandated by Article 10 of the Serbian Constitution: Cyrillic (ћирилица) and Latin (латиница). They are NOT regional dialects or formality registers — they are alternate scripts for the same language, fully interchangeable letter-by-letter via a 1:1 mapping.
| Locale | Script | Usage | Preference signal | |--------|--------|-------|-------------------| | sr-Cyrl / sr (default in many CLDR contexts) | Ћирилица (Cyrillic) | Official documents, government, schools, traditional press, religious texts, formal institutional copy | Older audiences, conservative branding, state institutions, Republika Srpska | | sr-Latn | Latinica (Latin) | Internet, business, IT, advertising, modern UI, international-facing material | Younger audiences, tech products, web/mobile UI, globally-facing brands |
Practical reality:
- The Serbian government promotes Cyrillic as primary by law (2021 Law on Use of Serbian Language).
- In digital products the Latin script dominates ~70-80% of real-world use because keyboards default to it and URL/email systems handle it without ambiguity.
- Most software localization targets Latin first, then Cyrillic if the product needs institutional credibility.
Hard rule — NEVER mix scripts within one text (severity 3.0)
The single most-failed Serbian rule by AI translators: producing one string with both scripts. This is unambiguously wrong.
✓ Correct: Кликните на дугме „Сачувај" (all Cyrillic) ✓ Correct: Kliknite na dugme „Sačuvaj" (all Latin) ✗ Wrong: Кликните na dugme „Сачувај" (mixed — auto-fail) ✗ Wrong: Kliknite на dugme "Sačuvaj" (mixed — auto-fail)
The only exception: technical identifiers (Git, API, JSON, npm, React, URLs, placeholders {var}, file paths) stay in Latin script even inside Cyrillic text. This is the standard convention, not a violation. See "Technical identifiers" below.
When the target locale is unspecified
Always ask on first use if the user requests just "Serbian":
> Serbian has two official writing systems — both equal, fully interchangeable, but never mixed within one text. Which one should I target? > > - Latin (sr-Latn, Recommended for software) — Dominant in IT, web, business, advertising. Default for most product UI. Modern feel. > - Cyrillic (sr-Cyrl) — Officially primary per Serbian Constitution. Used in government, traditional press, schools, religious texts. Required for state-facing and institutional products. > - Both (parity localization) — Some products legally require both. I'll deliver Latin + Cyrillic side-by-side.
Default to sr-Latn if no answer (software default).
Cyrillic ↔ Latin 1:1 mapping table (for self-conversion verification)
| Cyrillic | Latin | Cyrillic | Latin | Cyrillic | Latin | |----------|-------|----------|-------|----------|-------| | А а | A a | К к | K k | Т т | T t | | Б б | B b | Л л | L l | Ћ ћ | Ć ć | | В в | V v | Љ љ | Lj lj | У у | U u | | Г г | G g | М м | M m | Ф ф | F f | | Д д | D d | Н н | N n | Х х | H h | | Ђ ђ | Đ đ | Њ њ | Nj nj | Ц ц | C c | | Е е | E e | О о | O o | Ч ч | Č č | | Ж ж | Ž ž | П п | P p | Џ џ | Dž dž | | З з | Z z | Р р | R r | Ш ш | Š š | | И и | I i | С с | S s | | | | Ј ј | J j | | | | |
Critical: three Cyrillic digraphs (Љ Њ Џ) become TWO-letter Latin sequences (Lj Nj Dž). Case-sensitive — Љубав → Ljubav, ЉУБАВ → LJUBAV.
Diacritics are essential in Latin script — Č Ć Ž Š Đ. Replacing them with C, Z, S, Dj is a critical readability failure (crna and crna are nonsense for "crna" → blackness; but Sacuvaj for Sačuvaj is genuinely broken text, even though some legacy systems strip them).
BCMS continuum note (NOT mutual locales)
Serbian, Croatian, Bosnian, and Montenegrin are mutually intelligible South Slavic varieties (collectively "BCMS"), but they are politically and orthographically distinct languages with their own ISO codes (sr / hr / bs / cnr). Do NOT treat them as variants of each other. Critical differences vs Croatian (hr):
| Concept | Serbian (sr) — ekavian | Croatian (hr) — ijekavian | |---------|------------------------|---------------------------| | time | vreme | vrijeme | | nice | lepo | lijepo | | milk | mleko | mlijeko | | child | dete | dijete | | children | deca | djeca | | river | reka | rijeka | | world | svet | svijet | | beautiful | lep | lijep |
If a string contains vrijeme / lijepo / mlijeko / dijete, it is Croatian, not Serbian — flag and fix to ekavian (vreme / lepo / mleko / dete).
Other BCMS giveaways that mean "not Serbian":
tjedan(Croatian) vsnedelja(Serbian) — weeksiječanj/veljača/ožujak(Croatian month names) vsjanuar/februar/mart(Serbian)kruh(Croatian) vshleb(Serbian) — breadtisuća(Croatian) vshiljada(Serbian) — thousandtko(Croatian) vsko(Serbian) — whošto(Croatian) vsšta(Serbian) — whatnogomet(Croatian) vsfudbal(Serbian) — football
Register Auto-Detection (Apply Before Translating)
Serbian formality is set by pronoun + verb-ending choice, with capitalization conventions for the formal form. Auto-detect from source:
| Source signal | Target register | |---------------|-----------------| | Casual / conversational / personal (Hey!, contractions, emoji, marketing voice, social) | Informal (ti) — ti pronoun, lowercase, 2nd-person sg. verb endings (-š), familiar imperative (Sačuvaj, Klikni). Allow short forms, allow established loanwords (klipbord, link, imejl). | | Neutral product UI / docs / consumer software (DEFAULT) | Formal (Vi) — Vi capitalized for direct address, 2nd-person pl. verb endings (-te), polite imperative (Sačuvajte, Kliknite). Possessive Vaš/Vaša/Vaše also capitalized. | | Legal / banking / government / enterprise B2B | Formal (Vi) elevated — same Vi form but full constructions, no contractions, prefer reflexive impersonal (Vrši se / Obavlja se), avoid casual loanwords (use elektronska pošta over imejl in legal text). |
Hard rule: never mix levels in one text. A string with Možete da promenite (formal) and tvoja podešavanja (informal possessive) is broken.
Capitalization rule for Vi: Vi / Vaš / Vaša / Vaše / Vaši / Vam / Vas are capitalized in direct second-person address (whether you're writing to one person or many). This signals respect — failing to capitalize is read as informal even if the verb forms are formal.
Default for software UI: Vi (formal) unless brand voice is explicitly youth/casual.
Critical Hard Rules (Severity ≥ 2.0 — Auto-Fail If Wrong)
1. Script consistency — never mix Cyrillic + Latin (severity 3.0)
Documented above. The only exception is Latin technical identifiers inside Cyrillic text.
2. Word integrity — verb prefixes NEVER split (severity 3.0)
Serbian verbs with prefixes are single words. Splitting them by a space changes meaning catastrophically or produces gibberish.
| ✗ Wrong (split) | ✓ Correct (joined) | What the split means | |-----------------|--------------------|-----------------------| | pre vesti / пре вести | prevesti / превести | "pre" (prefix alone) + "vesti" (news) — nonsense | | iz vršiti / из вршити | izvršiti / извршити | nonsense | | pre nositi / пре носити | prenositi / преносити | nonsense | | na praviti / направити | nonsense | | sa čuvati / са чувати | sačuvati / сачувати | nonsense | | pre uzmi / пре узми | preuzmi / преузми | nonsense | | o pozovi / о позови | opozovi / опозови | nonsense |
Reflexive se is the OPPOSITE pattern — se is a separate clitic word, NEVER attached. prijavi se, registruj se, odjavi se. Writing prijavise or registrujse is wrong.
3. Ekavian forms — never ijekavian (severity 2.0)
Serbian standard is ekavian (the historical "yat" → e). Croatian and Bosnian use ijekavian (yat → ije / je). Any ijekavian form in a Serbian translation is wrong.
Full ekavian/ijekavian table:
| English | Serbian (ekavian) | Croatian/Bosnian (ijekavian) — DO NOT USE | |---------|---------------------|--------------------------------------------| | time | vreme / време | vrijeme | | nice | lepo / лепо | lijepo | | milk | mleko / млеко | mlijeko | | child | dete / дете | dijete | | children | deca / деца | djeca | | river | reka / река | rijeka | | world | svet / свет | svijet | | light | svetlost / светлост | svjetlost | | flower | cvet / цвет | cvijet | | star | zvezda / звезда | zvijezda | | song | pesma / песма | pjesma | | place | mesto / место | mjesto | | beautiful | lep / леп | lijep | | bread (formal poetic) | hleb / хлеб | hljeb | | arrow | strela / стрела | strijela | | left | levi / леви | lijevi | | measure | mera / мера | mjera | | change (n.) | promena / промена | promjena | | section | odeljak / одељак | odjeljak |
4. Seven-case system (severity 2.5)
Serbian uses all 7 Slavic cases, including the vocative (used for direct address — korisniče! "user!"). Every noun, adjective, and pronoun declines.
| Case | Question | Use | Example (m. sg. "korisnik" — user) | Example (f. sg. "datoteka" — file) | |------|----------|-----|------------------------------------|-------------------------------------| | Nominativ (NOM) | ko? šta? | Subject | korisnik | datoteka | | Genitiv (GEN) | koga? čega? | Possession, "of", absence, 5+ count | korisnika | datoteke | | Dativ (DAT) | kome? čemu? | Indirect object, "to" | korisniku | datoteci | | Akuzativ (ACC) | koga? šta? | Direct object | korisnika (animate=GEN) / sistem (inanimate=NOM) | datoteku | | Vokativ (VOC) | — | Direct address | korisniče! | datoteko! | | Instrumental (INS) | s kim? čim? | "With", means | korisnikom | datotekom | | Lokativ (LOC) | o kome? čemu? | Location (always w/ prep) | korisniku (o korisniku) | datoteci (o datoteci) |
Critical: animate masculine accusative = genitive form. vidim korisnika ("I see [the] user"), NOT vidim korisnik. Inanimate masculines keep ACC = NOM: vidim sistem.
5. Preposition + governed case (severity 2.5)
| Preposition | Case | Example | |-------------|------|---------| | u (in/into) | LOC (location) / ACC (motion) | u sistemu (in system) / u sistem (into system) | | na (on/onto) | LOC / ACC | na ekranu (on screen) / na ekran (onto screen) | | s / sa (with) | INS | s korisnikom, sa Vama | | bez (without) | GEN | bez sistema, bez greške | | za (for) | ACC | za korisnika, za sistem | | od (from) | GEN | od korisnika | | do (until/to) | GEN | do kraja | | iz (out of) | GEN | iz mape | | o (about) | LOC | o korisniku, o sistemu | | po (per / along) | LOC | po korisniku, po datoteci | | pre (before) | GEN | pre vremena | | posle (after) | GEN | posle prijave | | prema (toward) | DAT | prema korisniku | | sa (down from) | GEN | sa stranice (depending on sense; sa = with takes INS) | | kroz (through) | ACC | kroz aplikaciju |
po for "per" with rate: po datoteci (per file), po korisniku (per user), dnevno / na dan (per day).
6. ICU plurals — one / few / other (1 / 2-4 / 5+ pattern) (severity 2.5)
{count, plural,
one {# datoteka}
few {# datoteke}
other {# datoteka}
}
CLDR plural category boundaries (memorize):
| Category | Rule | Examples | Noun form | |----------|------|----------|-----------| | one | n % 10 = 1, n % 100 ≠ 11 | 1, 21, 31, 41, 101, 121 | NOM singular (datoteka) | | few | n % 10 ∈ {2,3,4}, n % 100 ∉ {12,13,14} | 2, 3, 4, 22, 23, 24, 102, 103 | GEN singular (datoteke) | | other | everything else | 0, 5-20, 25-30, 100, 1000 | GEN plural (datoteka) |
Critical: 11/12/13/14 use other (they are exceptions to the otherwise simple "ends in 1/2-4" pattern). Same for 111, 112, 113, 114. This is identical to Russian but different from Croatian (some details vary).
7. Numeral-noun agreement (severity 2.0)
The plural-form rule manifests directly in number constructions:
| Count | Pattern | Example | |-------|---------|---------| | 1 | NOM sg | 1 datoteka, 1 korisnik, 1 sistem | | 2, 3, 4 | GEN sg | 2 datoteke, 3 korisnika, 4 sistema | | 5+ | GEN pl | 5 datoteka, 10 korisnika, 20 sistema | | 11-14 | GEN pl (exception) | 11 datoteka (NOT datoteke), 12 sistema | | 21 | NOM sg (back to "one") | 21 datoteka | | 22-24 | GEN sg | 22 datoteke | | 25+ | GEN pl | 25 datoteka |
8. Verb aspect — perfective vs imperfective (severity 2.0)
Every Serbian verb has aspect — most concepts have a perfective/imperfective pair. Choosing the wrong aspect changes meaning from "doing X" to "having done X" (or vice versa).
| Imperfective (process, ongoing) | Perfective (single completed event) | English | |--------------------------------|--------------------------------------|---------| | čuvati | sačuvati | save | | brisati | obrisati | delete | | otpremati | otpremiti | upload | | preuzimati | preuzeti | download | | otvarati | otvoriti | open | | zatvarati | zatvoriti | close | | stvarati | stvoriti / napraviti | create | | uređivati | urediti | edit | | menjati | promeniti | change | | pisati | napisati | write | | čitati | pročitati | read | | slati | poslati | send | | birati | izabrati | choose / select | | prijavljivati se | prijaviti se | log in (process / single act) |
UI patterns by aspect:
- Buttons (single action) → perfective imperative:
Sačuvaj,Obriši,Pošalji,Izaberi. (NOTČuvaj, which implies "keep saving repeatedly".) - Ongoing status messages → imperfective verbal noun + …:
Čuvanje…,Otpremanje…,Učitavanje…,Slanje…. - Completed status → perfective past participle + je:
Datoteka je sačuvana,Otpremanje je završeno. - Failed status → perfective past + nije:
Otpremanje nije uspelo,Datoteka nije sačuvana.
9. Clitic second-position rule (Wackernagel's law) (severity 2.0)
Serbian clitics (je, se, mi, ti, mu, joj, nam, vam, im, bi, li) MUST go in the second position of their clause (after the first stressed word).
| ✗ Wrong | ✓ Correct | |---------|-----------| | Se meni to ne sviđa | To mi se ne sviđa (clitics in 2nd position) | | Datoteka se mu prikazuje | Datoteka mu se prikazuje (dative mu before reflexive se) | | Mi se to dopada (in narrative) | Meni se to dopada (when emphatic, use full pronoun) |
Clitic order within the cluster (when multiple clitics stack):
li(question particle)- AUX
je/sam/si/smo/ste/su/bi/bih - DAT (
mi/ti/mu/joj/nam/vam/im) - ACC (
me/te/ga/je/nas/vas/ih) - Reflexive
se
Example: Da li mu se to dopada? (Q-AUX-DAT-REFL — does he like it?)
10. Three-gender adjective agreement (severity 2.0)
| Gender | Indef. example | Adjective ending (sg.) | |--------|---------------|------------------------| | Masculine (consonant ending) | sistem | novi sistem (anim/inanim sg. NOM same) | | Feminine (-a ending) | aplikacija | nova aplikacija | | Neuter (-o/-e ending) | podešavanje | novo podešavanje |
Wrong gender adjective is auto-fail: nova sistem ✗, novi aplikacija ✗.
11. Past-tense gender agreement (severity 1.5)
Past tense in Serbian = AUX (sam/si/je/smo/ste/su) + L-participle, which agrees with subject in gender + number:
| Subject | L-participle | Example | |---------|--------------|---------| | m. sg. | -o | on je radio (he worked) | | f. sg. | -la | ona je radila (she worked) | | n. sg. | -lo | ono je radilo (it worked) | | m. pl. | -li | oni su radili | | f. pl. | -le | one su radile | | n. pl. | -la | ona su radila |
ona je radio ✗ (gender mismatch) → ona je radila ✓.
12. Verb-construction integrity — no stacked finite verbs (severity 2.0)
English -ing forms (gerund as adverbial: "I spent 6 yea
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: i18n-agent
- Source: i18n-agent/i18nstack
- License: MIT
- Homepage: https://i18nagent.ai
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.