All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.vectorpublish.desktop.vp.LanguageController Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2016, Peter Rader. All rights reserved.
 *  ___ ___               __                 ______         __     __  __         __
 * |   |   |.-----..----.|  |_ .-----..----.|   __ \.--.--.|  |--.|  ||__|.-----.|  |--.
 * |   |   ||  -__||  __||   _||  _  ||   _||    __/|  |  ||  _  ||  ||  ||__ --||     |
 *  \_____/ |_____||____||____||_____||__|  |___|   |_____||_____||__||__||_____||__|__|
 *
 * http://www.gnu.org/licenses/gpl-3.0.html
 */
package net.vectorpublish.desktop.vp;

import java.util.Locale.LanguageRange;

import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;

import net.vectorpublish.desktop.vp.api.conf.Config;
import net.vectorpublish.desktop.vp.i8n.LanguageChangeListener;
import net.vectorpublish.desktop.vp.log.Log;
import net.vectorpublish.desktop.vp.ui.Namespace;

@Named
public class LanguageController {

	private static final Namespace NAMESPACE = Namespace.getNamespace("net.vectorpublish.i8n", "language");

	@Inject
	private final LanguageChangeListener[] listerner = null;

	@Inject
	private final Config config = null;

	@Inject
	private final Log log = null;

	/**
	 * The range for the fallback, if no other Range is supported or could not
	 * be parsed.
	 */
	public static final LanguageRange FALLBACK_RANGE = new LanguageRange("en-EN");

	@PostConstruct
	private void setup() {
		final String configuredLanguage = config.read(NAMESPACE, "language");
		LanguageRange language;
		if (configuredLanguage != null) {
			language = new LanguageRange(configuredLanguage);
		} else {
			String lang = System.getenv("LANG");
			if (lang == null) {
				language = FALLBACK_RANGE;
			} else {
				try {
					language = new LanguageRange(lang);
				} catch (final RuntimeException e) {
					log.system(e.getMessage());
					language = FALLBACK_RANGE;
				}
			}
		}
		for (final LanguageChangeListener languageChangeListener : listerner) {
			languageChangeListener.changedTo(language);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy