2011-12-13 5 views
0

요청시 현지화 된 전자 메일을 생성하는 웹 응용 프로그램 모듈이있는 프로젝트에서 작업하고 있습니다. 응용 프로그램은 여러 언어에 대한 HTML 템플릿 현지화가 필요합니다. 전자 메일 레이아웃이 바뀌지 않고 필요한 키의 양이 상대적으로 적기 때문에 asp.net 리소스 파일을 사용하기로 결정했습니다.ASP.NET 웹 사이트에서 아랍어 리소스 파일을 선택하지 않았습니다.

저는 글로벌 리소스를 사용하고 있으며 필요한 로케일에 대해 약 15 개의 서로 다른 리소스 파일이 있습니다. 영어로 된 기본 리소스 파일 ("EmailTemplates.resx")과 여러 현지화 된 리소스 파일 ("EmailTemplates.ru-RU.resx", "EmailTemplates.zh-CN.resx", "EmailTemplates.it-IT.resx" ","EmailTemplates.id-ID.resx "등).

리소스 파일 중에서 아랍어로 된 "EmailTemplates.ar-AE.resx"와 실제로는 영어 인 "EmailTemplates.ar-SA.resx"가 아랍어로되어 있습니다.

아랍어 이외의 로케일에 대한 모든 전자 메일은 완벽하게 작동합니다. 응용 프로그램은 필요한 로케일을 선택하고 해당 리소스 파일을 사용합니다. 그러나 아랍어를 요청하려고하면 항상 기본 리소스 파일로 돌아갑니다.

나는 문화를 설정하고있어 방법이 요청 된 데이터가 아닌 브라우저 설정을 기반으로합니다

Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); 

나는 CultureInfo를가 제대로은 "AR-SA"로 설정되어 있음을 알 수 디버깅하는 동안 또는 "ar-AE"이지만 앱이 해당 리소스 값을 가져 오면 항상 기본 값을 선택합니다.

테스트 용으로 기본 리소스 파일에 아랍어 데이터를 입력 했으므로 아랍어 텍스트가 올바르게 표시되므로 글꼴 또는 HTML 레이아웃 문제가 아닌 것으로 확신합니다.

저는 인터넷에서 검색 한 결과, 다른 접근 방법과 운이 없음을 증명했습니다. "ar-SA"및 "ar-AE"는 유효한 CultureInfo 값이며 앱은 문제없이 컴파일되지만 아랍어 이메일을 요청할 때마다 앱에서 아랍어 리소스 파일을 찾을 수없는 것으로 보입니다.

아이디어가 있으십니까? 나는 정말 어떤 히트와 도움을 주시면 감사하겠습니다!

건배!

+0

야생 추측 : 실제로 스레드가 전자 메일을 보내고 잘못된 로케일을 사용할 수 있습니까? "기본"스레드에서 전자 메일 내용을로드하여 (그 의미가 무엇이든) 올바른 로캘로 구성한 다음 거기에서 전자 메일 배달 큐에 넣습니다. –

+0

사실 그것은 다른 모든 로케일에서 실제로 작동한다는 것입니다. 한 로케일과 다른 코드를 구별하는 코드에는 아무 것도 없습니다. 앱의 글로벌 리소스를로드하는 방법은 모든 다른 CultureInfo 값에 대해 동일합니다. 이것이 제가 아랍어를 제외한 모든 언어에서 어떻게 작동하는지 알 수없는 이유입니다. – arbbot

+0

나는 본다. 아마 그것은 아랍어가 오른쪽에서 왼쪽으로 쓰인다는 사실과 관련이 있습니다. –

답변

0

문화 정보없이 언어를 사용하십시오. 예 : EmailTemplates.ar.resx

내가 사용하는 브라우저가 다른 언어로 된 아랍어를 가지고 있지 않을 수 있습니다. 크롬을 사용하여 확인했기 때문입니다. 해당 culture.example ar-AE ar-SA 등으로 언어를 추가하려고합니다.하지만 어쨌든 그것은 문화가없는 아랍 언어를 가지고 있으며 작동합니다.

관련 문제