문제

ASP.NET 웹 애플리케이션을 구축하고 있으며 모든 문자열은 리소스 파일에 저장됩니다. 응용 프로그램에 제 2 언어를 추가하고 싶습니다. 이상적으로는 사용자의 브라우저 언어 (또는 Windows 언어)를 자동 감지하고 기본값을 영어 외에 선택하게하는 대신 기본값을 사용하고 싶습니다. 현재 모든 리소스 모집단을 수동으로 처리하고 있으므로 두 번째 리소스 파일과 언어를 추가하는 것은 내 관점에서 사소한 것입니다.

아무도이 작업을 수행 한 적이 있습니까, 아니면 내가 그 가치를 검색 할 수있는 방법에 대한 생각이 있습니까? ASP.NET은 서버 기반이므로 특정 브라우저 설정에 액세스 할 수없는 것 같습니다.

해결: 여기에 내가 한 일이 있습니다. 나는 "각각"을 사용하여 "httpcontext.current.request.userlanguages"를 사용하여 내가 지원하는 것을 검색했습니다. 나는 아직 왼쪽 두 문자를 확인하고 있습니다. 우리는 아직 어떤 방언도 영어와 스페인어 만 지원하지 않기 때문입니다. 모든 도움에 감사드립니다!

도움이 되었습니까?

해결책

이것 기사 (원본 링크가 죽었을 때 Archive.org에 연결됨) 브라우저의 언어 설정을 자동 감지하는 데 도움이 될 수 있습니다.

편집] 예. 인용 된 기사는 ASP.NET을 사용하지 않습니다. 이것 기사 하다.

다른 팁

web.config에서 이것을 시도하십시오 :

<globalization culture="auto" uiCulture="auto" />

이로 인해 ASP.NET은 요청 헤더에서 클라이언트의 문화를 자동으로 감지하게됩니다. 페이지 속성을 통해 PAGE 기준으로이를 설정할 수도 있습니다.

ASP.NET 4의 request.userlanguages는 이것을 문자열 배열로 구문 분석합니다.

좋은 정보 : http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html

이것은 현지화로서 좋은 질문입니다 asp.net 많은 개발자들이 간과합니다.

asp.net ~해야 한다 사용자의 브라우저 설정을 자동으로 픽업하고 CultureInfo.CurrentCulture 사용자의 브라우저 언어에. 라인을 사용하여 문제를 강요 할 수 있습니다 Page_OnInit() 처럼:

Thread.CurrentThread.CurrentCulture = new CultureInfo(HttpContext.Current.Request.UserLanguages[0]);

이것을 어떻게 테스트 할 수 있습니까? 브라우저에 언어 패널을 입력하고 설정을 변경하십시오.

클라이언트는 일반적으로 설정합니다 수용 HTTP 요청 헤더에서 선호하는 언어의 정량적으로 점수가 매겨진 목록, 전통적으로 (그러나 반드시 반드시) 가장 선호하는 순서대로 가장 선호하는 것입니다. 당신은 그것을 구문 분석 할 수 있지만 Maxam이 지적했듯이 asp.net 귀하를 대신하여이를 수행하는 메커니즘이 있습니다.

    /// <summary>
    /// Sets a user's Locale based on the browser's Locale setting. If no setting
    /// is provided the default Locale is used.
    /// </summary>

public static void SetUserLocale(string CurrencySymbol, bool SetUiCulture)
{
    HttpRequest Request = HttpContext.Current.Request;
    if (Request.UserLanguages == null)
        return;

    string Lang = Request.UserLanguages[0];
    if (Lang != null)
    {
        // *** Problems with Turkish Locale and upper/lower case
        // *** DataRow/DataTable indexes
        if (Lang.StartsWith("tr"))
            return;

        if (Lang.Length < 3)
            Lang = Lang + "-" + Lang.ToUpper();
        try
        {
            System.Globalization.CultureInfo Culture = new System.Globalization.CultureInfo(Lang);
            if (CurrencySymbol != null && CurrencySymbol != "")
                Culture.NumberFormat.CurrencySymbol = CurrencySymbol;

            System.Threading.Thread.CurrentThread.CurrentCulture = Culture;

            if (SetUiCulture)
                System.Threading.Thread.CurrentThread.CurrentUICulture = Culture;
        }
        catch
        { ;}
    }
}

이 기사의 출처는 다음과 같습니다.브라우저 언어를 감지하는 방법

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