$FreeBSD$ Easy Editor ("ee") provides the ability to translate the messages displayed to the user and the commands entered. This is done via message catalogs, following X/Open standards. ee supports eight bit characters, as well as 16-bit characters. The Chinese Big 5 code set is the 16-bit code set that ee was modified to handle, as it is relatively easy to support since two byte characters also take up two columns on the screen, thereby simplifying the screen position calculations. Other multibyte code sets may function, but have not been tested. (The name ee.i18n.guide is for "ee internationalization guide". The i18n abbreviation is used because there are 18 characters between the first letter ("i") and last ("n") of "internationalization".) All of the messages, warnings, information, and commands, are contained in the message catalog. Each numbered entry represents an individual string used by ee. Some strings contain formatting information for formatted print statements, which are of the form "%s", or "%d", these must be preserved in the translation, or the correct information will not be displayed. For those strings containing multiple formatting codes, the order of each item must be preserved as well. Message content 1 title for modes, or settings menu 2 - 8 entries for modes menu, each line should be the same length (padded with spaces) 9 - 34 other menu titles and entries 35 - 56 help screen 57 - 61 actions assigned to control keys 62 - 66 commands information 67 message displayed when info window turned off 68 indication that no file name was entered when invoking ee 69 prompt for decimal value of character to be entered 70 message displaying the print command being invoked 71 prompt for command 72 prompt for name of file to be written 73 prompt for name of file to be read 74 string used to display the decimal value of the character the cursor is on 75 string displaying an unrecognized command 76 string indicating that the command entered is not a unique substring of a valid command 77 string indicating the current line number 78 string for displaying the length of the line 79 string for displaying the name of the file 80 - 83 strings showing how to invoke ee, and its options 84 message indicating that the file entered is a directory, not a text file 85 message informing that the entered file does not yet exist 86 message informing that the file can't be opened (because of permission problems) 87 message after file has been read with the file name and number of lines read 88 message indicating that the file has been read 89 message indicating that the file is being read 90 message indicating that permissions only allow the file to be read, not written 91 message after file has been read with the file name and number of lines read 92 prompt for name of file to be saved (used when no name was entered for a file to edit) 93 message indicating that the file was not written, since no name was entered at the prompt 94 prompt asking user if changes should not be saved ("yes_char" will be expected for affirmative response) 95 "yes" character, single character expected to confirm action (can be upper or lower case, will be converted to upper-case during test) 96 prompt 97 error message 98 message indicating that the named file is being written 99 message indicating the name of the file written, the number of lines, and the number of characters (order of items must be maintained) 100 search in progress message 101 message that the string was not found 102 prompt for search 103 message that string could not be executed 104 self-explanatory 105 message for menus, indicating that the Escape character will allow the user to exit the menu 106 error message indicating the menu won't fit on the screen 107 self-explanatory 108 prompt for shell command 109 message displayed while formatting a paragraph 110 string which places message for spell checking at top of buffer (the portions 'list of unrecognized words' and '-=-=-=-=-=-' may be replaced, but the rest must remain the same) 111 message informing that spell checking is in progress 112 prompt for right margin 113 error informing user that operation is not permitted in ree 114 string indicating mode is turned 'on' in modes menu 115 string indicating mode is turned 'off' in modes menu 116 - 131 strings used for commands (some also used for initialization) 132 - 144 strings used for initialization 145 entry for settings menu for emacs key bindings settings 146 - 153 help screen entries for emacs key bindings info 154 - 158 info window entries for emacs key bindings info 159 string for turning on emacs key bindings in the init file 160 string for turning off emacs key bindings in the init file 161 fifth line of usage statement 162 error message when unable to save configuration file 163 positive feedback about saving the configuration file 164 - 167 menu items for saving editor configuration 168 error message when unable to save configuration file 169 error message for ree when not specifying the file 180 self-explanatory 181 - 182 indicators of more information in menu (for when scrolling menus because menu contents won't fit vertically on screen) 183 menu entry for modes menu for 16 bit characters 184 - 185 strings for initialization to turn on or off 16 bit character handling Care should be taken when translating commands and initialization keywords because the algorithm used for detecting uniqueness of entered commands will not be able to distinguish words that are not unique before the end of the shorter word, for example, it would not be able to distinguish the command 'abcd' from 'abcde'. After translating the messages, use the 'gencat' command to create the compiled catalog used when running the software. The standard syntax would be: gencat ee.cat ee.msg Where ee.msg is the file containing the translations, and ee.cat is the compiled catalog. If the file ee.cat does not exist, it will be created. Check the documentation for your system for proper syntax. Message catalog placement varies from system to system. A common location for message catalogs is in /usr/lib/nls. In this directory are directories with the names of other languages. The default language is 'C'. There is also an environment variable, named NLSPATH used to determine where message catalogs can be found. This variable is similar to the PATH variable used for commands, but with some differences. The NLSPATH variable must have the ability to handle different names for languages and the catalog files, so it has field descriptors for these. A typical setting for NLSPATH could be: NLSPATH=/usr/lib/nls/%L/%N.cat:/usr/local/lib/nls/%L/%N.cat Where "%L" is the field descriptor for the language (obtained from the LANG environment variable) and "%N" is the name of the file (with the ".cat" appended by the path variable, it is not passed from the requesting program). The colon (:) is used to separate paths, so in the above example there are two paths possible for message catalogs. You may wish to maintain catalogs for applications that are not supported by your system vendor in a location unique for you, and this is facilitated by the NLSPATH variable. Remember to set and export both the LANG and NLSPATH variables for each user that expects to use localization either in a system-wide profile or in each user's profile. See your system documentation for more information. The message catalog supplied with ee also uses the '$quote' directive to specify a quote around strings to ensure proper padding. This directive may not be supported on all systems, and lead to quotes being included in the string used in ee, which will cause incorrect behavior. If the '$quote' directive is not supported by your system's gencat command, edit the msg file to remove the leading and trailing quotation marks.