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:

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.