iOS info.plist 파일에서 문자열을 현지화하는 방법은 무엇입니까?


258

아시다시피 iOS 8 에는 사용자 위치를 사용하기 위해 NSLocationWhenInUseUsageDescription 키 가 필요합니다 . 이 키와 일반적인 정보를 정보 plist에 추가했습니다. 여기에 이미지 설명을 입력하십시오

plist 파일에서 번역 문자열을 어떻게 사용합니까?

-업데이트-

지역화 가능한 문자열이 이미 있습니다. plist 문자열 내에서 NSLocalizedString (MYSTRING, nil)과 같은 것을 사용할 수 있는지 궁금합니다. 현지화를 위해 info.plist의 여러 파일을 만들 수 있지만 더 쉬운 방법이 있는지 궁금합니다.


이 문제를 해결 한 적이 있습니까? NSLocationWhenInUseUsageDescription도 현지화하는 데 어려움을 겪고 있습니까?
Oliver Pearmain

답변:


489

InfoPlist.strings파일을 사용 하여의 값을 현지화 해야합니다 Info.plist. 이렇게하려면로 이동하여의 탭 아래를 File->New->File선택 Strings File하고 이름을 지정한 다음 생성하십시오. 다음과 같이 현지화하려는 값을 열고 삽입하십시오 .ResourceiOSInfoPlistInfo.plist

NSLocationWhenInUseUsageDescription = "Description of this";

이제 InfoPlist.strings번역으로 파일을 현지화 할 수 있습니다 . 행운을 빕니다!

편집하다:

현지화 옵션을 선택하거나 필요한 경우 현지화를 활성화하십시오.

오른쪽 편집기

왼쪽 편집기에서도 파일을 볼 수 있어야합니다.

왼쪽 편집기

편집하다:

Info.plist키 현지화에 대한 공식 문서는 다음과 같습니다 .

크레딧마르코 이 답변에 사진을 포함한, 감사합니다!


15
문자열 파일을 만든 후 Info.plist 파일에도 키를 포함시켜야합니까, 아니면 삭제해도 안전한가요?
rounak

11
팁 : "InfoPlist.strings"라는 이름 만 사용하십시오. 예를 들어, 원래 infoplist 파일의 이름이 다른 것이었지만 작동하려면이 이름을 정확하게 사용해야했습니다.
Sjoerd Perfors

22
시뮬레이터에서 현지화를 테스트 할 때. xcode 대상의 언어뿐만 아니라 시뮬레이터 자체의 언어를 변경해야했습니다. 다른 사람을위한 경고 일뿐입니다.
John Webb

10
올바른 사용법은 keyname = "your text"입니다. 예 : NSLocationWhenInUseUsageDescription = "텍스트"
Magurizio

10
주의 :이 파일의 키에는 따옴표가 없어야하며 이는 현지화와 다릅니다. 예 : NSMicrophoneUsageDescription = "귀하의 설명";
Yuchao Zhou

33

위의 모든 내용이 저에게는 효과가 없었으므로 (XCode 7.3) Apple 참조 방법을 읽었으며 위에서 설명한 것보다 훨씬 간단합니다. 애플에 따르면 :

현지화 된 값은 Info.plist 파일 자체에 저장되지 않습니다. 대신 특정 지역화 값을 InfoPlist.strings라는 이름의 문자열 파일에 저장합니다. 이 파일은 동일한 지역화를 위해 다른 리소스를 저장하는 데 사용하는 언어 별 프로젝트 디렉토리에 배치합니다.

따라서 InfoPlist.strings 라는 문자열 파일을 만들어 "xx"언어의 xx.lproj 폴더에 넣고 File-> Add Files to ...를 사용하여 프로젝트에 추가했습니다. 그게 다야. "현지화 된 자원을 혼합 할 수 있습니다"키 = YES가 필요하지 않으며 base.lproj 또는 en.lproj에 InfoPlist.string이 필요하지 않습니다.

