IT Share you

I18N 안전은 무엇을 의미합니까?

shareyou 2020. 12. 7. 21:11
반응형

I18N 안전은 무엇을 의미합니까?


일부 코드에서 "I18N 안전"이라는 코드를 언급하는 주석을 발견했습니다.

이것은 무엇을 의미합니까?


I + (약 18 자) + N = 국제화

I18N 안전은 나중에 지역화 (L10N)를 용이하게하는 설계 및 개발 단계가 취해 졌다는 것을 의미합니다.


이것은 I18N을위한 준비가 된 코드 또는 구조로 가장 자주 참조됩니다. 즉, 일반적인 I18N 기술로 쉽게 지원됩니다. 예를 들어 다음이 준비되었습니다.

printf(loadResourceString("Result is %s"), result);

다음은 아닙니다.

printf("Result is " + result);

어순이 언어마다 다를 수 있기 때문입니다. 유니 코드 지원, 국제 날짜-시간 형식 등도 해당됩니다.

편집 : 실제 생활에 가까운 예제를 만들기 위해 loadResourceString을 추가했습니다.


난 I18N 수단 nternationalizatio N => I ( 18 개 문자 ) N. i18n 안전으로 표시된 코드는 비 ASCII 문자 데이터 (예 : 유니 코드)를 올바르게 처리하는 코드입니다.


국제화. 그 파생어는 "문자 I, 18 개의 문자, 문자 N"입니다.


I18N은 국제화를 의미합니다.


i18n은 "국제화"의 약어입니다. 이것은 DEC에서 만들어졌으며 실제로 소문자 in을 사용 합니다.

참고로 L10n은 "localization"을 의미하며 대문자 L사용 하여 소문자 i 와 구분합니다 .


여기에 이미지 설명 입력

국제화의 숫자입니다.

두문자어와 달리 숫자는 숫자 기반 단어입니다 (예 : 411 = 정보, k9 = 개).

코드에서 이것은 일반적으로 폴더 제목이며 일반적으로 다른 로케일, 키보드, 문자 세트 등을 사용하여 국제 환경에서 작동하는 코드를 나타냅니다. ... "

여기에서 자세히 알아보세요 : http://www.i18nguy.com/origini18n.html


추가 정보가 없으면 코드가 텍스트를 UTF8로 처리하고 로케일을 인식한다는 의미라고 생각합니다. 자세한 내용은 이 Wikipedia 기사 를 참조하십시오.

좀 더 구체적으로 말씀해 주시겠습니까?


i18n-safe는 모호한 개념입니다. 일반적으로 다른 로케일, 키보드, 문자 세트 등을 사용하는 국제 환경에서 작동하는 코드를 말합니다. 진정한 i18n 안전 코드는 작성하기 어렵습니다.

이는 코드가 다음에 의존 할 수 없음을 의미합니다.

sizeof (char) == 1

해당 문자는 UTF-32 4 바이트 문자 또는 UTF-16 2 바이트 문자 일 수 있으며 여러 바이트를 차지하기 때문입니다.

이는 코드가 문자열의 바이트 수와 같은 문자열 길이에 의존 할 수 없음을 의미합니다. 이는 코드가 nul 종결자를 나타내는 문자열에서 0 바이트에 의존 할 수 없음을 의미합니다. 이는 코드가 단순히 텍스트 파일, 문자열 및 입력의 ASCII 인코딩을 가정 할 수 없음을 의미합니다.


국제화는 의미 국제화 .

간단히 말해서, I18N 안전 코드는 UI의 텍스트에 대해 일종의 조회 테이블을 사용한다는 것을 의미합니다. 이를 위해 비 ASCII 인코딩을 지원해야합니다. 이것은 쉬운 것처럼 보일 수 있지만 몇 가지 문제가 있습니다.


"I18N 안전"코딩은 I18N 버그를 도입하지 않는 코드를 의미합니다. I18N은 국제화의 숫자로, I와 N 사이에 18 개의 문자가 있습니다.

문화 형식 : 날짜 시간 형식 (영국의 경우 DD / MM / YY, 미국의 경우 MM / DD / YY), 숫자 형식, 시간대, 측정 단위가 문화에서 문화로 변경되는 등 i18n과 관련된 여러 범주의 문제가 있습니다. 데이터는 올바른 문화 / 지역에 적합한 형식으로 수락, 처리 및 표시되어야합니다. 국제 문자 지원 : 모든 다른 언어의 모든 문자가 허용되고 처리되고 올바르게 표시되어야합니다. 현지화 가능성 : 번역 가능한 문자열은 하드 코드가 아니어야합니다. 리소스 파일에서 외부화되어야합니다.

"I18N 안전"코딩은 위의 문제가 코드 작성 방식으로 도입되지 않음을 의미합니다.


i18n은 다른 사람들이 지적했듯이-코드에서 하드 코딩 된 문자열을 코드에서 이동 (모두가 그럴 필요는 없음)하여 지역화 / 번역 (localization == L10n) 할 수 있도록하고-로케일에 민감한 방법도 다룹니다. -텍스트 처리를 처리하는 방법 (일본어 텍스트에서 단어 수는 매우 분명합니다.), 다른 언어 / 서체 시스템의 순서 / 대 조화,-날짜 / 시간 처리 (가장 간단한 예는 am / pm을 예를 들어 미국, 프랑스의 경우 24 시간 시계, 특정 국가의 경우 더 복잡한 달력으로 이동),-아랍어 또는 히브리어 (UI, 텍스트 방향 등) 처리,-다른 사람들이 지적한대로 인코딩- 데이터베이스 문제는 상당히 포괄적 인 각도입니다. "문자열 외부화"를 다루는 것만으로는 충분하지 않습니다.

일부 (소프트웨어) 언어는 개발자가 i18n 코드 (다른 로케일에서 실행되는 코드를 의미 함)를 작성하는 데 도움이되는 다른 언어보다 우수하지만 소프트웨어 엔지니어링 책임으로 남아 있습니다.

참고 URL : https://stackoverflow.com/questions/586973/what-does-i18n-safe-mean

반응형