문제

나는 어떻게 변환하는 웹사이트를 처리할 수 있 다중 언어(예:영어,프랑스,스페인어)?

내가 좋아하지 않는 자원 때문에 파일을 나는 느낌이 제한적이고 그것은 꽤 오래를 구축하는 목록에 있습니다.당신은 어떤 제안이 있으십니까?

업데이트

순간에 대한 최고의 방법을 우리는 발견하는 것입 XML 파일을 사용하고 일부 Xpath et 얻는 값입니다.

도움이 되었습니까?

해결책

암시적인 현지화(Visual Studio 도구 메뉴를 생성하는 로컬 리소스)은 약으로 쉽게 될 수 있습니다.쓰 당신의 페이지에서 당신의 기본 언어를 선택 메뉴 옵션을 리소스 파일이 만들어집 및 보낼 수 있는 누군가에게 번역되어 있습니다.

는 리소스 파일 단 xml,그래서 그는 경우는 번역사 원할 수 있습으로 변환(와)스프레드시트로 쉽게.

를 사용하여 데이터베이스를 대신 리소스로서의 역행 저장소 어렵지 않습니다.릭 Strahl 좋은 설명과 예제 코드에 대한 데이터베이스 구동식 현지화 provider -거의 내장에서 현지화 너무 편집기와 인터페이스 구글 번역과 Babelfish.

다른 팁

리소스 저장을 위한 다국어 사이트에서 데이터베이스입니다.우리가 만들의 몇 가지 도구를 쉽게 생성 및 접근한다.가 있는 사용자 지정 ExpressionBuilder 할 수 있는 구문을 사용:

 <asp:linkbutton runat='server' text='<%$ LanguageStrings:ClickMe%>' />

고 사용자 정의 레이블 포함하는 기본 텍스트,그리고가 행하여 데이터베이스가 있는 경우 이미 하나입니다.

 <r:languagelabel runat="server" name="AboutUs">About Us</r:languagelabel>

테이블이 포함된 문자열이 하나의 열당 언어입니다.이것은 매우 쉽게 사이트를 만드에서 영어(또는 어떤 기본 언어입니다),다음,손으로 테이블(을 채우는 자)를 번역가.그것은 또한 매우 쉽게 볼 언어해야 할 물건을 번역했습니다.리소스가 필요한 모든 시간을 당신을 추가하는 새로운 문자열을,당신은 당신을 중지해야 당신이 무슨 일을 하는지,그리고 자원을 위해 파일을 각 언어를 추가 리소스입니다.

여기에 코드를위한 언어 레이블:

