2
0
mirror of https://github.com/HMCL-dev/HMCL.git synced 2025-02-11 16:59:54 +08:00

localization

This commit is contained in:
huangyuhui 2017-08-11 18:16:23 +08:00
parent 54c4ca4180
commit a9b044b4d2
34 changed files with 2820 additions and 190 deletions

View File

@ -11,15 +11,16 @@ def buildnumber = System.getenv("TRAVIS_BUILD_NUMBER")
if (buildnumber == null)
buildnumber = System.getenv("BUILD_NUMBER")
if (buildnumber == null)
buildnumber = "33"
buildnumber = "SNAPSHOT"
def versionroot = System.getenv("VERSION_ROOT")
if (versionroot == null)
versionroot = "2.7.8"
versionroot = "3.0"
String mavenGroupId = 'HMCL'
String mavenVersion = versionroot + '.' + buildnumber
String bundleName = "Hello Minecraft! Launcher"
version = mavenVersion
dependencies {
compile project(":HMCLCore")

View File

@ -19,11 +19,25 @@ package org.jackhuang.hmcl
import javafx.application.Application
import javafx.stage.Stage
import org.jackhuang.hmcl.setting.Settings
import org.jackhuang.hmcl.task.Scheduler
import org.jackhuang.hmcl.ui.Controllers
import org.jackhuang.hmcl.ui.UTF8Control
import org.jackhuang.hmcl.util.DEFAULT_USER_AGENT
import org.jackhuang.hmcl.util.LOG
import org.jackhuang.hmcl.util.OS
import java.io.File
import java.util.*
import java.util.logging.Level
fun i18n(key: String): String {
try {
return Main.RESOURCE_BUNDLE.getString(key)
} catch (e: Exception) {
LOG.log(Level.WARNING, "Cannot find key $key in resource bundle", e)
return key
}
}
class Main : Application() {
@ -68,5 +82,7 @@ class Main : Application() {
PRIMARY_STAGE.close()
Scheduler.shutdown()
}
val RESOURCE_BUNDLE = Settings.LANG.resourceBundle
}
}

View File

