Pular para conteúdo

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.

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

  1. Criar crates/protocol/src/messages/langs/<code>.rs com pub fn get(key: MsgKey) -> &'static str cobrindo todas as MsgKey (preservando os {} na mesma posição lógica).
  2. Registrar o módulo em langs/mod.rs (pub mod <code>;).
  3. Adicionar a variante ao enum Locale, ao Locale::from_tag (prefixo) e ao match de messages::msg.
  4. Marcar ✅ nesta tabela.