문제

우리 중 일부는 이미 UI뿐만 아니라 데이터를 다른 언어로 지원 해야하는 프로젝트에서 작업했다고 생각합니다. 예를 들어 - 예를 들어 여기에 쓰는 내용에 대한 번역을 제공하고 저장할 수 있습니다.

또한, 우리 중 일부는 적절한 시간대에 따라 자정을 계산하기 위해 사용자 위치를 고려해야하는 시간 트리거 이벤트 (예 : 회원 액세스 만료 시점)를 가지고 있다고 생각합니다.

마지막으로 특정 언어에 대한 오른쪽에서 왼쪽 사용자 인터페이스를 지원할 필요가 있으며 제출 된 데이터 파일 (예 : 텍스트 및 Excel 데이터를 구문 분석 할 때 다른 인코딩 사용)이 필요합니다.

현재 나는 모든 엔티티에 대한 모든 번역을 단일 테이블에 저장하고 있습니다 (문제를 조사하기 위해 SQL 쿼리를 수행 할 때 자신을 찾기가 매우 어렵지 않습니다), 위성 어셈블리에 주로 UI 번역을 설정하고 지원하지 않습니다. 시간대 나 오른쪽에서 왼쪽 디자인.

이러한 도전을 다룰 때 당신의 경험은 무엇입니까?

편집하다

나는 대부분의 사람들 이이 수준의 다중 재배 요구 사항이 거대한 프로젝트를 구축하는 것과 같다고 생각합니다. 사실 온라인 설문 조사에 대해 tihnk하는 경우 :

  1. 답변은 자정까지만 수집됩니다
  2. 설문지 정의 및 답변의 일부는 텍스트 파일 (모든 언어)과 번역에서 나옵니다.
  3. 질문과 응답 옵션은 누구에 액세스하고 있는지에 따라 여러 언어로 표시해야합니다.
  4. 보고서도 여러 언어로 표시되고 생성되어야합니다.

알 수 있듯이, 우리는 이러한 종류의 요구 사항을 갖기 위해 응용 프로그램을 너무 멀리 갈 필요가 없습니다.

edit2

방금 내 질문이 복제라는 것을 알았습니다

프로젝트에서 i18n

첫 번째 답변 (투표로 주문할 때)은 너무 포괄적이기 때문에 언젠가는 그 일부를 구현해야합니다.

도움이 되었습니까?

해결책

매우 조심하십시오. 당신이 구현하려는 i18N 기능에 대한 당신이 말한 바에 따르면, 당신이 지나치게 접촉하는지 궁금합니다.

Big Boy (예 : Ebay, Amazon.com, Yahoo, BBC) 웹 응용 프로그램은 실제로 지원하려는 각 언어로 별도의 앱을 제공합니다. 이러한 각 웹 응용 프로그램은 공통 핵심 서비스 세트를 소비합니다. 동일한 언어 (예 : 영국 및 미국)를 구사하는 두 국가의 비즈니스 요구가 각각 별도의 앱이 필요할 정도로 충분히 다르더라도 놀라지 마십시오.

반면에, 당신은 다음 Amazon.com처럼되어야 할 수도 있습니다. 한 언어로 성공적인 웹 애플리케이션을 제공하는 것은 어렵습니다. 웹 앱의 비즈니스 요구에 의미가있는 경우 한 사용자 인구 (예 : 아시아 언어 스피커)를 선호하는 것을 두려워해서는 안됩니다.

다른 팁

천천히 가시오.

모든 것을 생각하고 다시하고있는 일에 대해 생각하십시오. QA 사이클이 길어질수록 더 많은 것을 추가할수록 더 많이 추가 할 수 있습니다.

퍼즐의 기본 부분은 코드 측에서 인터페이스를 광범위하게 사용하고, 번역기를 통과하는 하나의 언어를 지원 해야하는 언어 또는 각 언어의 별도의 데이터 소스를 통과하는 하나의 데이터 소스입니다.

시간 문제는 인터페이스에 의해 처리 될 수 있습니다. 아마도 같은 방식으로 기능을 수행하기를 원하지만 구현 세부 사항이 다르기 때문입니다. 대체로, 다른 언어를 지원하도록 조정할 때 인터페이스 생성에 비슷한 사고 과정을 적용 할 수 있습니다. 당신이 그것에 도달하면, 스키닝은 바로 이것이며, 피부가 묻어있는 콘텐츠가 인터페이스이며, 모양/느낌이 구현입니다.

사용자가 필요로하는 일을하십시오. 예를 들어, 대부분의 프로그래머는 영어를 이해 하고이 사이트의 게시물을 번역 할 의미가 없습니다. 많은 사용자가 번역이 필요한 경우 언어 ID가있는 새 테이블 열을 추가하고 다른 열을 원본에 연결하십시오. 대상 청각에 중동의 사용자가 포함 된 경우 오른쪽에서 왼쪽으로 구현하십시오. 시간 정밀도가 최대 1 시간이되면 사용자 테이블에 시간대 열을 추가하십시오.

당신이 *닉스에 있다면, 사용하십시오 getText. 내가 사용한 대부분의 언어에는 어느 정도의 지원이 있습니다. PHP 예를 들어 꽤 좋습니다.

내 프로젝트에서 무엇을했는지 설명하겠습니다 (원래 아키텍처는 아니지만 어쨌든 좋아했습니다).

번역 지원 제공

번역 해야하는 텍스트는 세 가지 범주로 나뉩니다.

  1. 오류 텍스트 : 응용 프로그램 비즈니스 계층에서 깊은 곳에서 발생하는 오류처럼
  2. UI 텍스트 : 사용자 인터페이스에 표시되는 텍스트 (레이블, 버튼, 그리드 제목, 메뉴)
  3. 사용자 정의 텍스트 : 최종 사용자의 선호도에 따라 번역 할 수 있어야하는 텍스트 (즉, 사용자는 설문 조사에서 질문을 작성하고 해당 설문 조사의 번역 된 버전을 만들 수도 있음)

각각의 다른 Cathegory에 대해 번역 서비스를 제공하는 데 사용되는 스키마는 다음과 같습니다.

  1. 오류 텍스트 : 리소스 파일에 액세스하는 정적 기능이있는 라이브러리
  2. UI 텍스트 :보기 엔진에 연결된 "헬퍼"클래스는 원격 어셈블리의 번역을 제공합니다.
  3. 사용자 정의 텍스트 : 변환을 제공하는 데이터베이스의 테이블 (번역 된 엔티티 및 객체 ID의 typeid에 따라 1 X N 관계를 통해 엔티티에 연결됩니다.

그러나 나는 시간대, 다른 레이아웃 및 그림 번역을 다루는 것과 같은 다른 명백한 문제를 공격하지 않았습니다 (실제로 필요한 경우). 다른 방식 으로이 문제를 해결 한 사람이 있습니까?

다른 I18N 문제를 해결 한 사람이 있습니까?

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