/**
 * <p>Copyright: Copyright (c) 2019</p>
 *
 * <h3>License</h3>
 *
 * Copyright (c) 2019 by <NAME>. <br>
 * All rights reserved. <br>
 *
 * <p>Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * <ul>
 * <li> Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * <li> Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 * <li> Neither the name of the copyright owners, their employers, nor the
 * names of its contributors may be used to endorse or promote products
 * derived from this software without specific prior written permission.
 * </ul>
 * <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNERS OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 *
 *
 * @author <A HREF="http://disi.unal.edu.co/profesores/jgomezpe"> <NAME> </A>
 * (E-mail: <A HREF="mailto:<EMAIL>"><EMAIL></A> )
 * @version 1.0
 */
package utila;

import speco.json.JSON;

/**
 * <p>Internationalization utilities</p>
 *
 */

public class I18N {
	/**
	 * Dictionary for translating tags to the target language
	 */
	protected static JSON dictionary = new JSON();
	
	/**
	 * Tags delimiter character
	 */
	protected static final char c = '·';
    
	/**
	 * Clears the internationalization dictionary
	 */
	public static void clear() { dictionary.clear(); }
    
	/**
	 * Sets a language value for the given tag
	 * @param tag Tag
	 * @param text Text in the target language associated to the given tag
	 */
	public static void set( String tag, String text ) { dictionary.set(tag,text); }
    
	/**
	 * Replaces all tags in the given text using the I18N dictionary
	 * @param text Text to processes
	 * @return The provided text with all tags being replaced with their associated language texts
	 */
	public static String process( String text ) { return Template.get(text, I18N.dictionary, c); }
    
	/**
	 * Sets the dictionary for translating tags to the target language
	 * @param jxon Dictionary for translating tags to the target language
	 */
	public static void set(JSON jxon) {
		clear();
		for(String key:jxon.keys()) {
			String value = jxon.string(key);
			if(value!=null) dictionary.set(key, value);
		}
	}
}