응용 프로그램은 Info.plist 키-값을 언어 별 파일에서 키를 찾을 수없는 경우 기본값으로 사용합니다. 따라서, 나는 영어 값을 Info.plist 파일에 넣고 번역 된 값을 언어 별 파일에 넣고 테스트했으며 모든 것이 작동합니다.

특히, InfoPlist.strings (base.lproj, en.lroj 및 xx.lproj에 파일 버전을 작성 함)를 현지화 할 필요가 없으며 제 경우에는 작동하지 않습니다.


2
적절한 문서에 대한 링크를 포함하지 않은 이유는 무엇입니까?
쥬라기 September

3
다음의 경우 사람에 애플 문서의 관련 페이지에 대한 링크가 관심 : developer.apple.com/library/archive/documentation/General/...
벤드

그리고 우리는 그 xx를 어떻게 결정합니까? 예를 들어 영어의 경우 en, En, Eng, English 등이 될 수 있습니까? 내가 초보자이기 때문에 바보 같은 질문이라면 죄송합니다
Awais Nasir

귀하의 답변은 대체 언어 시나리오를 제외하고 저에게 효과적이었습니다. 앱은 대체 언어가 항상 이전에 사용 된 언어이며 영어가 아니라 영어입니다. 내 영어 값은 Info.plist 파일에 있지만 base.lproj도 시도했습니다.
Awais Nasir

19

무언가가 작동하지 않으면 다음을 추가했는지 확인하십시오.

"현지화 된 자원을 혼합 할 수 있습니다"= 예

info.plist에. 필자의 경우 InfoPlist.strings 파일은 무시되었습니다.


15

  1. iOS 시뮬레이터는 기본적으로 시스템 언어를 이용합니다. 번역을 테스트하려면 iOS 시뮬레이터 설정에서 언어 및 지역을 변경하십시오.

  2. 현지화 문자열 ( 여기에서 Apple 문서 참조 )은

    NSLocationWhenInUseUsageDescription = "Description of this";

    (따옴표 "..."포함)

    "NSLocationWhenInUseUsageDescription" = "Description of this";

귀중한 추가 사항이지만, 이것은 새로운 답변이 아니라 각각의 답변 아래에 주석이어야한다고 생각합니다. 또한 "363"은 게시물 식별자가 아니라 답변에 포함 된 투표 수 (이후 번호가 변경됨)입니다.
John J. Camilleri

7
나는 거기에 의견을 추가하는 평판이 없습니다.
Giuseppe Beccari

키 주위에 따옴표 "..."를 사용하는지 여부는 중요하지 않습니다 (예 : ( "NSLocationWhenInUseUsageDescription"="description"유효)). 유무에 관계없이 가능합니다.
mluisbrown

12

Apple 안내서를 읽고 여기에 나열된 WWDC 자료를 보는 것이 좋습니다. 국제화 및 현지화 주제

구체적으로 질문에 대답하기 위해 프로젝트에 새 언어를 추가하면 여기에 이미지 설명을 입력하십시오포함 할 InfoPlist 파일을 선택할 수 있습니다 (대상이 여러 개인 경우 Info plist 파일이 여러 개 있음). 다음 화면을 보려면 현지화 아래의 +를 누르고 지원을 추가 할 새 언어를 선택하십시오. 여기에 이미지 설명을 입력하십시오

추가 한 후에는 주어진 언어에 적합한 lproj 디렉토리에 필요한 문자열 파일을 생성합니다.

--편집하다--

분명히하기 위해 iOS는 plist 항목의 키를 현지화 된 문자열 파일의 키로 사용하여 사용자가 현재 선택한 언어를 기반으로 Plist 파일의 문자열을 교체합니다.


3
하나의 키로 전체 plist를 번역하는 것은 과도합니다. 자세한 정보는 여기에서 찾으십시오 : bit.ly/1yBUTru
RGML

2
XCode 9에서는 그렇지 않습니다. 새로운 언어를 추가 할 때 plist 현지화를 요구하지 않습니다.
Tom

나는 Xcode 9에 대해 살펴볼 필요가 있습니다-아직 새로운 Xcode에서 테스트 할 기회가 없었습니다.
Matt S.

