Skip to main content

Idiomas Suportados

O SDK suporta dois idiomas nativamente:
// Inglês (padrão)
let localization = LivenessLocalization.default

// Português (Brasil)
let localization = LivenessLocalization.ptBR

Usando Idioma Predefinido

Método Simples

import HubLivenessSDK

// Opção 1: Português Brasileiro
let config = LivenessHubConfig(
    apiBaseUrl: "https://api.yourserver.com",
    apiKey: "your-api-key",
    appName: "YourAppName",
    cek: "your-base64-encoded-cek",
    localization: .ptBR
)

// Opção 2: Inglês (padrão)
let config = LivenessHubConfig(
    apiBaseUrl: "https://api.yourserver.com",
    apiKey: "your-api-key",
    appName: "YourAppName",
    cek: "your-base64-encoded-cek",
    localization: .default
)

Customização Completa de Textos

Para customizar todos os textos exibidos durante o fluxo de liveness, você pode criar um objeto HubLocalization personalizado.

Estrutura de Strings

O SDK organiza os textos nas seguintes categorias:

Telas

Textos de telas (títulos, instruções, mensagens)

Feedback

Textos de feedback em tempo real

Botões

Textos dos botões e ações

Criando Localização Customizada

import HubLivenessSDK

let customLocalization = HubLocalization(
    // Mensagens de carregamento
    loadingMessage: "Carregando...",
    preparingCamera: "Preparando câmera...",

    // Instruções de posicionamento
    positionFace: "Posicione seu rosto no centro",
    holdStill: "Mantenha-se parado",

    // Status de processamento
    processing: "Processando...",

    // Mensagens de resultado
    success: "Verificação concluída!",
    error: "Erro na verificação",

    // Botões
    tryAgain: "Tentar novamente",
    cancel: "Cancelar"
)

let config = HubConfig(
    apiBaseUrl: "https://api.yourserver.com",
    apiKey: "your-api-key",
    appName: "YourAppName",
    cek: "your-base64-encoded-cek",
    localization: customLocalization
)

Textos de Feedback em Tempo Real

Durante a captura facial, o SDK exibe feedbacks para guiar o usuário:
let localization = HubLocalization(
    // Detecção de rosto
    noFaceDetected: "Nenhum rosto detectado",
    multipleFaces: "Múltiplos rostos detectados",
    faceCentered: "Perfeito! Mantenha essa posição",

    // Distância
    tooClose: "Afaste-se um pouco",
    tooFar: "Aproxime-se",

    // Posicionamento
    tooLeft: "Mova para a direita",
    tooRight: "Mova para a esquerda",
    tooHigh: "Abaixe a cabeça levemente",
    tooLow: "Levante a cabeça levemente",

    // Ângulo/Pose
    faceAngleMisaligned: "Alinhe seu rosto com a câmera",
    lookStraightAhead: "Olhe diretamente para a câmera",
    holdHeadStraight: "Mantenha sua cabeça reta",

    // Expressão
    closedEyes: "Mantenha os olhos abertos",
    neutralExpression: "Mantenha uma expressão neutra",

    // Iluminação
    tooDark: "Ambiente muito escuro",
    tooBright: "Luz muito forte",

    // Captura
    holdSteady: "Mantenha-se parado",
    frameYourFace: "Enquadre seu rosto no oval"
)

Textos de Telas

Personalize os textos das telas principais:
let localization = HubLocalization(
    // Tela de preparação
    getReadyTitle: "Prepare-se",
    getReadySubtitle: "Vamos iniciar a verificação",
    getReadyMessage: "Certifique-se de estar em um ambiente bem iluminado",

    // Tela de captura
    captureTitle: "Captura Facial",
    captureHelpText: "Posicione seu rosto no centro da tela",

    // Tela de revisão
    reviewPhotoTitle: "Revise sua Foto",
    reviewPhotoInstruction: "A imagem está clara e bem iluminada?",

    // Tela de retry
    retryTitle: "Vamos Tentar Novamente",
    retrySubtitle: "A captura anterior não foi bem sucedida",
    retryTip1: "Mantenha seu rosto centralizado",
    retryTip2: "Evite movimentos bruscos",

    // Tela de upload
    uploadingMessage: "Enviando sua foto...",
    successMessage: "Verificação concluída com sucesso!"
)

Textos de Botões

let localization = HubLocalization(
    // Botões principais
    buttonBack: "Voltar",
    buttonCapture: "Capturar",
    buttonRetake: "Refazer",
    buttonSubmit: "Enviar",
    buttonImReady: "Estou Pronto",
    buttonTryAgain: "Tentar Novamente",
    buttonOk: "OK",
    buttonContinue: "Continuar",
    buttonCancel: "Cancelar"
)

Idiomas Predefinidos Completos

Português (Brasil) - .ptBR

let ptBrLocalization = HubLocalization(
    loadingMessage: "Carregando...",
    preparingCamera: "Preparando câmera...",
    positionFace: "Posicione seu rosto no centro",
    holdStill: "Mantenha-se parado",
    processing: "Processando...",
    success: "Verificação concluída com sucesso!",
    error: "Erro na verificação",
    tryAgain: "Tentar novamente",
    cancel: "Cancelar",
    noFaceDetected: "Nenhum rosto detectado",
    multipleFaces: "Múltiplos rostos detectados",
    tooClose: "Afaste-se um pouco",
    tooFar: "Aproxime-se",
    tooDark: "Ambiente muito escuro",
    tooBright: "Luz muito forte"
)

Inglês (padrão) - .default

let englishLocalization = HubLocalization(
    loadingMessage: "Loading...",
    preparingCamera: "Preparing camera...",
    positionFace: "Position your face in the center",
    holdStill: "Hold still",
    processing: "Processing...",
    success: "Verification completed successfully!",
    error: "Verification error",
    tryAgain: "Try again",
    cancel: "Cancel",
    noFaceDetected: "No face detected",
    multipleFaces: "Multiple faces detected",
    tooClose: "Move away slightly",
    tooFar: "Move closer",
    tooDark: "Environment too dark",
    tooBright: "Light too bright"
)

Classes de Localização

Resumo

StructDescrição
HubLocalizationConfiguração principal de idioma e textos
.defaultPreset em inglês
.ptBRPreset em português brasileiro
Você pode criar uma localização parcial. Os campos não especificados usarão os valores padrão do idioma selecionado.

Exemplo Completo de Customização

import HubLivenessSDK

// Criar localização totalmente customizada
let customLocalization = HubLocalization(
    // Mensagens gerais
    loadingMessage: "Aguarde...",
    preparingCamera: "Iniciando câmera...",
    positionFace: "Centralize seu rosto",
    holdStill: "Fique parado",
    processing: "Analisando...",
    success: "Tudo certo!",
    error: "Ops! Algo deu errado",
    tryAgain: "Refazer",
    cancel: "Sair",

    // Feedbacks de captura
    noFaceDetected: "Cadê você?",
    multipleFaces: "Uma pessoa por vez, por favor",
    tooClose: "Dê um passo para trás",
    tooFar: "Chegue mais perto",
    tooDark: "Precisa de mais luz",
    tooBright: "Muita luz, busque sombra"
)

// Aplicar na configuração
let config = HubConfig(
    apiBaseUrl: "https://api.yourserver.com",
    apiKey: "your-api-key",
    appName: "MeuApp",
    cek: "your-base64-encoded-cek",
    localization: customLocalization
)

// Inicializar SDK
Task {
    try await HubLiveness.shared.initialize(config: config)
}

Próximos Passos