A-code internationalisation

## A-code internationalisation As of version 12.83, A-code is UTF8 compliant and thus can be used to write games with messages, vocabulary and entity names in languages other than English, including ones which use non-ASCII characters, provided (a) words are separated by ASCII blanks (octal 32) and (b) are parsed left to right. All you need is a UTF8-compliant text editor. While full internationalisation is only possible since A-code version 12.83, it is available in games using A-code styles from 10 upwards. UTF8 compliance means that You can have texts and player vocabulary, including object/place names in any character set that can be represented in UTF8 encoding of Unicode. There is, of course, a residual difficulty. The A-code kernel has to be able to identify words being used to structure complex command: AND being used instead of a comma, and THEN being used instead of a semicolon. Furthermore, if the verb AGAIN is defined by the game, it is intercepted by the kernel and taken to men a request to repeat the previous command (see the section on automatic entities and flags in the A-code language documentation). There are a few other special words that have to be known to the kernel. The current complete list is as follows: AND – parsed by the kernel as equivalent to a comma (see the explanation of compound player commands). THEN – treated as equivalent to a semicolon (see the explanation of compound player commands). AGAIN &ndash it's presence in player vocabulary activates the repeater feature of command parsing (see the relevant part of the command parsing document). ALL &ndash it's presence in player vocabulary activates the availability of the A-code minor directive DOALL (see the the relevant section of the command parsing document.) EXCEPT – used to signal exceptions to an DOALL command processing (see the the relevant section of the command parsing document.) IT – maintained by the kernel as a pointer to the last referenced objects (see the the relevant section of the command parsing document.) UNDO &ndash it's presence in player vocabulary activates the system for undoing/re-doing player commands (see the the explanation of the undo mechanism.) SAY – use in kernel is experimental, will be fully described in a later A-code version. The obvious solution in writing a game in a language other than English is to declare the appropriate synonyms for such special words. (AND and THEN are defined automatically, but can be also defined explicitly as vocabulary words.) E.g. in Czech the equivalent of AND is A, and of THEN is PAK (or POTOM). Thus
    WORD AND, A
    WORD THEN, PAK, POTOM
enables these words to be used in place of AND and THEN. There is, of course, an obvious snag to this simple solution. It leaves the English version of such special words in the player vocabulary, which may be very confusing to players (e.g. because of the typo correction mechanism). To avoid this, one can specify exclusion of English versions from the player dictionary in the standard manner:
    WORD -AND, A
    WORD -THEN, PAK, POTOM
This is still not ideal, since conceivably a game being written in some other language may need to include some of these special words as having meanings other than their English ones. This can be achieved by using the special "barred name" convention:
    WORD |AND, A
    WORD |THEN, PAK, POTOM
In this way special words are defined in the appropriate language, yet their English versions are not defined in any way: neither as symbols that can be referenced by the game's code, nor as a part of the player vocabulary.