나는 보통 사용자의 full name을 작성해야 할 때 아래와 같이 string interpolation을 사용했다.
struct User {
var firstName: String
var lastName: String
}
extension User {
var fullName: String {
"\(firstName) \(lastName)"
}
}
그런데 생각해보면 모든 나라에서 full name을 표기할 때 한국처럼 성 + 이름의 표기법을 따르지 않는다.
미국의 경우 일반적으로 이름(first name || given name) + middle name + 성(last name || family name)의 순서에 따라 표기한다.
그럼 여러 국가를 대상으로 서비스하는 앱을 개발중이라면 어떻게 현지화해야할까? 문득 궁금했던 적이 있는데 지나가는 생각으로는 '각 국가의 이름 표기법을 일일이 찾아서 각각 작성해주어야 하나'하고 넘어갔었다. 그러다가 어제 링크드인에서 해답이 되는 글을 보게 되면서 개발중인 소스에 적용시키고 좋은 팁이 될 것 같아 글로 작성해본다.
결론부터 말하자면 이 문제를 해결해줄 fomatter를 이미 스위프트에서 제공한다. 스위프트는 여러 형태의 데이터들을 포맷팅하기 위한 API를 많이 제공하고 있고 사람 이름 데이터에 대한 포맷도 맞춰줄 수 있다. 공식문서를 보다보니 생소한 데이터들까지도 formatter를 제공하고 있었다. 앞으로는 Foundations를 더 파보는 것도 좋겠다고 생각했다.
PersonNameComponentsFormatter | Apple Developer Documentation
A formatter that provides localized representations of the components of a person’s name.
developer.apple.com
이를 사용하면 fullName을 아래 코드와 같이 수정하여 따로 현지화할 필요없이 국가 설정에 맞게 풀네임을 제공할 수 있다.
struct User {
var firstName: String
var lastName: String
}
extension User {
var fullName: String {
let personNameFormatter = PersonNameComponentsFormatter()
var components = PersonNameComponents()
components.givenName = firstName
components.familyName = lastName
return personNameFormatter.string(from: components)
}
}
작지만 오늘도 레벨업 ꉂꉂ(ᵔᗜᵔ*)
Ref.
LinkedIn Vincent Pradeilles 👨🏻💻 페이지: ``` var fullName: String { return "\(givenName)… | 댓글 1
``` var fullName: String { return "\(givenName) \(familyName)" } ``` Did you know that this is not a correct way to format a person's name? 🤨 Let me… | 댓글 10
www.linkedin.com
나는 보통 사용자의 full name을 작성해야 할 때 아래와 같이 string interpolation을 사용했다.
struct User {
var firstName: String
var lastName: String
}
extension User {
var fullName: String {
"\(firstName) \(lastName)"
}
}
그런데 생각해보면 모든 나라에서 full name을 표기할 때 한국처럼 성 + 이름의 표기법을 따르지 않는다.
미국의 경우 일반적으로 이름(first name || given name) + middle name + 성(last name || family name)의 순서에 따라 표기한다.
그럼 여러 국가를 대상으로 서비스하는 앱을 개발중이라면 어떻게 현지화해야할까? 문득 궁금했던 적이 있는데 지나가는 생각으로는 '각 국가의 이름 표기법을 일일이 찾아서 각각 작성해주어야 하나'하고 넘어갔었다. 그러다가 어제 링크드인에서 해답이 되는 글을 보게 되면서 개발중인 소스에 적용시키고 좋은 팁이 될 것 같아 글로 작성해본다.
결론부터 말하자면 이 문제를 해결해줄 fomatter를 이미 스위프트에서 제공한다. 스위프트는 여러 형태의 데이터들을 포맷팅하기 위한 API를 많이 제공하고 있고 사람 이름 데이터에 대한 포맷도 맞춰줄 수 있다. 공식문서를 보다보니 생소한 데이터들까지도 formatter를 제공하고 있었다. 앞으로는 Foundations를 더 파보는 것도 좋겠다고 생각했다.
PersonNameComponentsFormatter | Apple Developer Documentation
A formatter that provides localized representations of the components of a person’s name.
developer.apple.com
이를 사용하면 fullName을 아래 코드와 같이 수정하여 따로 현지화할 필요없이 국가 설정에 맞게 풀네임을 제공할 수 있다.
struct User {
var firstName: String
var lastName: String
}
extension User {
var fullName: String {
let personNameFormatter = PersonNameComponentsFormatter()
var components = PersonNameComponents()
components.givenName = firstName
components.familyName = lastName
return personNameFormatter.string(from: components)
}
}
작지만 오늘도 레벨업 ꉂꉂ(ᵔᗜᵔ*)
Ref.
LinkedIn Vincent Pradeilles 👨🏻💻 페이지: ``` var fullName: String { return "\(givenName)… | 댓글 1
``` var fullName: String { return "\(givenName) \(familyName)" } ``` Did you know that this is not a correct way to format a person's name? 🤨 Let me… | 댓글 10
www.linkedin.com