This paper proposes a mechanism for the definition and implementation of programming languages. Culturally-dependent aspects of the definition, such as the language and character set, can be separated from the process of translating programs and from the execution of a translated program.