traduction + image + auto update
@ -40,8 +40,11 @@
|
|||||||
<div id="loadingContainer">
|
<div id="loadingContainer">
|
||||||
<div id="loadingContent">
|
<div id="loadingContent">
|
||||||
<div id="loadSpinnerContainer">
|
<div id="loadSpinnerContainer">
|
||||||
|
<img id="loadSpinnerImage" class="rotating" src="assets/images/LoadingSeal.png">
|
||||||
|
<!--
|
||||||
<img id="loadCenterImage" src="assets/images/LoadingSeal.png">
|
<img id="loadCenterImage" src="assets/images/LoadingSeal.png">
|
||||||
<img id="loadSpinnerImage" class="rotating" src="assets/images/LoadingText.png">
|
<img id="loadSpinnerImage" class="rotating" src="assets/images/LoadingText.png">
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Before Width: | Height: | Size: 160 KiB |
BIN
app/assets/images/backgrounds/0.png
Normal file
After Width: | Height: | Size: 3.7 MiB |
Before Width: | Height: | Size: 181 KiB |
BIN
app/assets/images/backgrounds/1.png
Normal file
After Width: | Height: | Size: 2.9 MiB |
Before Width: | Height: | Size: 502 KiB |
BIN
app/assets/images/backgrounds/2.png
Normal file
After Width: | Height: | Size: 3.4 MiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 268 KiB |
Before Width: | Height: | Size: 456 KiB |
Before Width: | Height: | Size: 2.6 MiB |
Before Width: | Height: | Size: 5.0 MiB |
@ -124,7 +124,7 @@ document.getElementById('avatarOverlay').onclick = (e) => {
|
|||||||
|
|
||||||
// Bind selected account
|
// Bind selected account
|
||||||
function updateSelectedAccount(authUser){
|
function updateSelectedAccount(authUser){
|
||||||
let username = 'No Account Selected'
|
let username = 'Aucun compte sélectionné'
|
||||||
if(authUser != null){
|
if(authUser != null){
|
||||||
if(authUser.displayName != null){
|
if(authUser.displayName != null){
|
||||||
username = authUser.displayName
|
username = authUser.displayName
|
||||||
@ -144,14 +144,14 @@ function updateSelectedServer(serv){
|
|||||||
}
|
}
|
||||||
ConfigManager.setSelectedServer(serv != null ? serv.getID() : null)
|
ConfigManager.setSelectedServer(serv != null ? serv.getID() : null)
|
||||||
ConfigManager.save()
|
ConfigManager.save()
|
||||||
server_selection_button.innerHTML = '\u2022 ' + (serv != null ? serv.getName() : 'No Server Selected')
|
server_selection_button.innerHTML = '\u2022 ' + (serv != null ? serv.getName() : 'Aucun serveur sélectionné')
|
||||||
if(getCurrentView() === VIEWS.settings){
|
if(getCurrentView() === VIEWS.settings){
|
||||||
animateModsTabRefresh()
|
animateModsTabRefresh()
|
||||||
}
|
}
|
||||||
setLaunchEnabled(serv != null)
|
setLaunchEnabled(serv != null)
|
||||||
}
|
}
|
||||||
// Real text is set in uibinder.js on distributionIndexDone.
|
// Real text is set in uibinder.js on distributionIndexDone.
|
||||||
server_selection_button.innerHTML = '\u2022 Loading..'
|
server_selection_button.innerHTML = '\u2022 Chargement..'
|
||||||
server_selection_button.onclick = (e) => {
|
server_selection_button.onclick = (e) => {
|
||||||
e.target.blur()
|
e.target.blur()
|
||||||
toggleServerSelection(true)
|
toggleServerSelection(true)
|
||||||
@ -324,10 +324,10 @@ function asyncSystemScan(mcVersion, launchAfter = true){
|
|||||||
// If the result is null, no valid Java installation was found.
|
// If the result is null, no valid Java installation was found.
|
||||||
// Show this information to the user.
|
// Show this information to the user.
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'No Compatible<br>Java Installation Found',
|
`Aucune installation<br>Java compatible n'a été trouvée`,
|
||||||
'In order to join WesterosCraft, you need a 64-bit installation of Java 8. Would you like us to install a copy?',
|
`Vous avez besoin d'une installation 64 bits de Java 8. Souhaitez-vous que nous en installions une copie ?`,
|
||||||
'Install Java',
|
'Installer Java',
|
||||||
'Install Manually'
|
'Installer manuellement'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
setLaunchDetails('Préparation du téléchargement Java..')
|
setLaunchDetails('Préparation du téléchargement Java..')
|
||||||
@ -339,10 +339,10 @@ function asyncSystemScan(mcVersion, launchAfter = true){
|
|||||||
$('#overlayContent').fadeOut(250, () => {
|
$('#overlayContent').fadeOut(250, () => {
|
||||||
//$('#overlayDismiss').toggle(false)
|
//$('#overlayDismiss').toggle(false)
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Java is Required<br>to Launch',
|
'Java est requis<br>pour lancer',
|
||||||
'A valid x64 installation of Java 8 is required to launch.<br><br>Please refer to our <a href="https://github.com/dscalzi/HeliosLauncher/wiki/Java-Management#manually-installing-a-valid-version-of-java">Java Management Guide</a> for instructions on how to manually install Java.',
|
`Une installation x64 valide de Java 8 est requise pour le lancement.<br><br>Veuillez vous référer à notre <a href="https://github.com/dscalzi/HeliosLauncher/wiki/Java-Management#manually-installing-a -valid-version-of-java">Guide de gestion Java</a> pour obtenir des instructions sur l'installation manuelle de Java.`,
|
||||||
'I Understand',
|
'Je comprends',
|
||||||
'Go Back'
|
'Retour'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
toggleLaunchArea(false)
|
toggleLaunchArea(false)
|
||||||
@ -385,9 +385,9 @@ function asyncSystemScan(mcVersion, launchAfter = true){
|
|||||||
// Oracle JRE enqueue failed. Probably due to a change in their website format.
|
// Oracle JRE enqueue failed. Probably due to a change in their website format.
|
||||||
// User will have to follow the guide to install Java.
|
// User will have to follow the guide to install Java.
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Unexpected Issue:<br>Java Download Failed',
|
'Problème inattendu :<br>Échec du téléchargement Java',
|
||||||
'Unfortunately we\'ve encountered an issue while attempting to install Java. You will need to manually install a copy. Please check out our <a href="https://github.com/dscalzi/HeliosLauncher/wiki">Troubleshooting Guide</a> for more details and instructions.',
|
`Malheureusement, nous avons rencontré un problème lors de la tentative d'installation de Java. Vous devrez installer manuellement une copie. Veuillez consulter notre <a href="https://github.com/dscalzi/HeliosLauncher/wiki">Guide de dépannage</a> pour plus de détails et d'instructions.`,
|
||||||
'I Understand'
|
'Je comprends'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
toggleOverlay(false)
|
toggleOverlay(false)
|
||||||
@ -522,12 +522,12 @@ function dlAsync(login = true){
|
|||||||
})
|
})
|
||||||
aEx.on('error', (err) => {
|
aEx.on('error', (err) => {
|
||||||
loggerLaunchSuite.error('Error during launch', err)
|
loggerLaunchSuite.error('Error during launch', err)
|
||||||
showLaunchFailure('Error During Launch', err.message || 'See console (CTRL + Shift + i) for more details.')
|
showLaunchFailure('Erreur lors du lancement', err.message || 'Voir console (CTRL + Maj + i) pour plus de détails.')
|
||||||
})
|
})
|
||||||
aEx.on('close', (code, signal) => {
|
aEx.on('close', (code, signal) => {
|
||||||
if(code !== 0){
|
if(code !== 0){
|
||||||
loggerLaunchSuite.error(`AssetExec exited with code ${code}, assuming error.`)
|
loggerLaunchSuite.error(`AssetExec exited with code ${code}, assuming error.`)
|
||||||
showLaunchFailure('Error During Launch', 'See console (CTRL + Shift + i) for more details.')
|
showLaunchFailure('Erreur lors du lancement', 'Voir console (CTRL + Maj + i) pour plus de détails.')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -611,13 +611,13 @@ function dlAsync(login = true){
|
|||||||
|
|
||||||
if(m.error.code === 'ENOENT'){
|
if(m.error.code === 'ENOENT'){
|
||||||
showLaunchFailure(
|
showLaunchFailure(
|
||||||
'Download Error',
|
'Erreur de téléchargement',
|
||||||
'Could not connect to the file server. Ensure that you are connected to the internet and try again.'
|
'Impossible de se connecter au serveur de fichiers. Assurez-vous que vous êtes connecté à Internet et réessayez.'
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
showLaunchFailure(
|
showLaunchFailure(
|
||||||
'Download Error',
|
'Erreur de téléchargement',
|
||||||
'Check the console (CTRL + Shift + i) for more details. Please try again.'
|
'Vérifiez la console (CTRL + Maj + i) pour plus de détails. Veuillez réessayer.'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -636,7 +636,7 @@ function dlAsync(login = true){
|
|||||||
loggerLaunchSuite.error('Error during validation:', m.result)
|
loggerLaunchSuite.error('Error during validation:', m.result)
|
||||||
|
|
||||||
loggerLaunchSuite.error('Error during launch', m.result.error)
|
loggerLaunchSuite.error('Error during launch', m.result.error)
|
||||||
showLaunchFailure('Error During Launch', 'Please check the console (CTRL + Shift + i) for more details.')
|
showLaunchFailure('Erreur lors du lancement', 'Veuillez vérifier la console (CTRL + Maj + i) pour plus de détails.')
|
||||||
|
|
||||||
allGood = false
|
allGood = false
|
||||||
}
|
}
|
||||||
@ -693,7 +693,7 @@ function dlAsync(login = true){
|
|||||||
data = data.trim()
|
data = data.trim()
|
||||||
if(data.indexOf('Could not find or load main class net.minecraft.launchwrapper.Launch') > -1){
|
if(data.indexOf('Could not find or load main class net.minecraft.launchwrapper.Launch') > -1){
|
||||||
loggerLaunchSuite.error('Game launch failed, LaunchWrapper was not downloaded properly.')
|
loggerLaunchSuite.error('Game launch failed, LaunchWrapper was not downloaded properly.')
|
||||||
showLaunchFailure('Error During Launch', 'The main file, LaunchWrapper, failed to download properly. As a result, the game cannot launch.<br><br>To fix this issue, temporarily turn off your antivirus software and launch the game again.<br><br>If you have time, please <a href="https://github.com/dscalzi/HeliosLauncher/issues">submit an issue</a> and let us know what antivirus software you use. We\'ll contact them and try to straighten things out.')
|
showLaunchFailure('Erreur lors du lancement', `Le fichier principal, LaunchWrapper, n'a pas pu être téléchargé correctement. Par conséquent, le jeu ne peut pas se lancer.<br><br>Pour résoudre ce problème, désactivez temporairement votre logiciel antivirus et relancez le jeu.<br><br>Si vous avez le temps, veuillez <a href="https ://github.com/dscalzi/HeliosLauncher/issues">soumettez un problème</a> et faites-nous savoir quel logiciel antivirus vous utilisez. Nous allons les contacter et essayer d'arranger les choses.`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -723,7 +723,7 @@ function dlAsync(login = true){
|
|||||||
} catch(err) {
|
} catch(err) {
|
||||||
|
|
||||||
loggerLaunchSuite.error('Error during launch', err)
|
loggerLaunchSuite.error('Error during launch', err)
|
||||||
showLaunchFailure('Error During Launch', 'Please check the console (CTRL + Shift + i) for more details.')
|
showLaunchFailure('Erreur lors du lancement', 'Veuillez vérifier la console (CTRL + Maj + i) pour plus de détails.')
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -752,7 +752,7 @@ function dlAsync(login = true){
|
|||||||
}, (err) => {
|
}, (err) => {
|
||||||
loggerLaunchSuite.error('Unable to refresh distribution index.', err)
|
loggerLaunchSuite.error('Unable to refresh distribution index.', err)
|
||||||
if(DistroManager.getDistribution() == null){
|
if(DistroManager.getDistribution() == null){
|
||||||
showLaunchFailure('Fatal Error', 'Could not load a copy of the distribution index. See the console (CTRL + Shift + i) for more details.')
|
showLaunchFailure('Erreur fatale', `Impossible de charger une copie de l'index de distribution. Voir la console (CTRL + Maj + i) pour plus de détails.`)
|
||||||
|
|
||||||
// Disconnect from AssetExec
|
// Disconnect from AssetExec
|
||||||
aEx.disconnect()
|
aEx.disconnect()
|
||||||
|
@ -223,8 +223,8 @@ loginButton.addEventListener('click', () => {
|
|||||||
// Uh oh.
|
// Uh oh.
|
||||||
msftLoginLogger.error('Unhandled error during login.', displayableError)
|
msftLoginLogger.error('Unhandled error during login.', displayableError)
|
||||||
actualDisplayableError = {
|
actualDisplayableError = {
|
||||||
title: 'Unknown Error During Login',
|
title: 'Erreur inconnue lors de la connexion',
|
||||||
desc: 'An unknown error has occurred. Please see the console for details.'
|
desc: `Une erreur inconnue s'est produite. Veuillez consulter la console pour plus de détails.`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +289,7 @@ function populateServerListings(){
|
|||||||
<path class="cls-1" d="M100.93,65.54C89,62,68.18,55.65,63.54,52.13c2.7-5.23,18.8-19.2,28-27.55C81.36,31.74,63.74,43.87,58.09,45.3c-2.41-5.37-3.61-26.52-4.37-39-.77,12.46-2,33.64-4.36,39-5.7-1.46-23.3-13.57-33.49-20.72,9.26,8.37,25.39,22.36,28,27.55C39.21,55.68,18.47,62,6.52,65.55c12.32-2,33.63-6.06,39.34-4.9-.16,5.87-8.41,26.16-13.11,37.69,6.1-10.89,16.52-30.16,21-33.9,4.5,3.79,14.93,23.09,21,34C70,86.84,61.73,66.48,61.59,60.65,67.36,59.49,88.64,63.52,100.93,65.54Z"/>
|
<path class="cls-1" d="M100.93,65.54C89,62,68.18,55.65,63.54,52.13c2.7-5.23,18.8-19.2,28-27.55C81.36,31.74,63.74,43.87,58.09,45.3c-2.41-5.37-3.61-26.52-4.37-39-.77,12.46-2,33.64-4.36,39-5.7-1.46-23.3-13.57-33.49-20.72,9.26,8.37,25.39,22.36,28,27.55C39.21,55.68,18.47,62,6.52,65.55c12.32-2,33.63-6.06,39.34-4.9-.16,5.87-8.41,26.16-13.11,37.69,6.1-10.89,16.52-30.16,21-33.9,4.5,3.79,14.93,23.09,21,34C70,86.84,61.73,66.48,61.59,60.65,67.36,59.49,88.64,63.52,100.93,65.54Z"/>
|
||||||
<circle class="cls-2" cx="53.73" cy="53.9" r="38"/>
|
<circle class="cls-2" cx="53.73" cy="53.9" r="38"/>
|
||||||
</svg>
|
</svg>
|
||||||
<span class="serverListingStarTooltip">Main Server</span>
|
<span class="serverListingStarTooltip">Serveur Principal</span>
|
||||||
</div>` : ''}
|
</div>` : ''}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -350,8 +350,8 @@ ipcRenderer.on(MSFT_OPCODE.REPLY_LOGIN, (_, ...arguments_) => {
|
|||||||
|
|
||||||
// Unexpected error.
|
// Unexpected error.
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Something Went Wrong',
|
`Quelque chose s'est mal passé`,
|
||||||
'Microsoft authentication failed. Please try again.',
|
`L'authentification Microsoft a échoué. Veuillez réessayer.`,
|
||||||
'OK'
|
'OK'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
@ -406,8 +406,8 @@ ipcRenderer.on(MSFT_OPCODE.REPLY_LOGIN, (_, ...arguments_) => {
|
|||||||
// Uh oh.
|
// Uh oh.
|
||||||
msftLoginLogger.error('Unhandled error during login.', displayableError)
|
msftLoginLogger.error('Unhandled error during login.', displayableError)
|
||||||
actualDisplayableError = {
|
actualDisplayableError = {
|
||||||
title: 'Unknown Error During Login',
|
title: 'Erreur inconnue lors de la connexion',
|
||||||
desc: 'An unknown error has occurred. Please see the console for details.'
|
desc: `Une erreur inconnue s'est produite. Veuillez consulter la console pour plus de détails.`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,11 +437,11 @@ function bindAuthAccountSelect(){
|
|||||||
for(let i=0; i<selectBtns.length; i++){
|
for(let i=0; i<selectBtns.length; i++){
|
||||||
if(selectBtns[i].hasAttribute('selected')){
|
if(selectBtns[i].hasAttribute('selected')){
|
||||||
selectBtns[i].removeAttribute('selected')
|
selectBtns[i].removeAttribute('selected')
|
||||||
selectBtns[i].innerHTML = 'Select Account'
|
selectBtns[i].innerHTML = 'Sélectionnez un compte'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val.setAttribute('selected', '')
|
val.setAttribute('selected', '')
|
||||||
val.innerHTML = 'Selected Account ✔'
|
val.innerHTML = 'Compte sélectionné ✔'
|
||||||
setSelectedAccount(val.closest('.settingsAuthAccount').getAttribute('uuid'))
|
setSelectedAccount(val.closest('.settingsAuthAccount').getAttribute('uuid'))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -459,10 +459,10 @@ function bindAuthAccountLogOut(){
|
|||||||
if(Object.keys(ConfigManager.getAuthAccounts()).length === 1){
|
if(Object.keys(ConfigManager.getAuthAccounts()).length === 1){
|
||||||
isLastAccount = true
|
isLastAccount = true
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Warning<br>This is Your Last Account',
|
'Avertissement<br>Ceci est votre dernier compte',
|
||||||
'In order to use the launcher you must be logged into at least one account. You will need to login again after.<br><br>Are you sure you want to log out?',
|
'Pour utiliser le lanceur, vous devez être connecté à au moins un compte. Vous devrez vous reconnecter après.<br><br>Voulez-vous vraiment vous déconnecter ?',
|
||||||
'I\'m Sure',
|
'Je suis sûr',
|
||||||
'Cancel'
|
'Annuler'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
processLogOut(val, isLastAccount)
|
processLogOut(val, isLastAccount)
|
||||||
@ -531,8 +531,8 @@ ipcRenderer.on(MSFT_OPCODE.REPLY_LOGOUT, (_, ...arguments_) => {
|
|||||||
|
|
||||||
// Unexpected error.
|
// Unexpected error.
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Something Went Wrong',
|
`Quelque chose s'est mal passé`,
|
||||||
'Microsoft logout failed. Please try again.',
|
'La déconnexion de Microsoft a échoué. Veuillez réessayer.',
|
||||||
'OK'
|
'OK'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
@ -587,12 +587,12 @@ function refreshAuthAccountSelected(uuid){
|
|||||||
const selBtn = val.getElementsByClassName('settingsAuthAccountSelect')[0]
|
const selBtn = val.getElementsByClassName('settingsAuthAccountSelect')[0]
|
||||||
if(uuid === val.getAttribute('uuid')){
|
if(uuid === val.getAttribute('uuid')){
|
||||||
selBtn.setAttribute('selected', '')
|
selBtn.setAttribute('selected', '')
|
||||||
selBtn.innerHTML = 'Selected Account ✔'
|
selBtn.innerHTML = 'Compte sélectionné ✔'
|
||||||
} else {
|
} else {
|
||||||
if(selBtn.hasAttribute('selected')){
|
if(selBtn.hasAttribute('selected')){
|
||||||
selBtn.removeAttribute('selected')
|
selBtn.removeAttribute('selected')
|
||||||
}
|
}
|
||||||
selBtn.innerHTML = 'Select Account'
|
selBtn.innerHTML = 'Sélectionnez un compte'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -624,7 +624,7 @@ function populateAuthAccounts(){
|
|||||||
<div class="settingsAuthAccountRight">
|
<div class="settingsAuthAccountRight">
|
||||||
<div class="settingsAuthAccountDetails">
|
<div class="settingsAuthAccountDetails">
|
||||||
<div class="settingsAuthAccountDetailPane">
|
<div class="settingsAuthAccountDetailPane">
|
||||||
<div class="settingsAuthAccountDetailTitle">Username</div>
|
<div class="settingsAuthAccountDetailTitle">Nom d'utilisateur</div>
|
||||||
<div class="settingsAuthAccountDetailValue">${acc.displayName}</div>
|
<div class="settingsAuthAccountDetailValue">${acc.displayName}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="settingsAuthAccountDetailPane">
|
<div class="settingsAuthAccountDetailPane">
|
||||||
@ -633,9 +633,9 @@ function populateAuthAccounts(){
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="settingsAuthAccountActions">
|
<div class="settingsAuthAccountActions">
|
||||||
<button class="settingsAuthAccountSelect" ${selectedUUID === acc.uuid ? 'selected>Selected Account ✔' : '>Select Account'}</button>
|
<button class="settingsAuthAccountSelect" ${selectedUUID === acc.uuid ? 'selected>Compte sélectionné ✔' : '>Sélectionnez un compte'}</button>
|
||||||
<div class="settingsAuthAccountWrapper">
|
<div class="settingsAuthAccountWrapper">
|
||||||
<button class="settingsAuthAccountLogOut">Log Out</button>
|
<button class="settingsAuthAccountLogOut">Se déconnecter</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -849,7 +849,7 @@ function resolveDropinModsForUI(){
|
|||||||
<div class="settingsModDetails">
|
<div class="settingsModDetails">
|
||||||
<span class="settingsModName">${dropin.name}</span>
|
<span class="settingsModName">${dropin.name}</span>
|
||||||
<div class="settingsDropinRemoveWrapper">
|
<div class="settingsDropinRemoveWrapper">
|
||||||
<button class="settingsDropinRemoveButton" remmod="${dropin.fullName}">Remove</button>
|
<button class="settingsDropinRemoveButton" remmod="${dropin.fullName}">Supprimer</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -877,8 +877,8 @@ function bindDropinModsRemoveButton(){
|
|||||||
document.getElementById(fullName).remove()
|
document.getElementById(fullName).remove()
|
||||||
} else {
|
} else {
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
`Failed to Delete<br>Drop-in Mod ${fullName}`,
|
`Échec de la suppression<br>Mod d'insertion ${fullName}`,
|
||||||
'Make sure the file is not in use and try again.',
|
`Assurez-vous que le fichier n'est pas utilisé et réessayez.`,
|
||||||
'Okay'
|
'Okay'
|
||||||
)
|
)
|
||||||
setOverlayHandler(null)
|
setOverlayHandler(null)
|
||||||
@ -932,7 +932,7 @@ function saveDropinModConfiguration(){
|
|||||||
DropinModUtil.toggleDropinMod(CACHE_SETTINGS_MODS_DIR, dropin.fullName, dropinUIEnabled).catch(err => {
|
DropinModUtil.toggleDropinMod(CACHE_SETTINGS_MODS_DIR, dropin.fullName, dropinUIEnabled).catch(err => {
|
||||||
if(!isOverlayVisible()){
|
if(!isOverlayVisible()){
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Failed to Toggle<br>One or More Drop-in Mods',
|
`Impossible de basculer<br>un ou plusieurs mods d'insertion`,
|
||||||
err.message,
|
err.message,
|
||||||
'Okay'
|
'Okay'
|
||||||
)
|
)
|
||||||
@ -1068,7 +1068,7 @@ function loadSelectedServerOnModsTab(){
|
|||||||
<path class="cls-1" d="M100.93,65.54C89,62,68.18,55.65,63.54,52.13c2.7-5.23,18.8-19.2,28-27.55C81.36,31.74,63.74,43.87,58.09,45.3c-2.41-5.37-3.61-26.52-4.37-39-.77,12.46-2,33.64-4.36,39-5.7-1.46-23.3-13.57-33.49-20.72,9.26,8.37,25.39,22.36,28,27.55C39.21,55.68,18.47,62,6.52,65.55c12.32-2,33.63-6.06,39.34-4.9-.16,5.87-8.41,26.16-13.11,37.69,6.1-10.89,16.52-30.16,21-33.9,4.5,3.79,14.93,23.09,21,34C70,86.84,61.73,66.48,61.59,60.65,67.36,59.49,88.64,63.52,100.93,65.54Z"/>
|
<path class="cls-1" d="M100.93,65.54C89,62,68.18,55.65,63.54,52.13c2.7-5.23,18.8-19.2,28-27.55C81.36,31.74,63.74,43.87,58.09,45.3c-2.41-5.37-3.61-26.52-4.37-39-.77,12.46-2,33.64-4.36,39-5.7-1.46-23.3-13.57-33.49-20.72,9.26,8.37,25.39,22.36,28,27.55C39.21,55.68,18.47,62,6.52,65.55c12.32-2,33.63-6.06,39.34-4.9-.16,5.87-8.41,26.16-13.11,37.69,6.1-10.89,16.52-30.16,21-33.9,4.5,3.79,14.93,23.09,21,34C70,86.84,61.73,66.48,61.59,60.65,67.36,59.49,88.64,63.52,100.93,65.54Z"/>
|
||||||
<circle class="cls-2" cx="53.73" cy="53.9" r="38"/>
|
<circle class="cls-2" cx="53.73" cy="53.9" r="38"/>
|
||||||
</svg>
|
</svg>
|
||||||
<span class="serverListingStarTooltip">Main Server</span>
|
<span class="serverListingStarTooltip">Serveur Principal</span>
|
||||||
</div>` : ''}
|
</div>` : ''}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -1324,12 +1324,12 @@ function populateJavaExecDetails(execPath){
|
|||||||
if(v.valid){
|
if(v.valid){
|
||||||
const vendor = v.vendor != null ? ` (${v.vendor})` : ''
|
const vendor = v.vendor != null ? ` (${v.vendor})` : ''
|
||||||
if(v.version.major < 9) {
|
if(v.version.major < 9) {
|
||||||
settingsJavaExecDetails.innerHTML = `Selected: Java ${v.version.major} Update ${v.version.update} (x${v.arch})${vendor}`
|
settingsJavaExecDetails.innerHTML = `Sélectionné : Java ${v.version.major} Mettre à jour ${v.version.update} (x${v.arch})${vendor}`
|
||||||
} else {
|
} else {
|
||||||
settingsJavaExecDetails.innerHTML = `Selected: Java ${v.version.major}.${v.version.minor}.${v.version.revision} (x${v.arch})${vendor}`
|
settingsJavaExecDetails.innerHTML = `Sélectionné : Java ${v.version.major}.${v.version.minor}.${v.version.revision} (x${v.arch})${vendor}`
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
settingsJavaExecDetails.innerHTML = 'Invalid Selection'
|
settingsJavaExecDetails.innerHTML = 'Selection invalide'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1380,11 +1380,11 @@ function isPrerelease(version){
|
|||||||
function populateVersionInformation(version, valueElement, titleElement, checkElement){
|
function populateVersionInformation(version, valueElement, titleElement, checkElement){
|
||||||
valueElement.innerHTML = version
|
valueElement.innerHTML = version
|
||||||
if(isPrerelease(version)){
|
if(isPrerelease(version)){
|
||||||
titleElement.innerHTML = 'Pre-release'
|
titleElement.innerHTML = 'Avant-première'
|
||||||
titleElement.style.color = '#ff886d'
|
titleElement.style.color = '#ff886d'
|
||||||
checkElement.style.background = '#ff886d'
|
checkElement.style.background = '#ff886d'
|
||||||
} else {
|
} else {
|
||||||
titleElement.innerHTML = 'Stable Release'
|
titleElement.innerHTML = 'Version stable'
|
||||||
titleElement.style.color = null
|
titleElement.style.color = null
|
||||||
checkElement.style.background = null
|
checkElement.style.background = null
|
||||||
}
|
}
|
||||||
@ -1423,7 +1423,7 @@ function populateReleaseNotes(){
|
|||||||
},
|
},
|
||||||
timeout: 2500
|
timeout: 2500
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
settingsAboutChangelogText.innerHTML = 'Failed to load release notes.'
|
settingsAboutChangelogText.innerHTML = 'Échec du chargement des notes de version.'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1471,27 +1471,27 @@ function settingsUpdateButtonStatus(text, disabled = false, handler = null){
|
|||||||
*/
|
*/
|
||||||
function populateSettingsUpdateInformation(data){
|
function populateSettingsUpdateInformation(data){
|
||||||
if(data != null){
|
if(data != null){
|
||||||
settingsUpdateTitle.innerHTML = `New ${isPrerelease(data.version) ? 'Pre-release' : 'Release'} Available`
|
settingsUpdateTitle.innerHTML = `Nouvelle ${isPrerelease(data.version) ? 'Pre-version' : 'Version'} Disponible`
|
||||||
settingsUpdateChangelogCont.style.display = null
|
settingsUpdateChangelogCont.style.display = null
|
||||||
settingsUpdateChangelogTitle.innerHTML = data.releaseName
|
settingsUpdateChangelogTitle.innerHTML = data.releaseName
|
||||||
settingsUpdateChangelogText.innerHTML = data.releaseNotes
|
settingsUpdateChangelogText.innerHTML = data.releaseNotes
|
||||||
populateVersionInformation(data.version, settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck)
|
populateVersionInformation(data.version, settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck)
|
||||||
|
|
||||||
if(process.platform === 'darwin'){
|
if(process.platform === 'darwin'){
|
||||||
settingsUpdateButtonStatus('Download from GitHub<span style="font-size: 10px;color: gray;text-shadow: none !important;">Close the launcher and run the dmg to update.</span>', false, () => {
|
settingsUpdateButtonStatus('Télécharger depuis GitHub<span style="font-size: 10px;color: gray;text-shadow: none !important;">Fermez le lanceur et exécutez le dmg pour mettre à jour.</span>', false, () => {
|
||||||
shell.openExternal(data.darwindownload)
|
shell.openExternal(data.darwindownload)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
settingsUpdateButtonStatus('Downloading..', true)
|
settingsUpdateButtonStatus('Téléchargement..', true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
settingsUpdateTitle.innerHTML = 'You Are Running the Latest Version'
|
settingsUpdateTitle.innerHTML = 'Vous utilisez la dernière version'
|
||||||
settingsUpdateChangelogCont.style.display = 'none'
|
settingsUpdateChangelogCont.style.display = 'none'
|
||||||
populateVersionInformation(remote.app.getVersion(), settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck)
|
populateVersionInformation(remote.app.getVersion(), settingsUpdateVersionValue, settingsUpdateVersionTitle, settingsUpdateVersionCheck)
|
||||||
settingsUpdateButtonStatus('Check for Updates', false, () => {
|
settingsUpdateButtonStatus('Vérifier les mises à jour', false, () => {
|
||||||
if(!isDev){
|
if(!isDev){
|
||||||
ipcRenderer.send('autoUpdateAction', 'checkForUpdate')
|
ipcRenderer.send('autoUpdateAction', 'checkForUpdate')
|
||||||
settingsUpdateButtonStatus('Checking for Updates..', true)
|
settingsUpdateButtonStatus('Vérification des mises à jour..', true)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ function showMainUI(data){
|
|||||||
refreshServerStatus()
|
refreshServerStatus()
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
document.getElementById('frameBar').style.backgroundColor = 'rgba(0, 0, 0, 0.5)'
|
document.getElementById('frameBar').style.backgroundColor = 'rgba(0, 0, 0, 0.5)'
|
||||||
document.body.style.backgroundImage = `url('assets/images/backgrounds/${document.body.getAttribute('bkid')}.jpg')`
|
document.body.style.backgroundImage = `url('assets/images/backgrounds/${document.body.getAttribute('bkid')}.png')`
|
||||||
$('#main').show()
|
$('#main').show()
|
||||||
|
|
||||||
const isLoggedIn = Object.keys(ConfigManager.getAuthAccounts()).length > 0
|
const isLoggedIn = Object.keys(ConfigManager.getAuthAccounts()).length > 0
|
||||||
@ -114,9 +114,9 @@ function showFatalStartupError(){
|
|||||||
$('#loadingContainer').fadeOut(250, () => {
|
$('#loadingContainer').fadeOut(250, () => {
|
||||||
document.getElementById('overlayContainer').style.background = 'none'
|
document.getElementById('overlayContainer').style.background = 'none'
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Fatal Error: Unable to Load Distribution Index',
|
`Erreur fatale : impossible de charger l'index de distribution`,
|
||||||
'A connection could not be established to our servers to download the distribution index. No local copies were available to load. <br><br>The distribution index is an essential file which provides the latest server information. The launcher is unable to start without it. Ensure you are connected to the internet and relaunch the application.',
|
`A connection could not be established to our servers to download the distribution index. No local copies were available to load. <br><br>The distribution index is an essential file which provides the latest server information. The launcher is unable to start without it. Ensure you are connected to the internet and relaunch the application.`,
|
||||||
'Close'
|
'Fermer'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
const window = remote.getCurrentWindow()
|
const window = remote.getCurrentWindow()
|
||||||
@ -328,10 +328,10 @@ async function validateSelectedAccount(){
|
|||||||
ConfigManager.save()
|
ConfigManager.save()
|
||||||
const accLen = Object.keys(ConfigManager.getAuthAccounts()).length
|
const accLen = Object.keys(ConfigManager.getAuthAccounts()).length
|
||||||
setOverlayContent(
|
setOverlayContent(
|
||||||
'Failed to Refresh Login',
|
`Échec de l'actualisation de la connexion`,
|
||||||
`We were unable to refresh the login for <strong>${selectedAcc.displayName}</strong>. Please ${accLen > 0 ? 'select another account or ' : ''} login again.`,
|
`Nous n'avons pas pu actualiser la connexion pour <strong>${selectedAcc.displayName}</strong>. S'il te plaît ${accLen > 0 ? 'sélectionnez un autre compte ou ' : ''} reconnectez-vous.`,
|
||||||
'Login',
|
'Connexion',
|
||||||
'Select Another Account'
|
'Sélectionnez un autre compte'
|
||||||
)
|
)
|
||||||
setOverlayHandler(() => {
|
setOverlayHandler(() => {
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ if(!isDev){
|
|||||||
switch(arg){
|
switch(arg){
|
||||||
case 'checking-for-update':
|
case 'checking-for-update':
|
||||||
loggerAutoUpdater.log('Checking for update..')
|
loggerAutoUpdater.log('Checking for update..')
|
||||||
settingsUpdateButtonStatus('Checking for Updates..', true)
|
settingsUpdateButtonStatus('Vérification des mises à jour..', true)
|
||||||
break
|
break
|
||||||
case 'update-available':
|
case 'update-available':
|
||||||
loggerAutoUpdaterSuccess.log('New update available', info.version)
|
loggerAutoUpdaterSuccess.log('New update available', info.version)
|
||||||
@ -58,7 +58,7 @@ if(!isDev){
|
|||||||
break
|
break
|
||||||
case 'update-downloaded':
|
case 'update-downloaded':
|
||||||
loggerAutoUpdaterSuccess.log('Update ' + info.version + ' ready to be installed.')
|
loggerAutoUpdaterSuccess.log('Update ' + info.version + ' ready to be installed.')
|
||||||
settingsUpdateButtonStatus('Install Now', false, () => {
|
settingsUpdateButtonStatus('Installer maintenant', false, () => {
|
||||||
if(!isDev){
|
if(!isDev){
|
||||||
ipcRenderer.send('autoUpdateAction', 'installUpdateNow')
|
ipcRenderer.send('autoUpdateAction', 'installUpdateNow')
|
||||||
}
|
}
|
||||||
@ -67,7 +67,7 @@ if(!isDev){
|
|||||||
break
|
break
|
||||||
case 'update-not-available':
|
case 'update-not-available':
|
||||||
loggerAutoUpdater.log('No new update found.')
|
loggerAutoUpdater.log('No new update found.')
|
||||||
settingsUpdateButtonStatus('Check for Updates')
|
settingsUpdateButtonStatus('Vérifier les mises à jour')
|
||||||
break
|
break
|
||||||
case 'ready':
|
case 'ready':
|
||||||
updateCheckListener = setInterval(() => {
|
updateCheckListener = setInterval(() => {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"html": {
|
"html": {
|
||||||
"avatarOverlay": "Edit"
|
"avatarOverlay": "Modifier"
|
||||||
},
|
},
|
||||||
"js": {
|
"js": {
|
||||||
"login": {
|
"login": {
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
<div id="settingsTabMinecraft" class="settingsTab" style="display: none;">
|
<div id="settingsTabMinecraft" class="settingsTab" style="display: none;">
|
||||||
<div class="settingsTabHeader">
|
<div class="settingsTabHeader">
|
||||||
<span class="settingsTabHeaderText">Paramètres de Minecraft</span>
|
<span class="settingsTabHeaderText">Paramètres de Minecraft</span>
|
||||||
<span class="settingsTabHeaderDesc"> Options liées au lancement du jeu.</span>
|
<span class="settingsTabHeaderDesc">Options liées au lancement du jeu.</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="settingsGameResolutionContainer">
|
<div id="settingsGameResolutionContainer">
|
||||||
<span class="settingsFieldTitle">Résolution du jeu</span>
|
<span class="settingsFieldTitle">Résolution du jeu</span>
|
||||||
@ -329,32 +329,32 @@
|
|||||||
<div class="settingsChangelogContainer">
|
<div class="settingsChangelogContainer">
|
||||||
<div class="settingsChangelogContent">
|
<div class="settingsChangelogContent">
|
||||||
<div class="settingsChangelogHeadline">
|
<div class="settingsChangelogHeadline">
|
||||||
<div class="settingsChangelogLabel">Release Notes</div>
|
<div class="settingsChangelogLabel">Notes de version</div>
|
||||||
<div class="settingsChangelogTitle">Changelog</div>
|
<div class="settingsChangelogTitle">Changelog</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="settingsChangelogText">
|
<div class="settingsChangelogText">
|
||||||
No Release Notes
|
Aucune note de version
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="settingsChangelogActions">
|
<div class="settingsChangelogActions">
|
||||||
<a class="settingsChangelogButton settingsAboutButton" href="#">View Release Notes on GitHub</a>
|
<a class="settingsChangelogButton settingsAboutButton" href="#">Afficher les notes de publication sur GitHub</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="settingsTabUpdate" class="settingsTab" style="display: none;">
|
<div id="settingsTabUpdate" class="settingsTab" style="display: none;">
|
||||||
<div class="settingsTabHeader">
|
<div class="settingsTabHeader">
|
||||||
<span class="settingsTabHeaderText">Launcher Updates</span>
|
<span class="settingsTabHeaderText">Mises à jour du lanceur</span>
|
||||||
<span class="settingsTabHeaderDesc">Download, install, and review updates for the launcher.</span>
|
<span class="settingsTabHeaderDesc">Téléchargez, installez et examinez les mises à jour pour le lanceur.</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="settingsUpdateStatusContainer">
|
<div id="settingsUpdateStatusContainer">
|
||||||
<div id="settingsUpdateStatusContent">
|
<div id="settingsUpdateStatusContent">
|
||||||
<div id="settingsUpdateStatusHeadline">
|
<div id="settingsUpdateStatusHeadline">
|
||||||
<span id="settingsUpdateTitle">You Are Running the Latest Version</span>
|
<span id="settingsUpdateTitle">Vous utilisez la dernière version</span>
|
||||||
</div>
|
</div>
|
||||||
<div id="settingsUpdateVersion">
|
<div id="settingsUpdateVersion">
|
||||||
<div id="settingsUpdateVersionCheck">✓</div>
|
<div id="settingsUpdateVersionCheck">✓</div>
|
||||||
<div id="settingsUpdateVersionDetails">
|
<div id="settingsUpdateVersionDetails">
|
||||||
<span id="settingsUpdateVersionTitle">Stable Release</span>
|
<span id="settingsUpdateVersionTitle">Version stable</span>
|
||||||
<div id="settingsUpdateVersionLine">
|
<div id="settingsUpdateVersionLine">
|
||||||
<span id="settingsUpdateVersionText">Version </span>
|
<span id="settingsUpdateVersionText">Version </span>
|
||||||
<span id="settingsUpdateVersionValue">0.0.1-alpha.18</span>
|
<span id="settingsUpdateVersionValue">0.0.1-alpha.18</span>
|
||||||
@ -362,18 +362,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="settingsUpdateActionContainer">
|
<div id="settingsUpdateActionContainer">
|
||||||
<button id="settingsUpdateActionButton">Check for Updates</button>
|
<button id="settingsUpdateActionButton">Vérifier les mises à jour</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="settingsChangelogContainer">
|
<div class="settingsChangelogContainer">
|
||||||
<div class="settingsChangelogContent">
|
<div class="settingsChangelogContent">
|
||||||
<div class="settingsChangelogHeadline">
|
<div class="settingsChangelogHeadline">
|
||||||
<div class="settingsChangelogLabel">What's New</div>
|
<div class="settingsChangelogLabel">Quoi de neuf</div>
|
||||||
<div class="settingsChangelogTitle">Update Release Notes</div>
|
<div class="settingsChangelogTitle">Mettre à jour les notes de version</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="settingsChangelogText">
|
<div class="settingsChangelogText">
|
||||||
No Release Notes
|
Aucune note de version
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
owner: dscalzi
|
owner: Sorax5
|
||||||
repo: HeliosLauncher
|
repo: LukiEnLiveLauncher
|
||||||
provider: github
|
provider: github
|
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lukienlivelauncher",
|
"name": "lukienlivelauncher",
|
||||||
"version": "1.9.0",
|
"version": "1.0.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "lukienlivelauncher",
|
"name": "lukienlivelauncher",
|
||||||
"version": "1.9.0",
|
"version": "1.0.0",
|
||||||
"productName": "LukiEnLive Launcher",
|
"productName": "LukiEnLive Launcher",
|
||||||
"description": "Launcher du serveur Moddé du Streameur LukiEnLive",
|
"description": "Launcher du serveur Moddé du Streameur LukiEnLive",
|
||||||
"author": "Daniel Scalzi (https://github.com/dscalzi/) SoraxDubbing / Luki",
|
"author": "Daniel Scalzi (https://github.com/dscalzi/) SoraxDubbing / Luki",
|
||||||
|