11

단계별 Info.plist 현지화 :

  1. Xcode에서 Resources 폴더 (루트에 위치)를 찾으십시오.
  2. Resources 폴더를 선택하십시오
  3. 그런 다음 주 메뉴 File-> New-> File ...을 누르십시오.
  4. "자원"문자열 파일 섹션에서 선택하고 다음을 누르십시오.
  5. 그런 다음 Save As필드에 InfoPlist 만 작성하십시오 ( "I"자본 및 "P"자본)
  6. 그런 다음 만들기를 누릅니다
  7. 그런 다음 Resources 폴더에 생성 된 InfoPlist.strings 파일을 선택하고 오른쪽 메뉴에서 "Localize"버튼을 누릅니다.
  8. 그런 다음 프로젝트 네비게이터에서 프로젝트를 선택하고 프로젝트의 프로젝트 목록을 선택하십시오.
  9. 하단의 정보 탭에서 원하는 언어를 사용할 수 있습니다 (현지화 섹션에 있음)
  10. 리소스 폴더에서 볼 수있는 언어
  11. info.plist 파일에서 값 ( "키")을 현지화하려면 텍스트 편집기로 열고 현지화하려는 모든 키를 얻을 수 있습니다.
  12. 위의 예제와 같은 InfoPlist.strings에 예제로 키를 작성하십시오.

"NSLocationAlwaysAndWhenInUseUsageDescription"= "blabla";

"NSLocationAlwaysUsageDescription"= "blabla2";

모두 작동하며 info.plist 파일을 현지화했습니다!


4

Xcode 9와 같이 현지화를 추가하려고 할 때 info.plist의 문제가 발생하지 않는 사람

info.plist를 localiazble로 만들고 아래 그림과 같이 파일 관리자에서 localize 버튼을 클릭하여 localiazble을 만들어야합니다.

그러면 새 현지화를 추가 할 때 info.plist가 파일 리소스에 포함됩니다.

여기에 이미지 설명을 입력하십시오


3
문제가 발생 했습니까? xcode에서 "그러한 파일이 없어서 info.plist 파일을 열 수 없습니다."라는 메시지가 표시되어 현지화에 두 가지 언어를 추가하면 프로젝트를 빌드 할 수 없습니다.
mkkrolik

2
@mkkrolik 나는 지금 같은 문제가 있습니다. 해결책을 찾았습니까?
Todanley

@ Todanley는이 솔루션을 건너 뛰면 작동하지 않습니다. 대신 InfoPlist.strings를 사용하십시오.
mkkrolik

@mkkrolik 감사합니다. 또한 시뮬레이터로 테스트 할 때 시뮬레이터가 작동하도록 시뮬레이터의 언어 설정을 변경해야했습니다.
Todanley

3

RGML에서 알 수 있듯이 InfoPlist.strings를 작성하고 현지화 한 다음 키와 값을 다음과 같이 추가 할 수 있습니다. "NSLocationWhenInUseUsageDescription"= "도움이 필요합니다!";

지정된 언어의 info.plist에 키가 추가됩니다.


0

제 경우에는 모든 것이 올바르게 설정되었지만 여전히 InfoPlist.strings 파일을 찾을 수 없습니다.

실제로 효과가 있었던 유일한 것은 InfoPlist.strings 파일제거하고 프로젝트에 다시 추가하는 것이 었습니다 .


0

필자의 경우 현지화가 작동하지 않아 이름에 '-'기호가 표시되었습니다. 예 : "aero-Info.plist"및 현지화 된 파일 : "aero-InfoPlist.strings"및 "aeroInfoPlist.strings"가 작동하지 않았습니다.


0

InfoPlist.strings파일을 사용할 때 (XCode에서 Info.plist파일 옆에 배치해야 함 -실제 파일 위치는 아마도 프로젝트 내의 어느 곳에 나있을 수 있습니다

XCode에서보기

) 번역에 키의 짧은 이름을 사용하도록주의하십시오.

사용하려고 Privacy - Camera Usage Description했지만 작업 키는NSCameraUsageDescription

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.