.NET에서 지역화를위한 효과적인 전략 [닫기]


121

가까운 시일 내에 모든 콘텐츠를 국제화해야하는 .NET MVC 응용 프로그램 용 UI를 개발 중입니다. 나는 일반적으로 .NET에 대해 잘 알고 있지만 국제적인 접근성에 크게 중점을 둔 프로젝트는 없었습니다.

프로젝트는 처음에 영어로 진행됩니다. 향후 현지화를보다 쉽게 ​​구현하려면이 시점에서 어떤 조치를 취해야합니까?


2
좋은 질문입니다! 나는 비슷한 상황에 직면하고 있으며 전문가가 이것에 무게를 두는 것을보고 싶습니다.

누구나 자원 관리에 대한 좋은 표준을 가지고 있습니까? 지역화 된 값에는 문자열뿐만 아니라 이미지도 포함될 수 있습니다.

1
이것이 WPF / silverlight UI 또는 Winforms입니까? 내 제한된 경험에서 현지화를위한 WinForms 경험은 WPF / Silverlight보다 훨씬 간단합니다.
Pete Stensønes

1
리소스 파일 대신 데이터베이스에 지역화 된 문자열을 저장하는 경우이 논의를 살펴볼 수 있습니다. stackoverflow.com/questions/2458615/…

1
@Pete, @smartcaveman은 ".NET MVC 응용 프로그램을위한 UI 개발"이라고 말했습니다.
BrunoSalvino

답변:


74

ASP.Net MVC 응용 프로그램을 개발 중입니까? 다른 답변은 데스크톱 응용 프로그램에만 적용되는 것 같습니다. 일반적인 것을 캡처하겠습니다.

로케일 감지

응용 프로그램이 사용자의 로캘을 올바르게 감지하는 것이 중요합니다. 데스크톱 응용 프로그램에서 CultureInfo.CurrentCulture는 선호하는 서식 로캘 (숫자, 날짜, 통화 등을 형식화하는 데 사용되어야하는 로캘)을 보유하고 CultureInfo.CurrentUICulture는 선호하는 사용자 인터페이스 로케일 (현지화 된 메시지를 표시하는 데 사용되는 로케일)을 보유합니다. . 웹 애플리케이션의 경우 멋진 로케일 감지 워크 플로우를 구현하지 않으려는 경우 (예 : 요청시 언어 변경 지원)를 제외하고는 두 문화권을 모두 자동 (AcceptLanguage 헤더에서 로케일을 자동으로 감지)으로 설정해야합니다.

문자열을 외부화

모든 문자열은 리소스, 즉 Resx 파일에서 가져와야합니다. Winforms App에서 양식 Localizable 속성을 true로 설정하면 쉽게 달성 할 수 있습니다. 또한 모델에서 온 문자열을 수동으로 (불행히도) 외부화해야합니다. 또한 비교적 간단합니다. Asp.Net에서는 모든 것을 수동으로 외부화해야합니다 ...

레이아웃

문자열 확장을 반드시 허용해야합니다. Winforms 세계에서는 TableLayoutPanel을 통해 달성 할 수 있습니다. TableLayoutPanel은 더 긴 텍스트를 수용하도록 레이아웃이 자동으로 조정되도록하는 데 사용해야합니다. 웹 세계에서는 약간의 운이 없습니다. CSS 정의를 수정 (재정의)하는 방법 인 CSS 지역화 메커니즘을 구현해야 할 수도 있습니다. 이를 통해 현지화 담당자는 필요에 따라 스타일 문제를 수정할 수 있습니다. 렌더링 된 페이지의 각 HTML 요소에 고유 한 ID가 있는지 확인하십시오. 정확하게 타겟팅 할 수 있습니다.

문화 별 문제

서양 문화에 고유 한 그래픽, 색상 및 사운드를 사용하지 마십시오. 정말로 필요한 경우 현지화 수단을 제공하십시오. 방향에 민감한 그래픽은 피하십시오 (아랍어 또는 히브리어로 현지화하려고 할 때 문제가 될 수 있으므로). 또한 전 세계에서 같은 숫자를 사용한다고 가정하지 마십시오 (예 : 아랍어에는 해당되지 않음).

ToString () 및 Parse ()

지원되지 않는 경우 ToString ()을 호출 할 때 항상 CultureInfo를 전달 하십시오 . 그런 식으로 당신은 당신의 의도를 언급하고 있습니다. 예를 들어, 내부적으로 일부 숫자를 사용하고 어떤 이유로 문자열을 숫자로 변환 해야하는 경우 :

