1TRANSLATING VIM MESSAGES 2 3In this directory you will find xx.po files, where "xx" is a language code. 4Each file contains the translation of English Vim messages for one language. 5The files are in "po" format, used by the gettext package. Please refer to 6the gettext documentation for more information. 7 8The GNU gettext library, starting with version 0.10.37, supports converting 9messages from one encoding to another. This requires that it was compiled 10with HAVE_ICONV. The result is that the messages may be in any encoding 11supported by iconv and will be automatically converted to the currently used 12encoding. 13 14The GNU gettext library, starting with version 0.10.36, uses a new format for 15some encodings. This follows the C99 standard for strings. It means that 16when a multi-byte character includes the 0x5c byte, this is not recognized as 17a backslash. Since this format is incompatible with Solaris, Vim uses the old 18format. This is done by setting the OLD_PO_FILE_OUTPUT and OLD_PO_FILE_INPUT 19environment variables. When you use the Makefile in this directory that will 20be done for you. This does NOT work with gettext 0.10.36. Don't use it, get 210.10.37. 22 23 24ON MS-WINDOWS 25 26The distributed files are generated on Unix, but this should also be possible 27on MS-Windows. Download the gettext packages, for example from: 28 29 http://sourceforge.net/projects/gettext 30 31You might have to do the commands manually. Example: 32 33 cd c:\vim\vim81 34 mkdir runtime\lang\ja\LC_MESSAGES 35 msgfmt -o runtime\lang\ja\LC_MESSAGES\vim.mo src\po\ja.po 36 37 38WHEN THERE IS A MISTAKE 39 40If you find there is a mistake in one of the translations, please report this 41to the maintainer of the translation. His/her E-mail address is in the 42comments at the start of the file. You can also see this with the ":messages" 43command in Vim when the translation is being used. 44 45 46CREATING A NEW PO FILE 47 48We will use "xx.po" as an example here, replace "xx" with the name of your 49language. 50 51- Edit Makefile to add xx to LANGUAGES and xx.mo to MOFILES. 52- If you haven't done so already, run ./configure in the top vim directory 53 (i.e. go up two directories) and then come back here afterwards. 54- Execute these commands: 55 % make vim.pot 56 % msginit -l xx 57 % rm vim.pot 58 The first command will generate a vim.pot file which is used by msginit to 59 generate a correct xx.po file. After that vim.pot is not needed. 60- The remaining work is like updating, see the next section. 61 62 63UPDATING A PO FILE 64 65If you are the maintainer of a .po file, this is how you update the file. We 66will use "xx.po" as an example here, replace "xx" with the name of your 67language. 68 69(1) Add new and changed messages from the Vim sources: 70 71 make xx 72 73 This will extract all the strings from Vim and merge them in with the 74 existing translations. Requires the GNU gettext utilities. 75 Your original xx.po file will be copied to xx.po.orig 76 77 -- After you do this, you MUST do the next three steps! -- 78 79(2) Translate 80 See the gettext documentation on how to do this. You can also find 81 examples in the other po files. You can use "gF" on the file name to see 82 the context of the message. 83 Search the po file for items that require translation: 84 85 /fuzzy\|^msgstr ""\(\n"\)\@! 86 87 Remove the "#, fuzzy" line after adding the translation. 88 89 There is one special message: 90 msgid "Messages maintainer: Bram Moolenaar <[email protected]>" 91 You should include your name and E-mail address instead, for example: 92 msgstr "Berichten �bersetzt bei: John Doe <[email protected]>" 93 94(3) Remove unused messages (optional) 95 Remove messages that have been marked as obsolete. 96 Such messages start with "#~". 97 98 The cleanup script will also do that (see next step). 99 100(4) Clean up 101 This is very important to make sure the translation works on all systems. 102 Comment-out all non-translated strings. There are two types: 103 - items marked with "#, fuzzy" 104 - items with an empty msgstr 105 You can do this with the cleanup.vim script: 106 107 :source cleanup.vim 108 109 Background: on Solaris an empty msgstr results in an empty message; GNU 110 gettext ignores empty strings and items marked with "#, fuzzy". 111 112 This also removes the line numbers from the file, so that patches are not 113 messed up by changes in line numbers and show the actual changes in the 114 text. 115 116(5) Check: 117 118 While editing the .po file: 119 :source check.vim 120 121 From the command line: 122 vim -S check.vim xx.po 123 make xx.mo 124 125 Look out for syntax errors and fix them. 126 127(6) Local tryout: 128 Vim normally picks up the .mo files from: 129 $VIMRUNTIME/lang/{lang}/LC_MESSAGES/vim.mo 130 To try out the messages with Vim use: 131 make tryoutinstall 132 And run Vim with $VIMRUNTIME set to ../runtime 133 134 135USING GETTEXT WITHOUT ICONV 136 137When using gettext which doesn't support iconv, the encoding of the .mo file 138must match your active encoding. For that you must convert and change 139encoding of *.po file in advance of generating the *.mo file. For example, to 140convert ja.po to EUC-JP (supposed as your system encoding): 141 142(1) Convert the file encoding: 143 144 mv ja.po ja.po.orig 145 iconv -f utf-8 -t euc-jp ja.po.orig > ja.po 146 147(2) Rewrite charset declaration in the file: 148 149 Open ja.po find this line: 150 "Content-Type: text/plain; charset=utf-8\n" 151 You should change "charset" like this: 152 "Content-Type: text/plain; charset=euc-jp\n" 153 154There are examples in the Makefile for the conversions already supported. 155