Skip to content

alan-if/alan-i18n

Repository files navigation

Travis CI Status  Alan version  Ruby version  License

ALAN Internationalization Project

Multi-language translations of the ALAN Foundation Library, a basic ALAN Interactive Fiction library to begin creating text adventures in different languages, and provide reference implementations to add support for new locales.

Created by Tristano Ajmone on April, 2021.

IMPORTANT — All ALAN sources, solutions and transcripts files in this project are UTF-8 encoded. You'll need ALAN version 3.0Beta8 (or above) in order to use this project and its libraries.


Table of Contents


Project Contents

Library Locales

folder locale description date
/alan_en/ English Reference implementation. Nov. 2007
/alan_es/ Spanish By M.Donantuonni & B.Humphrey. Apr. 2010
/alan_it/ Italian By Tristano Ajmone Nov. 2021

For more info on the status of the various libraries, see the PORTS_STATUS.md document.

About

The goal of the Alan-i18n repository is to gather under a single project multilingual implementations of a basic ALAN library to start developing adventures with.

In computing jargon, a spoken language is referred to as a locale, to avoid confusion with programming languages, and the term "i18n" stands for internationalization and localization, i.e. adapting computer software to different languages.

These libraries can be used to start creating text adventures in different locales, or serve as reference implementation for anyone wishing to create a library to support a new locale.

The reference implementation is the English Foundation Library, based on the ALAN Library v0.6.2, which was created by the Alan IF community over the years, and across various Alan incarnations, up to November 2007, after which it was replaced by newer and more sophisticated libraries (Library v1, and the Standard Library v2).

For the goals of this project, the older library v0.6.x provided a better reference implementation for those wishing to translate and adapt it to a new locale, because of its highly modular structure where each file handles a specific feature, so we decided to take on its development from where it stopped, gradually update it make use of the new ALAN features that were introduced since 2007, and rename it to avoid confusion with the original library.

The Foundation Library is also a good starting point for those who wish to write a highly customized adventure, where the adventure world (its object types, verbs and commands) is tailored to the story needs, because the library strikes a good balance between simplicity and features coverage. Most features can be tweaked, removed or expanded by acting on the single library module (file) that implements a specific feature, whereas more sophisticated libraries usually come at the price of a more entangled system, where features are interconnected with each other in complex ways.

In any case, as their name suggests, these libraries implementations are intended as starting points to begin working with ALAN IF, in general.

Unlike most other IF authoring systems, ALAN doesn't ship with a default library, and the language doesn't predefine world objects, player commands nor directions; it instead provides authors with the right tools to easily define them according to need. By design, ALAN is a locale agnostic IF system — i.e. it doesn't assume any target language as being the default one.

The ALAN philosophy is entirely devoted to freedom — not only because it's a free and open source system, but because it provides IF authors with utter freedom when it comes to designing their own adventure worlds, allowing their creation from the ground up, according to the needs of each adventure and the author's personal taste.

Build Instructions

This project uses Rake (Ruby's Make) to handle task management and build automation. Being a dependency based system, Rake allows quick project updates since it will only rebuild those assets that need to be (if any).

A nice feature of Rake is that it might be invoked from any folder within the repository directory, so you don't need to issue the rake command from the root folder — as long as you're inside the repository tree the command will work as if typed at the root.

To build outdated assets in the project:

$ rake

To forcefully rebuild the whole project:

$ rake -B

To do a dry run without executing actions:

$ rake -n

To delete all generated files from the project:

$ rake clobber

To view all available build tasks:

$ rake -T

To view all tasks and their dependencies:

$ rake -P

System Requirements

In order to fully build this project you'll need the following tools:

Alan SDK

You'll need the latest Beta version of the command line Alan SDK (Software Development Kit), and make sure that both the Alan compiler and the ARun interpreter binaries are reachable through the system PATH.

NOTE — We're working on an alternative solution that will delegate to Rake the task of downloading and updating the required SDK binaries (according to OS) and add them to a dedicated repository folder (ignore by Git) in order to make this project independent from any global SDK setup. In the meantime, you'll need to setup the SDK binaries manually.

Ruby

You'll need Ruby version 3.

Windows users should use RubyInstaller, which can also be installed as a Chocolatey Ruby package using the Chocolatey GUI package manager, which simplifies keeping it always up to date.

Rake

Some Ruby versions natively ship with Rake (e.g. Ruby for Windows), if not just install it via:

$ gem install rake

License

The Alan Library was originally part of the Alan repository and its therefore governed by the same Artistic License 2.0. All translations of the original English Alan Library are derivative works, and therefore fall under the same license terms.

Any third party sample adventure in this repository is governed by its own license, as specified in the README and/or license file inside its folder.

Every other asset in this repository is to be assumed as being licensed under the Artistic License 2.0, unless otherwise specified.

More details about the license terms, authors and credits of each third party asset can be found in its README file.

Useful Links