1 /* 2 * Copyright (c) 2021-2023. Roland T. Lichti, Kaiserpfalz EDV-Service. 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 3 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <https://www.gnu.org/licenses/>. 16 */ 17 18 package de.kaiserpfalzedv.commons.api.i18n; 19 20 import java.io.Serializable; 21 import java.util.List; 22 import java.util.Locale; 23 24 /** 25 * @author rlichti 26 * @version 1.0.0 2021-09-09 27 * @since 1.0.0 2021-09-09 28 */ 29 public interface Translator extends Serializable, AutoCloseable { 30 31 /** 32 * Reads the translation from the default bundle 33 * 34 * @param key The key of the bundle entry. 35 * @param locale the locale to use. 36 * @param arguments Arguments for the translation. 37 * @return The translated text or {@literal !<key>} 38 */ 39 String getTranslation(String key, Locale locale, Object... arguments); 40 41 /** 42 * Returns the translation from a resource accompanying the class given as bundleObject. 43 * 44 * @param bundleObject The class to be translated. 45 * @param key The key for the translation. 46 * @param locale The locale to use. 47 * @param arguments Arguments to the translation. 48 * @return The translated string or {@literal !<key>}. 49 */ 50 String getTranslation(Object bundleObject, String key, Locale locale, Object... arguments); 51 52 /** 53 * Reads the translation from the bundle with the given name. 54 * 55 * @param bundleName The name of the bundle. The locale and the postfix {@literal .properties} will be appended. 56 * @param key The key of the bundle entry. 57 * @param locale the locale to use. 58 * @param arguments Arguments for the translation. 59 * @return The translated text or {@literal !<key>} 60 */ 61 String getTranslation(String bundleName, String key, Locale locale, Object... arguments); 62 63 List<Locale> getProvidedLocales(); 64 }