2016-11-26 11 views
2

전 세계 어느 곳에서나 현지 시간을 확인할 수있는 앱을 만들고 있습니다. Google API를 사용하여 정보를 가져오고 모든 것이 잘 작동하지만 최상의 결과를 얻으려면 사용하려는 언어를 지정해야합니다.현재 입력 언어 감지

필자의 경우 도시 이름을 입력 할 때 사용자가 사용하는 언어를 원하는 언어로 설정하는 것이 좋습니다. iPhone에서이 방법은 매우 쉽지만 MacOS에서 어떻게이 언어 코드를 얻을 수 있는지 알 수 없습니다. 누구든지 제발 도와 주실 수 있습니까? 나는 탄소 프레임 워크의 도움으로 현재의 입력을 얻고 때이 단계에서 지금입니다 레오로부터의 조언에 따라

업데이트

.

let source = TISCopyCurrentKeyboardInputSource().takeUnretainedValue() 
let lang = TISGetInputSourceProperty(source, kTISPropertyInputSourceLanguages).assumingMemoryBound(to: NSArray.self).pointee 

문제는 TISGetInputSourceProperty()UnsafeMutableRawPointer를 반환한다는 것입니다. 그리고 저는 그것을 읽을 수있는 것으로 변환 할 방법을 찾을 수 없습니다. 나는 그것이 NSArray이라고 생각하지만, 나는 그것을 변환하려고하는 행운이 없다. 누군가 제발 도와 드릴까요?

+0

당신이 언어 및 지역 환경 설정에서 선호하는 언어를 알고 싶니? – Willeke

+0

속성은 CFString입니다. –

답변

0

탄소는 현재 언어를 제공하는 TISCopyCurrentKeyboardInputSource()입니다.

TISInputSourceRef source = TISCopyCurrentKeyboardInputSource(); TISGetInputSourceProperty (source, kTISPropertyInputSourceLanguages));

언어 변경시기를 결정하기 위해 kTISNotifySelectedKeyboardInputSourceChanged 배포 알림도 있습니다.

간편한 사용을 위해 위 API의 문자열 값을 반환하는 Objective C 래퍼를 만드는 것이 좋습니다.

+0

아니요, 작동하지 않습니다. "Paris"또는 "Hello"를 입력하면 "und"가 언어로 표시됩니다. 긴 문자열의 경우 솔루션이 작동하지만 내 경우에는 사용자가 도시를 검색하므로 짧은 이름 만 입력됩니다. –

+0

Carbon에는 현재 언어를 제공하는'TISCopyCurrentKeyboardInputSource'가 있습니다. 언어 변경시기를 결정하는'kTISNotifySelectedKeyboardInputSourceChanged' 배포 통지도 있습니다. –

+0

감사합니다. 나는이 방법을 시도하고 그것이 작동하는 것 같습니다. 그러나 UnsafeMutableRawPointer를 반환하고 올바르게 읽는 방법을 찾을 수 없습니다. 내 업데이트 된 답변을 확인할 수 있습니다 –