Cloudflare Worker serverless, escrito em Rust, que detecta o idioma de um texto. Você manda uma string, ele responde qual língua é.
Usa a lib whichlang para a detecção,
compilado para WebAssembly e servido na edge da Cloudflare. whichlang é rápido,
puro Rust (sem modelo externo pra carregar) e preciso em frases curtas — o caso
de uso aqui.
Detecta o idioma do text passado na query string.
Exemplo
curl "https://language-detector.ranqia.workers.dev/?text=best brand gift for mom birthday"Resposta (200 OK)
{
"lang": "en",
"lang3": "eng"
}| Campo | Tipo | Descrição |
|---|---|---|
lang |
string | Código ISO 639-1 de 2 letras (en, pt, es) |
lang3 |
string | Código ISO 639-3 de 3 letras (eng, por) |
O whichlang sempre retorna um palpite (não há caso "não detectado"), e não
expõe score de confiança. Texto vazio ou sem sinal linguístico cai no default
inglês. Idiomas suportados (16): árabe, mandarim, alemão, inglês, francês, hindi,
italiano, japonês, coreano, holandês, português, russo, espanhol, sueco, turco,
vietnamita.
Erros
| Status | Quando |
|---|---|
400 |
Falta o parâmetro text ou está vazio |
405 |
Método diferente de GET |
Requer Rust, Node/npm e o target Wasm:
rustup target add wasm32-unknown-unknown
npx wrangler devO Worker sobe em http://localhost:8787.
O deploy roda automaticamente via Cloudflare Workers Builds
a cada push na main. O ambiente de CI não vem com Rust, então build.sh
instala a toolchain antes de compilar.
Para deployar manualmente da sua máquina:
npx wrangler deployO código Rust (src/lib.rs) compila para um módulo WebAssembly via
worker-build. A Cloudflare gera
um shim JavaScript (build/worker/shim.mjs) que carrega esse Wasm e chama o
handler fetch a cada requisição HTTP.