SwiftUI 접근성 언어
SwiftUI로 언어 학습 앱을 만들 때, VoiceOver가 기기의 로케일과 다른 언어로 된 텍스트를 정확하게 발음하지 못할 수 있습니다. 이 문제를 해결하려면 VoiceOver에서 사용하는 접근성 언어를 변경해야 합니다. UIKit에서는 텍스트 레이블의 accessibilityLanguage 속성을 설정할 수 있지만, SwiftUI에서는 사용할 수 없습니다. 한 가지 제안된 해결책은 accessibilitySpeechLanguage 속성이 있는 AttributedString을 사용하는 것이지만, 작동하지 않습니다. 또 다른 해결책은 environment modifier를 사용하여 각 뷰의 로케일 환경을 변경하는 것입니다. 그러나 이는 Text 뷰에 verbatim 이니셜라이저를 사용하는 경우에만 작동합니다. 왜냐하면 기본적으로 텍스트를 지역화된 문자열 키로 취급하기 때문입니다. 이 해결책은 Text 뷰에서는 작동하지만, Label과 같은 뷰에서는 더 긴 형식이 필요합니다. 레이블 또는 자식 텍스트 뷰에 로케일을 적용할 수 있지만, 아이콘이 있는 Label을 사용하는 경우, Button에 적용해야만 로케일이 적용됩니다. 이는 VoiceOver가 "button"이라는 단어를 수정된 로케일로 발음하지만, 메인 텍스트는 올바르게 발음된다는 의미입니다. 결론적으로, SwiftUI에서 VoiceOver가 사용하는 접근성 언어를 변경하려면 각 뷰의 로케일 환경을 변경하는 것이 해결책입니다.