programing

Images.xcassets에서 이미지를 현지화하는 방법은 무엇입니까?

shortcode 2021. 1. 18. 08:24
반응형

Images.xcassets에서 이미지를 현지화하는 방법은 무엇입니까?


다음 과 같이 File Inspector사용하여 이미지를 현지화 할 수 있습니다 Localize....

여기에 이미지 설명 입력

그런 다음 이것을 얻을 수 있습니다.

여기에 이미지 설명 입력

하지만 이제는 Images.xcassets를 사용하여 iOS 프로젝트에서 내 이미지를 관리합니다. 이러한 이미지를 Images.xcassets에서 어떻게 현지화해야합니까?


(분명히) xcassets 파일을 직접 명시 적으로 현지화하는 방법은 없지만 Localizable.strings 파일을 사용하여 가져올 자산의 이름을 현지화 있습니다. 예를 들어 현지화해야하는 게임의 기본 메뉴에 그래픽 로고 처리가 있다고 가정 해 보겠습니다. 지역화 된 로고 처리를 다른 이름의 자산 파일에 넣고 이름을 Localizable.strings 파일에 추가 한 다음 다음과 같은 코드로 적절한 이미지를 가져올 수 있습니다.

UIImage *img = [UIImage imageNamed:NSLocalizedString(@"MAIN_MENU_IMAGE", nil)];

Apple이 레몬을 줄 때, 레몬 에이드를 만들거나,이 경우에는 lemonade_en, lemonade_es 또는 당신의 필요에 맞는 것을 만드십시오.

먼저 다음과 같이 자산 파일에 원하는 각 언어에 대한 항목을 만듭니다.

여기에 이미지 설명 입력

다음으로 장치의 언어 코드를 받아야합니다. 여기서 기억해야 할 중요한 것은 사용자가 지원되지 않는 언어를 사용하고있을 수 있으므로이 경우 기본값을 반환하십시오 (저는 영어를 사용합니다).

다음 확장은 UIApplication이 모든 것을 처리합니다.

extension UIApplication {
    var languageCode: String {
        let supportedLanguageCodes = ["en", "es", "fr"]
        let languageCode = Locale.current.languageCode ?? "en"

        return supportedLanguageCodes.contains(languageCode) ? languageCode : "en"
    }
}

이 확장은 다음을 수행합니다.

  • 내 앱에서 지원하는 언어의 배열을 만듭니다.
  • 현재 장치의 언어 코드를 얻거나 이것이 nil 인 경우 기본값을 반환합니다.
  • 마지막으로 현재 코드가 지원되는 목록에 있는지 확인합니다. 그렇다면 반환하고, 그렇지 않으면 기본 코드를 반환합니다.

이제 두 가지를 결합하여 적절한 이미지를 얻습니다.

let languageCode = UIApplication.shared.languageCode
let image = UIImage(named: "access_\(languageCode)")

인터넷에서 검색 한 결과 지금은 xcassets에서이 기능을 제공하지 않는 것 같습니다. 따라서 xcassets를 사용하여 현지화 이미지를 관리하지 마십시오.


다른 방법을 찾았습니다.

  1. asset.xcassets에 각 언어에 대한 폴더를 추가하십시오 (예 : en, it, de).
  2. 각 폴더에 "Provides Namespace"플래그를 설정합니다.
  3. 해당 폴더의 모든 이미지와 자산 복사
  4. 코드에서 다음을 호출하여 자산을로드하십시오.
let languageCode = UIApplication.shared.languageCode
let image = UIImage(named: "\(languageCode)\assetname")

"Localize ..."버튼이 Xcode 11로 돌아 왔습니다! 이제 예상대로 자산 카탈로그에서 이미지와 자산을 현지화 할 수 있습니다.

여기에 이미지 설명 입력


지금은 Images.xcassets에서 현지화가 필요한 이미지를 꺼내 표준 프로젝트 폴더에 넣습니다. 현지화되지 않은 이미지는 .xcassets에 남겨 둡니다. 현지화해야하는 이미지에 대해 귀하의 방법을 사용합니다.

참조 URL : https://stackoverflow.com/questions/21310819/how-to-localize-the-images-in-images-xcassets

반응형