Idiomas Suportados
O SDK suporta três idiomas nativamente:
enum class SupportedLanguage {
EN, // English
PT_BR, // Portuguese (Brazil)
ES // Spanish
}
Usando Idioma Predefinido
Método Simples
import com.valid.entry.localization.LivenessLocalization
import com.valid.entry.localization.SupportedLanguage
// Opção 1: Português Brasileiro
val localization = LivenessLocalization (language = SupportedLanguage.PT_BR)
// Opção 2: Usando factory methods
val localizationPtBr = LivenessLocalization. portugueseBrazil ()
val localizationEnglish = LivenessLocalization. default () // English
val localizationSpanish = LivenessLocalization. spanish ()
Aplicar na Configuração
val config = LivenessHubConfig (
apiBaseUrl = "https://api.yourserver.com" ,
apiKey = "your-api-key" ,
appName = "YourAppName" ,
cekClientId = "your-client-id" ,
cekKeyId = "your-key-id" ,
cekEncryptionKey = "your-encryption-key" ,
localization = localization // Aplica o idioma
)
Customização Completa de Textos
Para customizar todos os textos exibidos durante o fluxo de liveness, você pode criar objetos personalizados para cada categoria.
Estrutura de Strings
O SDK organiza os textos em três categorias:
ScreenStrings Textos de telas (títulos, instruções, mensagens)
FeedbackStrings Textos de feedback em tempo real
ButtonStrings Textos dos botões
Textos de Telas (ScreenStrings)
import com.valid.entry.localization.ScreenStrings
val screenStrings = ScreenStrings (
// Tela de captura
captureTitle = "Captura Facial" ,
captureHelpText = "Posicione seu rosto no centro da tela" ,
loadingText = "Aguarde, processando..." ,
// Tela de revisão
reviewPhotoTitle = "Revise sua Foto" ,
reviewPhotoInstruction = "A imagem está clara e bem iluminada?" ,
// Tela de preparação
getReadyTitle = "Prepare-se" ,
getReadySubtitle = "Vamos iniciar a verificação" ,
getReadyMessage = "Certifique-se de estar em um ambiente bem iluminado" ,
getReadyMessageLine2 = "Remova acessórios como óculos escuros ou bonés" ,
// 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" ,
yourImageLabel = "Sua Foto" ,
idealImageLabel = "Foto Ideal" ,
// Tela de upload
uploadingMessage = "Enviando sua foto..." ,
uploadingSlowConnection = "Conexão lenta, por favor aguarde..." ,
successMessage = "Verificação concluída com sucesso!"
)
Textos de Feedback (FeedbackStrings)
Estes textos são exibidos em tempo real durante a captura:
import com.valid.entry.localization.FeedbackStrings
val feedbackStrings = FeedbackStrings (
// 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" ,
moveToEyeLevel = "Posicione a câmera na altura dos olhos" ,
// Ângulo/Pose
invalidIED = "Distância inter-ocular inválida" ,
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" ,
smiling = "Mantenha uma expressão neutra" ,
neutralExpression = "Perfeito, mantenha assim" ,
removeDarkGlasses = "Remova seus óculos escuros" ,
// Iluminação
tooDark = "Ambiente muito escuro" ,
tooBright = "Luz muito forte" ,
lightFaceEvenly = "Ilumine seu rosto uniformemente" ,
brightenEnvironment = "Encontre um ambiente mais iluminado" ,
// Captura
holdSteady = "Mantenha-se parado" ,
frameYourFace = "Enquadre seu rosto no oval"
)
Textos de Botões (ButtonStrings)
import com.valid.entry.localization.ButtonStrings
val buttonStrings = ButtonStrings (
back = "Voltar" ,
capture = "Capturar" ,
retake = "Refazer" ,
submit = "Enviar" ,
switchCamera = "Trocar Câmera" ,
flashOn = "Flash Ligado" ,
flashOff = "Flash Desligado" ,
imReady = "Estou Pronto" ,
tryAgain = "Tentar Novamente" ,
ok = "OK" ,
continueButton = "Continuar"
)
Aplicando Customização Completa
Combine todas as strings customizadas e aplique na configuração:
import com.valid.entry.localization.*
// Crie o objeto de strings customizadas
val customStrings = LivenessStrings (
screens = screenStrings,
feedback = feedbackStrings,
buttons = buttonStrings
)
// Aplique a localização customizada
val localization = LivenessLocalization (
language = SupportedLanguage.PT_BR,
customStrings = customStrings
)
// Use na configuração do SDK
val config = LivenessHubConfig (
apiBaseUrl = "https://api.yourserver.com" ,
apiKey = "your-api-key" ,
appName = "YourAppName" ,
cekClientId = "your-client-id" ,
cekKeyId = "your-key-id" ,
cekEncryptionKey = "your-encryption-key" ,
localization = localization
)
LivenessHubSDK. init (applicationContext = this , config = config)
Classes de Localização
Resumo
Classe Descrição LivenessLocalizationConfiguração principal de idioma e textos SupportedLanguageEnum de idiomas suportados LivenessStringsContainer para todas as strings customizadas ScreenStringsTextos de telas FeedbackStringsTextos de feedback em tempo real ButtonStringsTextos de botões
Você pode customizar apenas as strings que deseja alterar. As demais usarão os
valores padrão do idioma selecionado.
Próximos Passos