Chapter 44. ��������֧��

Table of Contents
44.1. ���﷭���
44.1.1. Ҫ��
44.1.2. ����
44.1.3. ������ά����Ϣ��
44.1.4. �༭ PO �ļ�
44.2. �������Ա
44.2.1. ����
44.2.2. ��Ϣ��дָ��

44.1. ���﷭���

PostgreSQL���򣨷������Ϳͻ��ˣ���������ϲ�������Է�����Ϣ — ֻҪ��Щ��Ϣ��������� ������ά�����������Ϣ����Ҫ��Щ��Ϥ�Լ������Բ���ϣ��ΪPostgreSQL��һЩ������ˡ� ʵ����Ҫ�����������ȫ�����Ǹ�����Ա�����½��ľ�����ΰ��� PostgreSQL ������¡�

44.1.1. Ҫ��

���Dz������������������ — �������й�������ߵġ� �����ϣ���ֻ��Ҫһ���ı��༭���� ���������ֻ�������㲻�뿴���Լ��������Ϣ������£�����������ѷ����ɡ� �����������Դ�����ʱ�򣬼�סҪʹ�� --enable-nls ѡ�����Ҳ���� libintl ��� msgfmt �������������������û�����Ҫ�Ķ�����Ҫ������Ĺ����� ���հ�װָ������Ӧ�IJ��־Ϳ����ˡ�

������뿪ʼһ���µķ��빤������������Ϣ���ںϹ����������������� ��ô��ͻ��ֱ���Ҫ�� GNU ���ݵ� xgettext �� msgmerge�� �Ժ����ǽ����Ű������������������ʹ�õ���һ�������Դ�뷢���� ��ô��Ͳ�����Ҫxgettext������ CVS ����Դ��Ļ��� �㻹����Ҫ�ġ������������Ƽ� GNU Gettext 0.10.36 ���߸��ߡ�

��ı��� gettext ʵ��Ӧ�ú���������ĵ���һ�𷢲��� ������һЩ���ܺ�����������ظ��������Ҫ֪�������ϸ�ڣ���Ӧ�ÿ������ǡ�

44.1.2. ����

��Ϣԭ�ģ�Ӣ������ǵģ����ܣ�������ĵȼ��ﶼ������Ϣ��� ÿ������һ����������صij�����Թ���һ����Ϣ���Լ�ÿ��Ŀ������һ���� ��Ϣ���������ļ���ʽ�� ��һ���� "PO"��Portable Object���ļ�������ֲ���󣩣����Ǵ��ı��ļ�����һЩ�����߱༭�������﷨�� �ڶ����� "MO"(Machine Objece) �ļ�����˼�ǻ������󣩣� ���Ǵ���Ӧ�� PO �ļ����ɵĶ������ļ����ڹ��ʻ��˵ij������е�ʱ��ʹ�á� �����߲������� MO �ļ���ʵ���ϼ���û�˴�������

��Ϣ����ļ���չ���ֱ��� .po �� .mo ��һ��Ҳ������ˡ����ļ���Ҫô������Ӧ�ij�������Ҫô�Ǹ��ļ����õ����ԣ������������ ���������е����˻����� ������ psql.po��psql ��PO �ļ������� fr.mo������� MO �ļ�����

PO �ļ����ļ���ʽ������ʾ��

# comment

msgid "original string"
msgstr "translated string"

msgid "more original"
msgstr "another translated"
"string can be broken up like this"

...

msgid �Ǵӳ���Դ�����г�ȡ�ġ�����ʵ�����Ǵ�Դ�룬��������õķ������� msgstr �г�ʼΪ�գ��ɷ�����������õ��ִ��� ���ִ����԰��� C ���������ַ����ҿ�����������ʾ���������м���������һ�б���Ӹ��еĿ�ͷ��ʼ����

# �ַ�����һ��ע�͡���� # ��������ſհף���ô���Ƿ�����ά����ע�͡� �ļ���Ҳ�������Զ�ע�ͣ��������� # ��������ŷǿհ��ַ�����Щ���ɸ����� PO �ļ��ϲ����Ĺ������ɵģ� ��ҪĿ���ǰ��������ߡ�

#. automatic comment
#: filename.c:1023
#, flags, flags

#. ����ע���Ǵ�ʹ����Ϣ��Դ�ļ��г�ȡ�ġ� ����Ա�����Ѿ�������һЩ��Ϣ�������ߣ�������ЩԤ�ڵĸ�ʽ�ȡ� #: ע�ͱ�ʾ����Ϣ��Դ������ʹ�õ�׼ȷλ�á� �����߲���Ҫ�鿴����Դ�ļ���������������÷���ò��Ծ��� ��ô��Ҳ���Բ鿴��#, ע�Ͱ�����ij�̶ֳ���������Ϣ�ı�־�� Ŀǰ��������־���������Ϣ��Ϊ����Դ�ļ����޸ı�ù�ʱ�ˣ� ��ô���� fuzzy(ģ��)��������Ȼ��Ϳ��Ժ�ʵ��Щ�� Ȼ��ɾ�����ģ����־����ע��ģʽ��Ϣ�������û����ɼ��ġ� ����һ����־�� c-format������ʾ����Ϣ��һ�� printf���ĸ�ʽģ�档 �����ζ�ŷ���ҲӦ����һ����ʽ���ִ���������ͬ��Ŀ����ͬ���͵�ռλ���� ���������ں�ʵ��Щ�Ĺ��ߣ��������� c ��ʽ(c-format)��־�ļ���

