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

com.yuweix.kuafu.web.LocaleUtil Maven / Gradle / Ivy

The newest version!
package com.yuweix.kuafu.web;


import java.util.Locale;
import jakarta.servlet.http.HttpServletRequest;

import com.yuweix.kuafu.core.ActionUtil;
import com.yuweix.kuafu.core.Constant;
import org.springframework.beans.propertyeditors.LocaleEditor;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.support.RequestContextUtils;


/**
 * @author yuwei
 */
public abstract class LocaleUtil {
	public static Locale getLocale() {
		HttpServletRequest request = ActionUtil.getRequest();
		if (request == null) {
			return getLocaleFromString(Constant.LOCALE_ZH_CN);
		}
		LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
		return localeResolver.resolveLocale(request);
	}

	public static void setLocale(String locale) {
		setLocale(getLocaleFromString(locale));
	}

	private static void setLocale(Locale locale) {
		HttpServletRequest request = ActionUtil.getRequest();
		LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
		LocaleEditor localeEditor = new LocaleEditor();
		localeEditor.setAsText(locale.toString());
		localeResolver.setLocale(request, null, locale);
	}

	public static Locale getLocaleFromString(String localeStr) {
		Locale defaultLocale = Locale.getDefault();
		if ((localeStr == null) || (localeStr.trim().length() == 0) || ("_".equals(localeStr))) {
			return defaultLocale;
		}

		int index = localeStr.indexOf('_');
		if (index < 0) {
			return new Locale(localeStr);
		}

		String language = localeStr.substring(0, index);
		if (index == localeStr.length()) {
			return new Locale(language);
		}

		String localeStr0 = localeStr.substring(index + 1);
		index = localeStr0.indexOf('_');
		if (index < 0) {
			return new Locale(language, localeStr0);
		}

		String country = localeStr0.substring(0, index);
		if (index == localeStr0.length()) {
			return new Locale(language, country);
		}

		localeStr0 = localeStr0.substring(index + 1);
		return new Locale(language, country, localeStr0);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy