Catálogos de Strings e Strings Localizadas
Localize textos com o moderno String Catalog.
Catálogos de Strings e Strings Localizadas é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
Por que fazer localização
Localização (l10n) significa apresentar o texto do seu aplicativo no idioma do usuário; internacionalização (i18n) significa estruturar o código para tornar a localização possível. O primeiro passo é parar de inserir strings voltadas ao usuário diretamente no código e, em vez disso, obtê-las de um catálogo de resource.
// Hardcoded — bad for localization
// let title = "Welcome"
// Localized — looked up by key
let title = String(localized: "Welcome")Catálogos de Strings
Os projetos modernos do Xcode usam um String Catalog (arquivo .xcstrings). Trata-se de um único arquivo baseado em JSON que lista cada key localizável, suas traduções por idioma e metadados como comentários e pluralização. O Xcode pode extrair automaticamente as keys do seu código.
// Localizable.xcstrings holds entries like:
// key: "Welcome"
// en: "Welcome"
// tr: "Hos geldiniz"
// ja: "Yokoso"String(localized:)
No código, String(localized:) resolve uma key em tempo de execução para obter a tradução correspondente à localidade atual. O literal fornecido funciona tanto como key quanto como fallback no idioma de desenvolvimento.
let greeting = String(localized: "Welcome back")
let cancel = String(localized: "Cancel")
print(greeting)Adicionando comentários para tradutores
Uma palavra isolada como “correr” pode significar executar uma ação ou praticar corrida. O parâmetro comment: fornece contexto aos tradutores para que escolham a formulação correta. Os comentários são incluídos automaticamente no String Catalog.
let runLabel = String(
localized: "Run",
comment: "Button that executes the user's code")Interpolando valores
Você pode inserir valores obtidos em tempo de execução em uma string localizada. O Swift transforma cada interpolação em um marcador de formato para que os tradutores possam reordená-los. Os diferentes idiomas colocam o sujeito e o número em posições diferentes.
let name = "Mira"
let count = 3
let msg = String(localized: "\(name) has \(count) new messages")
print(msg)LocalizedStringKey no SwiftUI
No SwiftUI, raramente você chama String(localized:) diretamente. A maioria das exibições que aceitam texto recebe um LocalizedStringKey, portanto um literal de texto simples é localizado automaticamente.
// In SwiftUI — the literal is a LocalizedStringKey
// Text("Welcome back") // auto-localized
// Button("Save") { save() } // auto-localized
let key: LocalizedStringKey = "Welcome back"
_ = keyEvitando localização acidental
Como o SwiftUI trata literais como keys, uma variável dinâmica do tipo String não é localizada. Se você criar texto por concatenação, o catálogo nunca verá a key real. Passe um único literal sempre que quiser localização e use verbatim: quando não quiser localização explicitamente.
let userInput = "hello"
// Text(userInput) // NOT a localization key
// Text(verbatim: userInput) // explicitly raw, never localized
let verbatimKey = userInput
_ = verbatimKeyEspecificando uma tabela
Aplicativos grandes dividem as strings entre vários catálogos (tabelas). Você pode direcionar uma tabela e um pacote específicos, algo essencial ao distribuir strings dentro de um framework ou pacote do Swift.
let onboardingTitle = String(
localized: "Get Started",
table: "Onboarding",
bundle: .main)LocalizedStringResource
LocalizedStringResource representa uma string localizável como um valor que pode ser armazenado e resolvido mais tarde, inclusive entre processos (o que é útil para App Intents e widgets). Ele adia a consulta efetiva até o momento da exibição.
let resource = LocalizedStringResource("Order shipped")
// Resolve later, possibly in another locale context
let resolved = String(localized: resource)
print(resolved)A localização padrão
O idioma de desenvolvimento do projeto fornece o fallback quando falta uma tradução. O literal de string que você escreve no código é tratado como o valor no idioma de origem, portanto o código permanece legível e você nunca envia uma key bruta como welcome_screen_title aos usuários.
// If only 'en' is translated and device is set to 'fr',
// the development-language value is shown as fallback.
let fallback = String(localized: "Settings")
print(fallback)Uma consulta real
Juntando tudo: uma função que retorna uma mensagem totalmente localizada, com contexto e interpolação, pronta para qualquer interface.
func welcomeMessage(for user: String) -> String {
return String(
localized: "Welcome, \(user)!",
comment: "Greeting shown after sign-in")
}
print(welcomeMessage(for: "Ada"))Verificação rápida
Lembre-se de como o SwiftUI decide se deve localizar um texto.
Recapitulação
Você estabeleceu a base para textos localizados:
- Armazene as traduções em um String Catalog (
.xcstrings). - Consulte strings com
String(localized:), adicionandocomment:para os tradutores. - No SwiftUI, os literais se tornam
LocalizedStringKeye são localizados automaticamente; as variáveis, não. - Use
table:/bundle:para frameworks eLocalizedStringResourcepara resolução adiada.
Perguntas Frequentes
A aula “Catálogos de Strings e Strings Localizadas” é grátis?
Sim — o texto completo de “Catálogos de Strings e Strings Localizadas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Catálogos de Strings e Strings Localizadas”?
Localize textos com o moderno String Catalog. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Catálogos de Strings e Strings Localizadas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Catálogos de Strings e Strings Localizadas
- Pluralização e Stringsdict
- Formatação Sensível à Localidade
- Direita para Esquerda e Direção do Layout