0Pricing
Swift Academy · 강의

문자열 카탈로그와 지역화된 문자열

최신 String Catalog로 텍스트를 지역화합니다.

문자열 카탈로그와 지역화된 문자열은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

왜 현지화해야 할까요

현지화(l10n)는 앱의 텍스트를 사용자의 언어로 표시하는 것이고, 국제화(i18n)는 현지화가 가능하도록 코드를 구성하는 것입니다. 첫 단계는 사용자에게 표시되는 문자열을 하드코딩하지 않고 대신 resource 카탈로그에서 가져오는 것입니다.

// Hardcoded — bad for localization
// let title = "Welcome"

// Localized — looked up by key
let title = String(localized: "Welcome")

문자열 카탈로그

최신 엑스코드 프로젝트에서는 문자열 카탈로그(.xcstrings 파일)를 사용합니다. 이 파일은 현지화 가능한 모든 key, 언어별 번역, 주석과 복수형 처리 같은 메타데이터를 나열하는 단일 JSON 기반 파일입니다. 엑스코드는 코드에서 key를 자동으로 추출할 수 있습니다.

// Localizable.xcstrings holds entries like:
// key: "Welcome"
//   en: "Welcome"
//   tr: "Hos geldiniz"
//   ja: "Yokoso"

String(localized:)

코드에서 String(localized:)는 런타임에 key를 현재 로캘에 맞는 번역으로 확인합니다. 전달하는 문자열 리터럴은 key이자 개발 언어의 fallback 역할을 합니다.

let greeting = String(localized: "Welcome back")
let cancel = String(localized: "Cancel")
print(greeting)

번역자를 위한 주석 추가하기

‘실행’이라는 단어는 프로그램을 실행한다는 뜻일 수도 있고 조깅한다는 뜻일 수도 있습니다. comment: 매개변수는 번역자에게 맥락을 제공하므로 적절한 표현을 선택할 수 있습니다. 주석은 문자열 카탈로그에 자동으로 반영됩니다.

let runLabel = String(
    localized: "Run",
    comment: "Button that executes the user's code")

값 보간하기

현지화된 문자열에 런타임 값을 삽입할 수 있습니다. 스위프트는 각 보간을 형식 자리표시자로 바꾸므로 번역자가 그 순서를 바꿀 수 있습니다. 언어마다 주어와 수량을 배치하는 위치가 다릅니다.

let name = "Mira"
let count = 3
let msg = String(localized: "\(name) has \(count) new messages")
print(msg)

SwiftUI의 LocalizedStringKey

SwiftUI에서는 String(localized:)를 직접 호출하는 일이 거의 없습니다. 대부분의 텍스트를 받는 뷰가 LocalizedStringKey를 사용하므로 일반 문자열 리터럴이 자동으로 현지화됩니다.

// In SwiftUI — the literal is a LocalizedStringKey
// Text("Welcome back")        // auto-localized
// Button("Save") { save() }   // auto-localized
let key: LocalizedStringKey = "Welcome back"
_ = key

의도하지 않은 현지화 피하기

SwiftUI는 리터럴을 key로 취급하므로 동적인 String 변수는 현지화되지 않습니다. 문자열을 이어 붙여 만들면 카탈로그는 실제 key를 볼 수 없습니다. 현지화하려면 하나의 문자열 리터럴을 전달하고, 명시적으로 현지화하지 않을 때는 verbatim:을 사용하십시오.

let userInput = "hello"
// Text(userInput)            // NOT a localization key
// Text(verbatim: userInput)  // explicitly raw, never localized
let verbatimKey = userInput
_ = verbatimKey

테이블 지정하기

대규모 앱은 문자열을 여러 카탈로그(테이블)로 나눕니다. 특정 테이블과 번들을 지정할 수 있으며, 프레임워크나 스위프트 패키지 안에 문자열을 포함해 배포할 때 특히 중요합니다.

let onboardingTitle = String(
    localized: "Get Started",
    table: "Onboarding",
    bundle: .main)

LocalizedStringResource

LocalizedStringResource는 나중에 저장하고 확인할 수 있는 값으로 현지화 가능한 문자열을 나타냅니다. 프로세스 간에도 사용할 수 있어 앱 인텐트와 위젯에 유용합니다. 실제 조회는 표시 시점까지 미뤄집니다.

let resource = LocalizedStringResource("Order shipped")
// Resolve later, possibly in another locale context
let resolved = String(localized: resource)
print(resolved)

기본 현지화

프로젝트의 개발 언어는 번역이 없을 때 fallback을 제공합니다. 코드에 작성한 문자열 리터럴은 원본 언어 값으로 취급되므로 코드의 가독성을 유지하면서도 welcome_screen_title 같은 원시 key를 사용자에게 제공하지 않을 수 있습니다.

// 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)

실제 조회 예시

이제 하나로 합쳐 보겠습니다. 모든 사용자 인터페이스에서 사용할 수 있도록 완전히 현지화되고, 맥락이 지정되며, 값이 보간된 메시지를 반환하는 함수입니다.

func welcomeMessage(for user: String) -> String {
    return String(
        localized: "Welcome, \(user)!",
        comment: "Greeting shown after sign-in")
}
print(welcomeMessage(for: "Ada"))

빠른 확인

SwiftUI가 텍스트를 현지화할지 결정하는 방식을 떠올려 보십시오.

복습

현지화된 텍스트를 위한 기반을 마련했습니다.

  • 번역을 문자열 카탈로그(.xcstrings)에 저장합니다.
  • String(localized:)로 문자열을 조회하고, 번역자를 위해 comment:를 추가합니다.
  • SwiftUI에서는 리터럴이 LocalizedStringKey로 변환되어 자동으로 현지화되지만 변수는 그렇지 않습니다.
  • 프레임워크에는 table:/bundle:을 사용하고, 지연된 조회에는 LocalizedStringResource를 사용합니다.

자주 묻는 질문

“문자열 카탈로그와 지역화된 문자열” 강의는 무료인가요?

네 — “문자열 카탈로그와 지역화된 문자열” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“문자열 카탈로그와 지역화된 문자열”에서 뭘 배우나요?

최신 String Catalog로 텍스트를 지역화합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“문자열 카탈로그와 지역화된 문자열” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 문자열 카탈로그와 지역화된 문자열
  2. 복수형과 Stringsdict
  3. 로캘 인식 형식 지정
  4. 오른쪽에서 왼쪽 및 레이아웃 방향
← Swift Academy(으)로 돌아가기