MCPcopy Create free account
hub / github.com/Frontrooms/3.0-GC / Language

Class Language

src/main/java/emu/grasscutter/utils/Language.java:15–209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13import static emu.grasscutter.Configuration.*;
14
15public final class Language {
16 private static final Map<String, Language> cachedLanguages = new ConcurrentHashMap<>();
17
18 private final JsonObject languageData;
19 private final String languageCode;
20 private final Map<String, String> cachedTranslations = new ConcurrentHashMap<>();
21
22 /**
23 * Creates a language instance from a code.
24 * @param langCode The language code.
25 * @return A language instance.
26 */
27 public static Language getLanguage(String langCode) {
28 if (cachedLanguages.containsKey(langCode)) {
29 return cachedLanguages.get(langCode);
30 }
31
32 var fallbackLanguageCode = Utils.getLanguageCode(FALLBACK_LANGUAGE);
33 var description = getLanguageFileDescription(langCode, fallbackLanguageCode);
34 var actualLanguageCode = description.getLanguageCode();
35
36 Language languageInst;
37 if (description.getLanguageFile() != null) {
38 languageInst = new Language(description);
39 cachedLanguages.put(actualLanguageCode, languageInst);
40 } else {
41 languageInst = cachedLanguages.get(actualLanguageCode);
42 cachedLanguages.put(langCode, languageInst);
43 }
44
45 return languageInst;
46 }
47
48 /**
49 * Returns the translated value from the key while substituting arguments.
50 * @param key The key of the translated value to return.
51 * @param args The arguments to substitute.
52 * @return A translated value with arguments substituted.
53 */
54 public static String translate(String key, Object... args) {
55 String translated = Grasscutter.getLanguage().get(key);
56
57 try {
58 return translated.formatted(args);
59 } catch (Exception exception) {
60 Grasscutter.getLogger().error("Failed to format string: " + key, exception);
61 return translated;
62 }
63 }
64
65 /**
66 * Returns the translated value from the key while substituting arguments.
67 * @param player Target player
68 * @param key The key of the translated value to return.
69 * @param args The arguments to substitute.
70 * @return A translated value with arguments substituted.
71 */
72 public static String translate(Player player, String key, Object... args) {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected