edu.jhuapl.openessence.i18n.SupportedLocale.java Source code

Java tutorial

Introduction

Here is the source code for edu.jhuapl.openessence.i18n.SupportedLocale.java

Source

/*
 * 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;
    }
}