001package apps.gui3.lccpro; 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 apps.gui3.Bundle { 025 026 @CheckForNull 027 private static final String name = "apps.gui3.lccpro.Bundle"; 028 029 // 030 // below here is boilerplate to be copied exactly 031 // 032 /** 033 * Provides a translated string for a given key from the package resource 034 * bundle or parent. 035 * <p> 036 * Note that this is intentionally package-local access. 037 * 038 * @param key Bundle key to be translated 039 * @return Internationalized text 040 */ 041 static String getMessage(String key) { 042 return getBundle().handleGetMessage(key); 043 } 044 045 /** 046 * Merges user data with a translated string for a given key from the 047 * package resource bundle or parent. 048 * <p> 049 * Uses the transformation conventions of the Java MessageFormat utility. 050 * <p> 051 * Note that this is intentionally package-local access. 052 * 053 * @see java.text.MessageFormat 054 * @param key Bundle key to be translated 055 * @param subs One or more objects to be inserted into the message 056 * @return Internationalized text 057 */ 058 static String getMessage(String key, Object... subs) { 059 return getBundle().handleGetMessage(key, subs); 060 } 061 062 /** 063 * Merges user data with a translated string for a given key in a given 064 * locale from the package resource bundle or parent. 065 * <p> 066 * Uses the transformation conventions of the Java MessageFormat utility. 067 * <p> 068 * Note that this is intentionally package-local access. 069 * 070 * @see java.text.MessageFormat 071 * @param locale The locale to be used 072 * @param key Bundle key to be translated 073 * @param subs One or more objects to be inserted into the message 074 * @return Internationalized text 075 */ 076 static String getMessage(Locale locale, String key, Object... subs) { 077 return getBundle().handleGetMessage(locale, key, subs); 078 } 079 080 private final static Bundle b = new Bundle(); 081 082 @Override 083 @CheckForNull 084 protected String bundleName() { 085 return name; 086 } 087 088 protected static jmri.Bundle getBundle() { 089 return b; 090 } 091 092 @Override 093 protected String retry(Locale locale, String key) { 094 return super.getBundle().handleGetMessage(locale,key); 095 } 096 097}