''' <summary>
''' Retrieves a language-specific string.
''' </summary>
Public Class LanguageLabel
    Inherits Label

    Private _Name As String
    Public Property Name() As String
        Get
            Return _Name
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

    Private Sub Populate()
        If Len(Me.Name) > 0 Then
            Dim LanguageString As String = GetLanguageString(Me.Name, Me.Text)
            If Len(LanguageString) > 0 Then Me.Text = LanguageString
        End If
    End Sub

    Private Sub LanguageLabel_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
        Populate()
    End Sub

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        ' By default a label wraps the text in a <span>, which we don't want in some situations
        writer.Write(Me.Text)
    End Sub

End Class

유틸리티 기능:

    Public Function GetLanguageString(ByVal Name As String, Optional ByVal DefaultText As String = "") As String
        Dim DefaultLanguage As Language = Languages.GetById(1)
        Name = StripPunctuation(Name).Trim.Replace(" ", "") ' Remove punctuation, spaces from name
        Dim SelectSql As String = String.Format("Select {0},{1} from LanguageStrings where Name=@Name", Languages.CurrentLanguage.Code, DefaultLanguage.Code)
        Dim LanguageStringTable As DataTable = ExecuteDataset(cs, CommandType.Text, SelectSql, New SqlParameter("@Name", Name)).Tables(0)
        If LanguageStringTable IsNot Nothing AndAlso LanguageStringTable.Rows.Count > 0 Then
            Dim LanguageText As String = LanguageStringTable.Rows(0)(Languages.CurrentLanguage.Code).ToString
            Dim DefaultLanguageText As String = LanguageStringTable.Rows(0)(DefaultLanguage.Code).ToString
            If Len(LanguageText) > 0 Then
                ' We have a string in this language
                Return LanguageText
            Else
                ' Nothing in this language - return default language value
                Return DefaultLanguageText
            End If
        Else
            ' No record with this name - create a dummy one
            If DefaultText = "" Then DefaultText = Name
            Dim InsertSql As String = String.Format("Insert into LanguageStrings (Name, {0}) values (@Name, @Text)", DefaultLanguage.Code)
            ExecuteNonQuery(cs, CommandType.Text, InsertSql, New SqlParameter("@Name", Name), New SqlParameter("@Text", DefaultText))
            Return Name
        End If
    End Function

자원 파일은 방법입니다.우리는 우리의 제품은 12 개 언어로.우리는 모두의 문자열로 리소스 파일을 발송하는 번역 회사입니다.그것은 고통에 시간을,그러나 그것은 사실상의 방법으로 그것을 할 수 있습니다.

그것은 또한 재미있는 경우 4-letter 영어 단어로 번역 17-letter 구문을 조정 대부분의 작업을 수행합니다.

늦은 디자인 프로세스에서 당신은?는 경우에 너무 늦지 않고 예산이 허용하는 경우,고려한 포팅에는 다국어 같은 CMS 에서 지사를 운영합 CMS300.net (가 내장된 번역 도구).그렇지 않다면,당신은 거대한 작업을했다.

다른 솔루션을 사용하고 만들어를 포함하는 폴더 aspx 페이지 포함한 모든 필요한 텍스트에는 특정한 언어입니다.

여기서 문제 어떻게 할 수 있는 주로 코드으로 가능한 그 복제 페이지입니다.내가 사용하는 컨트롤러 패턴 여기에 이렇게 하려면 다음 개체 데이터 원본을 얻을하는 데이터 바인딩에서 컨트롤한 모든 페이지입니다.

이 방법은 나의 목표를 달성 제거하는 리소스 파일을 유지할 수 있 뒤에 코드를 한 장소에서없이 복제다(필요한 경우가 아니면).

편집:추천하고 싶은 좋은 CMS framework 니다.

중 하나 웹 응용 프로그램 개발은 이 NLS 요구도.

내가 거기에 적어도 3 개 지역에 있는 지역화된 텍스트:

  • 사용자 인터페이스
  • 데이터베이스 테이블("카탈로그는"당신이 원하는 또는 그들에게 전화하)
  • 백엔드 코드(서비스 등)

나의 솔루션 중 하나에 대한 테이블 페이지 테이블,etc.("컨테이너"),하나의 테이블의 각 항목에 대한 컨테이너(예:라벨,버튼 ID,레코드 식별자),그리고 한 테이블에 대한 번역된 항목(plus 언어 식별).

번역 응용 프로그램 유지하는 데 도움이 됩니다면 번역을 그대로--날짜,그리고 모든 수출 번역에서는 XML.

제품 선박과 함께 번역하지만,고객에게 조정할 수 있는 번역,변화에 즉시 적용됩니다.

샘플 코드가 완료를 사용하는 리소스 파일 추가합니다.맨

 void Application_BeginRequest(Object sender, EventArgs e)
    {
        // Code that runs on application startup
        HttpCookie cookie = HttpContext.Current.Request.Cookies["CultureInfo"];
        if (cookie != null &amp;&amp; cookie.Value != null)
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(cookie.Value);
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cookie.Value);
        }
        else
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en");
        }
    }

http://satindersinght.blogspot.in/2012/06/create-website-for-multilanguage.html

http://satindersinght.wordpress.com/2012/06/14/create-website-for-multilanguage-support/

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