API 플랫폼 국제화: 다른 방식
API 플랫폼, API 플랫폼이 없는 곳이 없습니다!
최근 the great article of Locastic 에서는 API에서 번역을 수행하는 까다로운 주제를 보았습니다. 특히 API Platform 에서는
우리의 프로젝트에 대해 우리는 매우 간결한 해결 방안을 찾았고 우리가 좋아하는 API 플랫폼에서 intl를 실현할 수 있다!
우선, 우리는 지역 설정 매개 변수와 지역 설정 실체를 가지고 지역 설정 내용과 언어 인용을 관리한다.
우리는 몇 가지 매개 변수를 추가했다.
영역 설정 실체를 사용하고 데이터베이스에 새로운 영역 설정을 추가할 수 있습니다.로케일 엔티티의 우선 순위가 매개변수보다 높습니다.데이터베이스에 로케일이 없으면
우리 구역 설정 실체🏁
설정과 매개 변수 사이의 전환을 처리하기 위한 Locale Repository가 있습니다:
주의: 우리는 자동 연결을 사용하여 파라미터를 구조 함수에 전달합니다
지금 우리는 우리의 실체를 번역해야 한다
우리는 사용Doctrine Translatable Extension을 선택하여 우리의 번역 가능한 실체를 관리한다
간단해!우리는 번역 가능한 확장 문서의 원칙에 따라 우리의 번역 가능한 행위를 우리의 실체에 부여한다.다음은 번역 가능한 실체의 예입니다:
간단하지 않아요?👌
But how can this work? Where is the magic trick? How can I know which locale is use or how can I add new languages and translations?
이건 마술이야. 우리 Locale Listener가 있어
API(GET, POST, PUT, PATCH)를 호출할 때 특정 로케일의 데이터 (또는 POST 데이터) 를 검색합니다.요청 헤더에 영역 설정을 전달함으로써 이 점을 실현할 수 있습니다:
X-LOCALE: fr
영역이null로 설정되었거나 지원되지 않으면 기본 영역 설정을 사용합니다
❤️ 저는 이 해결 방안을 좋아합니다. 왜냐하면 이것은 매우 간단하고 표준 라이브러리를 사용하기 때문입니다. 예를 들어 Symfony 응용 프로그램에 주로 사용되는 Doctrine Translateable
이외에는 상태가 없으며 REST 호환성을 유지합니다(가져오거나 발표하거나 배치할 때 실체 상하문에 유지됩니다)
다중 언어로 필드를 편집하려면 원하는 프런트엔드 프레임워크를 사용하여 필드를 만들고 POST/PUT 요청에서 제목을 올바른 언어로 변경하십시오
예를 들어, API 언어 환경 끝점을 통해 사용 가능한 언어 환경을 검색하여 로고를 표시합니다.🇫🇷 및 편집 버튼✏️. 편집 버튼을 클릭하면 GET 요청의 X-LOCALE 제목이 올바르므로 올바른 언어 데이터가 있는 편집 양식으로 이동합니다.양식을 제출할 때 엔티티에서 PUT를 호출하고 올바른 X-LOCALE 헤더를 선택한 언어로 설정합니다
주의: 이런 방법을 사용하면 모든 언어의 실체 id가 같습니다.회사 id=42는 항상 다른 언어의 회사 42입니다.번역 가능한 주석 필드만 변경됩니다.따라서 용례와 일치하는지 확인하십시오.나는 독특하고 완벽한 해결 방안이 있다고 생각하지 않는다.em>
읽어주셔서 감사합니다. 언제든지 평론을 발표해 주십시오!🚀
미디어로부터:
Internationalization with API Platform: the other way | by Titouan BENOIT | Medium
Titouan BENOIT ・ ・
Medium
프레젠테이션 저장소:
Nightbr / api-intl
Symfony4 flex with API platform with Doctrine Translatable: https://medium.com/@titouanbenoit/internationalization-with-api-platform-the-other-way-5ce9c446737f
api intl
View on GitHub