문제

궁극적으로 4개 언어, 2개 국가(미국 및 캐나다, 영어 및 스페인어)를 지원하는 사이트가 있습니다.

디렉토리 구조를 설정하는 가장 좋은 방법이 무엇인지 궁금합니다.

현재 site.com이라는 루트 사이트가 있습니다.

그러면 국가와 언어를 선택하는 페이지로 이동됩니다.

이상적으로는 다음과 같은 디렉토리를 갖고 싶습니다.

site.com/ca/en/ (Canada English)
site.com/ca/fr/ (Canada French)
site.com/us/en/ (US English)
site.com/us/es/ (US Spanish)

하지만 이는 "ca" 및 "us" 가상 디렉터리와 그 안에 언어 가상 디렉터리를 배치한다는 의미입니다.그게 좋은 습관인가요, 아니면 다음과 같이 해야 할까요?

site.com/ca-en/ (Canada English)
site.com/ca-fr/ (Canada French)
site.com/us-en/ (US English)
site.com/us-es/ (US Spanish)

편집하다:나는 다음을 수행했습니다.

더미 디렉토리가 있습니다:/ca/ 및 /us/를 애플리케이션에 포함합니다.둘 다 단지 리디렉션인 default.aspx를 가지고 있습니다.제 경우에는 영어 사이트로 리디렉션합니다.

예를 들어:site.com/ca/ --> site.com/ca/en/ site.com/us/ --> site.com/us/en/

site.com을 입력하면 언어 선택 페이지로 이동됩니다.기본적으로 언어/문화 문자열을 찾기 위해 모든 요청에 ​​대해 Global.asax의 정규식을 사용합니다.

여기에는 다음과 같은 이점이 있습니다.국가분리.따라서 site.com/ca/ 또는 site.com/us/를 제어할 수 있으며 각 국가에 대한 간단한 URL을 제공할 수 있습니다.

어쨌든 가상 디렉터리 /en/, /fr/ 및 /es/는 해당 국가의 실제 폴더 안에 있습니다.

그래서 당신은 다음을 가지고 있습니다 (가상 디렉토리는 용감한):

site.com/ca/ko/ (기본값) site.com/ca/정말로/ site.com/us/ko/ (기본값) site.com/us//

이것이 의미하는 바는 URL을 사용하여 현재 언어와 국가를 가져오고 올바른 데이터베이스를 가리킬 수 있다는 점을 제외하고 5개의 (동일한) 애플리케이션이 필요하다는 것입니다.

도움이 되었습니까?

해결책 2

글쎄, 그들은 URL이 사이트마다 다르기를 원합니다.

본질적으로 이는 실제로 하나의 사이트(유지 관리상의 이유로)이며 우리는 사용할 연결 문자열(다른 데이터베이스, 각 사이트의 동일한 구조)을 결정하기 위해 세계화를 사용하고 있습니다.

우리가 출판할 때마다 4개 위치에 출판할 것입니다.동일한 앱입니다.

하나의 URL을 사용하는 세계화는 좋은 생각인 것 같지만 제대로 스파이더링되지 않을 것 같고, 설사 그렇더라도 북마크 가능한 좋은 링크를 제공하지 않습니다.(프랑스 사람이 영어로 설정된 컴퓨터를 사용하여 다른 프랑스 사람에게 링크를 보냅니다.)다른 의미도 있지만 Apple 및 Microsoft와 같은 사이트가 각 언어/문화에 대해 서로 다른 URL을 사용하는 이유가 있습니다.

세션이 시작될 때마다 URL을 확인하고 이에 따라 연결 문자열을 설정합니다.

결국에는 기본 응용 프로그램에 /ca/ 및 /us/ 디렉터리를 넣고 각 언어에 일부 가상 디렉터리를 추가하여 응답을 "언어 선택" 페이지로 리디렉션합니다.

아마도 최선의 해결책은 아니지만 효과가 있는 것 같습니다.

이 방법의 또 다른 이점은 한 사이트에만 적용되는 특수 페이지가 있는 경우 해당 사이트에만 추가할 수 있다는 것입니다.

다른 팁

하나의 사이트를 갖고 클라이언트 설정(request.servervariables / HTTP_ACCEPT_LANGUAGE)에서 어떤 기본 언어를 사용할지 확인하고 asp.Net에 내장된 세계화 기능을 사용하면 어떨까요?

국가/언어에 따라 완전히 다른 콘텐츠가 표시된다면 왜 그렇게 구분하는지 이해할 수 있습니다.

일반적으로 현지화에 사용되는 명명법은 언어 코드 하이픈 국가 코드의 경우 ll-CC입니다.예:en-US, en-US는 아마도 en-GB 또는 en-CA를 대체 수단으로 사용하는 기본값일 것입니다.es-MX 등도 가치가 있습니다.하지만 복잡한 로드 밸런싱 규칙 없이 리소스를 분할할 수 있는 하위 도메인을 사용하는 것이 더 나을 수도 있습니다.전:us.en.yoursite.com ...이는 또한 웹팜 환경에서 서버를 더 쉽게 분석할 수 있게 해줍니다.현지화에 맞게 사이트별로 설정을 변경하여 실제 코드를 동일하게 유지하는 것이 좋습니다.그런 다음 텍스트 키로 전달하는 현지화 리소스를 사용하면 사이트의 현지화 패턴에 따라 언어 번역이 해결됩니다.메모:.Net 및 기타 플랫폼은 내장된 리소스 현지화 옵션을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top