Localização (i18n)¶
As mensagens do debugger voltadas ao usuário (erros de runtime e respostas do adaptador ao editor) ficam num só lugar, compartilhado pelo plugin e pelo adaptador:
| Onde | O quê |
|---|---|
crates/protocol/src/messages/mod.rs |
Locale, MsgKey (chaves) e o roteamento (msg/format) |
crates/protocol/src/messages/langs/<code>.rs |
uma tabela match por idioma: get(MsgKey) -> &'static str |
Os textos são templates com marcadores posicionais {}, preenchidos por
messages::format(locale, key, &[args]). O idioma vem do editor (argumento
locale do initialize, no adaptador; env PAWNPRO_DBG_LOCALE, no plugin) e é
resolvido por prefixo (Locale::from_tag); desconhecido cai em inglês.
Há 11 chaves de mensagem (5 erros de runtime + 6 do adaptador). O match por
MsgKey em cada idioma é exaustivo — falta uma chave = não compila. Por isso,
um idioma marcado ✅ cobre necessariamente todas as 11.
Legenda: ✅ completo · 🟡 parcial · ⬜ ausente.
Meta de cobertura: pelo menos 50 idiomas. A ordem prioriza a relevância histórica na comunidade SA-MP / open.mp. Hoje há 5 implementados.
Status¶
| # | Idioma | Código | Status |
|---|---|---|---|
| 1 | Inglês (fonte) | en |
✅ |
| 2 | Português (BR) | pt-BR |
✅ |
| 3 | Espanhol | es |
✅ |
| 4 | Russo | ru |
✅ |
| 5 | Romeno | ro |
✅ |
| 6 | Alemão | de |
⬜ |
| 7 | Francês | fr |
⬜ |
| 8 | Italiano | it |
⬜ |
| 9 | Polonês | pl |
⬜ |
| 10 | Turco | tr |
⬜ |
| 11 | Holandês | nl |
⬜ |
| 12 | Ucraniano | uk |
⬜ |
| 13 | Chinês (Simpl.) | zh-CN |
⬜ |
| 14 | Chinês (Trad.) | zh-TW |
⬜ |
| 15 | Indonésio | id |
⬜ |
| 16 | Árabe | ar |
⬜ |
| 17 | Português (PT) | pt-PT |
⬜ |
| 18 | Húngaro | hu |
⬜ |
| 19 | Tcheco | cs |
⬜ |
| 20 | Sérvio | sr |
⬜ |
| 21 | Búlgaro | bg |
⬜ |
| 22 | Grego | el |
⬜ |
| 23 | Sueco | sv |
⬜ |
| 24 | Lituano | lt |
⬜ |
| 25 | Croata | hr |
⬜ |
| 26 | Eslovaco | sk |
⬜ |
| 27 | Hebraico | he |
⬜ |
| 28 | Tailandês | th |
⬜ |
| 29 | Vietnamita | vi |
⬜ |
| 30 | Persa | fa |
⬜ |
| 31 | Japonês | ja |
⬜ |
| 32 | Coreano | ko |
⬜ |
| 33 | Finlandês | fi |
⬜ |
| 34 | Dinamarquês | da |
⬜ |
| 35 | Norueguês | nb |
⬜ |
| 36 | Hindi | hi |
⬜ |
| 37 | Bengali | bn |
⬜ |
| 38 | Filipino | fil |
⬜ |
| 39 | Malaio | ms |
⬜ |
| 40 | Letão | lv |
⬜ |
| 41 | Estoniano | et |
⬜ |
| 42 | Esloveno | sl |
⬜ |
| 43 | Bielorrusso | be |
⬜ |
| 44 | Macedônio | mk |
⬜ |
| 45 | Albanês | sq |
⬜ |
| 46 | Bósnio | bs |
⬜ |
| 47 | Catalão | ca |
⬜ |
| 48 | Azerbaijano | az |
⬜ |
| 49 | Cazaque | kk |
⬜ |
| 50 | Georgiano | ka |
⬜ |
Adicionar um idioma¶
- Criar
crates/protocol/src/messages/langs/<code>.rscompub fn get(key: MsgKey) -> &'static strcobrindo todas asMsgKey(preservando os{}na mesma posição lógica). - Registrar o módulo em
langs/mod.rs(pub mod <code>;). - Adicionar a variante ao enum
Locale, aoLocale::from_tag(prefixo) e aomatchdemessages::msg. - Marcar ✅ nesta tabela.