Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.locale;
 
 import java.io.File;
 import java.util.Map;
 
 
 // TODO code so that we work with Alpha 2, 3 or 4 codes automatically
 public class Localization {
 	protected String defaultLocale = "en";  
 	protected Map<String,LocaleInfolocales = new HashMap<String,LocaleInfo>();
 
 	public Localization() {
 		// TODO configure
 		this. = Locale.getDefault().getLanguage();  
 	}	
 	
 		return this..values();
 	}
 	
 	// TODO this should look in TaskContext too
 	public LocaleInfo getLocalization(String locale) {
 		if (StringUtil.isEmpty(locale))
 			return this..get(this.);
 		
 		LocaleInfo tr = this..get(locale);
 		
 		if ((tr == null) && (locale.indexOf("-") > -1)) {
 			locale = locale.substring(0, locale.indexOf("-"));
 			tr = this..get(locale);
 		}
 		
 		if (tr == null
 			tr = this..get(this.);
 		
 		return tr;
 	}
 	
 	public String getLocalizedToken(String localeString token) {
 		if (StringUtil.isEmpty(locale))
 			return this..get(this.).get(token);
 		
 		LocaleInfo tr = this..get(locale);
 		
 		if ((tr != null) && tr.has(token))
 			return tr.get(token);
 		
 		if (locale.indexOf("-") > -1) {
 			locale = locale.substring(0, locale.indexOf("-"));
 			tr = this..get(locale);
 			
 			if ((tr != null) && tr.has(token))
 				return tr.get(token);
 		}
 		
 		return this..get(this.).get(token);
 	}
 	
 	public String tr(String localeString tokenObject... params) {
 		if (StringUtil.isEmpty(locale) || StringUtil.isEmpty(token))
 			return null;
 		
 		String val = this.getLocalizedToken(localetoken);
 		
     	if (StringUtil.isEmpty(val))
     		return null;
     	
         // the expansion of variables is per Attribute Value Templates in XSLT
         // http://www.w3.org/TR/xslt#attribute-value-templates
 
         StringBuilder sb = new StringBuilder();
 
         int lpos = 0;
         int bpos = val.indexOf("{$");
        while (bpos != -1) {
            int epos = val.indexOf("}"bpos);
            if (epos == -1) 
            	break;
            sb.append(val.substring(lposbpos));
            lpos = epos + 1;
            String varname = val.substring(bpos + 2, epos).trim();
            // TODO add some formatting features for numbers/datetimes
            
            Long parampos = StringUtil.parseInt(varname);
            
            if ((parampos != null) && (parampos <= params.length)) {
            	if (params[parampos.intValue() - 1] != null)
            		sb.append(params[parampos.intValue() -1].toString());
            }
            else 
                sb.append(val.substring(bposepos + 1));
            bpos = val.indexOf("{$"epos);
        }
        sb.append(val.substring(lpos));
		return sb.toString();
	}
	public String trp(String localeString pluraltokenString singulartokenObject... params) {
		if ((params.length > 0) && (params[0] instanceof Number) && (((Number)params[0]).intValue() == 1))
			return this.tr(localesingulartokenparams);
		return this.tr(localepluraltokenparams);
	}
	public String getTrValue(String localeString token) {
		if (StringUtil.isEmpty(locale) || StringUtil.isEmpty(token))
			return null;
		return this.getLocalizedToken(localetoken);
	}
	public void init(XElement trroot) {
		// TODO config
	}
	public void load(OperationResult orFile fl) {
		if (fl == null) {
			or.error(106, "Unable to apply dictionary file, file null");
			return;
		}
		if (!fl.exists()) {
			or.error(107, "Missing dictionary file, expected: " + fl.getAbsolutePath());
			return;
		}
		FuncResult<XElementxres3 = XmlReader.loadFile(flfalse);
		if (xres3.hasErrors()) {
			or.copyMessages(xres3);
			return;
		}
		this.load(orxres3.getResult());
	}
	public void load(OperationResult orInputStream fl) {
		if (fl == null) {
			or.error(106, "Unable to apply dictionary file, file null");
			return;
		}
		FuncResult<XElementxres3 = XmlReader.parse(flfalse);
		if (xres3.hasErrors()) {
			or.copyMessages(xres3);
			return;
		}
		this.load(orxres3.getResult());
	}
	public LocaleInfo getOrAddLocale(String name) {
		LocaleInfo t = this..get(name);
		if (t == null) {
			t = new LocaleInfo(name);
			this..put(namet);
		}
		return t;
	}
	public void load(OperationResult orXElement trroot) {
		if (trroot == null) {
			or.error(105, "Unable to apply dictionary file, missing xml");
			return;
		}
		for (XElement lel : trroot.selectAll("Locale")) {
			String lname = lel.getAttribute("Id");
			if (StringUtil.isEmpty(lname))
				continue;
			LocaleInfo t = this.getOrAddLocale(lname);
			for (XElement tel : lel.selectAll("Entry")) {
				String tname = tel.getAttribute("Token");
				if (StringUtil.isEmpty(tname))
					continue;
				String v = tel.getAttribute("Value");
				if (StringUtil.isEmpty(v))
					v = tel.getText();
				if (StringUtil.isEmpty(v))
					continue;
				t.put(tnamev);
			}
		}
	}
	public String getDefault() {
		return this.;
	}
New to GrepCode? Check out our FAQ X