Estilo de escrita vietnamita para servidores Minecraft
Objetivo: toda palavra que o jogador vê deve soar como um admin amigável conversando — não como texto burocrático, não como Google Tradutor, nem de forma rude ou informal. A terminologia do jogo deve corresponder à tradução oficial vietnamita do Minecraft para que os jogadores a reconheçam imediatamente.
Use esta skill ao editar ou escrever novos: messages.yml, vi.yml, lang/*.yml, messages_vi.properties, arquivos de config de item (display-name, lore), GUI/menu, hologram, scoreboard, tab, diálogo de NPC, broadcast/announcement, tutorial, title/actionbar.
Use também ao escrever um novo plugin (Java/Kotlin, Paper/Spigot/Velocity...): todas as strings que o jogador vê no código e no arquivo de idioma padrão do plugin devem seguir esta skill desde o início — veja a seção 8.
1. Processo
- Leia o arquivo inteiro antes de editar. Identifique:
- Sintaxe de cores: legacy
&a/§a, hex&#RRGGBB, ou MiniMessage<green>,<gradient:...>. Mantenha a sintaxe que o arquivo está usando, não misture. - Placeholders:
%player%,{0},{player},<player>,%vault_eco_balance%... — anote a lista. - Tom e pronomes usados (geralmente "você"). Se o arquivo já tem um tom consistente próprio, siga-o.
- Se o projeto tem um arquivo de terminologia (ex:
docs/thuat-ngu.md,glossary.md), leia e siga-o — ele tem precedência sobre todas as outras fontes.
- Sintaxe de cores: legacy
- Consulte a terminologia para nomes de bloco/item/mob/efeito/encantamento/atributo que aparecem no arquivo, conforme seção 2.
- Classifique cada linha conforme seção 4 (erro, sucesso, informação, instrução, diálogo de NPC, anúncio, nome de item, lore, botão de GUI, title/actionbar).
- Reescreva conforme seções 3 + 4. Linhas que já estão boas, mantenha como estão — não edite por editar.
- Verificação técnica (seção 6), valide o arquivo.
- Relatório conforme seção 7.
2. Fontes de referência — pegue a TERMINOLOGIA, não o ESTILO
As traduções vietnamitas existentes são muito boas para padronizar vocabulário, mas suas frases geralmente são traduções literais do inglês ("Saldo válido insuficiente", "O processamento da solicitação de teletransporte foi cancelado"). Portanto: pegue as palavras, não as frases.
Ordem de prioridade ao escolher palavras:
- Arquivo de terminologia do projeto (se houver).
- Minecraft vanilla
vi_vn— fonte padrão para nomes de bloco, item, mob, efeito, encantamento, atributo, modo de jogo, dificuldade. Jogadores com o cliente em vietnamita verão exatamente essas palavras no jogo, então lore e mensagens devem corresponder.- Consulte em:
https://raw.githubusercontent.com/InventivetalentDev/minecraft-assets/<versão>/assets/minecraft/lang/vi_vn.json(ex:<versão>=1.21). Arquivo grande — procure pela chave (item.minecraft.diamond_sword,effect.minecraft.speed,enchantment.minecraft.sharpness,attribute.name.generic.attack_damage,gameMode.creative...) em vez de ler tudo. - Não adivinhe nomes vanilla de memória se não tiver certeza — consulte o arquivo ou marque "precisa confirmar" no relatório.
- Consulte em:
- EssentialsX
messages_vi.properties— referência para conceitos comuns de plugins (teletransporte, apelido, ponto de renascimento, correio...):https://raw.githubusercontent.com/EssentialsX/Essentials/2.x/Essentials/src/main/resources/messages_vi.properties. - Como os jogadores vietnamitas realmente falam (seção 3).
Terminologia já verificada
Palavras vanilla vi_vn (1.21) — use exatamente assim em lore/atributos:
| Inglês | vi_vn |
|---|---|
| Armor | Giáp |
| Armor Toughness | Độ bền áo giáp |
| Attack Damage | Sức tấn công |
| Attack Speed | Tốc độ tấn công |
| Max Health | Sinh lực tối đa |
| Movement Speed | Tốc độ |
| Knockback Resistance | Kháng đẩy lùi |
| Luck | Vận may |
| Mining Efficiency | Hiệu quả đào |
| Anvil | Cái đe |
| Ancient Debris | Mảnh vỡ cổ đại |
| Nether, The End | manter "Nether", "The End" |
Palavras EssentialsX vi (referência conceitual):
| Conceito | EssentialsX vi | Sugestão para chat/GUI |
|---|---|---|
| teleport | Dịch chuyển | "dịch chuyển" ou "tp" (chat rápido) |
| enchantment | Phù phép | Phù phép |
| inventory | Túi | Túi đồ |
| item | Vật phẩm | "Vật phẩm" em GUI/título, "đồ" em frase de chat |
| nickname | Biệt danh | Biệt danh |
| spawn point / bed | Điểm hồi sinh | Điểm hồi sinh |
| gamemode | Chế độ chơi (Sinh tồn, Sáng tạo, Phiêu lưu) | manter assim |
| ender chest | Rương ender | Rương ender |
| kit | Bộ dụng cụ | "kit" — igual ao comando /kit, jogadores já estão acostumados |
| experience | Kinh nghiệm | Kinh nghiệm / EXP |
| offline | Ngoại tuyến | "offline" |
| server | Máy chủ | "server" |
Regra geral: nome de coisa que existe no jogo (bloco, item, mob, efeito, encantamento, atributo) → siga o vanilla vi_vn. Conceitos de servidor/plugin que os jogadores chamam em inglês (kit, warp, home, rank, spawn, server, online/offline, AFK, PvP, top) → mantenha em inglês. Depois de escolher, use uma única palavra para todo o servidor.
Pegue as palavras mas corrija as frases — exemplos do EssentialsX vi
| Tradução original | Reescrita |
|---|---|
| Bạn không có quyền để dùng lệnh này. | Bạn chưa có quyền dùng lệnh này. |
| Số dư hợp lệ không đủ. | Bạn không đủ tiền. |
| Bạn không thể thanh toán cho người chơi ngoại tuyến. | {0} đang offline, không chuyển tiền được. |
| Bạn không thể nhập lệnh đó trong {0}. | Đợi {0} nữa mới dùng lại được. |
| Dịch chuyển sẽ bắt đầu trong {0}. Đừng di chuyển. | Đứng yên {0}, sắp dịch chuyển... |
| Việc xử lí yêu cầu dịch chuyển đã bị hủy. | Đã hủy dịch chuyển vì bạn di chuyển. |
| Người chơi {0} chưa bao giờ vào máy chủ. | {0} chưa vào server lần nào. |
| Công cụ này còn {0} lần sử dụng nữa. | Công cụ này còn dùng được {0} lần. |
| Bạn không thể dùng bộ dụng cụ này trong {0}. | {0} nữa mới nhận lại kit này được. |
| Túi của bạn đã đầy. | Túi đồ đầy rồi, dọn bớt nhé. |
| Essentials đã được tải lại {0}. | Đã reload Essentials {0}. |
Ao reescrever o arquivo messages_vi.properties de um plugin, mantenha os escapes do .properties (\:, \!, '' com MessageFormat).
3. Princípios de tom
Natural, curto, claro sobre o que precisa ser feito.
- Pronome padrão: o sistema chama o jogador de "bạn", não usa pronome (ou "server" quando necessário). Não use "Quý khách", "Người chơi" para se dirigir diretamente. Não use "mày/tao" a menos que seja um diálogo de NPC com personalidade definida.
- Curto primeiro, completo depois. Corte frases redundantes: "để có thể", "thực hiện", "tiến hành", "việc...", "đã được ... thành công", "hiện tại", "một cách", "hợp lệ".
- Ativo em vez de passivo: "đã bị hủy" → "đã hủy"; "đã được tải lại" → "đã reload".
- Diga o que fazer, não apenas o erro. "Sai cú pháp" → "Dùng: /pay <tên> <số tiền>". Se houver motivo, diga o motivo.
- Prefira palavras vietnamitas comuns / que os jogadores usam em vez de termos sino-vietnamitas pesados ou tradução automática: "sử dụng" → "dùng"; "hoàn tất" → "xong"; "không hợp lệ" → "không đúng" / apenas diga o que é certo; "trực tuyến/ngoại tuyến" → "online/offline"; "máy chủ" → "server". (Exceção: nomes de coisas no jogo ainda seguem o vanilla vi_vn — seção 2.)
- Partículas modais (nhé, nha, đó, rồi, nè, thôi): use para suavizar frases, mas no máximo uma partícula por frase e nem toda frase precisa. Avisos graves / ban / kick não usam partículas.
- Exclamação com moderação: no máximo um
!, apenas para boas notícias ou eventos. Sem!!!. - Uso de maiúsculas em vietnamita: apenas a primeira letra da frase e nomes próprios. Nomes de itens/nomes de eventos/títulos de GUI usam maiúscula em cada palavra. Evite CAIXA ALTA exceto para etiquetas curtas como
[VIP],MỚI. - Sem grosseria: sem xingamentos, sem ironia com o jogador, sem 'internetês' ("ko", "dc", "j", "z"), sem abreviações confusas.
- Consistência: o mesmo conceito usa a mesma palavra em todo o servidor (se escolheu "xu" não misture com "coin"/"tiền").
- Singular/plural: vietnamita não flexiona número — chaves como
day/daystraduzem igual ("ngày").
Sinais de "texto robótico" que precisam ser corrigidos
| Texto robótico | Mais natural |
|---|---|
| Vui lòng ... | (remova, ou transforme em convite: "... nhé") |
| ... đã được thực hiện thành công. | Đã ... / ... xong rồi. |
| Việc ... đã bị hủy. | Đã hủy ... (com motivo) |
| Đã xảy ra lỗi. Vui lòng thử lại sau. | Có lỗi rồi, thử lại sau chút nhé. Vẫn lỗi thì báo admin. |
| Người chơi được chỉ định không tồn tại. | Không tìm thấy người chơi %player%. |
| Lỗi: Đầu vào không hợp lệ. / Số không hợp lệ. | Nhập số thôi, ví dụ: 10 |
| Cần phải là một số khác không. | Số lượng phải lớn hơn 0. |
| Thanh Kiếm Của Lửa | Kiếm Lửa / Hỏa Kiếm |
4. Por tipo de texto
Erro / recusa — curto, calmo, mostre como resolver. Cor vermelha/laranja.
Bạn phải chờ %time% giây trước khi có thể sử dụng lại.→Từ từ đã, %time%s nữa mới dùng lại được.
Sucesso — confirmação concisa, com resultado específico.
Giao dịch đã được hoàn tất thành công!→Đã chuyển %amount% xu cho %target%.
Informação / status — diga diretamente.
Người chơi %player% hiện tại không trực tuyến.→%player% đang offline.
Instrução / tutorial — passo a passo, verbo no início, uma ideia por linha, mostre comandos específicos.
Để có thể mở khóa tính năng này, bạn cần phải đạt được cấp độ 10.→Lên cấp 10 để mở khóa.- Vários passos:
1. Gõ /is create để tạo đảo/2. Chặt cây, làm bàn chế tạo/3. Gõ /is help nếu bí
Diálogo de NPC — com personalidade conforme o personagem, use pronomes adequados ao papel ("ta – ngươi", "tôi – cậu", "chú – cháu"), mas fácil de entender e ≤ 2 linhas de chat por frase. Cada personagem mantém seu tom do início ao fim.
Xin chào người chơi. Tôi có một nhiệm vụ dành cho bạn.→Ê, cậu kia! Rảnh không? Tôi đang cần người giúp một chuyện.
Anúncio / broadcast — com um gancho no início, diga o quê – quando – onde – o que fazer. 1–3 linhas.
Sự kiện Boss Thế Giới sẽ bắt đầu sau 5 phút. Hãy chuẩn bị.→5 phút nữa Boss Thế Giới xuất hiện! Gõ /warp boss, rủ team đi cùng.
Nome de item — 1–4 palavras, sugestivo, sem "Của". Termos sino-vietnamitas são permitidos para itens raros/lendários (Hỏa Long Kiếm, Băng Tâm Giáp) mas não crie combinações sem sentido. Itens básicos/variantes vanilla sigam os nomes vanilla vi_vn. Use maiúscula em cada palavra.
Lore — cada linha com no máximo ~35 caracteres visíveis. Ordem sugerida:
- 1–2 linhas de sabor (cinza, itálico) — curtas, com alma.
- Linha em branco.
- Atributos concisos, usando nomes de atributos vanilla:
+10% Sức tấn công,+2 Giáp,+15% Tốc độ. - Linha em branco + como usar:
Chuột phải để dùng. - Raridade no final.
Botão de GUI / título de menu — 1–3 palavras: Mua, Bán hết, Quay lại, Trang sau, Xác nhận. Lore do botão diz a consequência: Click để mua 1 cái / Shift-click: mua 64.
Title / subtitle / actionbar — extremamente curto (title ≤ ~20 caracteres, subtitle/actionbar ≤ ~40).
Progresso de missão — modelo "Faltam {n} ... para ...": Còn 5 khối cần phá, Còn 3 con cừu cần xén lông.
5. Não exagere
- Não transforme toda frase em piada ou meme — o servidor ainda precisa ser claro.
- Não "adolescentize" ("bro", "ngon lành cành đào"...) a menos que o arquivo já use esse tom.
- Não adicione emojis/caracteres especiais se o arquivo ainda não os usa; se usar, verifique se a font do resource pack os exibe.
- Não mude o significado original, não remova informações (números, condições, comandos).
- Não "vietnamize" nomes de comandos, parâmetros de comando ou nomes reais de mundos/warps.
- Cuidado com strings que o jogador precisa digitar de volta (ex: prefixo
password:do BetonQuest): traduzir para vietnamita com acentos obriga o jogador a digitar acentos — marque para o usuário decidir.
6. Verificação técnica (obrigatório)
- Não mude as chaves, apenas os valores. Mantenha a estrutura de lista (se lore é uma lista, continue sendo uma lista).
- Mantenha 100% dos placeholders e tags de cor/formatação, incluindo prefixos como
@[legacy],@[minimessage]. É permitido mudar a posição do placeholder na frase, mas não mude o nome nem remova. - Ao reordenar a frase, reposicione as cores após os placeholders (ex:
&e%player% &7đã vào server; MiniMessage:<secondary>{0}<primary> ...). - YAML: strings que começam com
&,%,{,<,[,*,!,@ou contêm:/#devem estar entre aspas. Dentro de aspas simples,'vira''. .properties(EssentialsX, LuckPerms...): mantenha\:,\!, e''quando a string usar MessageFormat{0}.- Mantenha
\ne quebras de linha iguais ao original se o plugin precisar. - Não mexa em linhas de configuração como
configVersion. - Salve o arquivo em UTF-8 sem BOM, vietnamita com acentos completos, Unicode pré-composto (NFC).
- Valide o YAML após editar:
python -c "import yaml,sys; yaml.safe_load(open(sys.argv[1],encoding='utf-8'))" <arquivo>. - Compare chaves e placeholders por chave entre a versão antiga e a nova usando regex
%[^%\s]+%|\{[^}]+\}|<[^>]+>|&[0-9a-fk-or]|&#[0-9a-fA-F]{6}|@\[[a-z]+\]. - Se encontrar erros no original (ex: duas descrições de comando trocadas), corrija para o significado correto e indique claramente no relatório.
7. Formato do relatório
Đã sửa 23/80 dòng trong messages.yml (57 dòng giữ nguyên vì đã ổn).
| Key | Trước | Sau |
|---|---|---|
| economy.not-enough | Bạn không đủ số dư để thực hiện giao dịch này. | Bạn không đủ tiền (cần %price%). |
Thuật ngữ đã tra vanilla vi_vn: <key> → "<từ>"
Cần bạn xác nhận:
- `quest.npc-3`: não sei quem é este NPC — mantendo tom neutro.
8. Ao escrever um novo plugin
Escrever o texto do plugin corretamente desde o início evita ter que corrigir linha por linha depois. Aplique as seções 2–6 para todas as strings que o jogador vê, mais as regras abaixo.
Separe o texto do código
- Não hardcode strings visíveis ao jogador em
sendMessage,Component.text, title, GUI, lore... Todas as strings devem passar por um arquivo de idioma (ex:src/main/resources/lang/vi.yml) e uma camada de busca de chave (Messages.get("economy.not-enough", ...)). - Vietnamita é o idioma padrão do arquivo de idioma que acompanha o plugin. Se precisar de multilíngue, adicione
en.ymlem paralelo, com o mesmo conjunto de chaves. - O arquivo de idioma padrão é copiado para a pasta do plugin na primeira execução (
saveResource), e quando o plugin é atualizado, adicione apenas as chaves novas que faltam ao arquivo do admin, sem sobrescrever o texto que ele já editou. - Mantenha o prefixo (
[MyraMC]) como uma chave separada, inserida via placeholder<prefix>— não repita o prefixo em cada mensagem.
Definição de chaves e placeholders
- Chaves agrupadas por funcionalidade, formato
grupo.situacao:economy.pay.success,economy.pay.not-enough,teleport.cancelled-moved,gui.shop.title. - Placeholders com nome, não use posição:
<player>,<amount>(MiniMessage) ou{player}— não use{0},{1}. Frases em vietnamita frequentemente invertem a ordem em relação ao inglês; placeholders com nome ajudam o tradutor/editor a não se confundir. - Não componha frases concatenando strings no código (
"Bạn nhận " + amount + " " + item). Sempre mantenha a frase completa no arquivo de idioma com placeholders, porque a ordem das palavras varia entre idiomas. - Cada chave é uma frase completa para uma situação. Não reutilize um fragmento de frase em vários lugares (ex:
Bạn đã nhận {item}.em vez de um modelo "Bạn đã nhận" + item + ".").
Exemplo de estrutura de arquivo
# src/main/resources/lang/vi.yml
general:
prefix: "<gradient:gold:yellow>[MyraMC]</gradient>"
economy:
pay:
success: "<prefix> <green>Đã chuyển <amount> xu cho <player>.</green>"
not-enough: "<prefix> <red>Bạn không đủ tiền. Cần <amount> xu.</red>"
balance:
self: "<prefix> <yellow>Bạn có <balance> xu.</yellow>"
target: "<prefix> <yellow><player> có <balance> xu.</yellow>"
teleport:
cancelled-moved: "<red>Đã hủy dịch chuyển vì bạn di chuyển.</red>"
countdown: "<yellow>Đứng yên <time> giây, sắp dịch chuyển...</yellow>"
gui:
shop:
title: "Cửa Hàng"
buy: "Mua"
sell: "Bán"
back: "Quay lại"
lore:
buy-one: "<gray>Click để mua 1 cái</gray>"
buy-stack: "<gray>Shift-click: mua 64</gray>"
9. Exemplos de antes e depois (resumo)
| Original (robótico) | Revisado (natural) |
|---|---|
| Bạn không có quyền để dùng lệnh này. | Bạn chưa có quyền dùng lệnh này. |
| Số dư hợp lệ không đủ. | Bạn không đủ tiền. |
| Không thể dịch chuyển đến người chơi ngoại tuyến. | Không tp được, %player% đang offline. |
| Đã xảy ra lỗi khi tải thế giới. Vui lòng thử lại sau. | Có lỗi load thế giới, thử lại sau chút nhé. |
| Người chơi được chỉ định đã không được tìm thấy. | Không tìm thấy người chơi %player%. |
| Dịch chuyển sẽ được thực hiện trong 5 giây. Xin vui lòng không di chuyển. | Đứng yên 5 giây, sắp dịch chuyển... |
| Bạn đã mở khóa thành công cấp độ VIP! | Đã mở VIP! Cảm ơn bạn đã ủng hộ server. |
| Số lượng vật phẩm trong túi của bạn đã vượt quá giới hạn cho phép. | Túi đồ đầy rồi, dọn bớt nhé. |
10. Checklist final
- Leitura completa do arquivo antes de editar.
- Terminologia verificada: vanilla
vi_vnpara itens/blocos/mobs/efeitos/encantamentos/atributos. - Terminologia de plugin essenciais verificada (se aplicável): EssentialsX, LuckPerms, etc.
- Tom e pronomes consistentes (padrão: "bạn").
- Naturalidade: sem burocratês, sem tradução automática, sem internetês.
- Clareza: erros mostram solução, instruções são passo a passo.
- Técnico: placeholders preservados, cores mantidas, YAML válido.
- Relatório gerado com chaves alteradas e motivos.
- Para plugin novo: texto separado do código, vietnamita como idioma padrão, placeholders nomeados.
Esta skill é mantida por Fu004. Contribuições são bem-vindas via pull request no repositório oficial.