/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.localization; import java.util.Locale; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.enonic.cms.core.structure.SiteEntity; @Component public final class LocalizationServiceImpl implements LocalizationService { private LocalizationResourceBundleService localizationResourceBundleService; private static final String NO_TRANSLATION_FOUND_VALUE = "NOT TRANSLATED"; @Override public String getLocalizedPhrase( final SiteEntity site, final String phrase, final Locale locale ) { return getLocalizedPhrase( site, phrase, null, locale ); } @Override public String getLocalizedPhrase( final SiteEntity site, final String phrase, final Object[] arguments, final Locale locale ) { if ( noLocalizationResourceDefinedForSite( site ) ) { return createNotTranslated( phrase ); } if ( locale == null ) { return createNotTranslated( phrase ); } final LocalizationResourceBundle localizationResourceBundle = getResourceBundleForLocale( site, locale ); if ( localizationResourceBundle == null ) { return createNotTranslated( phrase ); } final String localizedPhrase = getLocalizedPhrase( phrase, arguments, localizationResourceBundle ); return StringUtils.isNotEmpty( localizedPhrase ) ? localizedPhrase : createNotTranslated( phrase ); } private boolean noLocalizationResourceDefinedForSite( final SiteEntity site ) { return site.getDefaultLocalizationResource() == null; } private String createNotTranslated( final String phrase ) { return NO_TRANSLATION_FOUND_VALUE + ": " + phrase; } private LocalizationResourceBundle getResourceBundleForLocale( final SiteEntity site, final Locale locale ) { return localizationResourceBundleService.getResourceBundle( site, locale ); } private String getLocalizedPhrase( final String phrase, final Object[] arguments, final LocalizationResourceBundle resourceBundle ) { if ( arguments == null ) { return resourceBundle.getLocalizedPhrase( phrase ); } return resourceBundle.getLocalizedPhrase( phrase, arguments ); } @Autowired public void setLocalizationResourceBundleService( final LocalizationResourceBundleService localizationResourceBundleService ) { this.localizationResourceBundleService = localizationResourceBundleService; } }