2011-05-08 5 views
1

프로그래밍 콘테스트를 위해 학생들을 교육하기 위해 웹 사이트를 개설하고 있습니다. 현재이 웹 사이트는 대부분 프랑스어로되어 있지만 스페인어로 번역 될 것입니다 (다른 나라에서는 우리 웹 사이트를 사용하고 싶어합니다).부분 번역과 다중 선호 언어가있는 심포니에서 I18n

인터페이스의 국제화는 쉽지만 1500 시간 이상의 운동은 오랜 시간 전에 모두 번역되지는 않습니다.

내가 필요한 것은 사용자가 선택한 언어로 콘텐츠 (및 인터페이스)를 현지화하는 방법이지만 특정 언어로 된 해당 번역을 사용할 수없는 경우 기본 언어 (프랑스어)를 사용해야합니다. 우리는 그것을 일반화하기를 원할 것입니다 : 어떤 프랑스어 연습은 영어로 번역되고, 당신은 스페인어 사람이고 프랑스어는 말할 수 없다고 상상해보십시오. 먼저 스페인어 버전을 원하고 영어 버전을 원하면 프랑스어 버전을 원합니다.

이 경우 국제화를 사용하는 좋은 방법이 있습니까?

나는 하나 개의 언어를 시도하고 어떤 결과가없는 경우 다른 하나를 시도하지만 심포니 국제화 동작을 사용하는 경우는, 매우 효율적인 ....

답변

1

템플릿 콘텐츠를하지 않을 것입니다 수 폴백 기본 언어가 자동으로 사용 가능하게됩니다. 번역 된 문자열을 찾을 수없는 경우 __('string') 도우미에 넣은 모든 것은 기본 culture (settings.yml에 선언되어 있음)를 사용합니다. 다국어 데이터베이스 컨텐츠의 경우 Symfony i18n 테이블 동작을 사용하거나 직접 빌드해야합니다. 특정 언어의 컨텐츠를 찾을 수없는 경우 Symfony i18n 데이터베이스 처리가 기본 언어의 경우 어떻게 작동하는지 모르겠습니다. 쿼리가 복잡해질 수 있습니다. 필자의 일반적인 견해는 데이터베이스 관련 기능을 직접 구축하는 것이 더 나을 것 같지만, 그것은 나뿐입니다.

언어를 주문하려면 (처음 번역, 영어, 기본값), Symfony i18n의 기본 동작은이를 지원하지 않습니다. 스페인어 XML/XLIFF 파일에서 영어 (스페인어가 아닌) 번역을 사용할 수있는 <target> 태그 안에 영어 번역본을 넣으면 일부 유형의 해킹을 해킹 할 수 있습니다. 이것은 ES -> EN -> FR을 줄 것입니다. 그러나 너무 복잡하거나 혼란스럽지 않도록 번역을 "관리"하는 것을 목표로하는 것이 좋습니다.

희망이 있습니다.

+0

답변 해 주셔서 감사합니다. 인터페이스 (변환이 빠름)에서는 폴백이 충분해야합니다. 내용에 대해서는 "이 언어로는 사용할 수 없다"는 메시지를 보내거나 사용자를 페이지의 다른 버전으로 리디렉션 할 것입니다. site.com/fr/post/20/en 여기서 "fr"은 인터페이스 용이고 "en"은 내용 용입니다. 이렇게하면 캐시를 쉽게 사용할 수 있습니다. –