int i = 42;
var s = i.ToString(CultureInfo.InvariantCulture);

사용자에게 표시 될 숫자의 경우 :

var s = i.ToString(CultureInfo.CurrentCulture); // formatting culture used

Parse (), TryParse () 및 심지어 ParseExact ()에도 동일하게 적용됩니다. CultureInfo를 제대로 사용하지 않으면 일부 불쾌한 버그가 발생할 수 있습니다. 그것은 좋은 의도로 가득 찬 Microsoft의 일부 영혼이 CultureInfo.CurrentCulture를 기본 것으로 취급하는 것이 좋습니다 (아무것도 전달하지 않으면 사용됨)-누군가 ToString ( ) 사용자에게 표시하고 싶습니까? 항상 그런 것은 아닙니다. 예를 들어 응용 프로그램 버전 번호를 데이터베이스에 저장 한 다음 버전 클래스의 인스턴스로 변환하십시오. 행운을 빕니다.

날짜와 시간대

DateTime은 항상 UTC로 저장하고 인스턴스화 해야합니다 (DateTime.Now 대신 DateTime.UtcNow 사용). 다음을 표시 할 때 현지 형식으로 현지 시간으로 변환하십시오.

DateTime now = DateTime.UtcNow;
var s = now.ToLocalTime().ToString(CultureInfo.CurrentCulture);

본문에 시간 참조가 포함 된 전자 메일을 보내려면 UTC 정보와 도시 목록을 모두 포함하여 시간대 정보를 포함해야합니다.

DateTime someDate; // i.e. from database
var formattedDate = String.Format("{0} {1}", 
             someDate.ToLocaleTime().ToString(CultureInfo.CurrentCulture),
             TimeZoneInfo.Local.DisplayName);

복합 메시지

이미 문자열을 연결하지 않도록 경고했습니다. 대신 위에 표시된 것처럼 String.Format ()을 사용합니다. 그러나 복합 메시지 사용을 최소화해야한다고 언급해야합니다. 대상 문법 규칙이 매우 다르기 때문에 번역가가 문장의 순서를 바꿀 필요가있을뿐 아니라 (자리 표시 자와 String.Format ()을 사용하여 해결할 수 있음), 전체 문장을 기반으로 다른 방식으로 번역합니다. 대체되는 것. 몇 가지 예를 들어 보겠습니다.

// Multiple plural forms
English: 4 viruses found.
Polish: Znaleziono 4 wirusy. **OR** Znaleziono 5 wirusów.

// Conjugation
English: Program encountered incorrect character | Application encountered incorrect character.
Polish: Program napotkał nieznaną literę | Aplikacja napotkała nieznaną literę.

다른 연결 문제

연결은 문자열로 제한되지 않습니다. 컨트롤을 함께 배치하지 마십시오.

[번호가있는 텍스트 상자] 일에 다시 알림

이것은 다음과 같이 다시 디자인되어야합니다 : [텍스트 상자].

문자 인코딩 및 글꼴

유니 코드 (예 : UTF-8)의 텍스트를 항상 저장, 전송하십시오. 글꼴을 하드 코딩하지 마십시오. 현지화에서 글꼴을 수정해야 할 수 있으며 기본 글꼴 대체 메커니즘 (Winform의 경우)이 해제됩니다. 대부분의 필드 (예 : 사용자 이름)에 "이상한"문자를 허용해야합니다.

테스트

아마도 독일 문화에 대한 자료를 만들고 접두사와 접미사를 추가하여 영어 문자열을 복사하는 의사 번역을 구현해야 할 것입니다. 복합 문자열을 쉽게 감지하기 위해 자리 표시자를 줄 바꿈 할 수도 있습니다. 의사 변환의 목적은 하드 코드 된 문자열, 레이아웃 문제 및 복합 메시지의 과도한 사용과 같은 지역화 문제를 감지하는 것입니다.


5
복합 메시지 와 관련하여 -여러 번 복수 형식을 수행해야했습니다. String.Format이 멋진 구문을 지원할 수 있도록 확장 했습니다. "There {0:was|were} {0} {0:virus|viruses} found."각 언어는 자체 규칙을로드 할 수 있습니다 "Znaleziono {0} {0:wirusy|wirusów}." . 소스는 GitHub에 있습니다. github.com/scottrippey/SmartFormat/wiki
Scott Rippey

