내 .NET 앱이 다양한 언어를 지원하도록 만드는 방법
-
01-07-2019 - |
문제
제가 작성하고 있는 애플리케이션이 거의 완성되었으며, 다른 언어를 사용하는 사람들이 이를 사용했으면 합니다.
어디서부터 시작해야 할지 모르겠습니다. 프로그래밍과 관련하여 세계화와 문화의 차이점은 무엇입니까?
파일, 열기, 저장 등 대신 "이 응용 프로그램은 이런저런 일을 하도록 만들어졌습니다"와 같은 흔하지 않은 문구를 어떻게 스페인어로 바꿀 수 있을까요?
많은 감사드립니다 :-)
해결책
Microsoft는 이미 매우 좋은 지도 시간
다른 팁
"세계화된" 애플리케이션을 갖기 위해서는 다양한 작업을 수행해야 합니다.
1) 애플리케이션의 양식 및 컨트롤에 있는 모든 라벨을 번역합니다.
모든 폼과 컨트롤에서 "Localized" 속성을 true로 설정해야 합니다.이 속성을 사용하면 각 언어 및 지역의 리소스 파일을 생성할 수 있습니다.이제 "언어" 속성을 사용하여 지원하려는 언어를 선택할 수 있습니다.콤보 상자 목록에서 언어를 선택하면 양식(또는 컨트롤)이 자동으로 이 언어로 전환됩니다.이제 컨트롤의 모든 단어를 번역하는 것이 귀하의 임무입니다.수정하는 즉시 Visual Studio는 특정 언어에 대한 리소스 파일을 만듭니다.(예: 프랑스-프랑스의 경우 MyForm.fr-FR.resx)
2) 코드의 모든 하드코딩된 문자열을 resx 파일로 가져옵니다.
리소스 파일을 만들고(개인적으로는 StringTable.resx를 사용합니다) 이 파일에 번역할 모든 문자열을 추가합니다.그런 다음 지원하려는 모든 언어에 대한 리소스 파일을 만들고 각 파일의 문자열을 번역합니다.예를 들어 프랑스어를 지원하려면 프랑스어-프랑스에 대해 StringTable.fr.resx 또는 StringTable.fr-FR.resx를 만듭니다.와 함께 자원관리자 클래스에서는 각 문자열을 로드할 수 있습니다.
메모: Visual Studio 2005 또는 2008을 사용하는 경우 기본적으로 리소스 파일이 이미 생성되어 있습니다.
3) 양식과 컨트롤을 현명하게 정교하게 만들어야 합니다.
Microsoft의 지침: 마이크로소프트 지침
4) 날짜와 숫자 다루기
애플리케이션이 다른 지역의 다른 사용자에게 보낼 수 있는 데이터 파일을 생성하는 경우 파일에 데이터를 저장할 때 이에 대해 고려해야 합니다.따라서 항상 날짜/시간을 UTC로 저장하고 정보를 로드할 때만 로컬로 변환을 수행하십시오.특히 텍스트에 저장된 경우 십진수에도 동일한 내용이 적용됩니다.
애플리케이션을 컴파일할 때 Visual Studion은 다음과 같은 위성 파일을 생성합니다. MyApplication.fr.dll 하위 폴더에 정말로.이 dll을 로드하려면 애플리케이션 시작 시 현재 스레드의 언어를 전환해야 합니다.
코드는 다음과 같습니다.
CultureInfo ci = new CultureInfo("fr");
Thread.CurrentThread.CurrentUICulture = ci;
귀하의 모든 질문에 대한 답변은 아래 책에서 확인하실 수 있습니다.초기 장에서는 모든 주요 개념과 용어, 그리고 i18n과 같은 고급 약어를 설명합니다.시간이 없어서 끝까지 읽지 못했어요..하지만 내가 읽을 때까지는 좋았다.올바른 방법으로 진지하게 하고 시간이 있다면 추천합니다 :)
http://www.amazon.com/NET-Internationalization-Developers-Applications-Development/dp/0321341384
매우 간단한 시스템의 경우 GetSaveText() 등과 같은 메서드를 정의하는 인터페이스를 만듭니다.이와 같은 어셈블리를 애플리케이션에 연결할 수 있습니다.
이는 10-1000개의 문자열에 대해 매우 좋은 솔루션입니다.
각 로캘에 대한 리소스 파일이 있습니다.저는 .NET을 모르지만 이를 수행하는 몇 가지 일반적인 방법이 있다고 확신합니다.그런 다음 리소스 가져오기 코드에서 사용자의 브라우저 로캘 설정에 따라 적절한 코드를 로드합니다.일부 키에 대한 적절한 문자열을 가져오려면 이 코드를 요청하세요.
예제 파일 내용(처음부터 구현하려는 경우):
resources.en:
save=Save
close=Close
ok=OK
areYouSure=Are you sure?
리소스.es:
save=I don't know how to say anything in Spanish, oops
close=...
ok=...
areYouSure=...