使用 Translator 格式化下载速度 (#4709)
This commit is contained in:
@@ -28,6 +28,7 @@ import javafx.scene.layout.VBox;
|
||||
import org.jackhuang.hmcl.task.*;
|
||||
import org.jackhuang.hmcl.ui.FXUtils;
|
||||
import org.jackhuang.hmcl.util.TaskCancellationAction;
|
||||
import org.jackhuang.hmcl.util.i18n.I18n;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -86,18 +87,7 @@ public class TaskExecutorDialogPane extends BorderPane {
|
||||
});
|
||||
|
||||
speedEventHandler = FetchTask.SPEED_EVENT.registerWeak(speedEvent -> {
|
||||
String unit = "B/s";
|
||||
double speed = speedEvent.getSpeed();
|
||||
if (speed > 1024) {
|
||||
speed /= 1024;
|
||||
unit = "KiB/s";
|
||||
}
|
||||
if (speed > 1024) {
|
||||
speed /= 1024;
|
||||
unit = "MiB/s";
|
||||
}
|
||||
|
||||
String message = String.format("%.1f %s", speed, unit);
|
||||
String message = I18n.formatSpeed(speedEvent.getSpeed());
|
||||
Platform.runLater(() -> lblProgress.setText(message));
|
||||
});
|
||||
|
||||
|
||||
@@ -71,6 +71,10 @@ public final class I18n {
|
||||
return getTranslator().formatDateTime(time);
|
||||
}
|
||||
|
||||
public static String formatSpeed(long bytes) {
|
||||
return getTranslator().formatSpeed(bytes);
|
||||
}
|
||||
|
||||
public static String getDisplaySelfVersion(RemoteVersion version) {
|
||||
return getTranslator().getDisplayVersion(version);
|
||||
}
|
||||
|
||||
@@ -59,4 +59,13 @@ public class Translator {
|
||||
return formatter.format(time);
|
||||
}
|
||||
|
||||
public String formatSpeed(long bytes) {
|
||||
if (bytes < 1024) {
|
||||
return supportedLocale.i18n("download.speed.byte_per_second", bytes);
|
||||
} else if (bytes < 1024 * 1024) {
|
||||
return supportedLocale.i18n("download.speed.kibibyte_per_second", (double) bytes / 1024);
|
||||
} else {
|
||||
return supportedLocale.i18n("download.speed.megabyte_per_second", (double) bytes / (1024 * 1024));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,25 +23,20 @@ import org.jackhuang.hmcl.util.i18n.SupportedLocale;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.TemporalAccessor;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jackhuang.hmcl.util.logging.Logger.LOG;
|
||||
|
||||
/// @author Glavo
|
||||
public class Translator_en_Qabs extends Translator {
|
||||
private static final DateTimeFormatter BASE_FORMATTER = DateTimeFormatter.ofPattern("MMM d, yyyy, h:mm:ss a")
|
||||
.withZone(ZoneId.systemDefault());
|
||||
private static final Map<Integer, Integer> MAPPER;
|
||||
|
||||
private static final Map<Integer, Integer> MAPPER = loadMap();
|
||||
|
||||
private static Map<Integer, Integer> loadMap() {
|
||||
static {
|
||||
var map = new LinkedHashMap<Integer, Integer>();
|
||||
|
||||
InputStream inputStream = Translator_en_Qabs.class.getResourceAsStream("/assets/lang/upside_down.txt");
|
||||
if (inputStream != null) {
|
||||
try (inputStream) {
|
||||
@@ -62,7 +57,7 @@ public class Translator_en_Qabs extends Translator {
|
||||
} else {
|
||||
LOG.warning("upside_down.txt not found");
|
||||
}
|
||||
return Collections.unmodifiableMap(map);
|
||||
MAPPER = Collections.unmodifiableMap(map);
|
||||
}
|
||||
|
||||
public static String translate(String str) {
|
||||
@@ -71,6 +66,8 @@ public class Translator_en_Qabs extends Translator {
|
||||
return builder.reverse().toString();
|
||||
}
|
||||
|
||||
private final SupportedLocale originalLocale = SupportedLocale.getLocale(Locale.ENGLISH);
|
||||
|
||||
public Translator_en_Qabs(SupportedLocale locale) {
|
||||
super(locale);
|
||||
}
|
||||
@@ -82,6 +79,11 @@ public class Translator_en_Qabs extends Translator {
|
||||
|
||||
@Override
|
||||
public String formatDateTime(TemporalAccessor time) {
|
||||
return translate(BASE_FORMATTER.format(time));
|
||||
return translate(originalLocale.getTranslator().formatDateTime(time));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String formatSpeed(long bytes) {
|
||||
return translate(originalLocale.getTranslator().formatSpeed(bytes));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,6 +359,9 @@ download.javafx.notes=We are currently downloading dependencies for HMCL from th
|
||||
Note: If your download speed is too slow, you can try switching to another mirror.
|
||||
download.javafx.component=Downloading module "%s"
|
||||
download.javafx.prepare=Preparing to download
|
||||
download.speed.byte_per_second=%d B/s
|
||||
download.speed.kibibyte_per_second=%.1f KiB/s
|
||||
download.speed.megabyte_per_second=%.1f MiB/s
|
||||
|
||||
exception.access_denied=HMCL is unable to access the file "%s". It may be locked by another process.\n\
|
||||
\n\
|
||||
|
||||
@@ -360,6 +360,9 @@ download.javafx.notes=Скачивание зависимостей для ла
|
||||
Примечание: Если ваша скорость скачивания слишком низкая, вы можете попробовать переключиться на другое зеркало.
|
||||
download.javafx.component=Скачивание модуля «%s»
|
||||
download.javafx.prepare=Подготовка к скачиванию
|
||||
download.speed.byte_per_second=%d Б/сек
|
||||
download.speed.kibibyte_per_second=%.1f КиБ/сек
|
||||
download.speed.megabyte_per_second=%.1f МиБ/сек
|
||||
|
||||
exception.access_denied=Лаунчер не может получить доступ к файлу «%s», возможно он занят другим процессом.\n\
|
||||
\n\
|
||||
|
||||
@@ -356,6 +356,10 @@ download.javafx.notes=Ми зараз завантажуємо залежнос
|
||||
Примітка: Якщо ваша швидкість завантаження занадто повільна, ви можете спробувати переключитися на інше дзеркало.
|
||||
download.javafx.component=Завантаження модуля "%s"
|
||||
download.javafx.prepare=Підготовка до завантаження
|
||||
download.speed.byte_per_second=%d Б/сек
|
||||
download.speed.kibibyte_per_second=%.1f КiБ/сек
|
||||
download.speed.megabyte_per_second=%.1f МiБ/сек
|
||||
|
||||
exception.access_denied=HMCL не може отримати доступ до файлу "%s". Можливо, він заблокований іншим процесом.\n\
|
||||
\n\
|
||||
Для користувачів Windows ви можете відкрити "Монітор ресурсів", щоб перевірити, чи не використовується він іншим процесом. Якщо так, ви можете спробувати знову після завершення цього процесу.\n\
|
||||
|
||||
@@ -358,6 +358,9 @@ download.javafx=正在下載必要的執行時元件
|
||||
download.javafx.notes=正在透過網路下載 HMCL 必要的執行時元件。\n點擊「切換下載源」按鈕查看詳情以及選取下載源。點擊「取消」按鈕停止並退出。\n注意:如果下載速度過慢,請嘗試切換下載源。
|
||||
download.javafx.component=正在下載元件「%s」
|
||||
download.javafx.prepare=準備開始下載
|
||||
download.speed.byte_per_second=%d B/s
|
||||
download.speed.kibibyte_per_second=%.1f KiB/s
|
||||
download.speed.megabyte_per_second=%.1f MiB/s
|
||||
|
||||
exception.access_denied=無法存取檔案「%s」。因為 HMCL 沒有對該檔案的訪問權限,或者該檔案已被其他程式開啟。\n\
|
||||
請你檢查目前作業系統帳戶是否能訪存取檔案,比如非管理員使用者可能不能訪問其他帳戶的個人目錄內的檔案。\n\
|
||||
|
||||
@@ -366,6 +366,9 @@ download.javafx=正在下载必要的运行时组件……
|
||||
download.javafx.notes=正在通过网络下载 HMCL 必要的运行时组件。\n点击“切换下载源”按钮查看详情以及选择下载源。点击“取消”按钮停止并退出。\n注意:若下载速度过慢,请尝试切换下载源。
|
||||
download.javafx.component=正在下载模块“%s”
|
||||
download.javafx.prepare=准备开始下载
|
||||
download.speed.byte_per_second=%d B/s
|
||||
download.speed.kibibyte_per_second=%.1f KiB/s
|
||||
download.speed.megabyte_per_second=%.1f MiB/s
|
||||
|
||||
exception.access_denied=无法访问文件“%s”。HMCL 没有对该文件的访问权限,或者该文件已被其他程序打开。\n\
|
||||
请你检查当前操作系统账户是否能访问该文件,比如非管理员用户可能无法访问其他账户的个人文件夹内的文件。\n\
|
||||
|
||||
Reference in New Issue
Block a user