[Regarding macOS Tahoe](Updated October 16, 2025)
macOS v26 Tahoe is now supported!
We advise against upgrading your macOS at this time as it may cause Live2D products not to function correctly.
Upgrading macOS can also cause you to lose your Cubism Editor license file.
Please make sure to deactivate your Cubism Editor license before upgrading the macOS.
For more details:
https://help.live2d.com/en/other/other_09/
public final @NonNull String getText(@NonNull String str, @NonNull String... strArr) {
...
if (communityMap == null) {
final File translationsFolder = new File(jp.noids.util.Paths.getUserDataPath() + File.separator + "translations");
communityMap = loadMap(translationsFolder, "I18N_core3");
communityMap.putAll(loadMap(translationsFolder, "I18N_cubism3"));
communityMap.putAll(loadMap(translationsFolder, "cubism21/I18N_cn_cubism_proto"));
communityMap.putAll(loadMap(translationsFolder, "cubism21/I18N_cn_lib_core"));
communityMap.putAll(loadMap(translationsFolder, "cubism21/I18N_cn_lib_design"));
communityMap.putAll(loadMap(translationsFolder, "cubism21/I18N_cn_lib_flash"));
communityMap.putAll(loadMap(translationsFolder, "cubism21/I18N_cn_lib_image"));
communityMap.putAll(loadMap(translationsFolder, "cubism21/I18N_cn_lib_movie"));
}
String result = communityMap.get(str);
if (result == null) {
result = map.get(str);
}
if (result == null) {
result = findInOldMap(str);
}
...
}
private final @NonNull HashMap loadMap(@NonNull File directory, @NonNull String path) {
if (!directory.isDirectory()) {
return new HashMap<>();
}
Locale locale = Locale.getDefault();
Intrinsics.checkExpressionValueIsNotNull(locale, "Locale.getDefault()");
List split = new Regex("\n").split(loadResourceFile(directory, path, locale.getLanguage()), 0);
List list = CollectionsKt.emptyList();
if (!split.isEmpty()) {
ListIterator listIterator = split.listIterator(split.size());
while (listIterator.hasPrevious()) {
if (!(((String) listIterator.previous()).length() == 0)) {
list = CollectionsKt.take(split, listIterator.nextIndex() + 1);
break;
}
}
}
String[] lines = list.toArray(new String[0]);
HashMap hashMap = new HashMap<>();
for (String line : lines) {
int index = StringsKt.indexOf(line, SEPARATOR, 0, false);
if (index > 0) {
hashMap.put(line.substring(0, index), decode(line.substring(index + 1)));
}
}
return hashMap;
}
private final @NonNull String loadResourceFile(@NonNull File directory, @NonNull String path, @NonNull String locale) {
String resourceData = "";
try {
File basePath = new File(directory + File.separator + String.format("%s.txt", path));
if (basePath.isFile()) {
resourceData = resourceData + UtURL.readText(basePath.toURI().toURL(), "UTF-8");
}
if (locale != null && !Intrinsics.areEqual("en", locale)) {
File localePath = new File(directory + File.separator + String.format("%s_%s.txt", path, locale));
if (localePath.isFile()) {
resourceData = resourceData + UtURL.readText(localePath.toURI().toURL(), "UTF-8");
}
}
} catch (MalformedURLException e) {
e.printStackTrace(System.err);
}
return resourceData;
}
Comments
Thank you for your request.
This is Live2D Support.
I have shared this request with the developers.
We will use this as a reference for future development.
Thank you very much!