Install
$ agentstack add skill-i18n-agent-i18nstack-localize-id ✓ 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
Localize: Indonesian (id → Bahasa Indonesia)
You are translating source text into Indonesian for Indonesia. This skill captures grammar, register, UI conventions, formatting, and Indonesian-specific failure modes — with critical disambiguation from its sister language Malaysian (Bahasa Melayu / ms).
Scope & Variants
One standard:
- id-ID — Bahasa Indonesia as used in Indonesia. Official language of Indonesia.
No widely-distinguished regional variants in software localization. Indonesia uses bahasa baku (standard Indonesian) for all formal contexts.
Native name: Bahasa Indonesia (the language).
Identity Guardrail — NOT Malaysian (CRITICAL)
Indonesian (id) and Malaysian (ms / Bahasa Melayu) are sister languages with ~85% lexical overlap but distinct standards. They are mutually intelligible to a degree but have systematically different vocabulary in tech, UI, and modern domains because they were standardized separately and drew loanwords from different sources:
- Indonesian — heavy Dutch colonial influence (kantor, sepatu, gratis, buncis, jendela, handuk, pulpen), some Javanese, Sanskrit, Arabic.
- Malaysian — heavy Arabic/Islamic and English influence; less Dutch.
Mixing the two is a quality failure, especially in tech UI. NEVER translate Indonesian content via Malaysian intermediaries or vice versa.
Tech Vocabulary Disambiguation Table (the most important table in this skill)
| English | Indonesian (USE) | Malaysian (DO NOT USE for Indonesian) | |---|---|---| | Upload | unggah | muat naik | | Download | unduh | muat turun | | Settings | pengaturan / setelan | tetapan | | Update | perbarui / mutakhirkan | kemas kini | | Window | jendela | tetingkap | | Message | pesan | mesej | | Delete | hapus | padam | | Paste | tempel | tampal | | File | file / berkas | fail | | Browse (files) | jelajahi / telusuri | semak imbas | | Office | kantor | pejabat | | Office (work for someone) | (use jabatan) | pejabat (Malaysian = office) | | Can / able | bisa | boleh (Malaysian — in Indonesian "boleh" is informal "may") |
False Friends with Malaysian (DANGER — different meanings, same spelling)
| Word | Indonesian meaning | Malaysian meaning | |---|---|---| | kereta | train (short for "kereta api") | car (the everyday car) | | butuh | need (standard verb) | vulgar (genitalia) — DO NOT USE THIS WORD IN MALAYSIAN | | pusing | dizzy / headache | to spin / to turn around | | punggung | back (body part) | buttocks | | sulit | difficult | confidential / secret | | comel | (rare) | cute (common) | | abang | older brother (informal) | older brother / boyfriend |
If you are writing Indonesian, you can use these freely in Indonesian senses. Just NEVER assume the meaning carries over to Malaysian.
Day Names — DIFFER from Malaysian
| Day | Indonesian | Malaysian | |---|---|---| | Monday | Senin | Isnin | | Tuesday | Selasa | Selasa (same) | | Wednesday | Rabu | Rabu (same) | | Thursday | Kamis | Khamis | | Friday | Jumat | Jumaat | | Saturday | Sabtu | Sabtu (same) | | Sunday | Minggu | Ahad |
Minggu in Indonesian also means "week" — context disambiguates.
Times of Day — 4 periods (NOT 3 like Malaysian)
| Period | Indonesian | Approximate time | Greeting | |---|---|---|---| | Morning | pagi | 04:00–11:00 | Selamat pagi | | Midday | siang | 11:00–15:00 | Selamat siang | | Afternoon | sore | 15:00–18:30 | Selamat sore | | Evening / Night | malam | 18:30–04:00 | Selamat malam |
(Malaysian uses only 3: pagi / petang / malam — no "siang" or "sore" distinction.)
Number Format — European (Dutch-influenced)
- Decimal separator: comma (3,14)
- Thousands separator: period (1.000.000)
- Format:
1.234.567,89 - ❌ 1,234.56 (Anglo) → ✅ 1.234,56
- This is the OPPOSITE of Malaysian (which uses Anglo format).
Currency: IDR Rupiah
- Indonesia uses the rupiah (Rp / IDR). NOT Malaysian ringgit (RM).
- Format:
Rp 1.000.000orRp1.000.000(period thousands, no decimals for small denominations — the rupiah is heavily inflated, sub-1000 amounts essentially nonexistent in UI) - ❌ RM 1,000 (Malaysian) → ✅ Rp 1.000.000
- ❌ Rp 1,000,000 (Anglo format) → ✅ Rp 1.000.000
Register
Default level: FORMAL (Anda) for software UI, errors, documentation, marketing.
| Level | Pronoun | Use case | |---|---|---| | Formal | Anda (capitalized) | Business UI, professional software, customer-facing | | Informal | kamu | Consumer apps with casual brand voice, social, youth | | Inclusive "we" | kita | Building connection — includes listener (use for warm, friendly tone) | | Exclusive "we" | kami | Excludes listener (use for "we, the company") |
Rules:
- Choose ONE pronoun level (Anda OR kamu) per file.
- Use
kitafor warm/inclusive tone where the user is part of the action ("Mari kita mulai!" = Let's start!). - Use
kamiwhen speaking AS the company TO the user ("Kami akan memberitahu Anda" = We will notify you).
Examples:
- ❌ "Anda mau hapus gak?" (formal Anda + slang
gak) → ✅ "Apakah Anda ingin menghapus file ini?" - ❌ "kamu yakin mau hapus?" (then
Andaelsewhere in same file) → mix is wrong - ✅ "Mari kita mulai perjalanan Anda" (inclusive warm tone using kita + Anda — acceptable in marketing)
Formal vs Colloquial Vocabulary
Professional UI must use bahasa baku (standard formal Indonesian):
| Colloquial (AVOID) | Formal (USE) | Meaning | |---|---|---| | gak / nggak | tidak | not / no | | udah | sudah | already | | aja / doang | saja | only / just | | gimana | bagaimana | how | | gini / gitu | begini / begitu | like this / that | | emang | memang | indeed | | banget | sangat / sekali | very | | kayak / kaya | seperti | like / as | | soalnya | karena | because | | dong | (none — sentence particle) | (intensifier, omit in formal) | | ya / iya | (acceptable in many contexts) | yes |
Colloquial is acceptable ONLY in: casual/youth-oriented apps with explicit informal tone, marketing content deliberately targeting informal register.
Critical Hard Rules
Affix System: me- / di- / ber- / -kan / -i (severity 2.0)
Indonesian's grammar runs on affixation. Roots become verbs with prefixes/suffixes:
| Affix | Function | Example | |---|---|---| | me- | active transitive verb | menulis (write), membaca (read), mengirim (send) | | di- | passive | ditulis (was written), dibaca (was read) | | ber- | intransitive / stative | berlari (run), berdiri (stand) | | ke- | nominal | kebersihan (cleanliness), keadilan (justice) | | pe- | agent noun | penulis (writer), pembaca (reader) | | -kan | transitive / causative | menggunakan (use, with object), mempertimbangkan (consider) | | -i | intensive / locative | memenuhi (fulfill), menulisi (write on) | | -an | abstract noun | bulanan (monthly), tulisan (writing) |
Nasal Assimilation with me- (severity 1.5)
The me- prefix changes form based on the initial consonant of the root:
| Root consonant | Becomes | Example (root → form) | |---|---|---| | p, b, f | mem- | padam → memadam (extinguish), beli → membeli (buy) | | t, d | men- | tulis → menulis (write), dorong → mendorong (push) | | k, g, h | meng- | kirim → mengirim (send), gambar → menggambar (draw) | | s | meny- | simpan → menyimpan (save), sapu → menyapu (sweep) | | vowels | meng- | unggah → mengunggah (upload), ambil → mengambil (take) | | l, m, n, r, w, y, ng, ny | me- (no change) | larang → melarang (forbid), masuk → memasuki (enter) |
Common errors:
- ❌ mepadam → ✅ memadam (p → m)
- ❌ metulis → ✅ menulis (t → n)
- ❌ mekirim → ✅ mengirim (k → ng)
- ❌ mesimpan → ✅ menyimpan (s → ny)
The initial consonant is assimilated/replaced for p, t, k, s. For other consonants, the prefix simply attaches without modification.
Transitive -kan Suffix (severity 2.0)
Verbs with direct objects, or in imperative/suggestion contexts, MUST use the -kan suffix.
| Wrong (intransitive) | Correct (transitive with -kan) | |---|---| | Pertimbang untuk memperbaiki | Pertimbangkan untuk memperbaiki (Consider improving) | | Guna variabel | Gunakan variabel (Use the variable) | | Tambah konten | Tambahkan konten (Add content) | | Hilang file | Hilangkan file (Remove file) | | Pikir tentang ini | Pikirkan tentang ini (Think about this) |
The bare root (Pertimbang, Guna, Tambah, Hilang) is grammatically incomplete when there's an object. -kan marks transitivity and is required.
"untuk" + Verb Requires me- Prefix (severity 2.0)
When untuk (to / in order to) introduces a verb phrase, the verb MUST be in the me- prefixed form.
| Wrong | Correct | |---|---| | untuk unggah file | untuk mengunggah file | | untuk edit dokumen | untuk mengedit dokumen | | untuk ubah format | untuk mengubah format | | untuk simpan perubahan | untuk menyimpan perubahan | | untuk kirim email | untuk mengirim email |
This is one of the most-missed rules. Bare roots after untuk are a hallmark of bad translation.
Reduplication for Plurality (severity 2.0)
Indonesian has no grammatical number marker. Plural is marked by reduplication — but ONLY when no number is present.
| Context | Form | Example | |---|---|---| | Plural, no number | reduplication | "Upload Files" → "Unggah file-file" | | Plural, no number | reduplication | "View books" → "Lihat buku-buku" | | With number/quantifier | NO reduplication | "5 files" → "5 file" (NOT "5 file-file") | | With number/quantifier | NO reduplication | "{count} items" → "{count} item" | | ICU with # | NO reduplication | {count, plural, other {# file}} | | Generic / collective | NO reduplication often | "Semua file" (all files — collective, no reduplication needed) |
ICU pattern (Indonesian has only other effectively — no plural distinction needed):
{count, plural,
other {# file}
}
The two branches of failure:
- ❌ "Unggah file" when meaning "Upload Files" (plural) — missing reduplication
- ❌ "5 file-file" when meaning "5 files" — wrong reduplication
Adverb Placement — After the Verb (severity 1.5)
Manner adverbs (secara X / dengan X) follow the main verb, not the auxiliary.
| Wrong (adverb before verb) | Correct (adverb after verb) | |---|---| | akan secara otomatis mendeteksi | akan mendeteksi secara otomatis | | Sistem secara otomatis akan mendeteksi | Sistem akan mendeteksi secara otomatis | | dengan cepat menyelesaikan | menyelesaikan dengan cepat |
The adverb sits after the lexical verb, not between modal/auxiliary and verb.
UI Conventions
Button Labels — Short Imperative
Indonesian buttons use short imperative verbs, often bare roots that function as commands:
| English | Indonesian | Notes | |---|---|---| | Save | Simpan | | | Delete | Hapus | NOT Padam (which is Malaysian) | | Cancel | Batal / Batalkan | Both acceptable | | Submit | Kirim | | | Upload | Unggah | NOT Muat naik (Malaysian) | | Download | Unduh | NOT Muat turun (Malaysian) | | Search | Cari | | | Edit | Edit / Ubah | | | Copy | Salin | | | Paste | Tempel | NOT Tampal (Malaysian) | | Close | Tutup | | | Open | Buka | | | Browse | Jelajahi / Telusuri | NOT Semak imbas (Malaysian) | | OK / Confirm | OK / Konfirmasi | |
❌ "Silakan klik di sini untuk menyimpan" (verbose) → ✅ "Simpan"
Status Messages — Impersonal
Use impersonal forms (me- prefix with no subject, OR nominal). NEVER first person.
| Wrong (first person) | Correct (impersonal) | |---|---| | Saya sedang memuat... | Memuat... / Sedang memuat... | | Kami menyimpan file Anda... | Menyimpan... / Penyimpanan berhasil | | Saya memproses... | Memproses... |
The system speaks impersonally. "Saya" (I) for system messages sounds bizarre.
Drag-and-Drop Vocabulary
- seret = drag
- lepas = drop / release
- ❌ "drag" / "drop" (English) — wrong
✅ Seret file ke sini (drag files here)
✅ Seret dan lepas file ke sini (drag and drop files here)
✅ Pilih file atau seret ke sini (select files or drag here — complete or clause)
❌ Pilih file atau seret (incomplete — finish the phrase)
❌ Drag file ke sini (English calque)
Error Messages — Direct Predicate
Indonesian error messages favor direct predicate form over verbose nominal constructions:
- ❌ "Terjadi kesalahan saat menyimpan file" (verbose nominal "an error occurred when saving the file")
- ✅ "File tidak dapat disimpan" (File cannot be saved — direct predicate)
- ✅ "Tidak dapat menghubungkan ke server" (Cannot connect to server — direct predicate)
Punctuation, Numbers, Dates, Currency
Quotation Marks
- Standard double quotes
"..."or single'...'— both common, be consistent - No special "Indonesian quote marks"
Numbers (European format — opposite of Malaysian)
- Decimal separator: comma (3,14)
- Thousands separator: period (1.000.000)
- Format:
1.234.567,89 - ❌ 3.14 (Anglo decimal) → ✅ 3,14
- ❌ 1,000,000 (Anglo thousands) → ✅ 1.000.000
Dates — DD/MM/YYYY
- Numeric: 15/01/2024 (slashes)
- Word form: 15 Januari 2024 (day + month name + year)
- Long form: Senin, 15 Januari 2024 (with day name)
- ❌ 01/15/2024 (US) → ✅ 15/01/2024
Indonesian months (always capitalized in formal writing): Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, Desember.
Time
- 24-hour:
14:30or14.30(period as colon is also acceptable) - Word form:
2 sore(2 PM in afternoon period) orpukul 14:30 - "Jam" or "pukul" for "o'clock" (jam 2 = at 2 o'clock)
Currency: IDR Rupiah
- Format:
Rp 1.000.000orRp1.000.000(period thousands, no decimal for round amounts) - ❌ Rp 1,000,000 (Anglo) → ✅ Rp 1.000.000
- ❌ RM 1,000 (Malaysian) → ✅ Rp ...
Comma Rules
NO comma before coordinating conjunctions (atau, dan):
- ❌ "Seret file ke sini, atau klik" → ✅ "Seret file ke sini atau klik"
- ❌ "Simpan file, dan tutup" → ✅ "Simpan file dan tutup"
COMMA before subordinating conjunctions:
- tetapi / namun (but): "Sederhana, tetapi efektif"
- yang (which / that): "File yang Anda pilih"
- jika (if): "Klik di sini, jika ingin melanjutkan"
- karena (because): "Tidak berfungsi, karena file tidak ditemukan"
- ketika / saat (when): "Tunggu, ketika proses selesai"
- supaya / agar (so that): "Simpan, supaya perubahan tersimpan"
Terminology Quick Reference
| English | Indonesian | NOT (Malaysian) | |---|---|---| | Save | Simpan | (same) | | Delete | Hapus | Padam | | Cancel | Batal / Batalkan | (same) | | Submit | Kirim | Hantar | | Upload | Unggah | Muat naik | | Download | Unduh | Muat turun | | Settings | Pengaturan / Setelan | Tetapan | | Update | Perbarui / Mutakhirkan | Kemas kini | | Search | Cari | (same) | | Edit | Edit / Ubah | (Sunting) | | Copy | Salin | (same) | | Paste | Tempel | Tampal | | Close | Tutup | (same) | | Open | Buka | (same) | | Browse (files) | Jelajahi / Telusuri | Semak imbas | | File | File / Berkas | Fail | | Folder | Folder / Direktori | (same / Folder) | | Window | Jendela | Tetingkap | | Message | Pesan | Mesej | | User | Pengguna | (same) | | Password | Kata sandi / Password | Kata laluan | | Username | Nama pengguna | (same) | | Log in | Masuk / Login | Log masuk | | Log out | Keluar / Logout | Log keluar | | Dashboard | Dasbor / Dashboard | Papan pemuka | | Account | Akun | Akaun | | Email | Email / Surel | E-mel | | Click | Klik | (same) | | Load
…
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.