2017-03-24 9 views
0

3 BundlepreferredLocalizations 내가 너무 많은 질문이 너무 혼란 : 2 preferredLocalizations 방법은 클래스 메소드하지만 경우와 같은 일부 지정되지 않은 특정 번들에 대해 계속 얘기하는 이유Bundle.preferredLocalizations 혼란

  1. 을 그들이 일부 Bundle 인스턴스에서 호출 되었습니까?

    • preferredLocalizations(from:) : 정확히 a bundle objectthe bundle 무엇입니까?

      1. 반환 번들 객체는 현재 사용자에 대한 리소스를 찾는 데 사용하는 것으로 지정된 목록에서 하나 이상의 지역화.

      2. 지역화 그 번들을 지지체의 언어 ID를 지정하는 각각의 객체는 NSString의 배열.

    • preferred​Localizations(from:​for​Preferences:​) : 정확히 the specified bundlethe receiver’s bundle 무엇입니까?

      1. 은 번들 객체가 선호하는 것 지역화, 지정된 번들 및 사용자의 언어 환경 설정 부여를 돌려줍니다.

      2. 수신기 번들으로 현지화를 식별하는 각각의 객체는 NSString의 배열. 이러한 문자열은 지정된 환경 설정에 따라 배열에서 정렬되며 localizations Array 매개 변수의 문자열에서 가져옵니다. 번들에서 사용자가 선호하는 지역화가 없으면이 메서드는 번들 지역화 중 하나를 반환합니다.

  2. preferredLocalizations(from: localizations) does't는 preferred​Localizations(from: localizations, ​for​Preferences:​ nil)과 같은 결과를 반환하는 이유는 무엇입니까? 위에서 언급 한 것처럼 자신의 문서를 읽는 것은 실제로 도움이되지 않습니다. 물론 그들은이 방법을 설계하지만, 실제로하지 봐 :

    // Locale.preferredLanguages: ["es-CN", "ja-CN", "zh-Hans-CN", "en-CN", "he-IL"]. 
    let localizations = ["de", "en", "es", "fr", "it"] 
    print(Bundle.preferredLocalizations(from: localizations)) // ["en"] 
    print(Bundle.preferredLocalizations(from: localizations, forPreferences: nil)) // ["es"] 
    

답변

0

참조 문서가 크지 않다; Technical Note 2418가 더 잘 설명됩니다.

특히,에서 :) Bundle.preferredLocalizations이 (Bundle.mainBundle() 또는 Bundle.mainBundle()의 반환 값에 의해 지원 지역화에 결과를 제한 할 것을

주 말한다. 지역화 ().당신은 언어 식별자의 다른 세트에 대해 일치하려는 경우에서 Bundle.preferredLocalizations (사용합니다. mainBundle의 지역화에 의존하지 않는 forPreferences을 :) 대신 단독으로 전달 된 두 개의 인수에 의존

을 그래서, 당신이 Bundle.preferredLocalizations(from:)를 사용하는 경우

  • 의 지방화는 당신이 처음 메인 번들 (Bundle.main.localizations)에 대해 정의 된 현지화에 대해 필터링되어 줄 나열합니다.
  • Bundle.preferredLocalizations(from:forPreferences:)을 사용하면 지정한 목록과 함께 작동합니다.

예를 들어, Bundle.preferredLocalizations(from: localizations)["en"]을 반환합니다. 이는 앱에 정의 된 스페인어 ("es") 버전이 없기 때문일 수 있습니다. 프로젝트에 스페인 지역화를 추가하면 "en-CN"앞에 "es-CN"이 있으므로 ["es"]을 반환해야합니다.