=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/Translation.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/Translation.java 2013-10-06 07:45:05 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/Translation.java 2013-10-16 19:09:50 +0000 @@ -74,7 +74,7 @@ public String getClassIdPropKey() { - return className + "-" + id + "-" + property; + return className + "-" + id + "-" + locale + "-" + property; } // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/TranslationService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/TranslationService.java 2013-10-10 08:26:52 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/TranslationService.java 2013-10-16 19:09:50 +0000 @@ -65,6 +65,18 @@ Translation getTranslation( String className, int id, Locale locale, String property ); /** + * Retrieves a Translation. Only exact matches on the given + * Locale will be returned. + * + * @param className the class name. + * @param id the id. + * @param locale the locale. + * @param property the property. + * @return a Translation. + */ + Translation getTranslationNoFallback( String className, int id, Locale locale, String property ); + + /** * Retrieves a Collection of Translations. * * @param className the class name. === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/TranslationStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/TranslationStore.java 2013-10-10 08:26:52 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/translation/TranslationStore.java 2013-10-16 19:09:50 +0000 @@ -64,6 +64,18 @@ Translation getTranslation( String className, int id, Locale locale, String property ); /** + * Retrieves a Translation. Only exact matches on the given + * Locale will be returned. + * + * @param className the class name. + * @param id the id. + * @param locale the locale. + * @param property the property. + * @return a Translation. + */ + Translation getTranslationNoFallback( String className, int id, Locale locale, String property ); + + /** * Retrieves a Collection of Translations. * * @param className the class name. === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/i18n/DefaultI18nService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/i18n/DefaultI18nService.java 2013-10-16 17:46:06 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/i18n/DefaultI18nService.java 2013-10-16 19:09:50 +0000 @@ -217,8 +217,8 @@ { String key = translationEntry.getKey(); String value = translationEntry.getValue(); - - Translation translation = translationService.getTranslation( className, id, locale, key ); + + Translation translation = translationService.getTranslationNoFallback( className, id, locale, key ); if ( value != null && !value.trim().isEmpty() ) { === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/translation/DefaultTranslationService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/translation/DefaultTranslationService.java 2013-10-10 08:26:52 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/translation/DefaultTranslationService.java 2013-10-16 19:09:50 +0000 @@ -71,6 +71,11 @@ return translationStore.getTranslation( className, id, locale, property ); } + public Translation getTranslationNoFallback( String className, int id, Locale locale, String property ) + { + return translationStore.getTranslationNoFallback( className, id, locale, property ); + } + public Collection getTranslations( String className, int id, Locale locale ) { return translationStore.getTranslations( className, id, locale ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/translation/hibernate/HibernateTranslationStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/translation/hibernate/HibernateTranslationStore.java 2013-10-10 08:26:52 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/translation/hibernate/HibernateTranslationStore.java 2013-10-16 19:09:50 +0000 @@ -96,6 +96,25 @@ } @SuppressWarnings( "unchecked" ) + public Translation getTranslationNoFallback( String className, int id, Locale locale, String property ) + { + Session session = sessionFactory.getCurrentSession(); + + Criteria criteria = session.createCriteria( Translation.class ); + + criteria.add( Restrictions.eq( "className", className ) ); + criteria.add( Restrictions.eq( "id", id ) ); + criteria.add( Restrictions.eq( "locale", locale.toString() ) ); + criteria.add( Restrictions.eq( "property", property ) ); + + criteria.setCacheable( true ); + + List translations = criteria.list(); + + return !translations.isEmpty() ? translations.get( 0 ) : null; + } + + @SuppressWarnings( "unchecked" ) public Collection getTranslations( String className, int id, Locale locale ) { Session session = sessionFactory.getCurrentSession();