2009-09-17 3 views
9

이 단일 언어, 데이터베이스 또는 어떤단수 또는 복수 단어 모범 사례?

우리는 모두를위한 특정하지 일반에 대한 모범 사례이며, 당신이 "한 제품"또는 "이 개 제품을"보고 할 수있는 생성 된 출력을 처리해야합니다. 잘 읽지 않습니다 ... 일부는 "하나의 제품"또는 "제품 수 : (1)"을 사용하여이 문제를 해결하고 다른 솔루션은 다른 해결책을 가지고있을 수 있습니다.

다른 언어로 된 것들이 훨씬 더 복잡 할 수 있습니다! 프랑스어로 상품이 없으면 복수형이 아닌 단수형을 사용하게됩니다! (제로 제품) 다른 언어 (중국어, 일본어)는 이러한 문법적 차이가 없거나 두 개 이상의 단어가 제품 수에 대해 뭔가를 나타낼 수도 있습니다. (예를 들어, 복수이고 더 큰 복수)

그러나 간단히 말하면, 단수 및 복수 단어가있는 언어에 초점을 맞추어 보겠습니다.

보고서를 생성해야하는 새 프로젝트를 설정할 때 단수 또는 복수 단어를 어떻게 처리합니까? 단수형 및 복수형에 대해 데이터베이스에 두 개의 이름 필드를 추가합니까? 단수에서 복수로 단어를 변환하기 위해 코드에 규칙을 추가합니까? 다른 트릭을 사용합니까?

단수 및 복수형을 추적해야하는 프로젝트에서 작업 할 때 어떻게 처리합니까? 정량적 데이터를보고하는 자연 언어를 사용하려고

+0

iirc 아랍어는 단수형, 이중형 및 그 다음 (더?) 복수형을위한 특별한 형태를 가지고 있습니다! : S –

+0

서로 다른 언어로 상당히 다른 복수형이 있습니다. 참조 : http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html – SimonSimCity

답변

9

나는 일반적으로 gettext 특히 ngettext에서 보라는 권유를 것입니다. 어쩌면 응용 프로그램을 번역하지 않을지라도. this part of the documentation으로 가보십시오. 그것은 어느 정도 모든 언어에 대한 구현을 가지고 있으며 선택 언어가이 지원이 부족하더라도 아이디어를 빌려주지 못하는 것은 없습니다.

+0

하지만 데이터베이스에 저장된 제품 이름은 어떨까요? –

+1

동일 함 - 단수/복수 쌍을 저장함. 그리고, 번역의 경우 (당신이 아닌가요?) gettext를 사용하거나 유사한 알고리즘을 사용하고 다른 곳에 저장하는 경우 .po에 넣어야합니다. 물론 수천 가지 제품을 .po 파일에 집어 넣으십시오.) –

+0

데이터베이스에 저장된 제품 이름의 또 다른 문제점에 대해 생각해보십시오. 복수형/단수형을 처리하는 것은 매우 쉽지만, 번역의 경우에는 문제가있을 수 있습니다. 그리고 지명도에 충실하려는 노력은 '제품 수 : N'만큼이나 어색한 것으로 판명 될 것입니다. –

0
Number of products: 1 
Number of products: 4 
Number of products: FILE_NOT_FOUND 

혼전의 너무 많은 것입니다.

+0

그래, 알아. :-) 나에게 유머 감각을주고 작업중인 제품의보고 엔진에서 중요한 요구 사항으로 생각하십시오. –

+3

그리고 너무 많은 번거 로움 때문에 인류가 멈추었습니까? –

+0

Awww ... 이제 나는 "인류"의 복수형에 대해 궁금해하는 것을 멈출 수 없다 ... "인류"는 아마도? ;-) –

-4

영어 응용 프로그램의 경우 일반적으로 단수형을 저장하고 if 문의 그룹을 사용하여 복수형을 만드는 것이 가장 쉽고 효율적입니다.

+6

-1 버스, 졸업생 등 – MusiGenesis

1

일반적으로 나는 사용자가 읽을 수있는 텍스트로 표시하려는 값을 다시 포맷하는 일종의 포맷터를 통해 텍스트를 보냅니다. 이것은 또한 "제품"텍스트를 수정할 수 있습니다. Java에는 이러한 수정을 지원하는 MessageFormat 클래스가 있습니다. [1]의 예제를 참조하십시오.

[1] http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html

1

this을 읽고 구현하십시오. 일을 마치면 (몇 년 후) 다시보고하십시오. 개인적으로, 나는 접근 방식에 만족한다;) (모든 언어에서 작동하지는 않는다.)

+0

음, 그 링크는 단수/복수 단어의 복잡성을 분명히 보여줍니다. 또한 양식의 수가 1 개에서 최대 6 개까지 다양하다는 것을 보여줍니다! 이미이 사이트가 마음에 들어요! :-) –

+2

Alex, this - http://translate.sourceforge.net/wiki/l10n/pluralforms - 다른 언어에 대한 복수형에 대한 포괄적 인 리소스처럼 보입니다. –

2

Perl에서 이것은 포괄적으로 Lingua::EN::Inflect으로 해결됩니다. 큰 사전을 사용하고 규칙에 대한 모든 예외를 신중하게 처리합니다. 또한 'a'또는 'an'과 같은 작업을 수행하고 비교를 처리합니다.

자세한 내용은 the paper을 참조하십시오.

+1

이 참조의 한 가지 문제점은 * 언어 *로 여기에 언급 된 것과 상관없이 언어에 구속력이 없다는 것입니다. 다른 문제는 문제가 명사의 복수형을 넘어서고 있다는 것입니다. 전체 문장 (그리고 전체 문장이라고하는 * 이러한 것들이 있습니다). –

+0

하지만 어쨌든 재미있는 참고서로 upvote;) –

+0

@hacker : 네가 맞다.이 모듈은 영어에 맞다. 그러나 그것은 그 언어를 아주 잘 처리합니다. –

0

그냥 업데이트로 CLDR에는 이제 언어에 대한 복수 규칙이 있으며 ICU에는 구현이 있습니다.