@ -42,6 +42,12 @@ class Config {
field = value
Settings.save()
}
@SerializedName("proxyType")
var proxyType: Int = 0
set(value) {
field = value
Settings.save()
}
@SerializedName("proxyHost")
var proxyHost: String? = null
set(value) {

View File

@ -40,11 +40,8 @@ class Profile(var name: String = "Default", initialGameDir: File = File(".minecr
val gameDirProperty = ImmediateObjectProperty<File>(this, "gameDir", initialGameDir)
var gameDir: File by gameDirProperty
val noCommonProperty = ImmediateBooleanProperty(this, "noCommon", false)
var noCommon: Boolean by noCommonProperty
var repository = HMCLGameRepository(initialGameDir)
var dependency = DefaultDependencyManager(repository, BMCLAPIDownloadProvider)
val dependency: DefaultDependencyManager get() = DefaultDependencyManager(repository, Settings.DOWNLOAD_PROVIDER, Settings.PROXY)
var modManager = ModManager(repository)
init {
@ -93,7 +90,6 @@ class Profile(var name: String = "Default", initialGameDir: File = File(".minecr
globalProperty.addListener(listener)
selectedVersionProperty.addListener(listener)
gameDirProperty.addListener(listener)
noCommonProperty.addListener(listener)
}
companion object Serializer: JsonSerializer<Profile>, JsonDeserializer<Profile> {
@ -104,7 +100,6 @@ class Profile(var name: String = "Default", initialGameDir: File = File(".minecr
add("global", context.serialize(src.global))
addProperty("selectedVersion", src.selectedVersion)
addProperty("gameDir", src.gameDir.path)
addProperty("noCommon", src.noCommon)
}
return jsonObject
@ -115,7 +110,6 @@ class Profile(var name: String = "Default", initialGameDir: File = File(".minecr
return Profile(initialGameDir = File(json["gameDir"]?.asString ?: ""), initialSelectedVersion = json["selectedVersion"]?.asString ?: "").apply {
global = context.deserialize(json["global"], VersionSetting::class.java)
noCommon = json["noCommon"]?.asBoolean ?: false
}
}

View File

@ -31,10 +31,11 @@ import org.jackhuang.hmcl.ProfileLoadingEvent
import org.jackhuang.hmcl.ProfileChangedEvent
import org.jackhuang.hmcl.auth.Account
import org.jackhuang.hmcl.util.*
import org.jackhuang.hmcl.auth.OfflineAccount
import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccount
import org.jackhuang.hmcl.event.EVENT_BUS
import org.jackhuang.hmcl.util.property.ImmediateObjectProperty
import java.net.Authenticator
import java.net.InetSocketAddress
import java.net.PasswordAuthentication
import java.net.Proxy
import java.util.*
@ -58,13 +59,10 @@ object Settings {
SETTINGS = initSettings();
loop@for ((name, settings) in SETTINGS.accounts) {
val factory = when(settings["type"]) {
"yggdrasil" -> YggdrasilAccount
"offline" -> OfflineAccount
else -> {
SETTINGS.accounts.remove(name)
continue@loop
}
val factory = Accounts.ACCOUNT_FACTORY[settings["type"] ?: ""]
if (factory == null) {
SETTINGS.accounts.remove(name)
continue@loop
}
val account = factory.fromStorage(settings)
@ -92,12 +90,6 @@ object Settings {
}
}
fun getDownloadProvider(): DownloadProvider = when (SETTINGS.downloadtype) {
0 -> MojangDownloadProvider
1 -> BMCLAPIDownloadProvider
else -> MojangDownloadProvider
}
private fun initSettings(): Config {
var c = Config()
if (SETTINGS_FILE.exists())
@ -127,11 +119,7 @@ object Settings {
SETTINGS.accounts.clear()
for ((name, account) in ACCOUNTS) {
val storage = account.toStorage()
storage["type"] = when(account) {
is OfflineAccount -> "offline"
is YggdrasilAccount -> "yggdrasil"
else -> ""
}
storage["type"] = Accounts.getAccountType(account)
SETTINGS.accounts[name] = storage
}
@ -141,13 +129,70 @@ object Settings {
}
}
val selectedProfile: Profile
get() {
if (!hasProfile(SETTINGS.selectedProfile))
SETTINGS.selectedProfile = DEFAULT_PROFILE
return getProfile(SETTINGS.selectedProfile)
var LANG: Locales.SupportedLocale = Locales.getLocaleByName(SETTINGS.localization)
set(value) {
field = value
SETTINGS.localization = Locales.getNameByLocal(value)
}
var PROXY: Proxy = Proxy.NO_PROXY
var PROXY_TYPE: Proxy.Type? = Proxies.getProxyType(SETTINGS.proxyType)
set(value) {
field = value
SETTINGS.proxyType = Proxies.PROXIES.indexOf(value)
loadProxy()
}
var PROXY_HOST: String? get() = SETTINGS.proxyHost; set(value) { SETTINGS.proxyHost = value }
var PROXY_PORT: String? get() = SETTINGS.proxyPort; set(value) { SETTINGS.proxyPort = value }
var PROXY_USER: String? get() = SETTINGS.proxyUserName; set(value) { SETTINGS.proxyUserName = value }
var PROXY_PASS: String? get() = SETTINGS.proxyPassword; set(value) { SETTINGS.proxyPassword = value }
private fun loadProxy() {
val host = PROXY_HOST
val port = PROXY_PORT?.toIntOrNull()
if (host == null || host.isBlank() || port == null)
PROXY = Proxy.NO_PROXY
else {
System.setProperty("http.proxyHost", PROXY_HOST)
System.setProperty("http.proxyPort", PROXY_PORT)
PROXY = Proxy(PROXY_TYPE, InetSocketAddress(host, port))
val user = PROXY_USER
val pass = PROXY_PASS
if (user != null && user.isNotBlank() && pass != null && pass.isNotBlank()) {
System.setProperty("http.proxyUser", user)
System.setProperty("http.proxyPassword", pass)
Authenticator.setDefault(object : Authenticator() {
override fun getPasswordAuthentication(): PasswordAuthentication {
return PasswordAuthentication(user, pass.toCharArray())
}
})
}
}
}
init { loadProxy() }
var DOWNLOAD_PROVIDER: DownloadProvider
get() = when (SETTINGS.downloadtype) {
0 -> MojangDownloadProvider
1 -> BMCLAPIDownloadProvider
else -> MojangDownloadProvider
}
set(value) {
SETTINGS.downloadtype = when (value) {
MojangDownloadProvider -> 0
BMCLAPIDownloadProvider -> 1
else -> 0
}
}
/****************************************
* ACCOUNTS *
****************************************/
val selectedAccountProperty = object : ImmediateObjectProperty<Account?>(this, "selectedAccount", getAccount(SETTINGS.selectedAccount)) {
override fun get(): Account? {
val a = super.get()
@ -172,12 +217,6 @@ object Settings {
}
var selectedAccount: Account? by selectedAccountProperty
val PROXY: Proxy = Proxy.NO_PROXY
val PROXY_HOST: String? get() = SETTINGS.proxyHost
val PROXY_PORT: String? get() = SETTINGS.proxyPort
val PROXY_USER: String? get() = SETTINGS.proxyUserName
val PROXY_PASS: String? get() = SETTINGS.proxyPassword
fun addAccount(account: Account) {
ACCOUNTS[account.username] = account
}
@ -196,6 +235,17 @@ object Settings {
selectedAccountProperty.get()
}
/****************************************
* PROFILES *
****************************************/
val selectedProfile: Profile
get() {
if (!hasProfile(SETTINGS.selectedProfile))
SETTINGS.selectedProfile = DEFAULT_PROFILE
return getProfile(SETTINGS.selectedProfile)
}
fun getProfile(name: String?): Profile {
var p: Profile? = getProfileMap()[name ?: DEFAULT_PROFILE]
if (p == null)

View File

@ -0,0 +1,104 @@
/*
* Hello Minecraft! Launcher.
* Copyright (C) 2017 huangyuhui <huanghongxun2008@126.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see {http://www.gnu.org/licenses/}.
*/
package org.jackhuang.hmcl.setting
import org.jackhuang.hmcl.auth.Account
import org.jackhuang.hmcl.auth.AccountFactory
import org.jackhuang.hmcl.auth.OfflineAccount
import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccount
import org.jackhuang.hmcl.download.BMCLAPIDownloadProvider
import org.jackhuang.hmcl.download.MojangDownloadProvider
import org.jackhuang.hmcl.ui.UTF8Control
import java.net.Proxy
import java.util.*
object Proxies {
val PROXIES = listOf(null, Proxy.Type.DIRECT, Proxy.Type.HTTP, Proxy.Type.SOCKS)
fun getProxyType(index: Int): Proxy.Type? = PROXIES.getOrNull(index)
}
object DownloadProviders {
val DOWNLOAD_PROVIDERS = listOf(MojangDownloadProvider, BMCLAPIDownloadProvider)
fun getDownloadProvider(index: Int) = DOWNLOAD_PROVIDERS.getOrElse(index, { MojangDownloadProvider })
}
object Accounts {
val OFFLINE_ACCOUNT_KEY = "offline"
val YGGDRASIL_ACCOUNT_KEY = "yggdrasil"
val ACCOUNTS = listOf(OfflineAccount, YggdrasilAccount)
val ACCOUNT_FACTORY = mapOf<String, AccountFactory<*>>(
OFFLINE_ACCOUNT_KEY to OfflineAccount,
YGGDRASIL_ACCOUNT_KEY to YggdrasilAccount
)
fun getAccountType(account: Account): String {
return when (account) {
is OfflineAccount -> OFFLINE_ACCOUNT_KEY
is YggdrasilAccount -> YGGDRASIL_ACCOUNT_KEY
else -> YGGDRASIL_ACCOUNT_KEY
}
}
}
object Locales {
class SupportedLocale internal constructor(
val locale: Locale,
private val nameImpl: String? = null
) {
val resourceBundle: ResourceBundle = ResourceBundle.getBundle("assets.lang.I18N", locale, UTF8Control)
fun getName(nowResourceBundle: ResourceBundle): String {
if (nameImpl == null)
return resourceBundle.getString("lang")
else
return nowResourceBundle.getString(nameImpl)
}
}
val DEFAULT = SupportedLocale(Locale.getDefault(), "lang.default")
val EN = SupportedLocale(Locale.ENGLISH)
val ZH = SupportedLocale(Locale.TRADITIONAL_CHINESE)
val ZH_CN = SupportedLocale(Locale.SIMPLIFIED_CHINESE)
val VI = SupportedLocale(Locale("vi"))
val RU = SupportedLocale(Locale("ru"))
val LOCALES = listOf(DEFAULT, EN, ZH, ZH_CN, VI, RU)
fun getLocale(index: Int) = LOCALES.getOrElse(index, { DEFAULT })
fun getLocaleByName(name: String?) = when(name) {
"en" -> EN
"zh" -> ZH
"zh_CN" -> ZH_CN
"vi" -> VI
"ru" -> RU
else -> DEFAULT
}
fun getNameByLocal(supportedLocale: SupportedLocale) = when(supportedLocale) {
EN -> "en"
ZH -> "zh"
ZH_CN -> "zh_CN"
VI -> "vi"
RU -> "ru"
DEFAULT -> "def"
else -> throw IllegalArgumentException("Unknown argument: " + supportedLocale)
}
}

View File

@ -108,6 +108,12 @@ class VersionSetting() {
val notCheckGameProperty = ImmediateBooleanProperty(this, "notCheckGame", false)
var notCheckGame: Boolean by notCheckGameProperty
/**
* True if HMCL does not find/download libraries in/to common path.
*/
val noCommonProperty = ImmediateBooleanProperty(this, "noCommon", false)
var noCommon: Boolean by noCommonProperty
// Minecraft settings.
/**
@ -175,6 +181,7 @@ class VersionSetting() {
minecraftArgsProperty.addListener(listener)
noJVMArgsProperty.addListener(listener)
notCheckGameProperty.addListener(listener)
noCommonProperty.addListener(listener)
serverIpProperty.addListener(listener)
fullscreenProperty.addListener(listener)
widthProperty.addListener(listener)
@ -229,6 +236,7 @@ class VersionSetting() {
addProperty("fullscreen", src.fullscreen)
addProperty("noJVMArgs", src.noJVMArgs)
addProperty("notCheckGame", src.notCheckGame)
addProperty("noCommon", src.noCommon)
addProperty("launcherVisibility", src.launcherVisibility.ordinal)
addProperty("gameDirType", src.gameDirType.ordinal)
}
@ -258,6 +266,7 @@ class VersionSetting() {
fullscreen = json["fullscreen"]?.asBoolean ?: false
noJVMArgs = json["noJVMArgs"]?.asBoolean ?: false
notCheckGame = json["notCheckGame"]?.asBoolean ?: false
noCommon = json["noCommon"]?.asBoolean ?: false
launcherVisibility = LauncherVisibility.values()[json["launcherVisibility"]?.asInt ?: 1]
gameDirType = EnumGameDirectory.values()[json["gameDirType"]?.asInt ?: 0]
}

View File

@ -31,6 +31,7 @@ import javafx.scene.control.ToggleGroup
import org.jackhuang.hmcl.auth.Account
import org.jackhuang.hmcl.auth.OfflineAccount
import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccount
import org.jackhuang.hmcl.i18n
import org.jackhuang.hmcl.setting.Settings
import org.jackhuang.hmcl.task.Scheduler
import org.jackhuang.hmcl.task.Task
@ -45,9 +46,9 @@ class AccountsPage() : StackPane(), DecoratorPage {
@FXML lateinit var dialog: JFXDialog
@FXML lateinit var txtUsername: JFXTextField
@FXML lateinit var txtPassword: JFXPasswordField
@FXML lateinit var lblPassword: Label
@FXML lateinit var lblCreationWarning: Label
@FXML lateinit var cboType: JFXComboBox<String>
@FXML lateinit var progressBar: JFXProgressBar
val listener = ChangeListener<Account?> { _, _, newValue ->
masonryPane.children.forEach {
@ -76,7 +77,6 @@ class AccountsPage() : StackPane(), DecoratorPage {
cboType.selectionModel.selectedIndexProperty().addListener { _, _, newValue ->
val visible = newValue != 0
lblPassword.isVisible = visible
txtPassword.isVisible = visible
}
cboType.selectionModel.select(0)
@ -125,6 +125,8 @@ class AccountsPage() : StackPane(), DecoratorPage {
}
fun addNewAccount() {
txtUsername.text = ""
txtPassword.text = ""
dialog.show()
}
@ -132,6 +134,7 @@ class AccountsPage() : StackPane(), DecoratorPage {
val type = cboType.selectionModel.selectedIndex
val username = txtUsername.text
val password = txtPassword.text
progressBar.isVisible = true
val task = Task.of(Callable {
try {
val account = when (type) {
@ -155,6 +158,7 @@ class AccountsPage() : StackPane(), DecoratorPage {
} else if (account is Exception) {
lblCreationWarning.text = account.localizedMessage
}
progressBar.isVisible = false
}
}
@ -165,7 +169,7 @@ class AccountsPage() : StackPane(), DecoratorPage {
fun accountType(account: Account) =
when(account) {
is OfflineAccount -> "Offline Account"
is YggdrasilAccount -> "Yggdrasil Account"
else -> throw Error("Unsupported account: $account")
is OfflineAccount -> i18n("login.methods.offline")
is YggdrasilAccount -> i18n("login.methods.yggdrasil")
else -> throw Error("${i18n("login.methods.no_method")}: $account")
}

View File

@ -40,11 +40,13 @@ class AdvancedListBox: ScrollPane() {
fun add(child: Node): AdvancedListBox {
if (child is Pane) {
child.maxWidthProperty().bind(this.widthProperty())
container.children += child
} else {
val pane = StackPane()
pane.styleClass += "advanced-list-box-item"
pane.children.setAll(child)
pane.maxWidthProperty().bind(this.widthProperty())
container.children += pane
}
return this

View File

@ -22,13 +22,14 @@ import javafx.scene.Node
import javafx.scene.Scene
import javafx.scene.layout.StackPane
import javafx.stage.Stage
import org.jackhuang.hmcl.Main
object Controllers {
lateinit var scene: Scene private set
lateinit var stage: Stage private set
val mainPane = MainPage()
val settingsPane = SettingsPage()
val versionPane = VersionPage()
lateinit var leftPaneController: LeftPaneController
@ -39,10 +40,10 @@ object Controllers {
fun initialize(stage: Stage) {
this.stage = stage
decorator = Decorator(stage, mainPane, max = false)
decorator = Decorator(stage, mainPane, Main.TITLE, max = false)
decorator.showPage(null)
leftPaneController = LeftPaneController(decorator.leftPane)
sidePaneController = SidePaneController(decorator.sidePane)
sidePaneController = SidePaneController(decorator.sidePane, decorator.drawer)
decorator.isCustomMaximize = false
@ -57,6 +58,4 @@ object Controllers {
fun navigate(node: Node?) {
decorator.showPage(node)
}
private fun <T> loadPane(s: String): T = FXMLLoader(Controllers::class.java.getResource("/assets/fxml/$s.fxml")).load()
}

View File

@ -52,7 +52,7 @@ import org.jackhuang.hmcl.util.*
import java.util.*
import java.util.concurrent.ConcurrentLinkedQueue
class Decorator @JvmOverloads constructor(private val primaryStage: Stage, private val mainPage: Node, private val max: Boolean = true, min: Boolean = true) : StackPane(), AbstractWizardDisplayer {
class Decorator @JvmOverloads constructor(private val primaryStage: Stage, private val mainPage: Node, title: String, private val max: Boolean = true, min: Boolean = true) : StackPane(), AbstractWizardDisplayer {
override val wizardController: WizardController = WizardController(this)
private var xOffset: Double = 0.0
@ -73,6 +73,7 @@ class Decorator @JvmOverloads constructor(private val primaryStage: Stage, priva
@FXML lateinit var refreshMenuButton: JFXButton
@FXML lateinit var addMenuButton: JFXButton
@FXML lateinit var titleLabel: Label
@FXML lateinit var lblTitle: Label
@FXML lateinit var leftPane: AdvancedListBox
@FXML lateinit var drawer: JFXDrawer
@FXML lateinit var sidePane: AdvancedListBox
@ -113,6 +114,8 @@ class Decorator @JvmOverloads constructor(private val primaryStage: Stage, priva
btnMin.graphic = minus
btnMax.graphic = resizeMax
lblTitle.text = title
buttonsContainer.background = Background(*arrayOf(BackgroundFill(Color.BLACK, CornerRadii.EMPTY, Insets.EMPTY)))
titleContainer.addEventHandler(MouseEvent.MOUSE_CLICKED) { mouseEvent ->
if (mouseEvent.clickCount == 2) {

View File

@ -18,10 +18,15 @@
package org.jackhuang.hmcl.ui
import com.jfoenix.concurrency.JFXUtilities
import com.jfoenix.controls.JFXCheckBox
import com.jfoenix.controls.JFXComboBox
import com.jfoenix.controls.JFXScrollPane
import com.jfoenix.controls.JFXTextField
import javafx.animation.Animation
import javafx.animation.KeyFrame
import javafx.animation.Timeline
import javafx.beans.property.Property
import javafx.beans.value.ChangeListener
import javafx.event.ActionEvent
import javafx.event.EventHandler
import javafx.fxml.FXMLLoader
@ -37,9 +42,10 @@ import javafx.scene.input.ScrollEvent
import javafx.scene.layout.Region
import javafx.scene.shape.Rectangle
import javafx.util.Duration
import org.jackhuang.hmcl.Main
fun Node.loadFXML(absolutePath: String) {
val fxmlLoader = FXMLLoader(this.javaClass.getResource(absolutePath))
val fxmlLoader = FXMLLoader(this.javaClass.getResource(absolutePath), Main.RESOURCE_BUNDLE)
fxmlLoader.setRoot(this)
fxmlLoader.setController(this)
fxmlLoader.load<Any>()
@ -114,3 +120,37 @@ val stylesheets = arrayOf(
Controllers::class.java.getResource("/css/jfoenix-fonts.css").toExternalForm(),
Controllers::class.java.getResource("/css/jfoenix-design.css").toExternalForm(),
Controllers::class.java.getResource("/assets/css/jfoenix-main-demo.css").toExternalForm())
fun bindInt(textField: JFXTextField, property: Property<*>) {
textField.textProperty().unbind()
@Suppress("UNCHECKED_CAST")
textField.textProperty().bindBidirectional(property as Property<Int>, SafeIntStringConverter())
}
fun bindString(textField: JFXTextField, property: Property<String>) {
textField.textProperty().unbind()
textField.textProperty().bindBidirectional(property)
}
fun bindBoolean(checkBox: JFXCheckBox, property: Property<Boolean>) {
checkBox.selectedProperty().unbind()
checkBox.selectedProperty().bindBidirectional(property)
}
fun bindEnum(comboBox: JFXComboBox<*>, property: Property<out Enum<*>>) {
unbindEnum(comboBox)
val listener = ChangeListener<Number> { _, _, newValue ->
property.value = property.value.javaClass.enumConstants[newValue.toInt()]
}
comboBox.selectionModel.select(property.value.ordinal)
comboBox.properties["listener"] = listener
comboBox.selectionModel.selectedIndexProperty().addListener(listener)
}
fun unbindEnum(comboBox: JFXComboBox<*>) {
@Suppress("UNCHECKED_CAST")
val listener = comboBox.properties["listener"] as? ChangeListener<Number> ?: return
comboBox.selectionModel.selectedIndexProperty().removeListener(listener)
}

View File

@ -28,13 +28,14 @@ import org.jackhuang.hmcl.event.EVENT_BUS
import org.jackhuang.hmcl.event.RefreshedVersionsEvent
import org.jackhuang.hmcl.game.LauncherHelper
import org.jackhuang.hmcl.game.minecraftVersion
import org.jackhuang.hmcl.i18n
import org.jackhuang.hmcl.setting.Settings
import org.jackhuang.hmcl.ui.download.DownloadWizardProvider
class LeftPaneController(leftPane: AdvancedListBox) {
class LeftPaneController(private val leftPane: AdvancedListBox) {
val versionsPane = VBox()
val cboProfiles = JFXComboBox<String>().apply { items.add("Default"); prefWidthProperty().bind(leftPane.widthProperty()) }
val accountItem = VersionListItem("mojang@mojang.com", "Yggdrasil")
val accountItem = VersionListItem("No account", "unknown")
init {
leftPane
@ -44,9 +45,9 @@ class LeftPaneController(leftPane: AdvancedListBox) {
Controllers.navigate(AccountsPage())
}
})
.startCategory("PROFILES")
.startCategory(i18n("ui.label.profile"))
.add(cboProfiles)
.startCategory("VERSIONS")
.startCategory(i18n("ui.label.version"))
.add(versionsPane)
EVENT_BUS.channel<RefreshedVersionsEvent>() += this::loadVersions
@ -109,6 +110,7 @@ class LeftPaneController(leftPane: AdvancedListBox) {
profile.selectedVersion = version.id
}
ripplerContainer.properties["version"] = version.id to item
ripplerContainer.maxWidthProperty().bind(leftPane.widthProperty())
versionsPane.children += ripplerContainer
}
}

View File

@ -22,13 +22,14 @@ import javafx.beans.property.SimpleStringProperty
import javafx.beans.property.StringProperty
import javafx.fxml.FXML
import javafx.scene.layout.StackPane
import org.jackhuang.hmcl.i18n
import org.jackhuang.hmcl.ui.wizard.DecoratorPage
/**
* @see /assets/fxml/main.fxml
*/
class MainPage : StackPane(), DecoratorPage {
override val titleProperty: StringProperty = SimpleStringProperty(this, "title", "Main Page")
override val titleProperty: StringProperty = SimpleStringProperty(this, "title", i18n("launcher.title.main"))
@FXML lateinit var buttonLaunch: JFXButton

View File

@ -0,0 +1,92 @@
/*
* Hello Minecraft! Launcher.
* Copyright (C) 2017 huangyuhui <huanghongxun2008@126.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see {http://www.gnu.org/licenses/}.
*/
package org.jackhuang.hmcl.ui
import com.jfoenix.controls.JFXComboBox
import com.jfoenix.controls.JFXTextField
import javafx.beans.binding.Bindings
import javafx.beans.property.SimpleStringProperty
import javafx.beans.property.StringProperty
import javafx.collections.FXCollections
import javafx.fxml.FXML
import javafx.scene.control.Label
import javafx.scene.layout.StackPane
import org.jackhuang.hmcl.i18n
import org.jackhuang.hmcl.setting.DownloadProviders
import org.jackhuang.hmcl.setting.Locales
import org.jackhuang.hmcl.setting.Proxies
import org.jackhuang.hmcl.setting.Settings
import org.jackhuang.hmcl.ui.wizard.DecoratorPage
class SettingsPage : StackPane(), DecoratorPage {
override val titleProperty: StringProperty = SimpleStringProperty(this, "title", i18n("launcher.title.launcher"))
@FXML lateinit var txtProxyHost: JFXTextField
@FXML lateinit var txtProxyPort: JFXTextField
@FXML lateinit var txtProxyUsername: JFXTextField
@FXML lateinit var txtProxyPassword: JFXTextField
@FXML lateinit var cboProxyType: JFXComboBox<*>
@FXML lateinit var cboLanguage: JFXComboBox<*>
@FXML lateinit var cboDownloadSource: JFXComboBox<*>
init {
loadFXML("/assets/fxml/setting.fxml")
txtProxyHost.text = Settings.PROXY_HOST
txtProxyHost.textProperty().addListener { _, _, newValue ->
Settings.PROXY_HOST = newValue
}
txtProxyPort.text = Settings.PROXY_PORT
txtProxyPort.textProperty().addListener { _, _, newValue ->
Settings.PROXY_PORT = newValue
}
txtProxyUsername.text = Settings.PROXY_USER
txtProxyUsername.textProperty().addListener { _, _, newValue ->
Settings.PROXY_USER = newValue
}
txtProxyPassword.text = Settings.PROXY_PASS
txtProxyPassword.textProperty().addListener { _, _, newValue ->
Settings.PROXY_PASS = newValue
}
cboDownloadSource.selectionModel.select(DownloadProviders.DOWNLOAD_PROVIDERS.indexOf(Settings.DOWNLOAD_PROVIDER))
cboDownloadSource.selectionModel.selectedIndexProperty().addListener { _, _, newValue ->
Settings.DOWNLOAD_PROVIDER = DownloadProviders.getDownloadProvider(newValue.toInt())
}
val list = FXCollections.observableArrayList<Label>()
for (locale in Locales.LOCALES) {
list += Label(locale.getName(Settings.LANG.resourceBundle))
}
cboLanguage.items = list
cboLanguage.selectionModel.select(Locales.LOCALES.indexOf(Settings.LANG))
cboLanguage.selectionModel.selectedIndexProperty().addListener { _, _, newValue ->
Settings.LANG = Locales.getLocale(newValue.toInt())
}
cboProxyType.selectionModel.select(Proxies.PROXIES.indexOf(Settings.PROXY_TYPE))
cboProxyType.selectionModel.selectedIndexProperty().addListener { _, _, newValue ->
Settings.PROXY_TYPE = Proxies.getProxyType(newValue.toInt())
}
}
}

View File

@ -17,10 +17,18 @@
*/
package org.jackhuang.hmcl.ui
class SidePaneController(sidePane: AdvancedListBox) {
import com.jfoenix.controls.JFXDrawer
class SidePaneController(sidePane: AdvancedListBox, drawer: JFXDrawer) {
init {
sidePane
.startCategory("LAUNCHER")
.add(IconedItem(SVG.gear("black"), "Settings").apply { prefWidthProperty().bind(sidePane.widthProperty()) })
.add(IconedItem(SVG.gear("black"), "Settings").apply {
prefWidthProperty().bind(sidePane.widthProperty())
setOnMouseClicked {
Controllers.navigate(Controllers.settingsPane)
drawer.close()
}
})
}
}

View File

@ -0,0 +1,57 @@
/*
* Hello Minecraft! Launcher.
* Copyright (C) 2017 huangyuhui <huanghongxun2008@126.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see {http://www.gnu.org/licenses/}.
*/
package org.jackhuang.hmcl.ui
import java.io.InputStreamReader
import java.util.PropertyResourceBundle
import java.util.ResourceBundle
import java.io.IOException
import java.io.InputStream
import java.util.Locale
object UTF8Control : ResourceBundle.Control() {
@Throws(IllegalAccessException::class, InstantiationException::class, IOException::class)
override fun newBundle(baseName: String, locale: Locale, format: String, loader: ClassLoader, reload: Boolean): ResourceBundle? {
// The below is a copy of the default implementation.
val bundleName = toBundleName(baseName, locale)
val resourceName = toResourceName(bundleName, "properties")
var bundle: ResourceBundle? = null
var stream: InputStream? = null
if (reload) {
val url = loader.getResource(resourceName)
if (url != null) {
val connection = url.openConnection()
if (connection != null) {
connection.useCaches = false
stream = connection.getInputStream()
}
}
} else {
stream = loader.getResourceAsStream(resourceName)
}
if (stream != null) {
try {
// Only this line is changed to make it to read properties files as UTF-8.
bundle = PropertyResourceBundle(InputStreamReader(stream, "UTF-8"))
} finally {
stream.close()
}
}
return bundle
}
}

View File

@ -28,6 +28,7 @@ import javafx.scene.control.Label
import javafx.scene.control.ScrollPane
import javafx.scene.layout.*
import javafx.stage.DirectoryChooser
import org.jackhuang.hmcl.i18n
import org.jackhuang.hmcl.setting.Profile
import org.jackhuang.hmcl.setting.VersionSetting
import org.jackhuang.hmcl.ui.wizard.DecoratorPage
@ -44,7 +45,7 @@ class VersionPage : StackPane(), DecoratorPage {
}
fun load(id: String, profile: Profile) {
titleProperty.set("Version settings - " + id)
titleProperty.set(i18n("launcher.title.game") + " - " + id)
versionSettingsController.loadVersionSetting(profile.getVersionSetting(id))
modController.loadMods(profile.modManager, id)

View File

@ -21,14 +21,13 @@ import com.jfoenix.controls.JFXCheckBox
import com.jfoenix.controls.JFXComboBox
import com.jfoenix.controls.JFXTextField
import javafx.beans.InvalidationListener
import javafx.beans.property.Property
import javafx.beans.value.ChangeListener
import javafx.fxml.FXML
import javafx.scene.control.Label
import javafx.scene.control.ScrollPane
import javafx.scene.layout.GridPane
import javafx.scene.layout.VBox
import javafx.stage.DirectoryChooser
import org.jackhuang.hmcl.i18n
import org.jackhuang.hmcl.setting.VersionSetting
import org.jackhuang.hmcl.util.OS
@ -52,9 +51,12 @@ class VersionSettingsController {
@FXML lateinit var cboRunDirectory: JFXComboBox<*>
@FXML lateinit var chkFullscreen: JFXCheckBox
@FXML lateinit var lblPhysicalMemory: Label
@FXML lateinit var chkNoJVMArgs: JFXCheckBox
@FXML lateinit var chkNoCommon: JFXCheckBox
@FXML lateinit var chkNoGameCheck: JFXCheckBox
fun initialize() {
lblPhysicalMemory.text = "Physical Memory: ${OS.TOTAL_MEMORY}MB"
lblPhysicalMemory.text = i18n("settings.physical_memory") + ": ${OS.TOTAL_MEMORY}MB"
scroll.smoothScrolling()
@ -85,6 +87,8 @@ class VersionSettingsController {
precalledCommandProperty.unbind()
serverIpProperty.unbind()
fullscreenProperty.unbind()
notCheckGameProperty.unbind()
noCommonProperty.unbind()
unbindEnum(cboLauncherVisibility)
unbindEnum(cboRunDirectory)
}
@ -100,40 +104,13 @@ class VersionSettingsController {
bindString(txtServerIP, version.serverIpProperty)
bindEnum(cboLauncherVisibility, version.launcherVisibilityProperty)
bindEnum(cboRunDirectory, version.gameDirTypeProperty)
chkFullscreen.selectedProperty().unbind()
chkFullscreen.selectedProperty().bindBidirectional(version.fullscreenProperty)
bindBoolean(chkFullscreen, version.fullscreenProperty)
bindBoolean(chkNoGameCheck, version.notCheckGameProperty)
bindBoolean(chkNoCommon, version.noCommonProperty)
lastVersionSetting = version
}
private fun bindInt(textField: JFXTextField, property: Property<*>) {
textField.textProperty().unbind()
@Suppress("UNCHECKED_CAST")
textField.textProperty().bindBidirectional(property as Property<Int>, SafeIntStringConverter())
}
private fun bindString(textField: JFXTextField, property: Property<String>) {
textField.textProperty().unbind()
textField.textProperty().bindBidirectional(property)
}
private fun bindEnum(comboBox: JFXComboBox<*>, property: Property<out Enum<*>>) {
unbindEnum(comboBox)
val listener = ChangeListener<Number> { _, _, newValue ->
property.value = property.value.javaClass.enumConstants[newValue.toInt()]
}
comboBox.selectionModel.select(property.value.ordinal)
comboBox.properties["listener"] = listener
comboBox.selectionModel.selectedIndexProperty().addListener(listener)
}
private fun unbindEnum(comboBox: JFXComboBox<*>) {
@Suppress("UNCHECKED_CAST")
val listener = comboBox.properties["listener"] as? ChangeListener<Number> ?: return
comboBox.selectionModel.selectedIndexProperty().removeListener(listener)
}
fun onShowAdvanced() {
if (!rootPane.children.contains(advancedSettingsPane))
rootPane.children += advancedSettingsPane
@ -143,7 +120,7 @@ class VersionSettingsController {
fun onExploreJavaDir() {
val chooser = DirectoryChooser()
chooser.title = "Selecting Java Directory"
chooser.title = i18n("settings.choose_javapath")
val selectedDir = chooser.showDialog(Controllers.stage)
if (selectedDir != null)
txtGameDir.text = selectedDir.absolutePath

View File

@ -44,6 +44,10 @@
-fx-padding: 20 0 20 0;
}
.tab-header-background {
-fx-background: gray;
}
/*******************************************************************************
* *
* JFX Drawer *

View File

@ -14,6 +14,7 @@
<?import java.lang.String?>
<?import com.jfoenix.validation.RequiredFieldValidator?>
<?import com.jfoenix.controls.JFXNodesList?>
<?import com.jfoenix.controls.JFXProgressBar?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
@ -30,48 +31,49 @@
</AnchorPane>
<JFXDialog fx:id="dialog" transitionType="CENTER">
<JFXDialogLayout>
<heading>
<Label>Create a new account</Label>
</heading>
<body>
<GridPane vgap="15" hgap="15" style="-fx-padding: 15 0 0 0;">
<columnConstraints>
<ColumnConstraints maxWidth="100" />
<ColumnConstraints />
</columnConstraints>
<Label text="Type" GridPane.halignment="RIGHT" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<Label text="Username" GridPane.halignment="RIGHT" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<Label fx:id="lblPassword" text="Password" GridPane.halignment="RIGHT" GridPane.columnIndex="0" GridPane.rowIndex="2" />
<StackPane>
<JFXDialogLayout>
<heading>
<Label>Create a new account</Label>
</heading>
<body>
<GridPane vgap="15" hgap="15" style="-fx-padding: 15 0 0 0;">
<columnConstraints>
<ColumnConstraints maxWidth="100" />
<ColumnConstraints />
</columnConstraints>
<Label text="Type" GridPane.halignment="RIGHT" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<JFXComboBox fx:id="cboType" GridPane.columnIndex="1" GridPane.rowIndex="0">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Offline Account"/>
<String fx:value="Online Account" />
</FXCollections>
</items>
</JFXComboBox>
<JFXComboBox fx:id="cboType" GridPane.columnIndex="1" GridPane.rowIndex="0">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Offline Account"/>
<String fx:value="Online Account" />
</FXCollections>
</items>
</JFXComboBox>
<JFXTextField fx:id="txtUsername" promptText="Username" labelFloat="true" GridPane.columnIndex="1" GridPane.rowIndex="1">
<validators>
<RequiredFieldValidator message="Input Required!">
</RequiredFieldValidator>
</validators>
</JFXTextField>
<JFXPasswordField fx:id="txtPassword" promptText="Password" labelFloat="true" GridPane.columnIndex="1" GridPane.rowIndex="2">
<validators>
<RequiredFieldValidator message="Input Required!">
</RequiredFieldValidator>
</validators>
</JFXPasswordField>
</GridPane>
</body>
<actions>
<Label fx:id="lblCreationWarning" />
<JFXButton onMouseClicked="#onCreationAccept" text="Accept" styleClass="dialog-accept" />
<JFXButton onMouseClicked="#onCreationCancel" text="Cancel" styleClass="dialog-cancel" />
</actions>
</JFXDialogLayout>
<JFXTextField fx:id="txtUsername" promptText="Username" labelFloat="true" GridPane.columnIndex="0" GridPane.rowIndex="1" GridPane.columnSpan="2">
<validators>
<RequiredFieldValidator message="Input Required!">
</RequiredFieldValidator>
</validators>
</JFXTextField>
<JFXPasswordField fx:id="txtPassword" promptText="%ui.label.password" labelFloat="true" GridPane.columnIndex="0" GridPane.rowIndex="2" GridPane.columnSpan="2">
<validators>
<RequiredFieldValidator message="Input Required!">
</RequiredFieldValidator>
</validators>
</JFXPasswordField>
</GridPane>
</body>
<actions>
<Label fx:id="lblCreationWarning" />
<JFXButton onMouseClicked="#onCreationAccept" text="%button.ok" styleClass="dialog-accept" />
<JFXButton onMouseClicked="#onCreationCancel" text="%button.cancel" styleClass="dialog-cancel" />
</actions>
</JFXDialogLayout>
<JFXProgressBar fx:id="progressBar" visible="false" StackPane.alignment="TOP_CENTER" />
</StackPane>
</JFXDialog>
</fx:root>

View File

@ -74,7 +74,7 @@
</JFXDrawer>
</center>
<top>
<BorderPane fx:id="titleContainer" minHeight="30" styleClass="jfx-tool-bar"
<BorderPane fx:id="titleContainer" minHeight="40" styleClass="jfx-tool-bar"
pickOnBounds="false"
onMouseReleased="#onMouseReleased"
onMouseDragged="#onMouseDragged"
@ -90,7 +90,7 @@
</JFXHamburger>
</StackPane>
</JFXRippler>
<Label text="Hello Minecraft! Launcher" BorderPane.alignment="CENTER"
<Label fx:id="lblTitle" BorderPane.alignment="CENTER"
mouseTransparent="true"
style="-fx-background-color: transparent; -fx-text-fill: white; -fx-font-size: 15px;"/>
</HBox>

View File

@ -8,14 +8,14 @@
xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1">
<BorderPane>
<center>
<StackPane fx:id="page" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
<StackPane fx:id="page" BorderPane.alignment="CENTER" />
</center>
<bottom>
<BorderPane prefHeight="50.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<BorderPane prefHeight="50.0" BorderPane.alignment="CENTER">
<right>
<StackPane prefHeight="50.0" prefWidth="150.0" BorderPane.alignment="CENTER">
<StackPane prefHeight="50.0" BorderPane.alignment="CENTER">
<JFXSpinner fx:id="spinner" style="-fx-radius:16" styleClass="materialDesign-purple, first-spinner" />
<JFXButton fx:id="buttonLaunch" prefWidth="100" prefHeight="40" buttonType="RAISED" text="Launch"
<JFXButton fx:id="buttonLaunch" prefWidth="200" prefHeight="40" buttonType="RAISED" text="%ui.button.run"
style="-fx-text-fill:WHITE;-fx-background-color:#5264AE;-fx-font-size:14px;"/>
</StackPane>
</right>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import com.jfoenix.controls.JFXComboBox?>
<?import javafx.collections.FXCollections?>
<?import com.jfoenix.controls.JFXTextField?>
<fx:root xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
<ScrollPane fx:id="scroll"
style="-fx-font-size: 14; -fx-pref-width: 100%; "
fitToHeight="true" fitToWidth="true">
<VBox fx:id="rootPane" style="-fx-padding: 20;">
<GridPane fx:id="settingsPane" hgap="5" vgap="10">
<columnConstraints>
<ColumnConstraints />
<ColumnConstraints hgrow="ALWAYS" />
</columnConstraints>
<Label text="%launcher.common_location" GridPane.rowIndex="0" GridPane.columnIndex="0" />
<Label text="%launcher.background_location" GridPane.rowIndex="1" GridPane.columnIndex="0" />
<Label text="%launcher.download_source" GridPane.rowIndex="2" GridPane.columnIndex="0" />
<Label text="%launcher.lang" GridPane.rowIndex="3" GridPane.columnIndex="0" />
<Label text="%launcher.proxy" GridPane.rowIndex="4" GridPane.columnIndex="0" />
<Label text="%launcher.theme" GridPane.rowIndex="5" GridPane.columnIndex="0" />
<JFXComboBox fx:id="cboDownloadSource" GridPane.rowIndex="2" GridPane.columnIndex="1">
<items>
<FXCollections fx:factory="observableArrayList">
<Label text="%download.mojang" />
<Label text="%download.BMCL" />
</FXCollections>
</items>
</JFXComboBox>
<JFXComboBox fx:id="cboLanguage" GridPane.rowIndex="3" GridPane.columnIndex="1" />
<HBox alignment="CENTER_LEFT" GridPane.rowIndex="4" GridPane.columnIndex="1">
<JFXComboBox fx:id="cboProxyType">
<items>
<FXCollections fx:factory="observableArrayList">
<Label text="Direct" />
<Label text="HTTP" />
<Label text="Socks" />
</FXCollections>
</items>
</JFXComboBox>
<Label text="%proxy.host" />
<JFXTextField fx:id="txtProxyHost" maxWidth="50" />
<Label text="%proxy.port" />
<JFXTextField fx:id="txtProxyPort" maxWidth="50" />
<Label text="%proxy.username" />
<JFXTextField fx:id="txtProxyUsername" maxWidth="50" />
<Label text="%proxy.password" />
<JFXTextField fx:id="txtProxyPassword" maxWidth="50" />
</HBox>
</GridPane>
</VBox>
</ScrollPane>
</fx:root>

View File

@ -25,11 +25,11 @@
<ColumnConstraints hgrow="ALWAYS" />
<ColumnConstraints />
</columnConstraints>
<Label GridPane.rowIndex="0" GridPane.columnIndex="0">Java Directory</Label>
<Label GridPane.rowIndex="1" GridPane.columnIndex="0">Max Memory</Label>
<Label GridPane.rowIndex="2" GridPane.columnIndex="0">Launcher Visibility</Label>
<Label GridPane.rowIndex="3" GridPane.columnIndex="0">Run Directory</Label>
<Label GridPane.rowIndex="4" GridPane.columnIndex="0">Dimension</Label>
<Label GridPane.rowIndex="0" GridPane.columnIndex="0" text="%settings.java_dir" />
<Label GridPane.rowIndex="1" GridPane.columnIndex="0" text="%settings.max_memory" />
<Label GridPane.rowIndex="2" GridPane.columnIndex="0" text="%advancedsettings.launcher_visible" />
<Label GridPane.rowIndex="3" GridPane.columnIndex="0" text="%settings.run_directory" />
<Label GridPane.rowIndex="4" GridPane.columnIndex="0" text="%settings.dimension" />
<Label GridPane.rowIndex="5" GridPane.columnIndex="0"> </Label>
<JFXTextField styleClass="fit-width" fx:id="txtGameDir" GridPane.rowIndex="0" GridPane.columnIndex="1"
@ -46,10 +46,10 @@
GridPane.columnSpan="2" prefWidth="Infinity">
<items>
<FXCollections fx:factory="observableArrayList">
<Label>Close</Label>
<Label>Hide</Label>
<Label>Keep</Label>
<Label>Hide and Reopen</Label>
<Label text="%advancedsettings.launcher_visibility.close" />
<Label text="%advancedsettings.launcher_visibility.hide" />
<Label text="%advancedsettings.launcher_visibility.keep" />
<Label text="%advancedsettings.launcher_visibility.hide_reopen" />
</FXCollections>
</items>
</JFXComboBox>
@ -57,8 +57,8 @@
GridPane.columnSpan="2" maxWidth="Infinity">
<items>
<FXCollections fx:factory="observableArrayList">
<Label>Default(.minecraft/)</Label>
<Label>Divided(.minecraft/versions/&lt;versionName&gt;)</Label>
<Label text="%advancedsettings.game_dir.default" />
<Label text="%advancedsettings.game_dir.independent" />
</FXCollections>
</items>
</JFXComboBox>
@ -71,7 +71,7 @@
</HBox>
</left>
<right>
<JFXCheckBox fx:id="chkFullscreen" text="Fullscreen" alignment="CENTER">
<JFXCheckBox fx:id="chkFullscreen" text="%settings.fullscreen" alignment="CENTER">
<BorderPane.margin>
<Insets right="7"/>
</BorderPane.margin>
@ -79,18 +79,29 @@
</right>
</BorderPane>
<JFXButton GridPane.rowIndex="0" GridPane.columnIndex="2" text="Explore" onMouseClicked="#onExploreJavaDir" />
<JFXButton GridPane.rowIndex="0" GridPane.columnIndex="2" onMouseClicked="#onExploreJavaDir">
<graphic>
<fx:include source="/assets/svg/folder-open.fxml" />
</graphic>
</JFXButton>
</GridPane>
<HBox alignment="CENTER">
<JFXButton text="Show advanced settings" onMouseClicked="#onShowAdvanced" />
<JFXButton text="%advancedsettings" onMouseClicked="#onShowAdvanced" />
</HBox>
<VBox fx:id="advancedSettingsPane" spacing="30">
<JFXTextField labelFloat="true" promptText="JVM Args" styleClass="fit-width" fx:id="txtJVMArgs" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="Game Args" styleClass="fit-width" fx:id="txtGameArgs" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="Metaspace" styleClass="fit-width" fx:id="txtMetaspace" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="Wrapper Launcher(like optirun)" styleClass="fit-width" fx:id="txtWrapper" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="Pre-calling command" styleClass="fit-width" fx:id="txtPrecallingCommand" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="Server IP" styleClass="fit-width" fx:id="txtServerIP" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="%advancedsettings.jvm_args" styleClass="fit-width" fx:id="txtJVMArgs" prefWidth="${advancedSettingsPane.width}">
<tooltip>
<Tooltip text="%advancedsettings.java_args_default" />
</tooltip>
</JFXTextField>
<JFXTextField labelFloat="true" promptText="%advancedsettings.Minecraft_arguments" styleClass="fit-width" fx:id="txtGameArgs" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="%advancedsettings.java_permanent_generation_space" styleClass="fit-width" fx:id="txtMetaspace" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="%advancedsettings.wrapper_launcher" styleClass="fit-width" fx:id="txtWrapper" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="%advancedsettings.precall_command" styleClass="fit-width" fx:id="txtPrecallingCommand" prefWidth="${advancedSettingsPane.width}" />
<JFXTextField labelFloat="true" promptText="%advancedsettings.server_ip" styleClass="fit-width" fx:id="txtServerIP" prefWidth="${advancedSettingsPane.width}" />
<JFXCheckBox fx:id="chkNoJVMArgs" text="%advancedsettings.no_jvm_args" />
<JFXCheckBox fx:id="chkNoCommon" text="%advancedsettings.no_common" />
<JFXCheckBox fx:id="chkNoGameCheck" text="%advancedsettings.dont_check_game_completeness" />
</VBox>
</VBox>
</ScrollPane>

View File

@ -7,11 +7,20 @@
xmlns:fx="http://javafx.com/fxml"
type="StackPane">
<JFXTabPane>
<Tab text="Settings">
<Tab text="%settings">
<fx:include source="version-settings.fxml" fx:id="versionSettings" />
</Tab>
<Tab text="Mods">
<Tab text="%mods">
<fx:include source="mod.fxml" fx:id="mod" />
</Tab>
</JFXTabPane>
<JFXRippler fx:id="optionsRippler" maskType="CIRCLE"
style="-fx-ripple-color:WHITE;"
StackPane.alignment="TOP_RIGHT" maxWidth="15" maxHeight="15">
<StackPane fx:id="optionsBurger">
<JFXHamburger styleClass="jfx-options-burger">
</JFXHamburger>
</StackPane>
</JFXRippler>
</fx:root>

View File

@ -0,0 +1,440 @@
# Hello Minecraft! Launcher.
# Copyright (C) 2013 huangyuhui <huanghongxun2008@126.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see {http://www.gnu.org/licenses/}.
#
#author: huangyuhui, dxNeil
launch.failed=Failed to launch.
launch.failed_creating_process=Failed to create process, maybe your java path is wrong, please modify your java path.
launch.failed_sh_permission=Failed to add permission to the launch script.
launch.failed_packing_jar=Failed to pack the jar.
launch.unsupported_launcher_version=Sorry, the launcher cannot launch minecraft, but will retry launching it.
launch.too_big_memory_alloc_64bit=You have allocated too much memory, because of your 32-Bit Java Runtime Environment, your game probably crash. The maximum memory is 1024MB. The launcher will try to launch it.
launch.too_big_memory_alloc_free_space_too_low=You have allocated too much memory, because the physical memory size is %dMB, your game probably crash. The launcher will try to launch it.
launch.cannot_create_jvm=We find that it cannot create java virutal machine. The Java argements may have problems. You can enable the no args mode in the settings.
launch.circular_dependency_versions=Found circular dependency versions, please check if your client has been modified.
launch.not_finished_downloading_libraries=Did not finish downloading libraries, continue launching game?
launch.not_finished_decompressing_natives=Did not finish decompressing native libraries, continue launching game?
launch.wrong_javadir=Incorrect Java directory, will reset to default Java directory.
launch.exited_abnormally=Game exited abnormally, please visit the log, or ask someone for help.
launch.state.logging_in=Logging In
launch.state.generating_launching_codes=Generating Launching Codes
launch.state.downloading_libraries=Downloading dependencies
launch.state.decompressing_natives=Decompressing natives
launch.state.waiting_launching=Waiting for game launching
install.no_version=The version is not found.
install.no_version_if_intall=The required version is not found, do you wish to install the version automatically?
install.not_refreshed=The installer list is not refreshed.
install.download_list=Download List
install.liteloader.get_list=Get LiteLoader List
install.liteloader.install=Install LiteLoader
install.forge.get_list=Get Forge List
install.forge.install=Install Forge
install.forge.get_changelogs=Get Forge Changelogs
install.optifine.install=Install OptiFine
install.optifine.get_list=Get OptiFine Download List
install.optifine.get_download_link=Get the Download Link of OptiFine
install.failed_forge=Failed to install 'Forge'.
install.failed_optifine=Failed to install 'OptiFine'.
install.failed_liteloader=Failed to install 'LiteLoader'.
install.failed_download_forge=Failed to download 'Forge'.
install.failed_download_optifine=Failed to download 'OptiFine'.
install.failed=Failed to install
install.success=Install successfully
install.no_forge=No Forge
install.choose_forge=Choose the version you want to install Forge
install.version=Version
install.mcversion=Game Version
install.time=Time
install.release_time=Release Time
install.type=Type
install.please_refresh=If you want to install something please click "Refresh" button.
crash.launcher=Launcher has crashed!
crash.minecraft=Minecraft has crashed!
login.choose_charactor=Please choose the character you want
login.no_charactor=No character in this account.
login.your_password=Your password
login.failed=Failed to login
login.no_Player007=You have not set a username!
login.wrong_password=Incorrect password or username
login.invalid_username=Invalid username
login.invalid_uuid_and_username=Invalid UUID and username
login.invalid_password=Invalid password
login.invalid_access_token=Invalid Access Token
login.changed_client_token=The server response has changed the client token.
login.not_email=The username must be an e-mail.
login.type=Login
login.username=Name
login.account=Email
login.invalid_token=Please log out and re-input your password to log in.
login.no_valid_character=No valid character, please visit skinme.cc and create your own character.
proxy.username=Account
proxy.password=Password
proxy.host=Host
proxy.port=Port
login.failed.connect_authentication_server=Cannot connect the authentication server. Check your network.
login.profile.not_logged_in=You are not logged in, you can't modify the profile!
login.profile.selected=Can't modify the profile, logout and go retry.
login.methods.yggdrasil=Mojang
login.methods.offline=Offline
login.methods.no_method=No login method
log.playername_null=The player name is empty.
minecraft.no_selected_version=No selected Minecraft version
minecraft.wrong_path=Wrong Minecraft path, the launcher could not find the path.
operation.stopped=The operation was aborted.
operation.confirm_stop=Terminate the operations?
ui.login.password=Password
ui.more=More
crash.advice.UnsupportedClassVersionError=Maybe your java is too old, try to update the java.
crash.advice.ConcurrentModificationException=Maybe your Java is newer than 1.8.0_11, you could downgrade to Java 7.
crash.advice.ClassNotFoundException=Minecraft or mods are incomplete. Retry if there are some libraries that have not downloaded or update your game and mods! Or you can try Game Settings -> Manage (Version) -> Delete library files to solve the problem.
crash.advice.NoSuchFieldError=Minecraft or mods are incomplete. Retry if there are some libraries that have not downloaded or update your game and mods!
crash.advice.LWJGLException=Maybe your video driver does not work well, please update your video driver.
crash.advice.SecurityException=Maybe you have modified minecraft.jar but have not removed the META-INF.
crash.advice.OutOfMemoryError=The maximum memory of JVM is too small, please modify it.
crash.advice.otherwise=Maybe mods caused problems.
crash.advice.OpenGL=Maybe drivers caused problems.
crash.advice.no_lwjgl=Maybe drivers caused problems.
crash.advice.no=No advice.
crash.user_fault=Your OS or Java environment may not be properly installed resulting in crashing of this software, please check your Java Environment or your computer!
crash.headless=If your OS is Linux, please use Oracle JDK instead of OpenJDK, or add "-Djava.awt.headless=false" JVM argument, or check if your Xserver works normally.
crash.NoClassDefFound=Please check "HMCL" software is complete.
crash.error=Minecraft has crashed.
crash.main_class_not_found=Main Class is not found, may be your mc has been broken.
crash.class_path_wrong=Maybe the launch script is malformed.
ui.label.newProfileWindow.new_profile_name=New Profile Name:
ui.label.newProfileWindow.copy_from=Copy From:
ui.newProfileWindow.title=New Config
ui.button.ok=OK
ui.button.refresh=Refresh
ui.button.run=Play
ui.button.settings=Settings
ui.button.about=About
ui.button.others=Others
ui.button.logout=Log Out
ui.button.download=Download
ui.button.retry=Retry
ui.button.delete=Delete
ui.button.install=Install
ui.button.info=Info
ui.button.save=Save
ui.button.copy=Copy
ui.button.clear=Clear
ui.button.close=Close
ui.button.explore=Explore
ui.button.test=Test
ui.button.preview=Preview
button.cancel=Cancel
button.ok=OK
button.yes=Yes
button.no=No
ui.label.version=Version
ui.label.password=Password
ui.label.profile=Profile
ui.message.first_load=Please enter your name.
ui.message.enter_password=Please enter your password.
ui.message.launching=Launching...
ui.message.making=Generating...
ui.message.sure_remove=Sure to remove profile %s?
ui.message.update_java=Please upgrade your Java.
ui.message.open_jdk=We have found that you started this application using OpenJDK, which will cause so many troubles drawing the UI. We suggest you using Oracle JDK instead.
ui.label.settings=Settings
ui.label.crashing=<html>Hello Minecraft! Launcher has crashed!</html>
ui.label.crashing_out_dated=<html>Hello Minecraft! Launcher has crashed! Your launcher is outdated. Update it!</html>
ui.label.failed_set=Failed to set:
download=Download
download.mojang=Mojang
download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/)
download.rapid_data=RapidData (https://www.rapiddata.org/)
download.not_200=Failed to download, the response code
download.failed=Failed to download
download.successfully=Downloaded successfully
download.source=Download Source
message.error=Error
message.cannot_open_explorer=Cannot open explorer:
message.cancelled=Cancelled
message.info=Info
message.loading=Loading...
folder.game=Game Dir
folder.mod=Mod
folder.coremod=Core Mod
folder.config=Configs
folder.resourcepacks=Resourcepacks
folder.screenshots=Screenshots
folder.saves=Saves
settings.tabs.game_download=Games
settings.tabs.installers=Installers
settings.tabs.assets_downloads=Assets
settings=Settings
settings.explore=Explore
settings.manage=Manage
settings.cannot_remove_default_config=Cannot remove the default configution.
settings.max_memory=Max Memory/MB
settings.java_dir=Java Dir
settings.game_directory=Game Directory
settings.dimension=Game Window Dimension
settings.fullscreen=Fullscreen
settings.update_version=Update version json.
settings.run_directory=Run Directory(Version Isolation)
settings.physical_memory=Physical Memory Size
settings.choose_javapath=Choose Java Directory.
settings.default=Default
settings.custom=Custom
settings.choose_gamedir=Choose Game Directory
settings.failed_load=Failed to load settings file. Remove it?
settings.test_game=Test game
settings.type.none=No version here, please turn to game download tab.
settings.type.global=<html><a href="">Click here to switch to version specialized setting. Now it is global setting.</a></html>
settings.type.special=<html><a href="">Click here to switch to global setting. Not it is version specialized setting.</a></html>
modpack=Mod pack
modpack.choose=Choose a modpack zip file which you want to import. If you want to update the modpack, please enter the version you want to update.
modpack.export_error=Failed to export the modpack, maybe the format of your game directory is incorrect or failed to manage files.
modpack.export_finished=Exporting the modpack finished. See
modpack.included_launcher=The modpack is included the launcher, you can publish it directly.
modpack.not_included_launcher=You can use the modpack by clicking the "Import Modpack" button.
modpack.enter_name=Enter your desired name for this game.
modpack.task.save=Export Modpack
modpack.task.install=Import Modpack
modpack.task.install.error=Failed to install the modpack. Maybe the files is incorrect, or a management issue occurred.
modpack.task.install.will=Install the modpack:
modpack.wizard=Exporting the modpack wizard
modpack.wizard.step.1=Basic options
modpack.wizard.step.1.title=Set the basic options to the modpack.
modpack.wizard.step.initialization.include_launcher=Include the launcher
modpack.wizard.step.initialization.exported_version=The exported game version
modpack.wizard.step.initialization.save=Choose a location to export the game files to
modpack.wizard.step.initialization.warning=<html>Before making modpack, you should ensure that your game can launch successfully,<br/>and that your Minecraft is release, not snapshot.<br/>and that it is not allowed to add mods which is not allowed to distribute to the modpack.</html>
modpack.wizard.step.2=Files selection
modpack.wizard.step.2.title=Choose the files you do not want to put in the modpack.
modpack.wizard.step.3=Description
modpack.wizard.step.3.title=Describe your modpack.
modpack.desc=Describe your modpack, including precautions, changlog, supporting Markdown(also supporting online pictures).
modpack.incorrect_format.no_json=The format of the modpack is incorrect, pack.json is missing.
modpack.incorrect_format.no_jar=The format of the modpack is incorrect, pack.json does not have attribute 'jar'
modpack.cannot_read_version=Failed to gather the game version
modpack.not_a_valid_location=Not a valid modpack location
modpack.name=Modpack Name
modpack.not_a_valid_name=Not a valid modpack name
modpack.files.servers_dat=Multiplayer servers list
modpack.files.saves=Saved games
modpack.files.mods=Mods
modpack.files.config=Mod configs
modpack.files.liteconfig=Mod configurations
modpack.files.resourcepacks=Resource(Texture) packs
modpack.files.options_txt=Game options
modpack.files.optionsshaders_txt=Shaders options
modpack.files.mods.voxelmods=VoxelMods (including VoxelMap) options
modpack.files.dumps=NEI debug output
modpack.files.scripts=MineTweaker configuration
modpack.files.blueprints=BuildCraft blueprints
mods=Mods
mods.choose_mod=Choose your mods
mods.failed=Failed to add mods
mods.add=Add
mods.remove=Remove
mods.default_information=<html><font color=#c0392b>Please ensure that you have installed Forge or LiteLoader before installing mods!<br>You can drop your mod files from explorer/finder, and delete mods by the delete button.<br>Disable a mod by leaving the check box unchecked; Choose an item to get the information.</font></html>
advancedsettings=Advanced
advancedsettings.launcher_visible=Launcher Visibility
advancedsettings.debug_mode=Debug Mode
advancedsettings.java_permanent_generation_space=PermGen Space/MB
advancedsettings.jvm_args=Java VM Arguments
advancedsettings.Minecraft_arguments=Minecraft Arguments
advancedsettings.launcher_visibility.close=Close the launcher when the game launched.
advancedsettings.launcher_visibility.hide=Hide the launcher when the game launched.
advancedsettings.launcher_visibility.keep=Keep the launcher visible.
advancedsettings.launcher_visibility.hide_reopen=Hide the launcher and re-open when game closes.
advancedsettings.game_dir.default=Default (.minecraft/)
advancedsettings.game_dir.independent=Independent (.minecraft/versions/<version name>/, except assets,libraries)
advancedsettings.no_jvm_args=No Default JVM Args
advancedsettings.no_common=Not using common path
advancedsettings.java_args_default=Default java args: -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
advancedsettings.wrapper_launcher=Wrapper Launcher(i.e. optirun...)
advancedsettings.precall_command=Precalling command(will be executed before game launching)
advancedsettings.server_ip=Server Host
advancedsettings.cancel_wrapper_launcher=Cancel Wrapper Launcher
advancedsettings.dont_check_game_completeness=Don't check game completeness
mainwindow.show_log=Show Logs
mainwindow.make_launch_script=Make Launching Script.
mainwindow.make_launch_script_failed=Failed to make script.
mainwindow.enter_script_name=Enter the script name.
mainwindow.make_launch_succeed=Finished script creation.
mainwindow.no_version=No version found. Switch to Game Downloads Tab?
launcher.about=<html>About Author<br/>Minecraft Forum ID: klkl6523<br/>Copyright (c) 2013 huangyuhui<br/>Opened source under GPL v3 license:http://github.com/huanghongxun/HMCL/<br/>This software used project Gson which is under Apache License 2.0, thanks contributors.</html>
launcher.download_source=Download Source
launcher.background_location=Background Location
launcher.common_location=Common Location
launcher.exit_failed=Failed to shutdown.
launcher.versions_json_not_matched=The version %s is malformed! There are a json:%s in this version. Do you want to fix this problem?
launcher.versions_json_not_matched_cannot_auto_completion=The version %s lost version information file, delete it?
launcher.versions_json_not_formatted=The version information of %s is malformed! Redownload it?
launcher.choose_bgpath=Choose background path.
launcher.choose_commonpath=Choose common path.
launcher.commpath_tooltip=<html><body>This app will save all game libraries and assets here unless there are existant files in game folder.</body></html>
launcher.background_tooltip=<html><body>The laucher uses a default background.<br/>If you use custom background.png, link it and it will be used.<br />If there is "bg" subdirectory, this app will chooses one picture in "bgskin" randomly.<br />If you set the background setting, this app will use it.</body></html>
launcher.update_launcher=Check for update
launcher.enable_shadow=Enable Window Shadow
launcher.enable_animation=Enable Animation
launcher.enable_blur=Enable Blur
launcher.theme=Theme
launcher.proxy=Proxy
launcher.decorated=Enable system window border(in order to fix the problem that the ui become all gray in Linux OS)
launcher.modpack=<html><a href="http://blog.163.com/huanghongxun2008@126/blog/static/7738046920160323812771/">Documentations for modpacks.</a></html>
launcher.lang=Language
launcher.restart=Options will be in operations only if restart this app.
launcher.log_font=Log Font
launcher.tab.general=General
launcher.tab.ui=UI
launcher.tab.about=About
launcher.title.game=Games
launcher.title.main=Home
launcher.title.launcher=Launcher
versions.release=Release
versions.snapshot=Snapshot
versions.old_beta=Beta
versions.old_alpha=Old Alpha
versions.manage.rename=Rename this version
versions.manage.rename.message=Please enter the new name
versions.manage.remove=Delete this version
versions.manage.remove.confirm=Sure to remove the version
versions.manage.redownload_json=Redownload Minecraft Configuration(minecraft.json)
versions.manage.redownload_assets_index=Redownload Assets Index
versions.mamage.remove_libraries=Delete library files
advice.os64butjdk32=Your OS is 64-Bit but your Java is 32-Bit. The 64-Bit Java is recommended.
advice.java8=Java 8 is suggested, which can make game run more fluently. And many mods and Minecraft 1.12 and newer versions requires Java 8.
assets.download_all=Download Assets Files
assets.not_refreshed=The assets list is not refreshed, please refresh it once.
assets.failed=Failed to get the list, try again.
assets.list.1_7_3_after=1.7.3 And higher
assets.list.1_6=1.6(BMCLAPI)
assets.unkown_type_select_one=Unknown game version: %s, please choose an asset type.
assets.type=Asset Type
assets.download=Download Assets
assets.no_assets=Assets are not complete, complete them?
assets.failed_download=Failed to download assets, may cause no sounds and language files.
gamedownload.not_refreshed=The game list is not refreshed, please refresh it once.
taskwindow.title=Tasks
taskwindow.single_progress=Single progress
taskwindow.total_progress=Total progress
taskwindow.cancel=Cancel
taskwindow.no_more_instance=Maybe you opened more than one task window, don't open it again!
taskwindow.file_name=Task
taskwindow.download_progress=Pgs.
setupwindow.include_minecraft=Import game
setupwindow.find_in_configurations=Finished importing. You can find it in the configuration selection bar.
setupwindow.give_a_name=Give a name to the new game.
setupwindow.new=New
setupwindow.no_empty_name=Version name cannot be empty.
setupwindow.clean=Clean game files
update.no_browser=Cannot open any browser. The link has been copied to the clipboard. Paste it to a browser address bar to update.
update.should_open_link=Are you willing to update the launcher?
update.newest_version=Newest version:
update.failed=Failed to check for updates.
update.found=(Found Update!)
logwindow.terminate_game=Terminate Game
logwindow.title=Log
logwindow.contact=Contact Us
logwindow.show_lines=Show Lines
logwindow.search=Search
selector.choose=Choose
serverlistview.title=Choose a server
serverlistview.name=Name
serverlistview.type=Type
serverlistview.version=Version
serverlistview.info=Information
minecraft.invalid=Invalid
minecraft.invalid_jar=Invalid Jar
minecraft.not_a_file=Not a file
minecraft.not_found=Not found
minecraft.not_readable=Not readable
minecraft.modified=(Modified!)
color.red=Red
color.blue=Blue
color.green=Green
color.orange=Orange
color.dark_blue=Dark Blue
color.purple=Purple
wizard.next_>=Next >
wizard.next_mnemonic=N
wizard.<_prev=< Prev
wizard.prev_mnemonic=P
wizard.finish=Finish
wizard.finish_mnemonic=F
wizard.cancel=Cancel
wizard.cancel_mnemonic=C
wizard.help=Help
wizard.help_mnemonic=H
wizard.close=Close
wizard.close_mnemonic=C
wizard.summary=Summary
wizard.failed=Failed
wizard.steps=Steps
lang=English
lang.default=Belong to OS language.

View File

@ -0,0 +1,440 @@
# Hello Minecraft! Launcher.
# Copyright (C) 2013 huangyuhui <huanghongxun2008@126.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see {http://www.gnu.org/licenses/}.
#
#author: malyha2014@yandex.ru
launch.failed=Не удалось запустить.
launch.failed_creating_process=Не удалось создать процесс, возможно, ваш путь java - указан не верно, пожалуйста, измените свой путь java.
launch.failed_sh_permission=Не удалось добавить разрешение на запуск скрипта.
launch.failed_packing_jar=Не удалось упаковать в jar.
launch.unsupported_launcher_version=Извините, Launcher не может запустить minecraft, но он повторяет попытку запуска.
launch.too_big_memory_alloc_64bit=Вы выделили слишком много памяти для 32-разрядной ОС java игра скорее всего приведет к крашу. Максимальный объем памяти 1024МБ. Лаунчер будет пытаться запустить его.
launch.too_big_memory_alloc_free_space_too_low=Вы выделили слишком много памяти, потому что размер физической памяти составляет %dMB, ваша игра скорее всего приведет к крашу. Лаунчер будет пытаться запустить его.
launch.cannot_create_jvm=Мы видим, что он не может создать java виртуальная машина. В Java аргументах могут возникнуть проблемы. Вы можете включить режим No args в настройках.
launch.circular_dependency_versions=Нашли круговой версии зависимостей, пожалуйста, проверьте, если ваш клиент был изменен.
launch.not_finished_downloading_libraries=Не закончив загрузку библиотек, продолжить запуск игры?
launch.not_finished_decompressing_natives=Не закончил распаковку библиотек, продолжить запуск игры?
launch.wrong_javadir=Неправильные каталоги java, он будет сброшен по умолчанию каталог java.
launch.exited_abnormally=Игра завершилась крашем, пожалуйста, посетите журнал, или попросить кого-то о помощи.
launch.state.logging_in=Вход
launch.state.generating_launching_codes=Генерирования стартового кода
launch.state.downloading_libraries=Загрузки зависимостей
launch.state.decompressing_natives=Туземцев распаковки
launch.state.waiting_launching=Ждем запуска игры
install.no_version=Версия не найдена.
install.no_version_if_intall=Нужная версия не найдена, вы хотите, чтобы автоматически установилась версия?
install.not_refreshed=Список установки не обновляется.
install.download_list=Скачать список
install.liteloader.get_list=Получить список LiteLoader
install.liteloader.install=Установить LiteLoader
install.forge.get_list=Получить список Forge
install.forge.install=Установить Forge
install.forge.get_changelogs=Получить список изменений Forge
install.optifine.install=Установить OptiFine
install.optifine.get_list=Получить OptiFine лист
install.optifine.get_download_link=Получить скачивание OptiFine
install.failed_forge=Не удалось установить 'Forge'.
install.failed_optifine=Не удалось установить 'OptiFine'.
install.failed_liteloader=Не удалось установить 'LiteLoader'.
install.failed_download_forge=Не удалось скачать 'Forge'.
install.failed_download_optifine=Не удалось скачать 'OptiFine'.
install.failed=Не удалось установить
install.success=Успешная установка
install.no_forge=Нету Forge
install.choose_forge=Выберите версию, которую вы хотите установить Forge
install.version=Версия
install.mcversion=Версия игры
install.time=Время
install.release_time=Время выпуска
install.type=Тип
install.please_refresh=Если вы хотите установить что-то, пожалуйста, нажмите кнопку "Обновить".
crash.launcher=Лаунчер крашнулся!
crash.minecraft=Minecraft крашнулся!
login.choose_charactor=Пожалуйста, выберите символ, который вы хотите
login.no_charactor=Нет персонажа на этом аккаунте.
login.your_password=Пароль
login.failed=Не удалось войти
login.no_Player007=Не задано имя пользователя!
login.wrong_password=Неправильный пароль или имя пользователя
login.invalid_username=Неверное имя пользователя
login.invalid_uuid_and_username=Недопустимый UUID и имя пользователя
login.invalid_password=Неверный пароль
login.invalid_access_token=Недопустимый маркер доступа
login.changed_client_token=Ответ сервера был изменен маркер клиента.
login.not_email=Имя пользователя-это адрес электронной почты.
login.type=Логин
login.username=Ник
login.account=Почта
login.invalid_token=Пожалуйста, выйдите и повторно введите пароль для входа в систему.
login.no_valid_character=Не допустимый характер, пожалуйста, посетите skinme.cc и создайте своего собственного персонажа.
proxy.username=Аккаунт
proxy.password=Пароль
proxy.host=Хост
proxy.port=Порт
login.failed.connect_authentication_server=Не удается подключиться к серверу авторизации. Проверьте вашу сеть.
login.profile.not_logged_in=Вы не вошли в систему, Вы не можете изменить профиль!
login.profile.selected=Не могу изменить профиль, выйдите и повторите.
login.methods.yggdrasil=Email и пароль
login.methods.offline=Введите ваш ник
login.methods.no_method=Нет способа входа
log.playername_null=Ник игрока пусто.
minecraft.no_selected_version=Не выбрана Minecraft версия
minecraft.wrong_path=Неправильный путь Minecraft, лаунчер не может найти путь.
operation.stopped=Операция была прервана.
operation.confirm_stop=Прекращать операции?
ui.login.password=Пароль
ui.more=Больше
crash.advice.UnsupportedClassVersionError=Может быть, ваша версия java старая, попробуйте обновить java.
crash.advice.ConcurrentModificationException=Может быть, ваш java новее, чем 1.8.0_11, вы можете понизить до версии Java 7.
crash.advice.ClassNotFoundException=Minecraft или моды, являются неполными. Повторите, если есть какие-то библиотеки, которые не скачали или обновить игру и модов! Или вы можете попробовать настройки игры -> Управление (версии) -> библиотека удалить файлы, чтобы решить проблему.
crash.advice.NoSuchFieldError=Minecraft или моды, являются неполными. Повторите, если есть какие-то библиотеки, которые не скачали или обновить игру и моды!
crash.advice.LWJGLException=Может быть, ваш видео драйвер не работает, пожалуйста, обновите ваш видео драйвер.
crash.advice.SecurityException=Может быть, вы изменили minecraft.jar но не удалили META-INF.
crash.advice.OutOfMemoryError=Максимум памяти для JVM слишком мал, пожалуйста, измените его.
crash.advice.otherwise=Может быть моды вызвали проблемы.
crash.advice.OpenGL=Может быть драйвера вызвали проблемы.
crash.advice.no_lwjgl=Может быть драйвера вызвали проблемы.
crash.advice.no=Никакие советы.
crash.user_fault=Вашей операционной системы или среды Java не может быть установлен неправильно, в результате сбой этой программы, пожалуйста, проверьте вашу среду Java или компьютер!
crash.headless=Если ваша ОС Linux может использовать Oracle версии JDK вместо OpenJDK, то или добавить "-Djava.awt.headless=false" аргумент JVM, или проверить, если ваш сервер работает нормально.
crash.NoClassDefFound=Пожалуйста, проверьте "Launcher" программное обеспечение в комплекте.
crash.error=Minecraft крашнулся.
crash.main_class_not_found=Главный Класс не найден, может быть ваш МК был нарушен.
crash.class_path_wrong=Может запустить скрипт неправильный.
ui.label.newProfileWindow.new_profile_name=Новое Имя профиля:
ui.label.newProfileWindow.copy_from=Скопировать из:
ui.newProfileWindow.title=Новый конфиг
ui.button.ok=OK
ui.button.refresh=Обновить
ui.button.run=Войти в игру
ui.button.settings=Настройки
ui.button.about=About
ui.button.others=Другие
ui.button.logout=Выйти
ui.button.download=Скачать
ui.button.retry=Повторить
ui.button.delete=Удалить
ui.button.install=Установить
ui.button.info=Информация
ui.button.save=Сохранить
ui.button.copy=Скопировать
ui.button.clear=Очистить
ui.button.close=Закрыть
ui.button.explore=Выбрать
ui.button.test=Тест
ui.button.preview=Показать
button.cancel=Отменить
button.ok=OK
button.yes=Да
button.no=Нет
ui.label.version=Версия
ui.label.password=Пароль
ui.label.profile=Профиль
ui.message.first_load=Пожалуйста, введите ваш ник.
ui.message.enter_password=Пожалуйста, введите Ваш пароль.
ui.message.launching=Запуск...
ui.message.making=Генерация...
ui.message.sure_remove=Не забудьте удалить профиль %s?
ui.message.update_java=Пожалуйста, обновите ваш Java.
ui.message.open_jdk=Мы уже выяснили, что вы начали это приложение, используя OpenJDK, который станет причиной стольких бед для рисования интерфейса. Мы предлагаем Вам вместо того, чтобы с помощью Oracle версии JDK.
ui.label.settings=Настройки
ui.label.crashing=<html>Launcher крашнулся!</html>
ui.label.crashing_out_dated=<html>Launcher крашнулся! Ваш лаунчер устарел. Обновить его</html>
ui.label.failed_set=Не удалось установить:
download=Скачать
download.mojang=Mojang
download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/)
download.rapid_data=RapidData (https://www.rapiddata.org/)
download.not_200=Не удалось скачать, код ответа
download.failed=Не удалось скачать
download.successfully=Успешно скачал
download.source=Скачать Исходник
message.error=Ошибка
message.cannot_open_explorer=Не можете открыть проводник:
message.cancelled=Отменен
message.info=Информация
message.loading=Загрузка...
folder.game=Директория
folder.mod=Моды
folder.coremod=Ядро
folder.config=Конфигурации
folder.resourcepacks=Ресурс пак
folder.screenshots=Скриншоты
folder.saves=Сохранить
settings.tabs.game_download=Скачать игру
settings.tabs.installers=Установщик
settings.tabs.assets_downloads=Дополнения
settings=Настройки
settings.explore=Обзор...
settings.manage=Управлять
settings.cannot_remove_default_config=Не удается удалить конфигурацию по умолчанию.
settings.max_memory=Выделение памяти
settings.java_dir=Путь к Java
settings.game_directory=Директория
settings.dimension=Разрешение
settings.fullscreen=Полноэкранный режим
settings.update_version=Обновление версии в формате json.
settings.run_directory=Выбор каталога
settings.physical_memory=Размер физической памяти
settings.choose_javapath=Выбрать каталог Java.
settings.default=По умолчанию
settings.custom=Выбрать
settings.choose_gamedir=Выбрать директорию игры
settings.failed_load=Не смог файл загрузить настройки. Удалить его?
settings.test_game=Тестовая игра
settings.type.none=Нет версии игры, пожалуйста, откройте раздел скачать игру.
settings.type.global=<html><a href="">Нажмите здесь, чтобы перейти в специализированных версий. Сейчас это глобальная настройка.</a></html>
settings.type.special=<html><a href="">Нажмите здесь, чтобы перейти в глобальные настройки. Не это версии специализированных условиях.</a></html>
modpack=Мод пак
modpack.choose=Выбрать zip-файл, пакет, который вы хотите импортировать. Если вы хотите обновить пакет, пожалуйста, введите версию вы хотите обновить.
modpack.export_error=Не удалось экспортировать пакет, может быть Формат вашей игровой директории некорректно или не работать с файлами.
modpack.export_finished=Экспорт произведений, готовые. Смотреть
modpack.included_launcher=В пакет входит пусковая установка, вы можете опубликовать его сразу.
modpack.not_included_launcher=Вы можете использовать пакет, нажав кнопку "Импорт произведений".
modpack.enter_name=Введите желаемое имя для этой игры.
modpack.task.save=Эскпортировать Modpack
modpack.task.install=Импортировать Modpack
modpack.task.install.error=Не удалось установить пакет. Может быть, файлы неправильно, или возникла проблема управления.
modpack.task.install.will=Установить пакет:
modpack.wizard=Экспорт modpack мастер
modpack.wizard.step.1=Основные варианты
modpack.wizard.step.1.title=Набор основных вариантов modpack.
modpack.wizard.step.initialization.include_launcher=Включить лаунчер
modpack.wizard.step.initialization.exported_version=Экспортируемые версии игры
modpack.wizard.step.initialization.save=Выберите папку для экспорта игровых файлов для
modpack.wizard.step.initialization.warning=<html>Прежде чем сделать modpack, вы должны убедиться, что ваша игра сможет успешно запустить,<br/>и что ваш minecraft-это релиз, а не снимок.<br/>а что нельзя добавить модов, которые не позволили раздавать modpack.</html>
modpack.wizard.step.2=Выбор файлов
modpack.wizard.step.2.title=Выберите файлы, которые Вы не хотите положить в modpack.
modpack.wizard.step.3=Описание
modpack.wizard.step.3.title=Опишите ваш modpack.
modpack.desc=Опишите свою modpack, включая меры предосторожности, changlog, поддерживая уценки(также поддерживает онлайн-картинки).
modpack.incorrect_format.no_json=Формат произведений, является неверным, пакет.json-это отсутствует.
modpack.incorrect_format.no_jar=Формат modpack неправильно, пакет.json не имеет атрибут 'банку'
modpack.cannot_read_version=Не удалось собрать версии игры
modpack.not_a_valid_location=Не является допустимым modpack расположение
modpack.name=Modpack Название
modpack.not_a_valid_name=Не является допустимым modpack название
modpack.files.servers_dat=Список многопользовательских серверов
modpack.files.saves=Сохраненные игры
modpack.files.mods=Моды
modpack.files.config=Mod конфигурации
modpack.files.liteconfig=Mod конфигурации
modpack.files.resourcepacks=Ресурс(текстур) паки
modpack.files.options_txt=Варианты игры
modpack.files.optionsshaders_txt=Варианты шейдеры
modpack.files.mods.voxelmods=VoxelMods (включая VoxelMap) функции
modpack.files.dumps=NEI отладочный вывод
modpack.files.scripts=MineTweaker конфигурации
modpack.files.blueprints=BuildCraft чертежи
mods=Моды
mods.choose_mod=Выбрать ваши моды
mods.failed=Не удалось добавить моды
mods.add=Добавить
mods.remove=Удалить
mods.default_information=<html><font color=#c0392b>Пожалуйста, убедитесь, что у вас есть установленный Forge или LiteLoader перед установкой модов!<br>Вы можете оставить свой mod файл из проводника/Finder и удаление модов с помощью кнопки удалить.<br>Отключить мод, оставив флажок снят; выбрать товар, чтобы получить информацию.</font></html>
advancedsettings=Расширенный
advancedsettings.launcher_visible=При запуске Minecraft
advancedsettings.debug_mode=Режим отладки
advancedsettings.java_permanent_generation_space=PermGen Space/MB
advancedsettings.jvm_args=Java VM Аргументы
advancedsettings.Minecraft_arguments=Minecraft Аргументы
advancedsettings.launcher_visibility.close=Закрыть лаунчер, если игра запущена.
advancedsettings.launcher_visibility.hide=Скрывать лаунчер, когда игра запущена.
advancedsettings.launcher_visibility.keep=Оставить лаунчер видимым.
advancedsettings.launcher_visibility.hide_reopen=Скрывать лаунчер и повторно открывать, когда выйдите из игры.
advancedsettings.game_dir.default=По умолчанию (.minecraft/)
advancedsettings.game_dir.independent=Независимые (.minecraft/версии/<номер версии>/, за исключением активов,библиотеки)
advancedsettings.no_jvm_args=No Default JVM Args
advancedsettings.no_common=Не использовать общий путь
advancedsettings.java_args_default=Default java args: -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
advancedsettings.wrapper_launcher=Лаунчер-оболочку(как и optirun...)
advancedsettings.precall_command=Команда Precalling(будут выполняться до запуска игры)
advancedsettings.server_ip=Сервера
advancedsettings.cancel_wrapper_launcher=Отмена запуска оболочки
advancedsettings.dont_check_game_completeness=Не проверить полноту игры
mainwindow.show_log=Показать Логи
mainwindow.make_launch_script=Сделать запуск скрипта.
mainwindow.make_launch_script_failed=Не удалось сделать скрипт.
mainwindow.enter_script_name=Введите имя скрипта.
mainwindow.make_launch_succeed=Закончил создание скрипта.
mainwindow.no_version=Версии Minecraft не найдены. Переключить на вкладку загрузки версии для игры в Minecraft?
launcher.about=<html>Об Авторе<br/>Майнкрафт форум ID: klkl6523<br/>Copyright (c) 2013 huangyuhui<br/>Opened source under GPL v3 license:http://github.com/huanghongxun/HMCL/<br/>This software used project Gson which is under Apache License 2.0, thanks contributors.</html>
launcher.download_source=Скачать Исходники
launcher.background_location=Фон Расположение
launcher.common_location=Общее Расположение
launcher.exit_failed=Не удалось закрыть.
launcher.versions_json_not_matched=Версия %s уродлив! Есть в формате json:%s в этой версии. Хотите ли вы решить эту проблему?
launcher.versions_json_not_matched_cannot_auto_completion=Версия %s потерянной информации версии файла, удалить его?
launcher.versions_json_not_formatted=Сведения о версии %s уродлив! Повторная загрузка?
launcher.choose_bgpath=Выберите фоновый пути.
launcher.choose_commonpath=Выбрать общий путь.
launcher.commpath_tooltip=<html><body>Это приложение будет сохранять все игровые библиотеки здесь, если там нет файлов в папке с игрой.</body></html>
launcher.background_tooltip=<html><body>Лаучер использует по умолчанию фон.<br/>Если вы используете пользовательский фон.PNG, ссылку и оно будет использоваться.<br />Если есть "БГ" подкаталог, это приложение выбирает одну картинку в "bgskin" случайно.<br />Если вы установите параметр фон, это приложение будет использовать его.</body></html>
launcher.update_launcher=Проверить обновления
launcher.enable_shadow=Включить тень окна
launcher.enable_animation=Включить анимацию
launcher.enable_blur=Включить размытие
launcher.theme=Тема
launcher.proxy=Прокси
launcher.decorated=Включить границы окна(для того, чтобы исправить проблему, если в пользовательском интерфейсе становится все серое в ОС Linux)
launcher.modpack=<html><a href="http://blog.163.com/huanghongxun2008@126/blog/static/7738046920160323812771/">Документация по modpacks.</a></html>
launcher.lang=Язык (Language)
launcher.restart=Варианты будут в операции, только если перезапустить это приложение.
launcher.log_font=Шрифт лога
launcher.tab.general=Общие
launcher.tab.ui=Интерфейс
launcher.tab.about=Версия
launcher.title.game=Игры
launcher.title.main=Главная
launcher.title.launcher=Лаунчер
versions.release=Release
versions.snapshot=Snapshot
versions.old_beta=Beta
versions.old_alpha=Old Alpha
versions.manage.rename=Переименовать эту версию
versions.manage.rename.message=Пожалуйста, введите новый ник
versions.manage.remove=Удалить версию
versions.manage.remove.confirm=Не забудьте удалить версию
versions.manage.redownload_json=Повторная загрузка конфигурации в Minecraft(minecraft.json)
versions.manage.redownload_assets_index=Перекачать библиотеки
versions.mamage.remove_libraries=Библиотека удалить файлы
advice.os64butjdk32=Ваша ОС 64-битная, но ваш java является 32-разрядной. Вам рекомендуется 64-разрядная версия java.
advice.java8=Java 8 представляет предположил, что может сделать игру работать более производительной. Многие моды и Minecraft 1.12 и новые версии требуют java 8.
assets.download_all=Скачать Файлы
assets.not_refreshed=Список библиотек не обновляется, пожалуйста, обновите его один раз.
assets.failed=Не удалось получить список, попробуйте еще раз.
assets.list.1_7_3_after=1.7.3 и выше
assets.list.1_6=1.6(BMCLAPI)
assets.unkown_type_select_one=Неизвестная версия игры: %s, пожалуйста, выберите тип библиотеки.
assets.type=Тип библиолтек
assets.download=Скачать библиотеки
assets.no_assets=Библиотеки не завершены, завершить их?
assets.failed_download=Не удалось загрузить библиотеки из-за этого может не быть никаких звуков и языковых файлов.
gamedownload.not_refreshed=Список игр не обновляется, пожалуйста, обновите его один раз.
taskwindow.title=Задачи
taskwindow.single_progress=Один прогресс
taskwindow.total_progress=Общий прогресс
taskwindow.cancel=Отменить
taskwindow.no_more_instance=Может быть, вы открыли больше чем одно окно задач, не открыть его снова!
taskwindow.file_name=Задача
taskwindow.download_progress=%.
setupwindow.include_minecraft=Импорт игры
setupwindow.find_in_configurations=Завершения импорта. Вы можете найти его в панели выбора конфигурации.
setupwindow.give_a_name=Дайте название новой игры.
setupwindow.new=Новое
setupwindow.no_empty_name=Название версии не может быть пустым.
setupwindow.clean=Чистые файлы игры
update.no_browser=Не может открыть любым браузером. Ссылка была скопирована в буфер обмена. Вставьте его в адресную строку браузера обновить.
update.should_open_link=Вы готовы обновить лаунчер?
update.newest_version=Самая новая версия:
update.failed=Не удалось проверить наличие обновлений.
update.found=(Нашел Обновление!)
logwindow.terminate_game=Завершить игру
logwindow.title=Лог
logwindow.contact=Свяжитесь с нами
logwindow.show_lines=Показать строки
logwindow.search=Поиск
selector.choose=Выбрать
serverlistview.title=Выбрать сервер
serverlistview.name=Название
serverlistview.type=Тип
serverlistview.version=Версия
serverlistview.info=Информация
minecraft.invalid=Invalid
minecraft.invalid_jar=Invalid Jar
minecraft.not_a_file=Not a file
minecraft.not_found=Not found
minecraft.not_readable=Not readable
minecraft.modified=(Modified!)
color.red=Красный
color.blue=Голубой
color.green=Зеленый
color.orange=Оранжевый
color.dark_blue=Темно-Синий
color.purple=Фиолетовый
wizard.next_>=Следующий >
wizard.next_mnemonic=N
wizard.<_prev=< Предыдущий
wizard.prev_mnemonic=P
wizard.finish=Завершить
wizard.finish_mnemonic=F
wizard.cancel=Отменить
wizard.cancel_mnemonic=C
wizard.help=Помощь
wizard.help_mnemonic=H
wizard.close=Закрыть
wizard.close_mnemonic=C
wizard.summary=Summary
wizard.failed=Failed
wizard.steps=Steps
lang=Русский
lang.default=Выбран язык операционной системы.

View File

@ -0,0 +1,438 @@
# Hello Minecraft! Launcher.
# Copyright (C) 2013 huangyuhui <huanghongxun2008@126.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see {http://www.gnu.org/licenses/}.
#
#author: LADBOSSHOSS
launch.failed=Mở minecraft không thành công.
launch.failed_creating_process=Tạo tiến trình chạy thất bại, có thể nơi bạn cài java đã bị sai, vui lòng hãy chỉnh sửa lại đường dẫn cài java.
launch.failed_sh_permission=Thêm quyền vào đoạn mã chạy launcher thất bại.
launch.failed_packing_jar=Đóng gói file jar thất bại
launch.unsupported_launcher_version=Xin lỗi, launcher không mở được minecraft, nhưng launcher sẽ cố gắng để chạy.
launch.too_big_memory_alloc_64bit=Bạn đã cho minecraft dùng quá nhiều RAM, vì máy bạn dùng 32-Bit Java Runtime Environment, Minecraft có thể bị crash. Mức RAM cho minecraft dùng cao nhất là 1024MB. Launcher sẽ thử để chạy mnecraft
launch.too_big_memory_alloc_free_space_too_low=Bạn đã cho minecraft dùng quá nhiều RAM, vì ram của bạn chỉ có %dMB, minecraft có thể bị crash. Launcher sẽ thử để chạy
launch.cannot_create_jvm=Launcher không tạo được máy ảo java để chạy minecraft. Java argument có thể có vấn đề, bạn có thể bật chế độ no args trong cài đặt
launch.circular_dependency_versions=Đã tìm thấy phiên bản minecraft không phù hợp, xin hãy xem phiên bản minecraft đã được chỉnh sửa hay không.
launch.not_finished_downloading_libraries=Không download được libraries cho minecraft, có tiếp tục mở game không?
launch.not_finished_decompressing_natives=Không giải nén được libraries cho minecraft, có tiếp tục mở game không?
launch.wrong_javadir=Đường dẫn cài java bị sai, launcher sẽ reset lại đường dẫn java đúng
launch.exited_abnormally=Minecraft đã bị thoát bất thường, hãy xem file log, hoặc nói với người khác giúp.
launch.state.logging_in=Đang đăng nhập...
launch.state.generating_launching_codes=Đang tạo code chạy minecraft
launch.state.downloading_libraries=Downloading...
launch.state.decompressing_natives=Giải nén...
launch.state.waiting_launching=Waiting for game launching
install.no_version=Không tìm thấy phiên bản minecraft.
install.no_version_if_intall=Phiên bản cần thiết không thấy, có nên cài đặt phiên bản tự động không?
install.not_refreshed=Danh sách cài chưa được làm mới
install.download_list=Danh sách download
install.liteloader.get_list=Lấy LiteLoader List
install.liteloader.install=Cài LiteLoader
install.forge.get_list=Get Forge List
install.forge.install=Cài Forge
install.forge.get_changelogs=Lấy Forge Changelogs
install.optifine.install=Cài OptiFine
install.optifine.get_list=Lấy OptiFine Download List
install.optifine.get_download_link=Lấy download link của Optifine
install.failed_forge=Không cài được Forge
install.failed_optifine=Không cài được Optifine
install.failed_liteloader=Không cài được LiteLoader
install.failed_download_forge=Failed to Download Forge
install.failed_download_optifine=Failed to Download OptiFine
install.failed=Không cài được
install.success=Cài đặt thành công
install.no_forge=No Forge
install.choose_forge=Chọn phiên bản bạn muốn cài Forge
install.version=Phiên bản
install.mcversion=Game Version
install.time=Time
install.release_time=Thời gian phát hành
install.type=Type
install.please_refresh=Nếu bạn muốn cài một thứ gì đó, hãy ấn nút "Tải lại".
crash.launcher=Launcher bị crash rồi!
crash.minecraft=Minecraft bị crash rồi!
login.choose_charactor=Xin hãy chọn nhân vật bạn muốn
login.no_charactor=Không có nhân vật trong tài khoản này.
login.your_password=Mật khẩu của bạn
login.failed=Không đăng nhập được
login.no_Player007=You have not set username!
login.wrong_password=Mật khẩu hoặc username đã sai.
login.invalid_username=Username không đúng
login.invalid_uuid_and_username=UUID và username không đúng
login.invalid_password=Mật khẩu không đúng
login.invalid_access_token=Access Token bị sai
login.changed_client_token=Server đã thay đổi client token.
login.not_email=Username phải là email
login.type=Login
login.username=Username:
login.account=Email:
login.invalid_token=Hãy đăng xuất và đăng nhập lại.
login.no_valid_character=Không có nhân vật hợp lệ, hãy vào trang web skinme.cc và tạo một nhân vật cho bạn.
proxy.username=Tài khoản
proxy.password=Mật khẩu
proxy.host=Host
proxy.port=Số cổng
login.failed.connect_authentication_server=Không thể kết nối đến máy chủ xác thực, hãy xem lại kết nối mạng của bạn
login.profile.not_logged_in=Không đăng nhập vào được và không thể chính sửa cấu hình.
login.profile.selected=Không chỉnh sửa được cấu hình, bạn phải đăng xuất ra rồi làm lại.
login.methods.yggdrasil=Mojang
login.methods.offline=Offline
login.methods.no_method=Không có chế độ nào
log.playername_null=Tên của người chơi trống.
minecraft.no_selected_version=Bạn chưa chọn phiên bản minecraft!
minecraft.wrong_path=Đường dẫn minecraft bị sai, launcher không tìm thấy được đường dẫn
operation.stopped=Quá trình đã được dừng lại.
operation.confirm_stop=Dừng lại quá trình không?
ui.login.password=Mật khẩu
ui.more=Xem thêm
crash.advice.UnsupportedClassVersionError=Phiên bản java của bạn quá cũ, hãy thử cập nhật phiên bản java
crash.advice.ConcurrentModificationException=Có thể phiên bản java của bạn mới hơn phiên bản 1.8.0_11, Bạn có thể hạ cấp java xuông phiên bản 7.
crash.advice.ClassNotFoundException=Minecraft hoặc mod chưa được hoàn thành. Hãy thử lại nếu có một số libraries chưa được tải về hoặc cập nhật phiên bản minecraft và mod. Hoặc bạn có thể chọn Game Settings -> Manage (Version) -> Xóa libraries để sửa lỗi.
crash.advice.NoSuchFieldError=Minecraft hoặc mod chưa được hoàn thành. Hãy thử lại nếu có một số libraries chưa được tải về hoặc cập nhật phiên bản minecraft và mod.
crash.advice.LWJGLException=Có thể video driver của bạn không hoạt động tốt cho lắm, hãy thử cập nhật video driver của bạn.
crash.advice.SecurityException=Có thể bạn đã chỉnh sửa file minecraft.jar nhưng bạn chưa xóa file META-INF
crash.advice.OutOfMemoryError=Lượng RAM cao nhất của máy áo java quá nhỏ, hãy chỉnh sửa nó.
crash.advice.otherwise=Có thể mods đã làm ra lỗi.
crash.advice.OpenGL=Có thể drivers đã làm ra lỗi
crash.advice.no_lwjgl=Có thể drivers đã làm ra lỗi
crash.advice.no=Không có lời khuyên.
crash.user_fault=Hệ điều hành hoặc java của bạn có thể đã cài đặt không đúng cách dẫn đến sự crash của launcher, hãy cài lại java và xem lại máy tính của bạn!
crash.headless=Nếu hệ điều hành của bạn là Linux, hãy dùng Oracle JDK thay cho OpenJDK, hoặc thêm vào "-Djava.awt.headless=false" vào argument của máy ảo java, hoặc xem nếu Xserver có hoạt động hay không
crash.NoClassDefFound=Hãy kiểm tra phần mềm "HMCL" đã hoàn thành
crash.error=Minecraft đã bị crash.
crash.main_class_not_found=Class chính của minecraft không tìm thấy, có lẽ phiên bản minecraft đã bị lỗi.
crash.class_path_wrong=Có lẽ đoạn mã chạy launcher đã bị lỗi
ui.label.newProfileWindow.new_profile_name=Tên cấu hình mới:
ui.label.newProfileWindow.copy_from=Copy từ:
ui.newProfileWindow.title=Cấu hình mới
ui.button.ok=OK
ui.button.refresh=Tải lại
ui.button.run=Play
ui.button.settings=Cài đặt
ui.button.about=About
ui.button.others=Khác
ui.button.logout=Đăng xuất
ui.button.download=Tải về
ui.button.retry=Thử lại
ui.button.delete=Xóa
ui.button.install=Cài
ui.button.info=Thông tin
ui.button.save=Lưu
ui.button.copy=Copy
ui.button.clear=Xóa
ui.button.close=Đóng
ui.button.explore=Explore
ui.button.test=Test
ui.button.preview=Xem trước
button.cancel=Thoát
button.ok=OK
button.yes=Yes
button.no=No
ui.label.version=Phiên bản
ui.label.password=Mật khẩu
ui.label.profile=Cấu hình
ui.message.first_load=Hãy nhập username của bạn vào.
ui.message.enter_password=Hãy nhập mật khẩu của bạn
ui.message.launching=Launching...
ui.message.making=Generating...
ui.message.sure_remove=Bạn có chắc chắn xóa cấu hình %s không?
ui.message.update_java=Hãy cập nhật phiên bản java của bạn.
ui.label.settings=Cài đặt
ui.label.crashing=<html>HMCL Minecraft Launcher đã bị crash!</html>
ui.label.crashing_out_dated=<html>HL Minecraft Launcher đã bị crash! Và launcher của bạn không phải là phiên bản mới nhất. cập nhật nó đi!</html>
ui.label.failed_set=Failed to set:
ui.message.open_jdk=We have found that you started this application using OpenJDK, which will cause so many troubles drawing the UI. We suggest you using Oracle JDK instead.
download=Download
download.mojang=Mojang
download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/)
download.rapid_data=RapidData (https://www.rapiddata.org/)
download.not_200=Download không thành công, the response code
download.failed=Download không thành công.
download.successfully=Download thành công.
download.source=Download Source
message.error=Lỗi
message.cannot_open_explorer=Cannot open explorer:
message.cancelled=Đã thoảt
message.info=Thông tin
message.loading=Loading...
folder.game=Thư mục minecraft
folder.mod=Mod
folder.coremod=Core Mod
folder.config=Cấu hình
folder.resourcepacks=Resourcepacks
folder.screenshots=Ảnh chụp màn hình
folder.saves=Thế giới
settings.tabs.game_download=Games
settings.tabs.installers=Trình cài đặt
settings.tabs.assets_downloads=Assets
settings=Settings
settings.explore=Explore
settings.manage=Manage
settings.cannot_remove_default_config=Không thể xóa cấu hình mặc định
settings.max_memory=RAM cao nhất(MB)
settings.java_dir=Thư mục Java
settings.game_directory=Thư mục minecraft
settings.dimension=Khu vực cửa sổ của game
settings.fullscreen=Toàn màn hình
settings.update_version=Update version json.
settings.run_directory=Run Directory(Version Isolation)
settings.physical_memory=Dung lượgg RAM vật lý
settings.choose_javapath=Chọn thư mục java
settings.default=Mặc định
settings.custom=Tùy chỉnh
settings.choose_gamedir=Chọn thư mục game
settings.failed_load=Đọc file cấu hình thất bại. Xóa nó không?
settings.test_game=Chạy thử game
settings.type.none=No version here, please turn to game download tab.
settings.type.global=<html><a href="">Click here to switch to version specialized setting. Now it is global setting.</a></html>
settings.type.special=<html><a href="">Click here to switch to global setting. Not it is version specialized setting.</a></html>
modpack=Mod pack
modpack.choose=Chọn modpack zip file mà bạn muốn nhập vào. Nếu bạn muốn cập nhật phiên bản của modpack, Hãy nhập vào phiên bản bạn muốn cập nhật.
modpack.export_error=Xuất modpack ra thất bại, có thể định dạng của thư mục chứa dữ liệu bị sai hoặc không thể quản lý file.
modpack.export_finished=Xuất modpack ra thành công. Xem
modpack.included_launcher=Modpack đã được tích hợp trong launcher, Bạn có thể publish nó.
modpack.not_included_launcher=Dùng nút "Cài Modpack" để cài modpack.
modpack.enter_name=Hãy cho một cái tên mà bạn thích.
modpack.task.save=Xuất Modpack
modpack.task.install=Cài Modpack
modpack.task.install.error=Cài modpack không thành công, có lẽ file modpack không đúng hoặc là không thể quản lý file
modpack.task.install.will=Launcher sẽ cài modpack:
modpack.wizard=Công cụ xuất modpack
modpack.wizard.step.1=Tùy chọn cơ bản
modpack.wizard.step.1.title=Chọn các tùy chọn cơ bản cho modpack.
modpack.wizard.step.initialization.include_launcher=Include the launcher
modpack.wizard.step.initialization.exported_version=Phiên bản đã được xuất
modpack.wizard.step.initialization.save=Chọn một thư mục mà bạn muốn xuất game data
modpack.wizard.step.initialization.warning=<html>Trước khi tạo modpack, bạn phải chắc chắn rằng minecraft có thể chạy,<br/>và phiên bản minecraft là chính thức, không phải là snapshot.<br/>và nó không cho thêm mods mà không có quyền để tạo modpack.</html>
modpack.wizard.step.2=Chọn file
modpack.wizard.step.2.title=Chọn file bạn không muốn thêm vào modpack
modpack.wizard.step.3=Miêu tả
modpack.wizard.step.3.title=Miêu tả modpack của bạn.
modpack.desc=Miêu tả modpack của bạn, bao gồm đề phòng, sự thay đổi, dấu gạch xuống(và một số hình ảnh).
modpack.incorrect_format.no_json=Định dạng của modpack không đúng, file pack.json bị thiếu
modpack.incorrect_format.no_jar=Định dạng của modpack không đúng, file pack.json không có đặc tính jar
modpack.cannot_read_version=Lấy phiên bản của minecraft thất bại
modpack.not_a_valid_location=Nơi chứa modpack không đúng
modpack.name=Tên của modpack
modpack.not_a_valid_name=Tên của modpack không đúng
modpack.files.servers_dat=Danh sách server
modpack.files.saves=Thư mục chứa dữ liệu thế giới
modpack.files.mods=Mods
modpack.files.config=Cấu hình của mod
modpack.files.liteconfig=Cấu hình của LiteLoader
modpack.files.resourcepacks=Resource(Texutre) packs
modpack.files.options_txt=Tùy chọn của game
modpack.files.optionsshaders_txt=Tùy chọn của shaders
modpack.files.mods.voxelmods=Tùy chọn của VoxelMod(tính cả VoxelMap)
modpack.files.dumps=NEI debug output
modpack.files.scripts=Cấu hình của MineTweaker
modpack.files.blueprints=Bản thiết kế cho BuildCraft
mods=Mods
mods.choose_mod=Chọn mods
mods.failed=Tải mods thất bại
mods.add=Thêm
mods.remove=Xóa
mods.default_information=<html><font color=#c0392b>Bạn hãy chắc chắn rằng bạn đã cài Forge hoặc LiteLoader trước khi cài mods!<br>Bạn có thể kéo file mods vào trong cửa sổ này để thêm, và xóa mods bằng cách ấn nút xóa.<br>Tắt mods bằng cách bỏ dấu v ở chỗ hộp kiểm; Chọn một mục để biết thêm thông tin.</font></html>
advancedsettings=Nâng cao
advancedsettings.launcher_visible=Sự hiển thị của launcher
advancedsettings.debug_mode=Chế độ gỡ lỗi
advancedsettings.java_permanent_generation_space=Dung lượng PermGen/MB
advancedsettings.jvm_args=Arguments của máy ảo java
advancedsettings.Minecraft_arguments=Arguments của minecraft
advancedsettings.launcher_visibility.close=Đóng launcher sau khi minecraft được mở.
advancedsettings.launcher_visibility.hide=Ẩn launcher sau khi minecraft được mở.
advancedsettings.launcher_visibility.keep=Để cho launcher hiển thị.
advancedsettings.launcher_visibility.hide_reopen=Hide the launcher and re-open when game closes.
advancedsettings.game_dir.default=Mặc định (.minecraft/)
advancedsettings.game_dir.independent=Independent (.minecraft/versions/<version name>/, trừ thư mục assets,libraries)
advancedsettings.no_jvm_args=Không có arguments mặc định cho máy ảo java
advancedsettings.no_common=Not using common path
advancedsettings.java_args_default=Java arguments mặc định: -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
advancedsettings.wrapper_launcher=Wrapper Launcher(dạng như optirun...)
advancedsettings.precall_command=Câu lệnh được chạy trước khi game mở
advancedsettings.server_ip=Máy chủ
advancedsettings.cancel_wrapper_launcher=Hủy bỏ Wrapper Launcher
advancedsettings.dont_check_game_completeness=Không kiểm tra game có đầy đủ không.
mainwindow.show_log=Xem logs
mainwindow.make_launch_script=Tạo đoạn mã launching
mainwindow.make_launch_script_failed=Tạo đoạn mã thất bại
mainwindow.enter_script_name=Nhập tên của đoạn mã.
mainwindow.make_launch_succeed=Đã tạo đoạn mã.
mainwindow.no_version=Không có phiên bản minecraft nào được tìm thấy. Chuyển sang tab Game Download?
launcher.about=<html>Về tác giả<br/>Minecraft Forum ID: klkl6523<br/>Copyright (c) 2013 huangyuhui<br/>http://github.com/huanghongxun/HMCL/<br/>Phần mềm này dùng project Gson, cảm ơn người đóng góp.</html>
launcher.download_source=Download Source
launcher.background_location=Background Location
launcher.common_location=Common Location
launcher.exit_failed=Tắt launcher thất bại.
launcher.versions_json_not_matched=The version %s is malformed! There are a json:%s in this version. Do you want to fix this problem?
launcher.versions_json_not_matched_cannot_auto_completion=The version %s lost version information file, delete it?
launcher.versions_json_not_formatted=The version information of %s is malformed! Redownload it?
launcher.choose_bgpath=Choose background path.
launcher.choose_commonpath=Choose common path.
launcher.commpath_tooltip=<html><body>This app will save all game libraries and assets here unless there are existant files in game folder.</body></html>
launcher.background_tooltip=<html><body>This app uses the default background at first.<br />If there is background.png in the directory, it will be used.<br />If there is "bg" subdirectory, this app will chooses one picture in "bgskin" randomly.<br />If you set the background setting, this app will use it.</body></html>
launcher.update_launcher=Check for update
launcher.enable_shadow=Enable Window Shadow
launcher.enable_animation=Enable Animation
launcher.enable_blur=Enable Blur
launcher.theme=Theme
launcher.proxy=Proxy
launcher.decorated=Enable system window border(in order to fix the problem that the ui become all gray in Linux OS)
launcher.modpack=<html><a href="http://blog.163.com/huanghongxun2008@126/blog/static/7738046920160323812771/">Documentations for modpacks.</a></html>
launcher.lang=Language
launcher.restart=Options will be in operations only if restart this app.
launcher.log_font=Log Font
launcher.tab.general=General
launcher.tab.ui=UI
launcher.tab.about=About
launcher.title.game=Phiên bản & Mods
launcher.title.main=HMCL Main
launcher.title.launcher=Launcher
versions.release=Chính thức
versions.snapshot=Snapshot
versions.old_beta=Beta
versions.old_alpha=Old Alpha
versions.manage.rename=Đổi tên phiên bản này
versions.manage.rename.message=Nhập tên mới
versions.manage.remove=Xóa phiên bản này
versions.manage.remove.confirm=Bạn có chắc để xóa phiên bản này không?
versions.manage.redownload_json=Download lại cấu hình của minecraft(minecraft.json)
versions.manage.redownload_assets_index=Download lại Assets Index
versions.mamage.remove_libraries=Xóa libraries file
advice.os64butjdk32=Hệ điều hành của bạn là 64-Bit nhưng phiên bản Java của bạn là 32-Bit. Khuyên bạn nên dùng Java 64-Bit.
advice.java8=Java 8 is suggested, which can make game run more fluently. And many mods and Minecraft 1.12 and newer versions requires Java 8.
assets.download_all=Download file assets
assets.not_refreshed=Danh sách assets chưa được load lại, bạn hãy ấn nút Tải lại.
assets.failed=Lấy danh sách thất bại, hãy thử lại.
assets.list.1_7_3_after=1.7.3 và cao hơn
assets.list.1_6=1.6(BMCLAPI)
assets.unkown_type_select_one=Phiên bản minecraft chưa được biết: %s, hãy chọn một loại asset.
assets.type=Loại asset
assets.download=Download Assets
assets.no_assets=Assets chưa được hoàn thành, hoàn thành nó không?
assets.failed_download=Download asset thất bại, có thể sẽ không có âm thanh và ngôn ngữ.
gamedownload.not_refreshed=Danh sách phiên bản chưa được load lại, bạn hãy ấn nút Tải lại.
taskwindow.title=Tasks
taskwindow.single_progress=Single progress
taskwindow.total_progress=Total progress
taskwindow.cancel=Cancel
taskwindow.no_more_instance=Maybe you opened more than one task window, dont open it again!
taskwindow.file_name=Task
taskwindow.download_progress=Pgs.
setupwindow.include_minecraft=Import game
setupwindow.find_in_configurations=Finished importing. You can find it in the configuration selection bar.
setupwindow.give_a_name=Give a name to the new game.
setupwindow.new=New
setupwindow.no_empty_name=Version name cannot be empty.
setupwindow.clean=Clean game files
update.no_browser=Không thể mở trình duyệt. Đường link đã được copy vào clipboard. Bạn có thể paste nó vào thanh đường link.
update.should_open_link=Bạn có muốn cập nhật launcher không?
update.newest_version=Phiên bản mới nhất:
update.failed=Kiểm tra cập nhật thất bại.
update.found=(Đã tìm thấy bản cập nhật!)
logwindow.terminate_game=Tắt Game
logwindow.title=HMCL Error Log (Hãy đăng cái này lên forum!)
logwindow.contact=Contact Us
logwindow.show_lines=Show Lines
logwindow.search=Search
selector.choose=Chọn
serverlistview.title=Chọn máy chủ
serverlistview.name=Tên
serverlistview.type=Lọai
serverlistview.version=Phiên bản
serverlistview.info=Thông tin
minecraft.invalid=Không hợp lệ
minecraft.invalid_jar=File jar không hợp lệ
minecraft.not_a_file=Not a file
minecraft.not_found=Không tìm thấy
minecraft.not_readable=Không đọc được
minecraft.modified=(Đã sửa đổi!)
color.red=Đỏ
color.blue=Xanh da trời
color.green=Xanh lục
color.orange=Cam
color.dark_blue=Xanh da trời tối
color.purple=Tím
wizard.next_>=Next >
wizard.next_mnemonic=N
wizard.<_prev=< Prev
wizard.prev_mnemonic=P
wizard.finish=Finish
wizard.finish_mnemonic=F
wizard.cancel=Cancel
wizard.cancel_mnemonic=C
wizard.help=Help
wizard.help_mnemonic=H
wizard.close=Close
wizard.close_mnemonic=C
wizard.summary=Summary
wizard.failed=Failed
wizard.steps=Steps
lang=Vietnamese
lang.default=Thuộc về ngôn ngữ của hệ điều hành

View File

@ -0,0 +1,440 @@
# Hello Minecraft! Launcher.
# Copyright (C) 2013 huangyuhui <huanghongxun2008@126.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see {http://www.gnu.org/licenses/}.
#
#author: byStarTW
launch.failed=啟動失敗
launch.failed_creating_process=啟動失敗,在新建新任務時發生錯誤,可能是 Java 路徑錯誤。
launch.failed_sh_permission=為啟動資料添加權限時發生錯誤
launch.failed_packing_jar=在打包jar時發生錯誤
launch.unsupported_launcher_version=對不起本啟動器現在可能不能啟動這個版本的Minecraft但啟動器還是會嘗試啟動請盡快將此問題報告給作者。
launch.too_big_memory_alloc_64bit=您設定的記憶體大小過大由於可能超過了32位元Java的記憶體分配限制所以可能無法啟動遊戲請將記憶體調至1024MB或更小啟動器仍會嘗試啟動。
launch.too_big_memory_alloc_free_space_too_low=您設定的記憶體大小過大,由於超過了系統記憶體大小%dMB所以可能影響遊戲體驗或無法啟動遊戲啟動器仍會嘗試啟動。
launch.cannot_create_jvm=擷取到無法創建Java虛擬機可能是Java參數有問題可以在設定中開啟無參數模式啟動。
launch.circular_dependency_versions=發現遊戲版本多次利用,請確認您的客戶端未被修改或修改導致出現此問題。
launch.not_finished_downloading_libraries=未完成遊戲資料庫的下載,還要繼續啟動遊戲嗎?
launch.not_finished_decompressing_natives=未能解壓遊戲執行庫,還要繼續啟動遊戲嗎?
launch.wrong_javadir=錯誤的Java路徑將自動重置為預設Java路徑。
launch.exited_abnormally=遊戲非正常退出,請查看日誌資料,或聯繫他人尋求幫助。
launch.state.logging_in=登錄中
launch.state.generating_launching_codes=正在生成啟動代碼
launch.state.downloading_libraries=正在下載必要文件
launch.state.decompressing_natives=正在釋放執行庫
launch.state.waiting_launching=等待遊戲啟動
install.no_version=未找到要安裝的對應MC版本
install.no_version_if_intall=未找到要安裝的對應MC版本是否自動安裝需要的MC版本
install.not_refreshed=未重整列表
install.download_list=下載列表
install.liteloader.get_list=獲取LiteLoader列表
install.liteloader.install=安裝LiteLoader
install.forge.get_list=獲取Forge列表
install.forge.install=安裝Forge
install.forge.get_changelogs=獲取Forge更新記錄
install.optifine.install=安裝OptiFine
install.optifine.get_list=獲取OptiFine列表
install.optifine.get_download_link=獲取OptiFine下載地址
install.failed_forge=安裝Forge失敗
install.failed_optifine=安裝OptiFine失敗
install.failed_liteloader=安裝LiteLoader失敗
install.failed_download_forge=下載Forge失敗
install.failed_download_optifine=下載OptiFine失敗
install.failed=安裝失敗
install.success=安裝成功
install.no_forge=沒有安裝Forge
install.choose_forge=選擇你安裝的Forge版本
install.version=版本
install.mcversion=遊戲版本
install.time=時間
install.release_time=釋放時間
install.type=類型
install.please_refresh=如需使用自動安裝請點擊右側重整按鈕
crash.launcher=啟動器崩潰了!
crash.minecraft=Minecraft崩潰了
login.choose_charactor=請選擇您要使用的角色
login.no_charactor=該帳號沒有角色
login.your_password=您的密碼
login.failed=登錄失敗:
login.no_Player007=你還未設定用戶名!
login.wrong_password=可能是您的用戶名或密碼錯誤
login.invalid_username=無效的用戶名
login.invalid_uuid_and_username=無效的UUID和用戶名
login.invalid_password=無效的密碼
login.invalid_access_token=無效的訪問權杖
login.changed_client_token=伺服器回應已經修改客戶端權杖
login.not_email=用戶名必須是郵箱
login.type=登錄
login.username=名字
login.account=郵箱
login.invalid_token=請嘗試登出並重新輸入密碼登錄
login.no_valid_character=無有效的角色自行到skinme.cc登陸並創建角色
proxy.username=帳戶
proxy.password=密碼
proxy.host=主機
proxy.port=Port
login.failed.connect_authentication_server=無法連接認證伺服器,可能是網絡問題
login.profile.not_logged_in=無法修改遊戲資料同時未登錄
login.profile.selected=無法修改遊戲資料. 你必須登出再返回.
login.methods.yggdrasil=正版登錄
login.methods.offline=離線模式
login.methods.no_method=沒有登入方式...
log.playername_null=玩家名為空,這代表著登錄方法出現問題
minecraft.no_selected_version=沒有選擇任何一個Minecraft版本
minecraft.wrong_path=錯誤的Minecraft路徑啟動器未找到設定的Minecraft路徑請檢查。
operation.stopped=操作被強行終止
operation.confirm_stop=真的要終止操作嗎?
ui.login.password=密碼
ui.more=更多
crash.advice.UnsupportedClassVersionError=這可能是因為您的Java版本過於老舊可以嘗試更換最新Java並在版本設定的Java路徑中設定.
crash.advice.ConcurrentModificationException=這可能是因為您的Java版本高於Java 1.8.0_11導致的,可以嘗試卸載Java8安裝Java7。
crash.advice.ClassNotFoundException=Minecraft不完整或Mod衝突如果有未能下載的資料請下載成功後重試或是用戶端損壞請重試請重新製作用戶端或下載整合包解決問題另可嘗試遊戲設定->(版本)管理->刪除庫資料解決問題
crash.advice.NoSuchFieldError=Minecraft不完整或Mod衝突如果有未能下載的資料請下載成功後重試或是用戶端損壞請重試請重新製作用戶端或下載整合包解決問題。
crash.advice.LWJGLException=您的電腦不正常,可能需要使用驅動精靈或其他安裝器更新顯卡驅動。
crash.advice.SecurityException=可能是您修改了minecraft.jar但未刪除META-INF資料夾的原因。請通過壓縮軟體刪除jar中的META-INF資料夾。
crash.advice.OutOfMemoryError=記憶體溢出您設定的Minecraft最大記憶體過小請調大
crash.advice.otherwise=可能是Mod或其他問題。
crash.advice.OpenGL=可能是顯卡/聲卡驅動問題也可能是Mod導致的問題。
crash.advice.no_lwjgl=可能是遊戲依賴庫不完整或解壓依賴庫時出錯。可以通過下載整合包解決問題。
crash.advice.no=無建議。
crash.user_fault=您的系統或Java環境可能安裝不當導致本軟體崩潰請檢查您的Java環境或您的電腦可以嘗試重新安裝Java。
crash.headless=如果您的操作系統是Linux請注意不要使用OpenJDK務必使用Oracle JDK或嘗試添加-Djava.awt.headless=false參數或檢查您的Xserver是否正常
crash.NoClassDefFound=請確認HMCL本體是否完整
crash.error=您的Minecraft崩潰了。
crash.main_class_not_found=找不到主類可能是您的JSON資料填寫錯誤。無法啟動遊戲。可以通過下載整合包解決問題。
crash.class_path_wrong=解析Class Path時出現錯誤此錯誤本不應該發生。可能是啟動腳本錯誤請仔細檢查啟動腳本。
ui.label.newProfileWindow.new_profile_name=新配置名:
ui.label.newProfileWindow.copy_from=複製配置:
ui.newProfileWindow.title=新建配置
ui.button.ok=確認
ui.button.refresh=重整
ui.button.run=啟動Minecraft
ui.button.settings=
ui.button.about=關於
ui.button.others=其他
ui.button.logout=登出
ui.button.download=下載
ui.button.retry=重試
ui.button.delete=刪除
ui.button.install=安裝
ui.button.info=信息
ui.button.save=保存
ui.button.copy=複製
ui.button.clear=清除
ui.button.close=關閉
ui.button.explore=瀏覽
ui.button.test=測試
ui.button.preview=預覽
button.cancel=取消
button.ok=確定
button.yes=
button.no=
ui.label.version=版本
ui.label.password=密碼
ui.label.profile=配置
ui.message.first_load=請在左邊輸入您的帳號
ui.message.enter_password=請在左邊輸入您的密碼
ui.message.launching=啟動中
ui.message.making=生成中
ui.message.sure_remove=真的要刪除配置%s嗎
ui.message.update_java=請更新您的Java
ui.message.open_jdk=我們發現到您正在使用OpenJDK這可能會導致很多介面問題我們建議您更換Oracle JDK。
ui.label.settings=選項
ui.label.crashing=<html>Hello Minecraft! Launcher遇到了無法處理的錯誤請複制下列內容並通過mcbbs、貼吧或Minecraft Forum反饋bug。 </html>
ui.label.crashing_out_dated=<html>Hello Minecraft! Launcher遇到了無法處理的錯誤已檢測到您的啟動器不是最新版本請更新後再試 </html>
ui.label.failed_set=設定失敗:
download=下載
download.mojang=官方
download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/)
download.rapid_data=RapidData (銳網雲計算, https://www.rapiddata.org/)
download.not_200=下載失敗,回復碼
download.failed=下載失敗
download.successfully=下載完成
download.source=下載源
message.error=錯誤
message.cannot_open_explorer=無法打開資料管理器:
message.cancelled=已取消
message.info=提示
message.loading=加載中...
folder.game=遊戲資料夾
folder.mod=MOD資料夾
folder.coremod=核心MOD資料夾
folder.config=配置資料夾
folder.resourcepacks=資源包資料夾
folder.screenshots=截圖資料夾
folder.saves=存檔資料夾
settings.tabs.game_download=遊戲下載
settings.tabs.installers=自動安裝
settings.tabs.assets_downloads=資源下載
settings=普通設定
settings.explore=瀏覽
settings.manage=管理
settings.cannot_remove_default_config=不能刪除預設配置
settings.max_memory=最大記憶體MB
settings.java_dir=Java路徑
settings.game_directory=遊戲路徑
settings.dimension=遊戲窗口解析度
settings.fullscreen=全螢幕
settings.update_version=更新版本資料
settings.run_directory=執行路徑(版本隔離)
settings.physical_memory=實體記憶體大小
settings.choose_javapath=選擇Java路徑
settings.default=預設
settings.custom=自定義
settings.choose_gamedir=選擇遊戲路徑
settings.failed_load=設定資料加載失敗,可能是升級了啟動器或被人工修改造成錯誤,是否清除?
settings.test_game=測試遊戲
settings.type.none=缺少游戲版本,請切換到遊戲下載頁下載遊戲
settings.type.global=<html><a href="">點擊此處切換為版本特定設定。該版本正在使用全局設定,修改以下設定會影響到其他使用全局設定的版本</a></html>
settings.type.special=<html><a href="">點擊此處切換為全局設定。該版本正在使用版本特定設定,修改以下設定不會影響到其他版本設定</a></html>
modpack=懶人包
modpack.choose=選擇要導入的遊戲懶人包資料,如果您希望更新懶人包,請輸入要更新的版本名
modpack.export_error=導出失敗,可能是您的遊戲資料夾格式不正確或操作資料失敗
modpack.export_finished=懶人包導出完成,參見
modpack.included_launcher=懶人包已包含啟動器,可直接發布
modpack.not_included_launcher=懶人包未包含啟動器,可使用本軟件的導入懶人包功能導入懶人包
modpack.enter_name=給遊戲起個你喜歡的名字
modpack.task.save=導出懶人包
modpack.task.install=導入懶人包
modpack.task.install.error=安裝失敗,可能是懶人包格式不正確或操作資料失敗
modpack.task.install.will=將會安裝懶人包:
modpack.wizard=導出懶人包嚮導
modpack.wizard.step.1=基本設定
modpack.wizard.step.1.title=設定懶人包的主要資訊
modpack.wizard.step.initialization.include_launcher=包含啟動器
modpack.wizard.step.initialization.exported_version=要導出的遊戲版本
modpack.wizard.step.initialization.save=選擇要導出到的遊戲懶人包位置
modpack.wizard.step.initialization.warning=<html>在製作懶人包前,請您確認您選擇的版本可以正常啟動,<br/>並保證您的Minecraft是正式版而非快照版,<br/>而且不應當將不允許非官方途徑傳播的Mod、材質包等納入整合包。<br/>懶人包會保存您目前的下載源設定</html>
modpack.wizard.step.2=資料選擇
modpack.wizard.step.2.title=選中你不想加到懶人包中的資料(夾)
modpack.wizard.step.3=懶人包描述
modpack.wizard.step.3.title=描述你要製作的懶人包。
modpack.desc=描述你要製作的懶人包比如懶人包注意事項和更新記錄支持Markdown(圖片請用網路圖片)。
modpack.incorrect_format.no_json=懶人包格式錯誤pack.json丟失
modpack.incorrect_format.no_jar=懶人包格式錯誤pack.json丟失jar欄位
modpack.cannot_read_version=讀取遊戲版本失敗
modpack.not_a_valid_location=不是一個有效懶人包位置
modpack.name=懶人包名稱
modpack.not_a_valid_name=不是一個有效的懶人包名稱
modpack.files.servers_dat=多人遊戲伺服器列表
modpack.files.saves=遊戲存檔
modpack.files.mods=Mod
modpack.files.config=Mod設定檔
modpack.files.liteconfig=Mod設定檔
modpack.files.resourcepacks=資源包(材質包)
modpack.files.options_txt=遊戲設定
modpack.files.optionsshaders_txt=光影設定
modpack.files.mods.voxelmods=VoxelMods設定如小地圖
modpack.files.dumps=NEI調試輸出
modpack.files.scripts=MineTweaker配置
modpack.files.blueprints=BuildCraft藍圖
mods=Mod管理
mods.choose_mod=選擇模組
mods.failed=添加失敗
mods.add=添加
mods.remove=刪除
mods.default_information=<html>您可以拖動mod到列表中來添加mod同時使用刪除鍵可快速刪除選中mod<br>選擇mod可以獲取mod資訊</html>
advancedsettings=進階設定
advancedsettings.launcher_visible=啟動器可見性
advancedsettings.debug_mode=偵錯模式
advancedsettings.java_permanent_generation_space=記憶體永久保存區域/MB
advancedsettings.jvm_args=Java虛擬機參數(不必填寫)
advancedsettings.Minecraft_arguments=Minecraft額外參數(不必填寫)
advancedsettings.launcher_visibility.close=遊戲啟動後結束啟動器
advancedsettings.launcher_visibility.hide=遊戲啟動後隱藏啟動器
advancedsettings.launcher_visibility.keep=保持啟動器可見
advancedsettings.launcher_visibility.hide_reopen=隱藏啟動器並在遊戲結束後重新打開
advancedsettings.game_dir.default=預設(.minecraft/)
advancedsettings.game_dir.independent=各版本獨立(.minecraft/versions/<版本名>/,除assets,libraries)
advancedsettings.no_jvm_args=不添加預設的JVM參數(使用Java9時必勾)
advancedsettings.no_common=不使用公共路徑
advancedsettings.java_args_default=啟動器預設添加的參數(請不要重複添加):-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml. ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
advancedsettings.wrapper_launcher=前置指令(不必填寫,如optirun)
advancedsettings.precall_command=啟動前執行命令(不必填寫,將在遊戲啟動前調用)
advancedsettings.server_ip=直接進入伺服器IP (不必填寫,啟動遊戲後直接進入對應伺服器)
advancedsettings.cancel_wrapper_launcher=取消包裹啟動器(出現奇怪問題時可嘗試使用,與調試模式衝突)
advancedsettings.dont_check_game_completeness=不檢查遊戲完整性
mainwindow.show_log=查看日誌
mainwindow.make_launch_script=生成啟動腳本
mainwindow.make_launch_script_failed=生成啟動腳本失敗
mainwindow.enter_script_name=輸入要生成腳本的資料名
mainwindow.make_launch_succeed=啟動腳本已生成完畢:
mainwindow.no_version=未找到任何版本,是否進入遊戲下載?
launcher.about=<html>預設背景圖感謝gamerteam提供。<br>關於作者:<br>百度IDhuanghongxun20<br>mcbbshuanghongxun<br>Minecraft Forum ID: klkl6523<br>歡迎提交Bug哦<br/>Copyright (c) 2013-2016 huangyuhui.<br>免責聲明Minecraft軟體版權歸Mojang AB所有遊戲由於誤操作本啟動器而丟失數據的概不負責。<br>本啟動器在GPLv3協議下開源:http://github.com/huanghongxun/HMCL/ ,感謝issues和pull requests貢獻者<br>本軟體使用了基於Apache License 2.0的Gson項目感謝貢獻者。</html>
launcher.download_source=下載源
launcher.background_location=背景地址
launcher.common_location=公用資料夾
launcher.exit_failed=強制退出失敗可能是Forge 1.7.10及更高版本導致的,無法解決。
launcher.versions_json_not_matched=版本%s格式不規範該版本資料夾下有json:%s是否更名這個資料來規範格式
launcher.versions_json_not_matched_cannot_auto_completion=版本%s缺失必要的版本資訊資料是否刪除該版本
launcher.versions_json_not_formatted=版本%s資訊資料格式錯誤是否重新下載
launcher.choose_bgpath=選擇背景路徑
launcher.choose_commonpath=選擇公用路徑
launcher.commpath_tooltip=<html><body>啟動器將所有遊戲資源跟執行庫檔案放在此處集中管理。如果遊戲資料夾有現成的將不會使用公用庫檔案。</body></html>
launcher.background_tooltip=<html><body>啟動器預設使用自帶的背景<br />如果當前目錄有background.png則會使用該資料作為背景<br />如果當前目錄有bg子目錄則會隨機使用裡面的一張圖作為背景<br />如果該背景位址被修改,則會使用背景位址裡的一張圖作為背景<br />背景位址允許有多個位址,使用半形分號";"(不包含雙引號)分隔</body></html>
launcher.update_launcher=檢查更新
launcher.enable_shadow=啟用窗口陰影
launcher.enable_animation=啟用動態效果
launcher.enable_blur=啟用主介面模糊
launcher.theme=主題
launcher.proxy=代理
launcher.decorated=啟用視窗邊框(Linux下可解決程式介面全灰問題)
launcher.modpack=<html><a href="http://huangyuhui.duapp.com/link.php?type=modpack">整合包作者幫助</a></html>
launcher.lang=語言
launcher.restart=本介面選項需要重啟本啟動器生效
launcher.log_font=日誌字體
launcher.tab.general=通用
launcher.tab.ui=介面
launcher.tab.about=關於
launcher.title.game=遊戲設定
launcher.title.main=主頁
launcher.title.launcher=啟動器設定
versions.release=穩定版
versions.snapshot=快照版
versions.old_beta=測試版
versions.old_alpha=遠古版
versions.manage.rename=重新命名該版本
versions.manage.rename.message=請輸入要改成的名字
versions.manage.remove=刪除該版本
versions.manage.remove.confirm=真的要刪除版本
versions.manage.redownload_json=重新下載版本配置(minecraft.json)
versions.manage.redownload_assets_index=重新下載資源配置(assets_index.json)
versions.mamage.remove_libraries=刪除所有庫檔
advice.os64butjdk32=您的系統是64-bit但是Java是32位的推薦您安裝64位Java.
advice.java8=檢測到您未使用Java 8及更新版本Java 8能使遊戲更流暢而且Minecraft 1.12及更新版本和很多Mod強制需要需要Java 8。
assets.download_all=下載資源資料
assets.not_refreshed=資源列表未重整,請重整一次。
assets.failed=獲取列表失敗,請重整重試。
assets.list.1_7_3_after=1.7.3及以後
assets.list.1_6=1.6(BMCLAPI)
assets.unkown_type_select_one=無法解析遊戲版本:%s請選擇一種資源類型下載。
assets.type=資源類型
assets.download=下載資源
assets.no_assets=資源資料不完整,是否補全?
assets.failed_download=下載資源資料失敗,可能導致沒有中文語系或音樂。
gamedownload.not_refreshed=遊戲下載列表未重整,請再重整一次。
taskwindow.title=任務
taskwindow.single_progress=單項進度
taskwindow.total_progress=總進度
taskwindow.cancel=取消
taskwindow.no_more_instance=可能同時打開了多個任務窗口,請不要多次打開!
taskwindow.file_name=任務
taskwindow.download_progress=進度
setupwindow.include_minecraft=導入遊戲資料夾
setupwindow.find_in_configurations=導入完成,快到配置下拉清單中找新遊戲路徑吧!
setupwindow.give_a_name=給新遊戲路徑起個名字吧
setupwindow.new=新建
setupwindow.no_empty_name=名字不可為空
setupwindow.clean=清理遊戲資料
update.no_browser=無法打開瀏覽器網址已經複製到剪貼版了您可以手動Copy網址打開頁面
update.should_open_link=是否更新?
update.newest_version=最新版本為:
update.failed=檢查更新失敗
update.found=(發現更新!)
logwindow.terminate_game=結束遊戲進程
logwindow.title=日誌
logwindow.contact=聯繫我們
logwindow.show_lines=顯示行數
logwindow.search=查找
selector.choose=選擇
serverlistview.title=選擇伺服器
serverlistview.name=名稱
serverlistview.type=類型
serverlistview.version=版本
serverlistview.info=信息
minecraft.invalid=無效的
minecraft.invalid_jar=無效的jar包
minecraft.not_a_file=不是資料
minecraft.not_found=找不到minecraft.jar
minecraft.not_readable=minecraft.jar不可讀
minecraft.modified=(修改的!)
color.red=紅色
color.blue=藍色
color.green=綠色
color.orange=橙色
color.dark_blue=深藍色
color.purple=紫色
wizard.next_>=下一步 >
wizard.next_mnemonic=
wizard.<_prev=< 上一步
wizard.prev_mnemonic=
wizard.finish=完成
wizard.finish_mnemonic=
wizard.cancel=取消
wizard.cancel_mnemonic=
wizard.help=說明
wizard.help_mnemonic=
wizard.close=關閉
wizard.close_mnemonic=
wizard.summary=概要
wizard.failed=失敗
wizard.steps=步驟
lang=繁體中文
lang.default=跟隨系統語言

View File

@ -0,0 +1,440 @@
# Hello Minecraft! Launcher.
# Copyright (C) 2013 huangyuhui <huanghongxun2008@126.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see {http://www.gnu.org/licenses/}.
#
#author: huangyuhui
launch.failed=启动失败
launch.failed_creating_process=启动失败在创建新进程时发生错误可能是Java路径错误。
launch.failed_sh_permission=为启动文件添加权限时发生错误
launch.failed_packing_jar=在打包jar时发生错误
launch.unsupported_launcher_version=对不起本启动器现在可能不能启动这个版本的Minecraft但启动器还是会尝试启动请尽快将此问题报告给作者。
launch.too_big_memory_alloc_64bit=您设置的内存大小过大由于可能超过了32位Java的内存分配限制所以可能无法启动游戏请将内存调至1024MB或更小启动器仍会尝试启动。
launch.too_big_memory_alloc_free_space_too_low=您设置的内存大小过大,由于超过了系统内存大小%dMB所以可能影响游戏体验或无法启动游戏启动器仍会尝试启动。
launch.cannot_create_jvm=截获到无法创建Java虚拟机可能是Java参数有问题可以在设置中开启无参数模式启动
launch.circular_dependency_versions=发现游戏版本循环引用,请确认您的客户端未被修改或修改导致出现此问题。
launch.not_finished_downloading_libraries=未完成游戏依赖库的下载,还要继续启动游戏吗?
launch.not_finished_decompressing_natives=未能解压游戏本地库,还要继续启动游戏吗?
launch.wrong_javadir=错误的Java路径将自动重置为默认Java路径。
launch.exited_abnormally=游戏非正常退出,请查看日志文件,或联系他人寻求帮助。
launch.state.logging_in=登录中
launch.state.generating_launching_codes=正在生成启动代码
launch.state.downloading_libraries=正在下载必要文件
launch.state.decompressing_natives=正在释放本地文件
launch.state.waiting_launching=等待游戏启动
install.no_version=未找到要安装的对应MC版本
install.no_version_if_intall=未找到要安装的对应MC版本是否自动安装需要的MC版本
install.not_refreshed=未刷新列表
install.download_list=下载列表
install.liteloader.get_list=获取LiteLoader列表
install.liteloader.install=安装LiteLoader
install.forge.get_list=获取Forge列表
install.forge.install=安装Forge
install.forge.get_changelogs=获取Forge更新记录
install.optifine.install=安装OptiFine
install.optifine.get_list=获取OptiFine列表
install.optifine.get_download_link=获取OptiFine下载地址
install.failed_forge=安装Forge失败
install.failed_optifine=安装OptiFine失败
install.failed_liteloader=安装LiteLoader失败
install.failed_download_forge=下载Forge失败
install.failed_download_optifine=下载OptiFine失败
install.failed=安装失败
install.success=安装成功
install.no_forge=没有安装Forge
install.choose_forge=选择你安装的Forge版本
install.version=版本
install.mcversion=游戏版本
install.time=时间
install.release_time=释放时间
install.type=类型
install.please_refresh=如需使用自动安装请点击右侧刷新按钮
crash.launcher=启动器崩溃了!
crash.minecraft=Minecraft崩溃了请认真阅读建议。
login.choose_charactor=请选择您要使用的角色
login.no_charactor=该帐号没有角色
login.your_password=您的密码
login.failed=登录失败:
login.no_Player007=你还未设置用户名!
login.wrong_password=可能是您的用户名或密码错误
login.invalid_username=无效的用户名
login.invalid_uuid_and_username=无效的UUID和用户名
login.invalid_password=无效的密码
login.invalid_access_token=无效的访问令牌
login.changed_client_token=服务器回应已经修改客户端令牌
login.not_email=用户名必须是邮箱
login.type=登录
login.username=名字
login.account=邮箱
login.invalid_token=请尝试登出并重新输入密码登录
login.no_valid_character=无有效的角色自行到skinme.cc登陆并创建角色
proxy.username=账户
proxy.password=密码
proxy.host=主机
proxy.port=端口
login.failed.connect_authentication_server=无法连接认证服务器,可能是网络问题
login.profile.not_logged_in=无法修改游戏资料同时未登录
login.profile.selected=无法修改游戏资料. 你必须登出再返回.
login.methods.yggdrasil=正版登录
login.methods.offline=离线模式
login.methods.no_method=没有登入方式...
log.playername_null=玩家名为空,这代表着登录方法出现问题
minecraft.no_selected_version=没有选择任何一个Minecraft版本
minecraft.wrong_path=错误的Minecraft路径启动器未找到设定的Minecraft路径请检查。
operation.stopped=操作被强行终止
operation.confirm_stop=真的要终止操作吗?
ui.login.password=密码
ui.more=更多
crash.advice.UnsupportedClassVersionError=这可能是因为您的Java版本过于老旧可以尝试更换最新Java并在版本设置的Java路径中设置.
crash.advice.ConcurrentModificationException=这可能是因为您的Java版本高于Java 1.8.0_11导致的,可以尝试卸载Java8安装Java7。
crash.advice.ClassNotFoundException=Minecraft不完整或Mod冲突如果有未能下载的文件请下载成功后重试或是客户端损坏请重试请重新制作客户端或下载整合包解决问题另可尝试游戏设置->(版本)管理->删除库文件解决问题
crash.advice.NoSuchFieldError=Minecraft不完整或Mod冲突如果有未能下载的文件请下载成功后重试或是客户端损坏请重试请重新制作客户端或下载整合包解决问题。
crash.advice.LWJGLException=您的电脑不正常,可能需要使用驱动精灵或其他安装器更新显卡驱动。
crash.advice.SecurityException=可能是您修改了minecraft.jar但未删除META-INF文件夹的原因。请通过压缩软件删除jar中的META-INF文件夹。
crash.advice.OutOfMemoryError=内存溢出您设置的Minecraft最大内存过小请调大
crash.advice.otherwise=可能是Mod或其他问题。
crash.advice.OpenGL=可能是显卡/声卡驱动问题也可能是Mod导致的问题。
crash.advice.no_lwjgl=可能是游戏依赖库不完整或解压依赖库时出错。可以通过下载整合包解决问题。
crash.advice.no=无建议。
crash.user_fault=您的系统或Java环境可能安装不当导致本软件崩溃请检查您的Java环境或您的电脑可以尝试重新安装Java。
crash.headless=如果您的操作系统是Linux请注意不要使用OpenJDK务必使用Oracle JDK或尝试添加-Djava.awt.headless=false参数或检查您的Xserver是否正常
crash.NoClassDefFound=请确认HMCL本体是否完整
crash.error=您的Minecraft崩溃了。
crash.main_class_not_found=找不到主类可能是您的JSON文件填写错误。无法启动游戏。可以通过下载整合包解决问题。
crash.class_path_wrong=解析Class Path时出现错误此错误本不应该发生。可能是启动脚本错误请仔细检查启动脚本。
ui.label.newProfileWindow.new_profile_name=新配置名:
ui.label.newProfileWindow.copy_from=复制配置:
ui.newProfileWindow.title=新建配置
ui.button.ok=确认
ui.button.refresh=刷新
ui.button.run=启动Minecraft
ui.button.settings=
ui.button.about=关于
ui.button.others=其他
ui.button.logout=登出
ui.button.download=下载
ui.button.retry=重试
ui.button.delete=删除
ui.button.install=安装
ui.button.info=信息
ui.button.save=保存
ui.button.copy=复制
ui.button.clear=清除
ui.button.close=关闭
ui.button.explore=浏览
ui.button.test=测试
ui.button.preview=预览
button.cancel=取消
button.ok=确定
button.yes=
button.no=
ui.label.version=版本
ui.label.password=密码
ui.label.profile=配置
ui.message.first_load=请在左边输入您的账号
ui.message.enter_password=请在左边输入您的密码
ui.message.launching=启动中
ui.message.making=生成中
ui.message.sure_remove=真的要删除配置%s吗
ui.message.update_java=请更新您的Java
ui.message.open_jdk=我们发现您正在使用OpenJDK这会导致很多界面问题我们建议您更换Oracle JDK。
ui.label.settings=选项
ui.label.crashing=<html>Hello Minecraft!遇到了无法处理的错误请复制下列内容并通过mcbbs、贴吧、Github或Minecraft Forum反馈bug。</html>
ui.label.crashing_out_dated=<html>Hello Minecraft! Launcher遇到了无法处理的错误已检测到您的启动器不是最新版本请更新后再试</html>
ui.label.failed_set=设置失败:
download=下载
download.mojang=官方
download.BMCL=BMCLAPI (bangbang93, http://bmclapi.bangbang93.com/)
download.rapid_data=RapidData (锐网云计算, https://www.rapiddata.org/)
download.not_200=下载失败,回复码
download.failed=下载失败
download.successfully=下载完成
download.source=下载源
message.error=错误
message.cannot_open_explorer=无法打开文件管理器:
message.cancelled=已取消
message.info=提示
message.loading=加载中...
folder.game=游戏文件夹
folder.mod=MOD文件夹
folder.coremod=核心MOD文件夹
folder.config=配置文件夹
folder.resourcepacks=资源包文件夹
folder.screenshots=截图文件夹
folder.saves=存档文件夹
settings.tabs.game_download=游戏下载
settings.tabs.installers=自动安装
settings.tabs.assets_downloads=资源下载
settings=普通设置
settings.explore=浏览
settings.manage=管理
settings.cannot_remove_default_config=不能删除默认配置
settings.max_memory=最大内存/MB
settings.java_dir=Java路径
settings.game_directory=游戏路径
settings.dimension=游戏窗口分辨率
settings.fullscreen=全屏
settings.update_version=更新版本文件
settings.run_directory=运行路径(版本隔离)
settings.physical_memory=物理内存大小
settings.choose_javapath=选择Java路径
settings.default=默认
settings.custom=自定义
settings.choose_gamedir=选择游戏路径
settings.failed_load=设置文件加载失败,可能是升级了启动器或被人工修改造成错误,是否清除?
settings.test_game=测试游戏
settings.type.none=缺少游戏版本,请切换到游戏下载页下载游戏
settings.type.global=<html><a href="">点击此处切换为版本特定设置。该版本正在使用全局设置,修改以下设置会影响到其他使用全局设置的版本</a></html>
settings.type.special=<html><a href="">点击此处切换为全局设置。该版本正在使用版本特定设置,修改以下设置不会影响到其他版本设置</a></html>
modpack=整合包
modpack.choose=选择要导入的游戏整合包文件,如果您希望更新整合包,请输入要更新的版本名
modpack.export_error=导出失败,可能是您的游戏文件夹格式不正确或操作文件失败
modpack.export_finished=整合包导出完成,参见
modpack.included_launcher=整合包已包含启动器,可直接发布
modpack.not_included_launcher=整合包未包含启动器,可使用本软件的导入整合包功能导入整合包
modpack.enter_name=给游戏起个你喜欢的名字
modpack.task.save=导出整合包
modpack.task.install=导入整合包
modpack.task.install.error=安装失败,可能是整合包格式不正确或操作文件失败
modpack.task.install.will=将会安装整合包:
modpack.wizard=导出整合包向导
modpack.wizard.step.1=基本设置
modpack.wizard.step.1.title=设置整合包的主要信息
modpack.wizard.step.initialization.include_launcher=包含启动器
modpack.wizard.step.initialization.exported_version=要导出的游戏版本
modpack.wizard.step.initialization.save=选择要导出到的游戏整合包位置
modpack.wizard.step.initialization.warning=<html>在制作整合包前,请您确认您选择的版本可以正常启动,<br/>并保证您的Minecraft是正式版而非快照版<br/>而且不应当将不允许非官方途径传播的Mod、材质包等纳入整合包。<br/>整合包会保存您目前的下载源设置</html>
modpack.wizard.step.2=文件选择
modpack.wizard.step.2.title=选中你不想加到整合包中的文件(夹)
modpack.wizard.step.3=整合包描述
modpack.wizard.step.3.title=描述你要制作的整合包
modpack.desc=描述你要制作的整合包比如整合包注意事项和更新记录支持Markdown(图片请用网络图片)。
modpack.incorrect_format.no_json=整合包格式错误pack.json丢失
modpack.incorrect_format.no_jar=整合包格式错误pack.json丢失jar字段
modpack.cannot_read_version=读取游戏版本失败
modpack.not_a_valid_location=不是一个有效整合包位置
modpack.name=整合包名称
modpack.not_a_valid_name=不是一个有效的整合包名称
modpack.files.servers_dat=多人游戏服务器列表
modpack.files.saves=游戏存档
modpack.files.mods=Mod
modpack.files.config=Mod配置文件
modpack.files.liteconfig=Mod配置文件
modpack.files.resourcepacks=资源包(材质包)
modpack.files.options_txt=游戏设定
modpack.files.optionsshaders_txt=光影设定
modpack.files.mods.voxelmods=VoxelMods配置如小地图
modpack.files.dumps=NEI调试输出
modpack.files.scripts=MineTweaker配置
modpack.files.blueprints=BuildCraft蓝图
mods=Mod管理
mods.choose_mod=选择模组
mods.failed=添加失败
mods.add=添加
mods.remove=删除
mods.default_information=<html><font color=#c0392b>安装Mod前你需要确保已安装Forge或LiteLoader!<br>您可以从资源管理器拖动mod文件到列表中来添加mod同时使用删除键可快速删除选中mod<br>点掉mod前面的勾可禁用mod不会加载选择mod可以获取mod信息</font></html>
advancedsettings=高级设置
advancedsettings.launcher_visible=启动器可见性
advancedsettings.debug_mode=调试模式
advancedsettings.java_permanent_generation_space=内存永久保存区域(不必填写,MB)
advancedsettings.jvm_args=Java虚拟机参数(不必填写)
advancedsettings.Minecraft_arguments=Minecraft额外参数(不必填写)
advancedsettings.launcher_visibility.close=游戏启动后结束启动器
advancedsettings.launcher_visibility.hide=游戏启动后隐藏启动器
advancedsettings.launcher_visibility.keep=保持启动器可见
advancedsettings.launcher_visibility.hide_reopen=隐藏启动器并在游戏结束后重新打开
advancedsettings.game_dir.default=默认(.minecraft/)
advancedsettings.game_dir.independent=各版本独立(.minecraft/versions/<版本名>/,除assets,libraries)
advancedsettings.no_jvm_args=不添加默认的JVM参数(使用Java9时必勾)
advancedsettings.no_common=不使用公共路径
advancedsettings.java_args_default=启动器默认添加的参数(请不要重复添加):-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -XX:MaxPermSize=???m -Xmx???m -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true
advancedsettings.wrapper_launcher=前置指令(不必填写,如optirun)
advancedsettings.precall_command=启动前执行命令(不必填写,将在游戏启动前调用)
advancedsettings.server_ip=直入服务器ip地址(不必填写,启动游戏后直接进入对应服务器)
advancedsettings.cancel_wrapper_launcher=取消包裹启动器(出现奇怪问题时可尝试使用,与调试模式冲突)
advancedsettings.dont_check_game_completeness=不检查游戏完整性
mainwindow.show_log=查看日志
mainwindow.make_launch_script=生成启动脚本
mainwindow.make_launch_script_failed=生成启动脚本失败
mainwindow.enter_script_name=输入要生成脚本的文件名
mainwindow.make_launch_succeed=启动脚本已生成完毕:
mainwindow.no_version=未找到任何版本,是否进入游戏下载?
launcher.about=<html>默认背景图感谢gamerteam提供。<br/>关于作者:<br/>百度IDhuanghongxun20<br/>mcbbshuanghongxun<br/>Minecraft Forum ID: klkl6523<br/>欢迎提交Bug哦<br/>Copyright (c) 2013-2017 huangyuhui.<br/>免责声明Minecraft软件版权归Mojang AB所有使用本软件产生的版权问题本软件制作方概不负责。<br/>本启动器在GPLv3协议下开源:https://github.com/huanghongxun/HMCL/ ,感谢issues和pull requests贡献者<br/>本软件使用了基于Apache License 2.0的Gson项目感谢贡献者。</html>
launcher.download_source=下载源
launcher.background_location=背景地址
launcher.common_location=公共文件夹
launcher.exit_failed=强制退出失败可能是Forge 1.7.10及更高版本导致的,无法解决。
launcher.versions_json_not_matched=版本%s格式不规范该版本文件夹下有json:%s是否更名这个文件来规范格式
launcher.versions_json_not_matched_cannot_auto_completion=版本%s缺失必要的版本信息文件是否删除该版本
launcher.versions_json_not_formatted=版本%s信息文件格式错误是否重新下载
launcher.choose_bgpath=选择背景路径
launcher.choose_commonpath=选择公共路径
launcher.commpath_tooltip=<html><body>启动器将所有游戏资源及依赖库文件放于此集中管理,如果游戏文件夹内有现成的将不会使用公共库文件</body></html>
launcher.background_tooltip=<html><body>启动器默认使用自带的背景<br />如果当前目录有background.png则会使用该文件作为背景<br />如果当前目录有bg子目录则会随机使用里面的一张图作为背景<br />如果该背景地址被修改,则会使用背景地址里的一张图作为背景<br />背景地址允许有多个地址,使用半角分号";"(不包含双引号)分隔</body></html>
launcher.update_launcher=检查更新
launcher.enable_shadow=启用窗口阴影
launcher.enable_animation=启用动态效果
launcher.enable_blur=启用主界面模糊
launcher.theme=主题
launcher.proxy=代理
launcher.decorated=启用窗口边框(Linux下可解决程序界面全灰问题)
launcher.modpack=<html><a href="http://huangyuhui.duapp.com/link.php?type=modpack">整合包作者帮助</a></html>
launcher.lang=语言
launcher.restart=本界面选项需要重启本启动器生效
launcher.log_font=日志字体
launcher.tab.general=通用
launcher.tab.ui=界面
launcher.tab.about=关于
launcher.title.game=游戏设置
launcher.title.main=主页
launcher.title.launcher=启动器设置
versions.release=稳定版
versions.snapshot=快照版
versions.old_beta=测试版
versions.old_alpha=远古版
versions.manage.rename=重命名该版本
versions.manage.rename.message=请输入要改成的名字
versions.manage.remove=删除该版本
versions.manage.remove.confirm=真的要删除版本
versions.manage.redownload_json=重新下载版本配置(minecraft.json)
versions.manage.redownload_assets_index=重新下载资源配置(assets_index.json)
versions.mamage.remove_libraries=删除所有库文件
advice.os64butjdk32=您的系统是64位的但是Java是32位的推荐您安装64位Java.
advice.java8=检测到您未使用Java 8及更新版本Java 8能使游戏更流畅而且Minecraft 1.12及更新版本和很多Mod强制需要需要Java 8。
assets.download_all=下载资源文件
assets.not_refreshed=资源列表未刷新,请刷新一次。
assets.failed=获取列表失败,请刷新重试。
assets.list.1_7_3_after=1.7.3及以后
assets.list.1_6=1.6(BMCLAPI)
assets.unkown_type_select_one=无法解析游戏版本:%s请选择一种资源类型下载。
assets.type=资源类型
assets.download=下载资源
assets.no_assets=资源文件不完整,是否补全?
assets.failed_download=下载资源文件失败,可能导致没有中文和声音。
gamedownload.not_refreshed=游戏下载列表未刷新,请再刷新一次。
taskwindow.title=任务
taskwindow.single_progress=单项进度
taskwindow.total_progress=总进度
taskwindow.cancel=取消
taskwindow.no_more_instance=可能同时打开了多个任务窗口,请不要多次打开!
taskwindow.file_name=任务
taskwindow.download_progress=进度
setupwindow.include_minecraft=导入游戏文件夹
setupwindow.find_in_configurations=导入完成,快到配置下拉框中找新游戏路径吧!
setupwindow.give_a_name=给新游戏路径起个名字吧
setupwindow.new=新建
setupwindow.no_empty_name=名字不可为空
setupwindow.clean=清理游戏文件
update.no_browser=无法打开浏览器,网址已经复制到剪贴板了,您可以手动粘贴网址打开页面
update.should_open_link=是否更新?
update.newest_version=最新版本为:
update.failed=检查更新失败
update.found=(发现更新!)
logwindow.terminate_game=结束游戏进程
logwindow.title=日志
logwindow.contact=联系我们
logwindow.show_lines=显示行数
logwindow.search=查找
selector.choose=选择
serverlistview.title=选择服务器
serverlistview.name=名称
serverlistview.type=类型
serverlistview.version=版本
serverlistview.info=信息
minecraft.invalid=无效的
minecraft.invalid_jar=无效的jar包
minecraft.not_a_file=不是文件
minecraft.not_found=找不到minecraft.jar
minecraft.not_readable=minecraft.jar不可读
minecraft.modified=(修改的!)
color.red=红色
color.blue=蓝色
color.green=绿色
color.orange=橙色
color.dark_blue=深蓝色
color.purple=紫色
wizard.next_>=下一步 >
wizard.next_mnemonic=
wizard.<_prev=< 上一步
wizard.prev_mnemonic=
wizard.finish=完成
wizard.finish_mnemonic=
wizard.cancel=取消
wizard.cancel_mnemonic=
wizard.help=帮助
wizard.help_mnemonic=
wizard.close=关闭
wizard.close_mnemonic=
wizard.summary=概要
wizard.failed=失败
wizard.steps=步骤
lang=简体中文
lang.default=跟随系统语言

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<javafx.scene.shape.SVGPath fill="black" content="M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z" />

View File

@ -1,27 +0,0 @@
/*
* Hello Minecraft! Launcher.
* Copyright (C) 2017 huangyuhui <huanghongxun2008@126.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see {http://www.gnu.org/licenses/}.
*/
package org.jackhuang.hmcl.auth
import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccount
object Accounts {
val ACCOUNTS = mapOf(
"offline" to OfflineAccount,
"yggdrasil" to YggdrasilAccount
)
}

View File

@ -24,6 +24,9 @@ import org.jackhuang.hmcl.task.Task
import org.jackhuang.hmcl.task.then
import java.net.Proxy
/**
* This class has no state.
*/
class DefaultDependencyManager(override val repository: DefaultGameRepository, override var downloadProvider: DownloadProvider, val proxy: Proxy = Proxy.NO_PROXY)
: AbstractDependencyManager(repository) {