Java tutorial
/* * Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory * All rights reserved. * * This material may be used, modified, or reproduced by or for the U.S. * Government pursuant to the rights granted under the clauses at * DFARS 252.227-7013/7014 or FAR 52.227-14. * * Licensed 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 * * NO WARRANTY. THIS MATERIAL IS PROVIDED "AS IS." JHU/APL DISCLAIMS ALL * WARRANTIES IN THE MATERIAL, WHETHER EXPRESS OR IMPLIED, INCLUDING (BUT NOT * LIMITED TO) ANY AND ALL IMPLIED WARRANTIES OF PERFORMANCE, * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF * INTELLECTUAL PROPERTY RIGHTS. ANY USER OF THE MATERIAL ASSUMES THE ENTIRE * RISK AND LIABILITY FOR USING THE MATERIAL. IN NO EVENT SHALL JHU/APL BE * LIABLE TO ANY USER OF THE MATERIAL FOR ANY ACTUAL, INDIRECT, * CONSEQUENTIAL, SPECIAL OR OTHER DAMAGES ARISING FROM THE USE OF, OR * INABILITY TO USE, THE MATERIAL, INCLUDING, BUT NOT LIMITED TO, ANY DAMAGES * FOR LOST PROFITS. */ package edu.jhuapl.openessence.i18n; import org.apache.commons.lang.LocaleUtils; import org.springframework.context.MessageSource; import java.util.Locale; /** * Models a locale supported by OpenESSENCE. */ public class SupportedLocale { private String code; private String displayLanguage; public String getCode() { return code; } public void setCode(String locale) { this.code = locale; } public String getDisplayLanguage() { return displayLanguage; } public void setDisplayLanguage(String language) { this.displayLanguage = language; } public Locale toLocale() { // org.springframework.util.StringUtils.parseLocaleString also works return LocaleUtils.toLocale(code); } /** * @param messageSource to translate displayLanguage */ public static SupportedLocale fromLocale(Locale locale, MessageSource messageSource) { SupportedLocale sl = new SupportedLocale(); sl.setCode(locale.toString()); // display language in target locale, i.e. "espaol" instead of "Spanish" String defaultDisplayLanguage = locale.getDisplayLanguage(locale); // Java doesn't have every language display name in every language // (e.g. doesn't have "Khmer" in Khmer), so use message bundle as fallback String lang = messageSource.getMessage("language." + locale.getLanguage(), null, defaultDisplayLanguage, locale); sl.setDisplayLanguage(lang); return sl; } }