2
@Scott Rippey 폴란드어 예제에서 "Znaleziono 4 wirusy. 또는 Znaleziono 5 wirusów "를 읽은 것을 알았습니까? <-폴란드어는 다른 많은 언어와 마찬가지로 두 가지 이상의 복수 형태를 가지고 있으며 이들을 구별하는 규칙도 복잡 할 수 있습니다. 여기서 나는 폴란드어를 말하지 않기 때문에 폴란드어를 떠나야하지만, 내 언어로, 101 가지에 대한 복수 형태는 1 개의 것과 동일합니다. 이 문제를 어떻게 GNU gettext에 태클을 살펴 있습니다 gnu.org/s/hello/manual/gettext/Plural-forms.html이
gregopet

2
@gregopet 내 폴란드어 예제는 내가 말하지 않기 때문에 고안되었지만 SmartFormat 프로젝트가하는 일과 정확히 일치합니다. 더 좋은 예는 다음과 같습니다 "{0} {0:plik|pliki|plików}".. 포맷터에는 세 가지 양식 중 사용할 양식을 결정하고 특수한 경우를 올바르게 결정하는 폴란드어 규칙이 있습니다. 나는 현재 규칙을 더 추가하려고 노력하고 있으므로 gettext기사가 매우 유용하다는 것을 알게 될 것입니다. 감사합니다.
Scott Rippey

pseudolocalization, 난에서 무료 온라인 pseudolocalization 도구 내장 pseudolocalize.com
JerSchneid

74

고려해야 할 몇 가지 기본 사항 :

모든 문자열 리소스를 외부화

모든 리소스는 현지화를 위해 전달할 수있는 외부 파일에 포함되어야합니다. 현지화를 원한다면 오류 메시지를 잊지 마십시오.

스트링 확장을위한 충분한 공간 확보

예를 들어 일부 언어의 문자열은 그리스어와 같이 최대 30 % 더 긴 경향이 있으므로 필요한 경우 문자열이 확장 될 수 있도록 UI를 디자인해야합니다. 다음은 프랑스어에 대한 극단적 인 예입니다.

확인-> 수락 자 (프랑스어-400 % 확장)

