Language.java
net.minecraft.locale.Language
信息
- 全限定名:net.minecraft.locale.Language
- 类型:public abstract class
- 包:net.minecraft.locale
- 源码路径:src/main/java/net/minecraft/locale/Language.java
- 起始行号:L27
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L28 - 说明:
TODO
- 类型:
-
GSON- 类型:
Gson - 修饰符:
private static final - 源码定位:
L29 - 说明:
TODO
- 类型:
-
UNSUPPORTED_FORMAT_PATTERN- 类型:
Pattern - 修饰符:
private static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
DEFAULT- 类型:
String - 修饰符:
public static final - 源码定位:
L31 - 说明:
TODO
- 类型:
-
instance- 类型:
Language - 修饰符:
private static volatile - 源码定位:
L32 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
private static Language loadDefault() @ L34
- 方法名:loadDefault
- 源码定位:L34
- 返回类型:Language
- 修饰符:private static
参数:
- 无
说明:
TODO
private static void parseTranslations(BiConsumer<String,String> output, String path) @ L68
- 方法名:parseTranslations
- 源码定位:L68
- 返回类型:void
- 修饰符:private static
参数:
- output: BiConsumer<String,String>
- path: String
说明:
TODO
public static void loadFromJson(InputStream stream, BiConsumer<String,String> output) @ L76
- 方法名:loadFromJson
- 源码定位:L76
- 返回类型:void
- 修饰符:public static
参数:
- stream: InputStream
- output: BiConsumer<String,String>
说明:
TODO
public static Language getInstance() @ L85
- 方法名:getInstance
- 源码定位:L85
- 返回类型:Language
- 修饰符:public static
参数:
- 无
说明:
TODO
public static void inject(Language language) @ L89
- 方法名:inject
- 源码定位:L89
- 返回类型:void
- 修饰符:public static
参数:
- language: Language
说明:
TODO
public String getOrDefault(String elementId) @ L93
- 方法名:getOrDefault
- 源码定位:L93
- 返回类型:String
- 修饰符:public
参数:
- elementId: String
说明:
TODO
public abstract String getOrDefault(String elementId, String defaultValue) @ L97
- 方法名:getOrDefault
- 源码定位:L97
- 返回类型:String
- 修饰符:public abstract
参数:
- elementId: String
- defaultValue: String
说明:
TODO
public abstract boolean has(String elementId) @ L99
- 方法名:has
- 源码定位:L99
- 返回类型:boolean
- 修饰符:public abstract
参数:
- elementId: String
说明:
TODO
public abstract boolean isDefaultRightToLeft() @ L101
- 方法名:isDefaultRightToLeft
- 源码定位:L101
- 返回类型:boolean
- 修饰符:public abstract
参数:
- 无
说明:
TODO
public abstract FormattedCharSequence getVisualOrder(FormattedText logicalOrderText) @ L103
- 方法名:getVisualOrder
- 源码定位:L103
- 返回类型:FormattedCharSequence
- 修饰符:public abstract
参数:
- logicalOrderText: FormattedText
说明:
TODO
public List<FormattedCharSequence> getVisualOrder(List<FormattedText> lines) @ L105
- 方法名:getVisualOrder
- 源码定位:L105
- 返回类型:List
- 修饰符:public
参数:
- lines: List
说明:
TODO
代码
public abstract class Language {
private static final Logger LOGGER = LogUtils.getLogger();
private static final Gson GSON = new Gson();
private static final Pattern UNSUPPORTED_FORMAT_PATTERN = Pattern.compile("%(\\d+\\$)?[\\d.]*[df]");
public static final String DEFAULT = "en_us";
private static volatile Language instance = loadDefault();
private static Language loadDefault() {
DeprecatedTranslationsInfo deprecatedInfo = DeprecatedTranslationsInfo.loadFromDefaultResource();
Map<String, String> loadedData = new HashMap<>();
BiConsumer<String, String> output = loadedData::put;
parseTranslations(output, "/assets/minecraft/lang/en_us.json");
deprecatedInfo.applyToMap(loadedData);
final Map<String, String> storage = Map.copyOf(loadedData);
return new Language() {
@Override
public String getOrDefault(String elementId, String defaultValue) {
return storage.getOrDefault(elementId, defaultValue);
}
@Override
public boolean has(String elementId) {
return storage.containsKey(elementId);
}
@Override
public boolean isDefaultRightToLeft() {
return false;
}
@Override
public FormattedCharSequence getVisualOrder(FormattedText logicalOrderText) {
return output -> logicalOrderText.visit(
(style, contents) -> StringDecomposer.iterateFormatted(contents, style, output) ? Optional.empty() : FormattedText.STOP_ITERATION,
Style.EMPTY
)
.isPresent();
}
};
}
private static void parseTranslations(BiConsumer<String, String> output, String path) {
try (InputStream stream = Language.class.getResourceAsStream(path)) {
loadFromJson(stream, output);
} catch (JsonParseException | IOException var7) {
LOGGER.error("Couldn't read strings from {}", path, var7);
}
}
public static void loadFromJson(InputStream stream, BiConsumer<String, String> output) {
JsonObject entries = GSON.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), JsonObject.class);
for (Entry<String, JsonElement> entry : entries.entrySet()) {
String text = UNSUPPORTED_FORMAT_PATTERN.matcher(GsonHelper.convertToString(entry.getValue(), entry.getKey())).replaceAll("%$1s");
output.accept(entry.getKey(), text);
}
}
public static Language getInstance() {
return instance;
}
public static void inject(Language language) {
instance = language;
}
public String getOrDefault(String elementId) {
return this.getOrDefault(elementId, elementId);
}
public abstract String getOrDefault(final String elementId, final String defaultValue);
public abstract boolean has(final String elementId);
public abstract boolean isDefaultRightToLeft();
public abstract FormattedCharSequence getVisualOrder(final FormattedText logicalOrderText);
public List<FormattedCharSequence> getVisualOrder(List<FormattedText> lines) {
return lines.stream().map(this::getVisualOrder).collect(ImmutableList.toImmutableList());
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
DeprecatedTranslationsInfo.loadFromDefaultResource()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
GsonHelper.convertToString()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
StringDecomposer.iterateFormatted()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Pattern.compile()
- 引用位置: