001package jmri.server.web; 002 003import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; 004import java.util.Locale; 005import javax.annotation.CheckReturnValue; 006import javax.annotation.CheckForNull; 007import javax.annotation.ParametersAreNonnullByDefault; 008 009@ParametersAreNonnullByDefault 010@CheckReturnValue 011@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS", justification = "Desired pattern is repeated class names with package-level access to members") 012 013@javax.annotation.concurrent.Immutable 014 015/** 016 * Provides standard access for resource bundles in a package. 017 * 018 * Convention is to provide a subclass of this name in each package, working off 019 * the local resource bundle name. 020 * 021 * @author Bob Jacobsen Copyright (C) 2012 022 * @since 3.3.1 023 */ 024public class Bundle extends jmri.server.Bundle { 025 026 private final static String name = null; // no local resources 027 028 // 029 // below here is boilerplate to be copied exactly 030 // 031 /** 032 * Provides a translated string for a given key from the package resource 033 * bundle or parent. 034 * <p> 035 * Note that this is intentionally package-local access. 036 * 037 * @param key Bundle key to be translated 038 * @return Internationalized text 039 */ 040 static String getMessage(String key) { 041 return getBundle().handleGetMessage(key); 042 } 043 044 /** 045 * Provides a translated string for a given key in a given locale from the 046 * package resource bundle or parent. 047 * <p> 048 * Note that this is intentionally package-local access. 049 * 050 * @param locale The locale to be used 051 * @param key Bundle key to be translated 052 * @return Internationalized text 053 */ 054 static String getMessage(Locale locale, String key) { 055 return getBundle().handleGetMessage(locale, key); 056 } 057 058 /** 059 * Merges user data with a translated string for a given key from the 060 * package resource bundle or parent. 061 * <p> 062 * Uses the transformation conventions of the Java MessageFormat utility. 063 * <p> 064 * Note that this is intentionally package-local access. 065 * 066 * @see java.text.MessageFormat 067 * @param key Bundle key to be translated 068 * @param subs One or more objects to be inserted into the message 069 * @return Internationalized text 070 */ 071 static String getMessage(String key, Object... subs) { 072 return getBundle().handleGetMessage(key, subs); 073 } 074 075 /** 076 * Merges user data with a translated string for a given key in a given 077 * locale from the package resource bundle or parent. 078 * <p> 079 * Uses the transformation conventions of the Java MessageFormat utility. 080 * <p> 081 * Note that this is intentionally package-local access. 082 * 083 * @see java.text.MessageFormat 084 * @param locale The locale to be used 085 * @param key Bundle key to be translated 086 * @param subs One or more objects to be inserted into the message 087 * @return Internationalized text 088 */ 089 static String getMessage(Locale locale, String key, Object... subs) { 090 return getBundle().handleGetMessage(locale, key, subs); 091 } 092 093 private final static Bundle b = new Bundle(); 094 095 @Override 096 @CheckForNull 097 protected String bundleName() { 098 return name; 099 } 100 101 protected static jmri.Bundle getBundle() { 102 return b; 103 } 104 105 @Override 106 protected String retry(Locale locale, String key) { 107 return super.getBundle().handleGetMessage(locale, key); 108 } 109 110}