44.1.3. ������ά����Ϣ��

�ã���������ô����һ��"�հ�"����Ϣ���أ� ���ȣ�����������뷭����Ϣ�ij������ڵ�Ŀ¼�����������һ���ļ��� nls.mk�� ��ô���������Ѿ�׼���÷����ˡ�

���Ŀ¼���Ѿ���һЩ .po �ļ��ˣ� ��ô���������Ѿ�����һЩ���빤���ˡ���Щ�ļ����� language.po �����ģ������ language �� ISO639-1 �涨������ĸ���Դ��루Сд�������磬 fr.po ָ���Ƿ�����ÿ��������Ҫ���һ�ֵķ��룬��ô��Щ�ļ�Ҳ���Խ��� language_region.po ����� region �� ISO3166-1 �涨������ĸ���Ҵ���(��д)�����磬 pt_BR.po ָ���ǰ����������������ҵ�������Ҫ�������ļ�����ô��Ϳ������Ǹ��ļ��ϸɻ

�������Ҫ��ʼһ���µķ��빤������ô�����������������

gmake init-po

����������һ���ļ� progname.pot ���� .pot ��"������"ʹ�õ� PO �ļ����ֿ���T����"template"����������ļ������� language.po Ȼ��༭����Ҫ�ó���֪���������Կ����ã���Ҫ�༭�ļ� nls.mk�����Ӹ����ԣ��������Ժ͹��ң����뵽���������������У�

AVAIL_LANGUAGES := de fr

����Ȼ���ܻ����������ҡ���

�����²�ij�����߿�ĸı䣬����Ա�����޸Ļ���������Ϣ�� ���ʱ���㲻�ش�ͷ������ֻ��Ҫ�������������

gmake update-po

��������һ���µĿ���Ϣ���ļ����㿪ʼʱ�õ� pot �ļ������һ���������е� PO �ļ��ں������� ����ں��㷨����ȷ��ij���������Ϣ�Ƿ��ں���ȷ����ô���ͻ����������������������Ϊ "fuzzy(ģ��)"�������Щ�������dz����ˣ���ô�ɵ� PO �ļ��ͻᱣ��Ϊ�� .po.old ��չ���ļ���

44.1.4. �༭ PO �ļ�

PO �ļ���������ͨ���ı��༭���༭��������Ӧ��ֻ�޸���Щ�� msgstr ָʾ�������˫�����м�����ݣ� Ҳ����������ע���޸�ģ����fuzzy����־��Emacs ��һ������ PO ��ģʽ���Ҿ����൱���á�

���Dz���Ҫ�� PO �ļ���ȫ�����������Щ�ִ�û�з��루������һ���հ׵ķ��룩����ô������Զ�ʹ��ԭʼ���ִ��� Ҳ����˵�ύһ��δ��ɵķ��������Դ�����в�����һ�����⣻ �������������������˼�����Ĺ����Ŀռ䡣������ ���ǹ����������һ���ں�֮����������ģ������Ŀ�� Ҫ֪��ģ������Ŀ�Dz��ᱻ��װ�ģ�����ֻ�𵽱�ʾ��������ȷ��������õ����á�

������һЩ�༭������Ϣ��ʱ��Ҫ��ס�����飺

  • ȷ�����ԭʼ��Ϣ���Ի��н�β�Ļ���������ϢҲ��ˡ����Ƶ���������� tab �ȡ�

  • ���������ִ��� printf ��ʽ���ִ�����ô���봮Ҳ������ˡ� ���봮��Ҫ��ͬ���ĸ�ʽ�����ʣ�����˳����ͬ�� ��ʱ�����Ե���Ȼ���������ô�����������ܻ��߼����ѿ��� ��ʱ�������������ĸ�ʽ��

    msgstr "Die Datei %2$s hat %1$u Zeichen."

    ��������һ��ռλ��ʵ����ʹ���б���ĵڶ��������� digits$ Ӧ�ø��� % ���沢����������ʽ������֮ǰ�� ���������ʵ���ϴ����� printf ���庯���С� ����ܴ���û����˵��������Ϊ������Ϣ���ʻ�������û��ʲô�ô�����

  • ���ԭʼ���ִ��������Դ�����ô�뱨�����������ڳ���Դ�ļ���ֱ���޲������� Ȼ�����������롣��ȷ���ִ����ܸ��ڳ���Դ�ļ����µ�ʱ���ںϽ����� ���������ִ�����ʵ��������ô�뱨�����������Լ��޲����� ���Dz�Ҫ���������෴��������� PO �ļ�����ע������ִ�������ǡ�

  • ά������ԭʼ�ִ����������ر�����Щ���ɾ��ӵ���Ϣ��cannot open file %s�����ܲ�Ӧ���Դ�д�ַ���ͷ ���������������ִ�Сд�Ļ��������þ�Ž������������������з��ű�־����

  • ����㲻֪��һ����Ϣ��ʲô��˼���������ܺ����� ��ô�ڿ������ʵ��б���ѯ�ʡ���Ϊ����˵Ӣ��������û�Ҳ���ܲ����������߾�����������⣬����������ø�����Щ��Ϣ��