Documentation for AniS - the AnimationS applet

October 13, 1999
updated: May, 2007


What's new

Improved loading of static overlays with limited number of frames (using the numframeschoice control.

In the previous release, new controls and parameters added: New control: numframeschoice that allows you to set up a list of the number of frames to be downloaded and displayed. Useful to help users with limited bandwidth. Must be used in conjunction with the num_frames_choice PARAMeter that specifies a list of choices.

New parameter: overlay_labels_colors added to allow individual colors for overlay labels. (Does not work on Macs.)

New parameter: quiet_reload prevents the display of images as they are being loaded (when a "refresh" is done), thus preserving the screen as best as possible.

Before that, these parameters were been added: base_static, overlay_static, keep_zoom, and overlay_zoom.

See details below.


Quick Links in this Document


To run the applet, you need an applet tag. The skeleton for this is:

<HTML> <HEAD> <TITLE> Exampl of using the AniS applet </TITLE> </HEAD> <BODY> <P> <APPLET code="AniS.class" width=640 height=540> <PARAM name="parametername" value="value(s) for parameter"> </APPLET> </BODY> </HTML> The rest of this document describes the PARAMeter names and values needed to drive the AniS applet. We begin with the controls and then describe the specification of the filenames of the images.

One word about blanks (spaces). Within each PARAMeter clause, leading and training blanks are ignored for each parameter. You should use spaces to provide for easier readability.

Parameters for controls (if the control is named, it will appear; otherwise, its default value will be used):

<PARAM name="controls" value="startstop, looprock, step, speed, enhance, firstlast, refresh, toggle, rotator, zoom, fader, overlay, framelabel, audio, show, setframe, numframeschoice">

This controls parameter will position the controls above the image window. If you would like some (or all) of the controls below the image window, use the bottom_controls tag, as in:

<PARAM name="bottom_controls" value="startstop, looprock, step, speed, enhance, firstlast, refresh, toggle, rotator, zoom, fader, overlay, framelabel, audio, show, setframe, numframeschoice">

Note: You must not specify the same control in both the controls and the bottom_controls parameters!

Here are the details about each control:


Parameters that may also be used (details for those parameters related to filenames, portals and overlays appear after this section):

<PARAM name="use_archive" value="x"> specifies that all the data files are contained in an archive file that is specified in the <applet> tag. You must include all extra files (enh.tab, file-of-filenames) as well. The form of the <applet> tag is like:
   <applet archive="aniscode.jar,data.zip" class="AniS.class" height=....>
where the data files are stored in "data.zip". <PARAM name="use_progress_bar" value="false"> specifies whether to use the "Progress Bar" to indicate the status of loading images from the server. The default for this parameter is "true". Setting the value to "false" will cause a message Loaded XX of NN to be displayed on the screen (where NN is the total number of all images, and XX is the current loading value. This message is also displayed in the "Applet Status Line" in the browser. When using the "Progress Bar" mode, the Applet Status Line will show the percentage of images loaded. <PARAM name="quiet_reload" value="true"> when set to true this specifies that when images are refreshed or reloaded for any reason, a "preview" of each image will not be displayed. This does not impact the initial loading of images, however. Note: in this mode, sizes of images are not rechecked for consistency. <PARAM name="active_zoom" value="x"> specifies that the zoom ability will always be active; this cannot be used in conjunction with the "zoom control". If you specify this parameter, user left-clicks on the image will zoom at that point, right-clicks will zoom out. While zoomed, the image may be roams by dragging the mouse around.

This option should not be used when portals are also used.

<PARAM name="keep_zoom" value="x"> specifies that the zoom level and position will be restored after a "refresh" is done. Without this parameter, the zoom is reset to the "un-zoomed" view. <PARAM name="overlay_zoom" value="y,y,y,n"> specifies whether an overlay will be zoomed along with other images. If the value is "y", then the overlay will be zoomed. This is the default.

If the value is "n" then the overlay will NOT be zoomed. This is useful for overlays which are legends, since the legend information will remain on the frame during zoom and roam.

<PARAM name="image_window_size" value="400,200"> specifies that the images will be displayed in a window with a width=400 and a height=200. Without this parameter, the size of the window is the size of the first frame (image). When this parameter is used, the images will be rescaled to this size. If zooming is active, when the user zooms, the image will be zoomed as usual, possibly showing more detail.

This option should not be used when portals are also used.

<PARAM name="image_preserve" value="0,0,639,49, 610,0,639,479"> specifies that when images are zoomed, the two rectangular areas specified (top 50 lines, right-most 30 pixels) should be preserved from the original image. This is useful for showing labels and logos that are part of the original images. There may be one or more such rectangles; the number of values must be a multiple of 4.

The values of the coordinates are ordered: x_upper_left,y_upper_left, x_lower_right, y_lower_right. The (0,0) point for images is in the upper_left corner. The 'x' coordinate is horizontal, the 'y' coordinate is vertical.

For overlays, see the overlay_zoom parameter.

<PARAM name="use_caching" value="true"> specifies that the image file reads will use any caching that is available. This may include the brower's own cache and/or the caching that might be provided by the server. For real-time or frequently updated images, this option should be used with caution, since caching may cause old, out-dated images to be used. On the otherhand, if your filenames are always unique (for example, if the date/time is part of the filename) then this can be very effective. The default for this option is to disable caching and always read all images. <PARAM name="exclude_caching" value="match-string"> specifies that if caching is enabled, any filename that contains the match-string will have caching disabled when it is read. This can be used, for example, if the latest image in a loop always has the same name. <PARAM name="use_anti_caching" value="false"> disables the use of altering the filename requested from a web server for non-cached images. Normally, AniS will append "?xxxx" to the request for a file from the http server (where 'xxxx' is an ever-changing value). This will normally not interfere with the http request for the actual file, but has the effect of usually preventing any intermediate "caching servers" from caching images inappropriately. If you experience any difficulties with this, then set the value to false to prevent this. <PARAM name="auto_refresh" value="16"> specifies that the base images will be automatically reloaded from the source every 16 minutes. An attempt is made to by-pass any use of caching (unless "use_caching", above, has been set to 'true'), and this process has been found to work quiet well in both Netscape and IE. Note: be somewhat cautious with overlays or portals when using the auto_refresh option -- they may not always work as expected. <PARAM name="base_static" value="true"> specifies that the base images will be loaded only one time from the server. Any "refresh" action (automatic or manual) will not cause these images to be reloaded. This is appropriate if your base images are unchanging (for example, a topography image). [See also, the overlay_static parameter, below. <PARAM name="no_controls" value="true"> this supresses showing any controls. Please see "start_looping" parameter, below. <PARAM name="start_looping" value="false"> specifies the initial state of the animation. A value of "false" means the animation is not started automatically. The default value is "true", meaning the animation begins automatically as soon as all frames are loaded. Note: if you do not put in a startstop control and set start_looping to "true" then the animation will run "forever". <PARAM name="start_frame" value="18"> specifies the frame number (starting at zero) of the frame to display after all loading is done. This option implies "start_looping" is "false". <PARAM name="rate" value="120"> specifies the initial loop rate as a number corresponding to frames per second times 10 (thus, 120 means 12 frames per second). <PARAM name="minimum_dwell" value="30"> specifies the minimum dwell (milliseconds) that can be set with the speed slider. The default value is 30ms; the minimum value is 5ms. Not that using small values can cause slower computers to have problems whilst looping. <PARAM name="dwell_rates" value="1000,1000,500,30,1000"> specifies the dwell (in milliseconds) for each frame. There must be the same number of values (comma-separated) as there are frames in the animation. In this example, the first and second frames have a fixed dwell if 1s, the third frame is a half-second, the fourth is 30ms, and the fifth frame is 1s. NOTE: these times assume no additional overhead, which is usuallly not the case!

Frame dwell rates may also be set in the file_of_filenames (see below)

<PARAM name="rocking" value="true"> make "rocking" the startup mode for displaying the sequence; otherwise, "movie loop" is the startup mode. <PARAM name="pause" value="2000"> pause on the last frame of a loop the additional number of milliseconds given (2 seconds in this example). The default is zero. <PARAM name="pause_percent" value="250"> pause on the last frame of a loop the additional percentage of the current dwell time specified (250% in this example). In addition, if the current dwell is > 1 second, a fixed value of 100% will be used whenever this pause_percent option is specified. The default value is zero. <PARAM name="transparency" value="#FFFFFF"> <PARAM name="transparency" value="#000000,#050505"> use the color "white" as the transparency value. This is only needed for overlays, and is optional for fading. The value is a hex value of red/green/blue (template: #rrggbb). "black" (#000000) is also commonly used. In the second example, the transparent values range from 00 to 05 for red, green and blue. This form is particularlly useful when the background is not quite a constant value.

If the value = "image" then all the images are assumed to be GIF images with the 'transparent' attribute assigned to one color level. If used, this option will conserve memory and load faster. When used, the next option (overlay_transparent_amount) cannot be used.

<PARAM name="overlay_transparent_amount" value="100, 40, 20"> The non-transparent pixels in overlays should be set to the opacity percentage indicated. In this case, the first overlay (see overlay_labels) is 100 opaque, the second is 40% and the third is 20%. 0 = totally transparent (you will not see anything! 100 = totally opaque (what would normally happen). <PARAM name="overlay_zorder" value="3,1,2,0"> Changes the order of stacking of the overlays, so that the overlay labels may be arranged in an order that is independent of the stacking of the overlays. The default is: 0,1,2... When using this parameter, there must be one and only one value for each overlay. The example says that the first overlay will be "on top" and the last one will be on the bottom, with the second and third (values 1 & 2) will be in the default order. <PARAM name="overlay_labels_colors" value="x000000, xff0000, x00ff00, xff00ff"> Specifies the color of the text used to label the overlay selector buttons. The values are in RGB order (xRRGGBB) and coded as hexadecimal values (00 = 0, ff = 255). There must be one item for each label -- even if the label is hidden! See "overlays" below. <PARAM name="fade" value="true"> instead of just showing the images, generate 'faded' images between them and use the result as the sequence. <PARAM name="fader_label" value="Vis IR"> instead of the "Set Fader Level" label on the fader control, use the specified label. Note the label is centered so you must provide ample spaces to ensure the fader control is made large enough. In this case, the user wanted "Vis" on the left and "IR" on the right, so many spaces were put between the words. <PARAM name="backcolor" value="xff00ff"> set the applet background color (used for backgrounds of all the controls as well...) to the RGB value (in hex) given (in this case, red=255, green=0 and blue=255). <PARAM name="forecolor" value="xffffff"> set the color of the foreground (used for names on buttons, etc.) to the RGB value (in hex) given (in this case, white). Note that you should keep a good contrast between the background and foreground colors. <PARAM name="setframe_label" value=" Image Frame Number * "> set the template to use for labelling the "setframe" control slider/scrollbar. The given string of characters must contain an asterisk ("*") character; the actual frame number will replace this when displayed. <PARAM name="frame_label" value="label for 1, label for 2, ..."> when the framelabel control is specified, the values in this comma-separated list will be used to label each frame. If you enclose a standard format date-time between a pair of "$$" characters, it will be replaced by a string for the computer's local time zone. For example: "Picture from $$5/10/00 15:00 GMT$$ in the morning" will be displayed as: Picture from May 10 10:00:00 CDT 2000 in the morning The formatting is fixed by the Java library... <PARAM name="frame_label_width" value="30"> this specifies the width of the text box (in characters) to be used for the frame_label strings. The default is 20 <PARAM name="audio_filename" value="audioclip.au"> this specifies the name of the audio clip to be played when the audio control is specified. This must be a .AU file. <PARAM name="image_base" value="http://www.my.host/mydir/"> this directs that the base URL of the image files (and the file_of_filenames, if used) should be the value given. The default URL is the directory containing the HTML. Note that the hostname in the specified URL must be the same as the hostname where the applet is read from. <PARAM name="use_IP" value="true"> this specifies that the 'hostname' of the machine from which the applet was loaded will be converted internally to an IP address, and this IP will be used for all file reading. This can be very helpful if your server uses hostname and IP spoofing for things like loadsharing. The value "true" must be exactly that! <PARAM name="toggle_size" value="5,10,3"> this sets the toggle control's little boxes width to 5, the height to 10, and the spacing between them to 3. This can be very helpful if you have a large number of frames and don't want to make your applet width too large just to accomodate these boxes. <PARAM name="rotator_labels" value="N, E, S, W"> this defines the labels to be used with the rotator widget. You may specify up to 8 labels (more just won't fit...) that will be evenly distributed around the circle. The first label will be placed at the top ("North"), and sucessive labels will be positioned clockwise around the circle. Depending on the letters, you may be able to get up to 4 letters per label (certainly more than that for the top and bottom (0 and 180 degrees). If you use 'fading', then the number of frames will be recomputed when you activate/de-activate it, but the rotator labels will not change. <PARAM name="rotator_color" value="x00ff00"> this defines the color to use for the rotator "arm". It is in for format: xRRGGBB, so the value shown will make a green colored arm. The labels and circle will be drawn with the foreground color specified. The default is yellow (xffff00). <PARAM name="enable_png" value="true"> this enables the use of PNG files for all JVMs/browser versions by using the sixlegs PNG decoder. If you want to use PNG and do not have control over browser or JVM versions, you may want to consider this. If you use this option, then your image file names MUST end with png (See note, below, under "Image file names" regarding the use of the wildcard format.) Please see this page for more details about using PNG files. <PARAM name="blank_screen" value="true"> this will cause the background of each frame to be blanked out priod to showing each image. This should be used if some of your images have 'transparency' set (for example, GIF and PNG images allow you to set a level, like the 'background' to transparent). Enabling this option will prevent the images from appearing to be overlaid, but may slow down the animation speed. <PARAM name="no_enh" value="true"> this supresses the attempt to read the "enh.tab" file. This takes care of a problem when using a firewall with password protection, when no enhancement is used. <PARAM name="locale" value="es"> this forces the language to the values 'es' (Spanish) Normally, the language of the client machine is used. This parameter provides a way to over-ride this, if needed. Caution: some Unicode characters may not appear correctly when this option is used! <PARAM name="portal_pointers" value="false"> this prevents the display of the portal pointers (cursors) that are normally used to help show the co-locations of points within the main and portal images. The default value for this is true. You might want to set this to false when you are using, for example, a four-panel display (four portals that cover up the background completely). <PARAM name="num_frames_choice" value="5, 10, 15, all"> this defines the contents of the numframeschoice control (see above) that allows the user to select the actual number of images (frames) that are downloaded and displayed. By default, the first element in this list defines the start-up conditions. In the example herein, only the last 5 frames of the sequence will be initially downloaded and displayed; this includes all overlays and portals defined for only these frames as well.

There are some options available:

<PARAM name="default_num_frames_choice" value="2"> this sets the initial (default) index of the choice for num_frames_choice list (above). This value is zero-based and the default value is 0 (zero) meaning the first item in the list. <PARAM name="basename" value="file"> <PARAM name="num_frames" value="6"> <PARAM name="base_starting_number" value="1"> <PARAM name="filenames" value="file0.gif, file1.gif, file2.gif"> <PARAM name="file_of_filenames" value="listoffiles.txt"> These are related to reading image files and are defined in the next section. <PARAM name="portal_basenamex" value="pfileA, pfileB, pfileC"> <PARAM name="portal_filenames" value="pfileA0.gif & pfileA1 & pfileA2, pfileB0.gif & pfileB1, pfileB2, pfileC0.gif & pfileC1 & pfileC2"> These are related to reading portal image files and are defined in the next section.


Image file names
All the image files can be in GIF or JPEG formats. The files identified using the parameter names described in this section should fill the desired window. If used, overlays and portals should be the same size and have the same geometry as these "background" images.

For the background images, the GIF/JPEG files may be specified in one of three, mutually exclusive, ways.

  1. Using a "root" name, to which successive numbers are appended to create the actual filenames:
    <PARAM name="basename" value="file"> <PARAM name="num_frames" value="4"> <PARAM name="base_starting_number" value="0"> In this case, the root name is file and since there are 4 images specified with the numbering starting at 0, the actual filenames must be: file0, file1, file2, and file3. Please note that the default base_starting_number is zero, and so it would not have to specified in this case...

    Also, please see the Note below about this form and wildcards

  2. Using the filenames themselvels:
    <PARAM name="filenames" value="file0, file1, file2, file3">
  3. Using a file which contains a list of the image filenames (one per record)
    <PARAM name="file_of_filenames" value="file-containing-filenames"> where the file "file-containing-filenames" contains lines of text that are in the form:
    file0 file1 file2 file3 lines beginning with # are ignored, so you may put comments into your file_of_filenames.

    NOTE: If you want to specify an optional frame label (see the controls section above), you may put the value with quote marks after the filenames. (The label may, optionally, contain a date-time to be reformatted for the user's timezone -- see "frame_label", above.) For example: file0 "label one" file1 "label two"
    NOTE: If you want to specify an optional dwell rate for each frame, put the value (in milliseconds) inside brackets after the filename. Be sure to put a space before and after the brackets. If you use this mode, you must supply a dwell rate for every frame! For example: file0 [800] "label one" file1 [300] "label two"
NOTE: For the first form (specifying a "basename"), you may also use a wildcard format. There are two forms of this, one using a single * (to substitute numbers 0,1,2...,10,11,.. at that point) and the second using one or more ? (to substitute the numbers with leading zeroes for all the ? marks). For example, if you say: <PARAM name="basename" value="file*.gif"> the actual filenames must be: file0.gif, file1.gif, file2.gif, and file3.gif

You may also use the form:

<PARAM name="basename" value="file????.gif"> the actual filenames in this case must be: file0000.gif, file0001.gif, file0002.gif, and file0003.gif

Note that in both these cases,


Portals
Portals are viewports into other images, which are shown in windows superimposed onto the background image. The user "roams" around in a portal by dragging the mouse pointer around on the background image. For each portal, you must specify its location and size, and then the filename(s). If you are animating the background images, you'll need to specify a corresponding number of portal filenames for each frame of the animation.

First, however, the parameter for specifying the location:

<PARAM name="portal_locations" value="x & y & width & height, x2 & y2 & width2 & height2, ..."> Each list item separated by a comma defines the location (x,y) of the upper left corner of the portal and the portal's width and height values. All values are given in pixels; the upper left corner is (0,0).

You may have any number of portal windows that you like, but they should all fit inside the dimensions of the background image and should not overlap.

To specify the portal image filenames, you may use one of the following forms (note in each example, 3 portals are being defined with the names associated with each separated by a comma; in the second method, the files for each of 4 frames are explicitly named separated by &).

  1. In the first case, you are specifying a "basename" for each portal (see file name conventions, above). Each name you specify is for an individual portal, and the software will load as many images for each portal as there are background image frames. <PARAM name="portal_basenames" value="pfileA, pfileB, pfileC"> (You may also use the wildcard format mentioned above.)
  2. In the second case, you are naming each file explicitly. The grouping of names is the same as above -- commas separate portals. Ampersands separate filenames for each frame of a loop. <PARAM name="portal_filenames" value="pfileA0 & pfileA1 & pfileA2 & pfileA3, pfileB0 & pfileB1 & pfileC2 & pfileD3, pfileC0 & pfileC1 & pfileC2 & pfileC3">
  3. Finally, you may also use a text file (the "file-containing-filenames" form) to specify all the filenames. To use portals with this form, the filenames for all the portals for one frame appear on one line. file0 portal=pfileA0, pfileB0, pfileC0 file1 portal=pfileA1, pfileB1, pfileC1 file2 portal=pfileA2, pfileB2, pfileC2 file3 portal=pfileA3,pfileB3, pfileC3 NOTE: You MUST supply all portals names for each frame, even if the filename is repeated!!

    NOTE: If you want to specify an optional frame label (see the controls section above), you may put the value with quote marks between the filenames and the keyword that follows. For example: file0 "label one" portal=pfileA0, pfileB0,... file1 "label two" portal=pfileA1, pfileB1,...
    NOTE: If you want to specify an optional dwell rate for each frame, put the value (in milliseconds) inside brackets after the filename. Be sure to put a space before and after the brackets. If you use this mode, you must supply a dwell rate for every frame! For example: file0 [800] "label one" portal=pfileA0, pfileB0,... file1 [300] "label two" portal=pfileA1, pfileB1,...


Overlays
You may also use overlays -- one or more images that are (optionally) displayed on top of the base image, usually in such a way that part of the base image shows through. For example, a map or plotted data may be an overlay. In order to let some of the base (background) image show through, you must designate one color level in the overlay images as "transparent" and then specify that value using the transparency parameter (above). You may also specify the opacity/transparency of the non-transparent portions of overlay images -- see the overlay_transparent_amount parameter (above).

You may also specify the color of the labels for each overlay using the overlay_labels_colors parameter (above).

In addition, you need to specify the overlay control, and provide a few more parameters:

Overlay file names

To specify the names of the files for the overlays, you may use one of these forms (note in each example, 3 overlays (A,B,c) are being defined with the names associated with each separated by a comma; in the second method, the files for each of 4 frames are explicitly named separated by &).

  1. In the first case, you are specifying a "basename" for each overlay (see file name conventions, above). Each name you specify is for an individual overlay, and the software will load as many images for each overlay as there are background image frames. <PARAM name="overlay_basenames" value="ofileA, ofileB, ofileC"> (Again, you may use the wildcard format -- see above.)
  2. In the second case, you are naming each file explicitly. The grouping of names is the same as above -- commas separate portals. Ampersands separate filenames for each frame of a loop. <PARAM name="overlay_filenames" value="ofileA0 & ofileA1 & ofileA2 & ofileA3, ofileB0 & ofileB1 & ofileB2 & ofileB3, ofileC0 & ofileC1 & ofileC2 & ofileC3">
  3. Finally, you may also use a text file (the "file-containing-filenames" form) to specify all the filenames. To use overlays with this form, the filenames for all the overlays for one frame appear on one line. file0 overlay=ofileA0, ofileB0, ofileC0 file1 overlay=ofileA1, ofileB1, ofileC1 file2 overlay=ofileA2, ofileB2, ofileC2 file3 overlay=ofileA3,ofileB3, ofileC3 NOTE: You MUST supply all overlay file names for each frame, even if the filename is repeated!!

    NOTE: If you want to specify an optional frame label (see the controls section above), you may put the value with quote marks between the filenames and the keyword that follows. For example: file0 "label one" overlay=ofileA0, ofileB0, ofileC0 file1 "label two" overlay=ofileA1, ofileB1, ofileC1
    NOTE: If you want to specify an optional dwell rate for each frame, put the value (in milliseconds) inside brackets after the filename. Be sure to put a space before and after the brackets. If you use this mode, you must supply a dwell rate for every frame! For example: file0 [800] "label one" overlay=ofileA0, ofileB0, ofileC0 file1 [300] "label two" overlay=ofileA1, ofileB1, ofileC1


Explicit paths in your HTML for dynamic web pages (or how to avoid having multiple copies of the AniS class files on your server)

If you are generating dynamic web pages (using, for example, a Python script) or have several different animations on your server and want to avoid having multiple copies of the AniS class (or JAR) files, we suggest you use the "codebase" attribute that is available in the <applet> tag to point to the location on your server of the class or JAR files. For example:

<applet codebase="../../code" code="AniS.class" height=...> or, if you are using the aniscode.jar file, then: <applet codebase="../../code" archive="aniscode.jar" code="AniS.class" height=...> You may also give a full URL for the codebase, but it must be on the same machine: <applet codebase="http://my/machine/applets/code" code="AniS.class" height=...> Finally, the image files are read _relative to the directory containing the HTML_. If you need to change that you can include the directory information in the filename (the same is true when using the 'file-of-filenames' method). For example: <param name="filenames" value="../../images/goes1.gif,../../images/goes2.gif">


Language considerations AniS buttons and sliders, etc., have the ability to be labelled in a variety of languages. Each language requires a "properties bundle" file to be created that contains a "tag" used by AniS and the associated word in the target language. For example:

loop = \ \ \ Boucle rock = Basculer taken from the current French bundle. Note the leading "\ \ \ " in the first item -- this pads the beginning of the word with 3 spaces (and there are 3 at the end as well) so that the button does not dramatically change size when toggling the label between "loop" and "rock" (or " Boucle " and "Basculer" in this case).

Some letters will have to be put in the text file with their Unicode value. For example:

pick_enhancement = Am\u00E9liorer les couleurs puts in the Unicode character defined by hex code "00E9" between the "m" and "l". Note you must use the hexadecimal values. A copy of the unicode chart is available by clicking here

The only other consideration is that the properties files must have a strict naming convention. In this case, we use

"anismessages_"+<language>+".properties" (without the " marks) where the <language> is, for example "es" for Spanish, and would result in a file named anismessages_es.properties. This file must then be placed into the JAR file and/or be in the directory from which the class files are loaded. If there are any mistakes in the file, the program will revert to the English (the contents of the anismessages.properties file).

You may also use the param named locale to force the language and country to a fixed value (see above).

The following language files are now available:


Back to the AniS homepage