//////////////////////////////////////////////////////////////////////////////// // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to You under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// package mx.utils { import flash.utils.getQualifiedClassName; import mx.resources.IResourceManager; import mx.resources.ResourceManager; import mx.utils.StringUtil; [ExcludeClass] [ResourceBundle("messaging")] [ResourceBundle("rpc")] /** * @private */ public class Translator { //-------------------------------------------------------------------------- // // Class constants // //-------------------------------------------------------------------------- /** * @private */ private static const TRANSLATORS:Object = {}; //-------------------------------------------------------------------------- // // Class variables // //-------------------------------------------------------------------------- //-------------------------------------------------------------------------- // // Class methods // //-------------------------------------------------------------------------- /** * Assumes the bundle name is the name of the second package * (e.g foo in mx.foo). * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public static function getDefaultInstanceFor(source:Class):Translator { var qualifiedName:String = getQualifiedClassName(source); var firstSeparator:int = qualifiedName.indexOf("."); var startIndex:int = firstSeparator + 1; var secondSeparator:int = qualifiedName.indexOf(".", startIndex); if (secondSeparator < 0) secondSeparator = qualifiedName.indexOf(":", startIndex); var bundleName:String = qualifiedName.slice(startIndex, secondSeparator); return getInstanceFor(bundleName); } /** * @private */ public static function getInstanceFor(bundleName:String):Translator { var result:Translator = TRANSLATORS[bundleName]; if (!result) { result = new Translator(bundleName); TRANSLATORS[bundleName] = result; } return result; } /** * @private */ public static function getMessagingInstance():Translator { return getInstanceFor("messaging"); } //-------------------------------------------------------------------------- // // Constructor // //-------------------------------------------------------------------------- /** * Constructor * * @langversion 3.0 * @playerversion Flash 9 * @playerversion AIR 1.1 * @productversion Flex 3 */ public function Translator(bundleName:String) { super(); this.bundleName = bundleName; } //---------------------------------- // resourceManager //---------------------------------- /** * @private * Storage for the resourceManager instance. */ private var _resourceManager:IResourceManager = ResourceManager.getInstance(); //-------------------------------------------------------------------------- // // Variables // //-------------------------------------------------------------------------- /** * @private */ private var bundleName:String; //-------------------------------------------------------------------------- // // Methods // //-------------------------------------------------------------------------- /** * @private */ public function textOf(key:String, ... rest):String { return _resourceManager.getString(bundleName, key, rest); } } }