일종의 의사 번역을 시작점으로 권장합니다 ( http://en.wikipedia.org/wiki/Pseudolocalization ). 또는 Google Translate 또는 Bing을 통해 리소스를 번역 할 수 있습니다. 이렇게하면 실제 번역이 어떻게 표시 될지 알 수 있습니다.

이미지에서 텍스트를 조심하십시오

응용 프로그램에서 이미지를 사용하는 경우 텍스트가 포함되어 있지 않은지 확인하십시오. 이는 분명히 번역 할 수 없습니다.

Windows 폴더 경로를 하드 코딩하지 마십시오

분명히, 그러나 나는 과거에 그것을 보았다. 예를 들어 C:\Program Files일부 국제 버전의 Windows (예 : C:\Programme독일어 OS)에서 번역됩니다 .

로케일 특정 용어를 사용하지 마십시오

예를 들어, 양식에 '고등학교'를 요청하는 사람은 서유럽에서는 그다지 의미가 없습니다.

문자열 연결을 통해 문자열을 생성하지 마십시오

예를 들어, 이것은 무해 해 보입니다.

strWelcome = ReadExternalString("Welcome"); 
strMessage = strWelcome + ", " + UserName;

그러나 일본어의 단어 순서는 다를 수 있으므로 말이되지 않을 수 있습니다.

시간 / 날짜 설정

OS에서 시간 / 날짜 형식을 가져와야합니다.


@Jimmy C, 언어 독립적 논리 일관성을 위해 문자열을 작성하는 방법은 무엇입니까?
smartcaveman

14
@Smart는 "{0}, {1}"과 같은 리소스에서 무언가를 수행 한 다음 현지화 할 때 string.format을 사용하고 인사말 및 사용자 이름을 전달하십시오. 또한 "현재 {0} 속도는 {1} {2}"이며 "엔진", "50"및 "MPH"를 전달할 수 있으며, 문장을 번역 할 때 { 0} 그 언어로 이해하기
쉬운 곳

4
좋은 목록 JimmyC. "Windows 폴더에 대한 경로를 하드 코딩하지 마십시오"는 Windows 경로에 문자열 연결 대신 "항상 Path.Combine 사용"을 상기 시켰습니다.

@ Jimmy-C 좋은 답변입니다!

1
Environment.GetFolderPath는 해당 폴더의 영어 이름에 의존하지 않고 내 문서와 같은 일반적인 경로에 대한 유효한 경로를 얻는 데 사용할 수 있습니다.
Crippledsmurf 2016 년

24

아시아 언어에 대한 특별 고려 사항

이미 여기에있는 모든 위대한 대답 외에도 아시아 언어에 대한 일부 감시는 다음과 같습니다.

다른 길이의 텍스트를 조심하십시오

중국어와 한국어 텍스트는 동등한 영어 텍스트보다 훨씬 짧은 경향이 있습니다 (일반적으로 같은 것을 쓰려면 블록 문자가 더 적기 때문에) 페이지는 실제로 중국어로 비어 있지만 독일어로 가득 찼습니다. 보기 좋은 동적 크기 조정입니다.

그러나 일본어 텍스트는 일반적으로 문자 수 측면에서 동등한 영어 텍스트보다 훨씬 긴 경향이 있습니다.

기준선 레이아웃과 "미끄러 진"모양을주의하십시오

아시아 문자는 일반적으로 기준선 에 배치되며 , 여기에는 자손 (예 : y, g, q, j 등의 아래쪽)이 포함되지 않습니다. 화면 요소 (일반적으로 버튼)를 내부 텍스트로 포함하는 경우 텍스트는 아시아 언어 일뿐입니다 (예 : 서양 알파벳 없음). 그러면 텍스트가 위로 이동 한 것처럼 보입니다.

숫자 및 현지화 된 숫자 단위 형식

숫자 서식을 다르게 처리하십시오. 아시아 국가마다 숫자 형식이 다릅니다. 통화와 동일합니다. 예를 들어 동아시아에서는 10,000 (wan)이 공통 단위입니다. 인도에서는 10 만 (라크)이 일반적입니다.

현지 통화

일부 국가의 통화는 0이 많고 소수점이 없습니다 (예 : 일본, 인도네시아, 이탈리아).

다른 단어 순서를 조심하십시오

단어 순서가 항상 같은 것은 아닙니다. 문자열이 다른 데이터 조합에서 나온 경우 하드 코딩 단어 순서 대신 문자열 형식으로 {0}, {1} 등을 사용하는 것이 가장 좋습니다.

로케일 별 정렬 사용

정렬은 언어 및 로캘마다 다릅니다. 항상 O / S의 로캘 별 정렬을 사용해야합니다.

전각 / 반각 문자에 매우주의하십시오

"전각"과 "반각"문자의 차이점에주의하십시오. 대괄호, 문장 부호 등은 표준 ASCII와 다른 "전폭"버전을 가질 수 있습니다. 이러한 문자를 기준으로 검색 또는 문자열 분할을 수행하는 경우 먼저 모든 전각 기호를 반자 단위로 변환해야합니다.

마침표는 점이 아닙니다 ... 쉼표는 쉼표가 아닙니다 ...

데이터 입력에주의하십시오 (예 : 중국어), 마침표는 "." 가 아닙니다 . 쉼표는 ","가 아닌 전각입니다. 데이터 입력을하는 사용자가 실수로 아시아 언어 IME를 켤 수 있으면 서양 문장 부호를 검색하지 마십시오.

전화 번호

가정하지 마십시오 아무것도 전화 번호 형식에 있습니다. 지역 번호 등이 항상있는 것은 아니며 형식이 다를 수 있습니다. 일반적으로 국가별로 형식 문자열이 있습니다.

사람들이 하나의 휴대 전화 번호 나 하나의 팩스 번호 만 가지고 있다고 가정하지 마십시오 . 아시아에서는 그렇지 않습니다.

주소-생각보다 밀도가 높음

주소의 경우 아무것도 가정하지 마십시오 . 우편 번호가 항상있는 것은 아닙니다. 우편 번호가 항상 숫자는 아닙니다. 국가에는 주 / 도가 없을 수 있습니다. 국가는 큰 도시 일 수 있습니다 (예 : 싱가포르). 일부 아시아 국가의 경우 가정의 가장 작은 단위는 "Room X, Unit Y, Section Z, Floor A, Block B, Group C, Estate D"일 수 있습니다. 일반적으로 주소에 허용되는 필드 수와 문자 수는 매우 자유 롭습니다 .

인사말

인사말은 Mr., Mrs 등에 게 만 국한되지 않습니다. 섹스에 "M"과 "F"를 사용하는 것이 안전 할지라도 우리는 아직 그 이상 이 아닙니다 ...


1
마지막 단락은 나를 웃게 만들었습니다.
BoltClock

아, 우리 (i18n 녀석)는 아직 시작조차하지 않았다 ... 우리는 표면을 긁을 수만 있었다. 어쨌든 당신의 메모를 위해, 나는 꽤 몇 가지 항목을 놓쳤다.
Paweł Dyda

마지막으로 영국은 이제 공식적으로 "기타"를 섹스로 받아들입니다. 트랜스 젠더를 생각하십시오.
Bart Friederichs

11

일부 기본 단계는 화면에 표시되는 문자열이 코드에서 리터럴이 아닌지 확인하는 것입니다. Winforms를 수행하는 경우 각 양식에는 UI 리소스가 있습니다. 대화 상자, 보고서 등의 경우 프로젝트 리소스 파일을 사용해야합니다.

따라서 코드에서 "업로드 실패"대신 Resources.UploadFailed와 같은 것이있을 수 있습니다.

이렇게하면 사용하는 각 언어에 대한 새 리소스 파일을 만들 수 있으며 .Net이 도움이됩니다. 각 파일에 현지화 된 문자열이 있습니다.

편집 UI를 할 때 언급하는 것을 잊었습니다. 거기에 물건을 넣지 마십시오. 지역화하는 언어에 따라 부동산이 문제가 될 수 있습니다. 저는 현 성장의 가장 큰 범죄자로 독일과 포르투갈을 가진 프로젝트를 진행했습니다. 우리가 영어로 괜찮은 문자열을주의하지 않으면, 프랑스어와 이탈리아어는 독일어로 날아갈 것입니다.


1
내 L10n 경험에서 러시아어가 최악의 시나리오입니다. 그러나 TableLayoutPanel을 올바르게 사용하는 Winforms에서는 문자열 성장을 정상적으로 처리 할 수 ​​있습니다.
Paweł Dyda

예, 제 경험은 영어, 독일어, 포르투갈어, 이탈리아어, 프랑스어, 스페인어 및 일본어의 7 개 언어로 제한되었습니다. 그들은 접미사와 접두사를 많이하는 경향이 그러나 나는 러시아가 나쁜 것을 볼 수 있습니다
taylonr

9

어셈블리 에서 FXCop 또는 Visual Studio Code Analysis 를 실행하는 것이 좋습니다 .

올바른 문화 지향 오버로드를 사용하지 않는 .NET 코드를 다음과 같이 탐지하는 데 능숙합니다. CA1305 : IFormatProvider 지정 .

이 도구는 일반적으로 코드에서 수십억 개의 문제를 감지하기 때문에 실망 스럽지만 여전히 각 규칙을 따르지 않아도 많은 것을 배워야한다고 덧붙여 야합니다.


이것이 기본값입니까, 아니면 세계화 관련 규칙을 검색하기 위해 일부 설정을 지정해야합니까?
smartcaveman

@smartcaveman-이것이 기본값입니다 (흠 .. 실제로 일부 사람들은 이러한 도구에 많은 기본 규칙이 있다고 생각합니다 :-)
Simon Mourier

7

리소스를로드하는 구체적인 방법 외에도 의사 지역화 버전으로 테스트하여 시작해야합니다. 그렇지 않으면 국제화 고려 사항이 끝날 때까지 생략 된 장소를 알지 못할 것입니다.


빠르고 쉬운 방법 pseudolocalize하기 위해, 나는에서 무료 온라인 도구 내장 pseudolocalize.com
JerSchneid

6

다른 모든 유용한 힌트 외에도 누락 된 내용이 있습니다.

일부 국가에서는 둘 이상의 언어를 사용한다는 점을 고려하십시오. 예를 들어, 캐나다에서는 사용자가 영어와 프랑스어를 쉽게 전환 할 수있을 것으로 기대합니다.

사용자에게 단일 문자 답변이 필요한 질문을하는 경우 사용자가 'Y'키를 눌러 예라고 대답하지 않도록하십시오.

SQL DB의 날짜가 미국 형식 인 Stored proc에 유의하십시오.

DB에 텍스트 문자열을 배치하면 나중에 재배포하지 않고 추가 언어를 추가 할 수 있습니다.

번역을 위해 작성된 텍스트 파일을 보낼 때는 항상 문맥에 대한 설명을 포함시켜 번역자가 올바른 단어를 선택하도록하십시오. 예를 들어, 문맥이 없으면 "피치 :"를 소리 나 축구를하는 장소와 관련이있는 것으로 변환 할 수 있습니다.

주소 레이블은 항상 변환해야합니다. 캐나다의 주, 미국의 주, 영국의 카운티


5

다음을 고려해야합니다.

  1. 다국어 라우팅

  2. 모든 하드 코드 문자열을 자원 파일로 이동

속성의 예 :

모델:

[Display(Name = <Resource for display name>.<field for this property>)]
[Required(ErrorMessage = <Resource for error message>.<field for this validate message>)]
public string TestProperty { get; set; }

전망:

@Html.LabelFor(m=>m.TestProperty)
@Html.EditorFor(m => m.TestProperty)
@Html.ValidationMessageFor(m => m.TestProperty)

5

나머지 답변에는 언급되지 않은 내용이 있습니다.

응용 프로그램의 복잡성과 현지화에 따라 대체 리소스 공급자를 구현하고 현지화 된 리소스를 데이터베이스에 유지하는 것이 좋습니다. 기본 ASP.NET 지역화 체계를 사용하면 모든 리소스가 RESX 파일에 보관됩니다.

  1. Visual Studio에서 편집하기가 쉽지 않습니다.
  2. 응용 프로그램을 컴파일 / 배송 / 실행 한 후 지역화 된 리소스의 배포 및 관리를 제한합니다.

가능한 사용 사례로 응용 프로그램에 언어 팩을 제공하고 UI를 통해 언어를 가져오고 내보내는 기능을 고려하십시오. RESX 파일은 여기서 도움이되지 않습니다.

이와 같은 시나리오에서는 대체 리소스 공급자가 매우 유용합니다. 구현 방법에 대한 자세한 내용은 여기를 참조하십시오 . 물론 이것은 엔터프라이즈 응용 프로그램에서 더 일반적으로 나타나는 드문 경우이지만 여전히 유효합니다.


1
시간을내어이 훌륭한 답변에 대한 답변을 살펴보고 새롭고 도움이되는 무언가를 제공해 주셔서 감사합니다.
smartcaveman

+1; Asp.NET에서 광범위한 웹 응용 프로그램을 구축했으며 데이터베이스를 통해 번역 작업을 마쳤습니다. 새로운 기능이 종종 추가되었지만 번역사가 특정 용어를 사용하는 전문가가 아니기 때문에 "X에 대해 Y 단어를 사용하는 이유는 무엇입니까?"와 같은 화난 고객의 이메일을 신속하게 처리 할 수있었습니다.
gregopet

3

가장 중요한 것은 다양한 언어로 콘텐츠를 관리하는 것입니다. 몇 가지 웹 사이트를 직접 개발했으며 다양한 언어로 콘텐츠를 관리하는 것이 가장 큰 과제입니다.

데이터베이스를 사용하여 리소스 / 콘텐츠를 저장하고 있습니다. 원하는 언어 지원을 유연하게 추가 할 수 있습니다. 특정 언어의 리소스를 찾지 못하면 영어로 넘어가는 논리를 구현했습니다.

나중에 번역기를 사용하여 영어 값을 모든 언어로 변환 할 수 있습니다.


2

국제화에서 고려해야 할 사항 요약 :

  • 모든 정보는 국제화되어야합니다. 그래픽에 국제화하려는 정보가있을 수 있음을 고려하십시오.

  • 언어에 따라 필드 나 문자열의 크기는 문제를 일으킬 수 있기 때문에.

  • 단어의 순서는 우리가 사용하는 언어에 따라 다르므로 한 언어의 순서는 다른 언어의 순서와 동일합니다.

  • 날짜 형식이 한 언어에서 다른 언어로 바뀔 것이라는 점을 고려해야합니다


1

할 일 터키 테스트를 :

소프트웨어 국제화는 최선의 상황 에서 어려운 일이지만 국제화 문제에 대한 토론에서 특정 국가가 얼마나 자주 등장했는지는 놀랍습니다. 터키 ...

현지화 또는 국제화에 대해 경의를 표하는 경우 가능한 빨리 터키어 로케일에서 코드를 실행하십시오 . 코드가 문화와 로케일에서 가장 많이 실행되는 것은 아닙니다.

사이트 / 프로그램이 터키어 클라이언트에서 제대로 실행되면 대부분의 다른 플랫폼에서 실행될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.