2011-10-25 2 views
20

URL을 구성하고 로케일을 넣는 방법을 결정했습니다. - 구글 방법 RESTful URL : 로케일을 어디에 넣어야합니까? example.com/en/page vs example.com/page?locale=en

  • en.example.com/page - ISN '

    1. example.com/en/page
    2. example.com/page?locale=en : 나는 두 가지 선택이 내가 example.com/en/page이 더 example.com/page?locale=en보다 더 컴팩트 보이는 한쪽에서 하위 도메인

    을 사용하고 있기 때문에 좋은 마에. 다른 쪽에서는 두 개의 URL이 example.com/en/pageexample.com/ru/page이고 두 개의 표현이있는 리소스가 있습니다. 물론 example.com/page?locale=en의 경우 하나의 리소스에 대해 두 개의 URL도 있지만, 내 취향에 따라 약간 더 RESTful입니다.

    가장 좋은 방법은 무엇입니까? 무엇을 사용하고 있으며 왜 사용하고 있습니까?

  • 답변

    25

    현지화는 안심할 수있는 Content-Negotiation API의 일부입니다.

    내가 선호하는 방식으로 헤더를 통해이를 수행합니다. HTTP는 원하는 언어를 정의하는 표준 방식을 제공합니다. Accept-Language 헤더를보십시오. https://www.w3.org/International/questions/qa-accept-lang-locales에서

    +3

    예 (http://www.opentag.com/xfaq_lang.htm 참조). Accept-Language에 대해 알고 있습니다. 그러나 러시아에서는 예를 들어 많은 사람들이 영어 로켈을 사용하지만 러시아어로 된 콘텐츠를 선호합니다. 따라서 Accept-Language 만 사용하면 콘텐츠의 언어를 변경할 기회가 없습니다 (물론 브라우저의 로캘 변경은 제외). 가장 일반적인 솔루션은 사이트 레이아웃의 언어 전환기입니다.그래서 무엇이 무엇인지 이해하려고 노력하는 것이 그러한 스위처를 구성하는 가장 좋은 방법입니다. – petRUShka

    +2

    api-client의 브라우저가 (예 : AJAX 호출을 통해) 보이니까요. 그런 다음 제안 된 URL 매개 변수 방식 (예 : lang = en)을 사용합니다. 이는 '선택 사항'의미 (Accept-Language 헤더에 대한 대체)를 제공하기 때문입니다. –

    +0

    브라우저 및 외부 서비스. 의견을 보내 주셔서 감사 드리며 같은 방식으로 생각하고 있습니다. – petRUShka

    13

    은 :

    는 HTTP 수락-Language 헤더는 원래 사용자 만의 언어를 지정하도록했다. 그러나 많은 응용 프로그램이 사용자의 로케일을 알아야하기 때문에 일반적으로 Accept-Language를 사용하여이 정보를 확인했습니다. 사용자의 로캘을 결정하는 데 HTTP Accept-Language 헤더 만 사용하는 것은 좋지 않습니다. 수락 - 언어를 독점적으로 사용하는 경우 사용자는 자신이 좋아하는 것이 아닌 일련의 선택 항목에 수갑을 채울 수 있습니다.

    내 설정 : 쿼리 매개 변수가 문서화 에 지정

  • 가을 백 않은 경우
    • 쿼리 매개 변수를
    • 가을 백 헤더 Accept-Language에를 사용

      • 요청 Accept-Language 헤더가있는 경우 기본 로캘
    • 응답 <some-root-tag xml:lang="en-US"> 같은 응답 페이로드
      • 설정 Content-Language
      • 설정 로케일을 정의하지
  • 관련 문제