A simple method that the company I work for has used in several Flash titles is to create a csv file (you can use Open Office, Excel, or any text editor really) with two columns, "token" and "value". We save the files as "localizations.lang.csv" where "lang" is a language identifier ("eng", "itl", "spn", etc.)
Then in our games we take advantage of AS3s ability to declare a function in a file named the same as the function, and put it in the main package. The reason for doing this is that you then don't need to import anything. We call the function either "L" or "Loc".
So in your code all you do is load the appropriate language file at startup, parse through it and create a Dictionary keyed by token names, then anytime you need a string you just do Loc("token") and it subs out the string. Here's the function:
// Loc.as
package
{
public function Loc(token:String):String
{
if (cGlobals.LocData.hasOwnProperty(token))
{
return cGlobals.LocData[token];
}
// if not found, return token with square brackets around it, to indicate it wasn't found in localization file
return "[" + token + "]";
}
}
Super simple, and works great. Of course if you need to substitute any values in your strings, just make your localized strings something like "this is a string with a [value] substitution", and do Loc("token").replace("[value]", someValue).
Oh, for the csv parsing we use csvlib, it's super simple and works great! http://code.google.com/p/csvlib/
Sample csv file parsing, where the csvData passed in is the contents of the csv file after being read in:
public static function InitLocalizationData(csvData:String):void
{
var csv:CSV = new CSV();
csv.data = csvData;
csv.decode();
LocData = new Array();
for (var i:int = 0; i < csv.data.length; i++)
{
var token:String = csv.data[i][0];
// if the first or last character is a double quote, remove it (since it is there due to the string having a comma in it)
var value:String = csv.data[i][1];
if (value.charAt(0) == '"')
{
value = value.substr(1);
}
if (value.charAt(value.length-1) == '"')
{
value = value.substr(0, value.length-1);
}
// replace any \\n characters with \n
if (value.indexOf("\\n") != -1)
{
value = value.replace(/\\n/g, "\n");
}
LocData[token] = value;
}
}