diff --git a/src/lang/american.txt b/src/lang/american.txt index 5976319405..d0f098760f 100644 --- a/src/lang/american.txt +++ b/src/lang/american.txt @@ -1900,9 +1900,9 @@ STR_4003_DELETE :{BLACK}Delete STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} free STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive -STR_4007_GAME_SAVE_FAILED :{WHITE}Game Save Failed +STR_4007_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file -STR_4009_GAME_LOAD_FAILED :{WHITE}Game Load Failed +STR_4009_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}List of drives, directories and saved-game files STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Currently selected name for saved-game STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Delete the currently selected saved-game diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 37933f957a..55ff10995b 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -1908,9 +1908,9 @@ STR_4003_DELETE :{BLACK}Remover STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabytes livres STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Incapaz de ler unidade -STR_4007_GAME_SAVE_FAILED :{WHITE}Falha ao Salvar Jogo +STR_4007_GAME_SAVE_FAILED :{WHITE}Falha ao Salvar Jogo{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Incapaz de remover o arquivo -STR_4009_GAME_LOAD_FAILED :{WHITE}Falha ao Abrir Jogo +STR_4009_GAME_LOAD_FAILED :{WHITE}Falha ao Abrir Jogo{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista de unidades, diretórios e arquivos de jogos gravados STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nome selecionado para salvar o jogo STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Remover o jogo selecionado diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 496fc40903..adc0dc1a0a 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -1894,9 +1894,9 @@ STR_4003_DELETE :{BLACK}Изтр STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} мегабайт{P "" а} свободно STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Не може да прочете диска -STR_4007_GAME_SAVE_FAILED :{WHITE}Запазването на играта е неуспешно +STR_4007_GAME_SAVE_FAILED :{WHITE}Запазването на играта е неуспешно{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Изтриването на файла е неуспешно -STR_4009_GAME_LOAD_FAILED :{WHITE}Отварянето на играта е неуспешно +STR_4009_GAME_LOAD_FAILED :{WHITE}Отварянето на играта е неуспешно{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Списък с хард-дисковете, директориите и запазените игри STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Избрано име за запазена игра STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Изтрий избраната запазената игра diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 5270558bf3..be696e4553 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -1904,9 +1904,9 @@ STR_4003_DELETE :{BLACK}Esborra STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabytes lliures STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Impossible llegir la unitat de disc -STR_4007_GAME_SAVE_FAILED :{WHITE}Desat del Joc erroni +STR_4007_GAME_SAVE_FAILED :{WHITE}Desat del Joc erroni{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Impossible esborrar l'arxiu -STR_4009_GAME_LOAD_FAILED :{WHITE}Càrrega del Joc errònia +STR_4009_GAME_LOAD_FAILED :{WHITE}Càrrega del Joc errònia{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Llista de dispositius de disc, carpetes i arxius de jocs desats STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nom actualment seleccionat per joc desat STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Esborra el joc desat actualment seleccionat diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 47ec83d588..578aaf3947 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -1958,9 +1958,9 @@ STR_4003_DELETE :{BLACK}Smazat STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} MB voln{P ý é ých} STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Nemohu číst z jednotky -STR_4007_GAME_SAVE_FAILED :{WHITE}Uložení hry selhalo +STR_4007_GAME_SAVE_FAILED :{WHITE}Uložení hry selhalo{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Nemohu smazat soubor -STR_4009_GAME_LOAD_FAILED :{WHITE}Nemohu otevřít hru +STR_4009_GAME_LOAD_FAILED :{WHITE}Nemohu otevřít hru{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Seznam jednotek, adresářů a uložených her STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Zvolené jméno uložené hry STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Smazat označenou uloženou hru diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 6c37450be7..2bdf50690f 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -1903,9 +1903,9 @@ STR_4003_DELETE :{BLACK}Slet STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabytes fri STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke læse drevet -STR_4007_GAME_SAVE_FAILED :{WHITE}Fejl under gemning af spil +STR_4007_GAME_SAVE_FAILED :{WHITE}Fejl under gemning af spil{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil -STR_4009_GAME_LOAD_FAILED :{WHITE}Fejl under hentning af spil +STR_4009_GAME_LOAD_FAILED :{WHITE}Fejl under hentning af spil{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Liste over drev, biblioteker og gemte spilfiler STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nuværende gemte spils navn STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Slet det valgte gemte spil diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index e656733ab8..ab6d05c145 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -1904,9 +1904,9 @@ STR_4003_DELETE :{BLACK}Verwijde STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabytes vrij STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kan niet lezen van schijf -STR_4007_GAME_SAVE_FAILED :{WHITE}Opslaan Spel Mislukt +STR_4007_GAME_SAVE_FAILED :{WHITE}Opslaan Spel Mislukt{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan bestand niet verwijderen -STR_4009_GAME_LOAD_FAILED :{WHITE}Laden Spel Mislukt +STR_4009_GAME_LOAD_FAILED :{WHITE}Laden Spel Mislukt{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lijst van schijven, mappen, en opgeslagen spellen STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Huidige gekozen naam voor opgeslagen spel STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Verwijder het momenteel geselecteerde opgeslagen spel diff --git a/src/lang/english.txt b/src/lang/english.txt index 8c366ed9a3..410889c902 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1904,9 +1904,14 @@ STR_4003_DELETE :{BLACK}Delete STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} free STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Unable to read drive -STR_4007_GAME_SAVE_FAILED :{WHITE}Game Save Failed +STR_4007_GAME_SAVE_FAILED :{WHITE}Game Save Failed{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Unable to delete file -STR_4009_GAME_LOAD_FAILED :{WHITE}Game Load Failed +STR_4009_GAME_LOAD_FAILED :{WHITE}Game Load Failed{}{STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Internal error: {STRING} +STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Broken savegame - {STRING} +STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Savegame is made with newer version +STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :File not readable +STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :File not writeable STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}List of drives, directories and saved-game files STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Currently selected name for saved-game STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Delete the currently selected saved-game diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index b730164d09..21119a3e3a 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -1842,9 +1842,9 @@ STR_4003_DELETE :{BLACK}Forviŝu STR_4004 :{COMPANY} je {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabitoko{P "" j} libera{P "" j} STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Ne eblas legi diskon -STR_4007_GAME_SAVE_FAILED :{WHITE}Ludkonservado Fiaskis +STR_4007_GAME_SAVE_FAILED :{WHITE}Ludkonservado Fiaskis{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Ne eblas forviŝi dosieron -STR_4009_GAME_LOAD_FAILED :{WHITE}Ludŝarĝado Fiaskis +STR_4009_GAME_LOAD_FAILED :{WHITE}Ludŝarĝado Fiaskis{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Listo da diskoj, dosierujoj kaj luddosieroj STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nune elektita nomo por luddosiero STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Forviŝu la nun elektitan luddosieron diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 8ebf5ff018..538645179f 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -2004,9 +2004,9 @@ STR_4003_DELETE :{BLACK}Kustuta STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabaiti{P "" i} vaba STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Ei suuda kettalt lugeda -STR_4007_GAME_SAVE_FAILED :{WHITE}Mängu salvestamine ebaõnnestus +STR_4007_GAME_SAVE_FAILED :{WHITE}Mängu salvestamine ebaõnnestus{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Faili ei saa kustutada -STR_4009_GAME_LOAD_FAILED :{WHITE}Mängu laadimine ebaõnnestus +STR_4009_GAME_LOAD_FAILED :{WHITE}Mängu laadimine ebaõnnestus{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Nimekiri ketastest, kataloogidest ja salvestatud mängudest STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Mängu salvestuse nimi STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Kustuta valitud salvestus diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 908d5d7860..5a1c03410b 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -1893,9 +1893,9 @@ STR_4003_DELETE :{BLACK}Poista STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megatavu{P "" a} vapaana STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Asemaa ei voi lukea. -STR_4007_GAME_SAVE_FAILED :{WHITE}Tallennus epäonnistui. +STR_4007_GAME_SAVE_FAILED :{WHITE}Tallennus epäonnistui.{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Tiedostoa ei voi poistaa. -STR_4009_GAME_LOAD_FAILED :{WHITE}Lataus epäonnistui. +STR_4009_GAME_LOAD_FAILED :{WHITE}Lataus epäonnistui.{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista asemista, hakemistoista ja tallennetuista peleistä. STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Valittu nimi pelitallenteelle. STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Poista valittu pelitallenne. diff --git a/src/lang/french.txt b/src/lang/french.txt index f0b9b370a8..f885345c86 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -1905,9 +1905,9 @@ STR_4003_DELETE :{BLACK}Supprime STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} Mo libre{P "" s} STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Impossible d'accéder au disque -STR_4007_GAME_SAVE_FAILED :{WHITE}La sauvegarde à échoué +STR_4007_GAME_SAVE_FAILED :{WHITE}La sauvegarde à échoué{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Impossible de supprimer le fichier -STR_4009_GAME_LOAD_FAILED :{WHITE}Le chargement à échoué +STR_4009_GAME_LOAD_FAILED :{WHITE}Le chargement à échoué{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Liste des disques, répertoires, et fichiers de sauvegarde STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nom sélectionné pour la sauvegarde STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Supprime la sauvegarde sélectionnée diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 30d7266606..02185139ce 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -1751,9 +1751,9 @@ STR_4003_DELETE :{BLACK}Borrar STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabytes libres STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}No se pode lee-la unidade -STR_4007_GAME_SAVE_FAILED :{WHITE}Grabación da partida fallida +STR_4007_GAME_SAVE_FAILED :{WHITE}Grabación da partida fallida{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Non se pode borra-lo arquivo -STR_4009_GAME_LOAD_FAILED :{WHITE}Carga da partida fallida +STR_4009_GAME_LOAD_FAILED :{WHITE}Carga da partida fallida{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista de unidades, directorios e arquivos de partida STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nome seleccionado actualmente para o arquivo STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Borra-lo arquivo que está seleccionado diff --git a/src/lang/german.txt b/src/lang/german.txt index 86548a61c2..1a9521d0c8 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -1902,9 +1902,9 @@ STR_4003_DELETE :{BLACK}Löschen STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} Megabyte{P "" s} frei STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kann vom Laufwerk nicht lesen -STR_4007_GAME_SAVE_FAILED :{WHITE}Spielspeicherung fehlgeschlagen +STR_4007_GAME_SAVE_FAILED :{WHITE}Spielspeicherung fehlgeschlagen{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Datei kann nicht gelöscht werden -STR_4009_GAME_LOAD_FAILED :{WHITE}Laden des Spieles fehlgeschlagen +STR_4009_GAME_LOAD_FAILED :{WHITE}Laden des Spieles fehlgeschlagen{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Liste der Laufwerke, Verzeichnisse und gespeicherten Spiele STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Ausgewählter Spielname STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Lösche gewählten Spielstand diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 49ee799184..6564a511f2 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -1970,9 +1970,9 @@ STR_4003_DELETE :{BLACK}Töröl STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabájt szabad STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Nem olvasható a meghajtó -STR_4007_GAME_SAVE_FAILED :{WHITE}A mentés nem sikerült +STR_4007_GAME_SAVE_FAILED :{WHITE}A mentés nem sikerült{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Nem sikerült törölni a fájlt -STR_4009_GAME_LOAD_FAILED :{WHITE}A betöltés nem sikerült +STR_4009_GAME_LOAD_FAILED :{WHITE}A betöltés nem sikerült{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Meghajtók, könyvtárak és mentések listája STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}A mentés neve STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}A kijelölt mentés törlése diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 2ed84c2f5c..c812914f6f 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -1809,9 +1809,9 @@ STR_4003_DELETE :{BLACK}Eyða STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabæti laus STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Get ekki lesið af drifi -STR_4007_GAME_SAVE_FAILED :{WHITE}Vistun leiks mistókst +STR_4007_GAME_SAVE_FAILED :{WHITE}Vistun leiks mistókst{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Get ekki eytt skrá -STR_4009_GAME_LOAD_FAILED :{WHITE}Mistókst að opna leik +STR_4009_GAME_LOAD_FAILED :{WHITE}Mistókst að opna leik{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Listi yfir drif, möppur og vistaða leiki STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nafn fyrir vistun leiks STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Eyða nafninu diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 166716285a..5718aa6413 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -1906,9 +1906,9 @@ STR_4003_DELETE :{BLACK}Elimina STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte liber{P o i} STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Impossibile leggere dall'unità -STR_4007_GAME_SAVE_FAILED :{WHITE}Salvataggio fallito +STR_4007_GAME_SAVE_FAILED :{WHITE}Salvataggio fallito{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Impossibile eliminare il file -STR_4009_GAME_LOAD_FAILED :{WHITE}Caricamento fallito +STR_4009_GAME_LOAD_FAILED :{WHITE}Caricamento fallito{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Elenco delle unità, delle cartelle e dei file delle partite salvate STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nome del salvataggio selezionato STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Elimina il salvataggio selezionato diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 665f4b77a4..6352538edb 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -1903,9 +1903,9 @@ STR_4003_DELETE :{BLACK}削除 STR_4004 :{COMPANY}、{DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} MB 使用可能 STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}ドライブが読み込めません -STR_4007_GAME_SAVE_FAILED :{WHITE}ゲームの保存が失敗しました +STR_4007_GAME_SAVE_FAILED :{WHITE}ゲームの保存が失敗しました{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}ファイルを削除できません -STR_4009_GAME_LOAD_FAILED :{WHITE}ゲームの読み込むが失敗しました +STR_4009_GAME_LOAD_FAILED :{WHITE}ゲームの読み込むが失敗しました{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}ドライブ、フォルダ、ゲームファイルのリスト STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}ゲームのファイル名 STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}選択したゲームを削除します diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 1765e101b8..105cc2e88a 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1905,9 +1905,9 @@ STR_4003_DELETE :{BLACK}파일 STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} Mb 남음 STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}드라이브를 읽을 수 없음 -STR_4007_GAME_SAVE_FAILED :{WHITE}게임 저장 실패 +STR_4007_GAME_SAVE_FAILED :{WHITE}게임 저장 실패{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}파일을 삭제할 수 없음 -STR_4009_GAME_LOAD_FAILED :{WHITE}게임 불러오기 실패 +STR_4009_GAME_LOAD_FAILED :{WHITE}게임 불러오기 실패{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}드라이프, 폴더, 저장된 게임 파일의 목록입니다 STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}저장될 세이브 파일의 이름입니다. STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}선택된 세이브 파일을 삭제합니다. diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 543e90e0cd..da1f1df9f4 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -1839,9 +1839,9 @@ STR_4003_DELETE :{BLACK}Trinti STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} Mb laisva STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Negali pasiekti disko -STR_4007_GAME_SAVE_FAILED :{WHITE}Zaidimo issaugoti nepavyko +STR_4007_GAME_SAVE_FAILED :{WHITE}Zaidimo issaugoti nepavyko{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Failo istrinti nepavyko -STR_4009_GAME_LOAD_FAILED :{WHITE}Zaidimo atverti nepavyko +STR_4009_GAME_LOAD_FAILED :{WHITE}Zaidimo atverti nepavyko{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Disku, katalogu ir issaugotu zaidimu sarasas STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Pasirinktas zaidimas STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Istrinti pasirinkta zaidima diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 4eea30fbe8..7c7af73d4b 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -1864,9 +1864,9 @@ STR_4003_DELETE :{BLACK}Slett STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte ledig STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikke lese fra disk -STR_4007_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes +STR_4007_GAME_SAVE_FAILED :{WHITE}Lagring av spillet mislyktes{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikke slette fil -STR_4009_GAME_LOAD_FAILED :{WHITE}Feil ved fremhenting av spill +STR_4009_GAME_LOAD_FAILED :{WHITE}Feil ved fremhenting av spill{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Liste over disker, mapper og lagrede spill STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Gjeldende navn for valgt lagret spill STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Slett valgte lagring diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 5481c3bb67..1ec2c13409 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -1900,9 +1900,9 @@ STR_4003_DELETE :{BLACK}Slett STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte ledig STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kan ikkje lese frå disk -STR_4007_GAME_SAVE_FAILED :{WHITE}Lagring av spelet mislukkast +STR_4007_GAME_SAVE_FAILED :{WHITE}Lagring av spelet mislukkast{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan ikkje slette fil -STR_4009_GAME_LOAD_FAILED :{WHITE}Feil ved henting av spel +STR_4009_GAME_LOAD_FAILED :{WHITE}Feil ved henting av spel{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Liste over diskar, mapper og lagra spel STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Gjeldande namn for vald lagra spel STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Slett valde lagra spel diff --git a/src/lang/piglatin.txt b/src/lang/piglatin.txt index 63d1275043..0562105799 100644 --- a/src/lang/piglatin.txt +++ b/src/lang/piglatin.txt @@ -1903,9 +1903,9 @@ STR_4003_DELETE :{BLACK}Eleteday STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} egabyte{P "" s}may eefray STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Unableway otay eadray ivedray -STR_4007_GAME_SAVE_FAILED :{WHITE}Amegay Avesay Ailedfay +STR_4007_GAME_SAVE_FAILED :{WHITE}Amegay Avesay Ailedfay{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Unableway otay eleteday ilefay -STR_4009_GAME_LOAD_FAILED :{WHITE}Amegay Oadlay Ailedfay +STR_4009_GAME_LOAD_FAILED :{WHITE}Amegay Oadlay Ailedfay{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Istlay ofway ivesdray, irectoriesday andway avedsay-amegay ilesfay STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Urrentlycay electedsay amenay orfay avedsay-amegay STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Eleteday ethay urrentlycay electedsay avedsay-amegay diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 49c1d6a580..a9232a8db8 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1925,9 +1925,9 @@ STR_4003_DELETE :{BLACK}Usuń STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} MB wolnego miejsca STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Nie można odczytać napędu -STR_4007_GAME_SAVE_FAILED :{WHITE}Nie można zapisać gry +STR_4007_GAME_SAVE_FAILED :{WHITE}Nie można zapisać gry{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Nie można usunąć pliku -STR_4009_GAME_LOAD_FAILED :{WHITE}Nie można wczytać gry +STR_4009_GAME_LOAD_FAILED :{WHITE}Nie można wczytać gry{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista napędów, katalogów i zapisanych gier STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Obecnie zaznaczona nazwa dla zapisanej gry STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Skasuj zaznaczoną zapisaną grę diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 89e2058bd4..c6d09c92f1 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -1867,9 +1867,9 @@ STR_4003_DELETE :{BLACK}Eliminar STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabytes livres STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Não é possível ler unidade -STR_4007_GAME_SAVE_FAILED :{WHITE}Falha ao Guardar Jogo +STR_4007_GAME_SAVE_FAILED :{WHITE}Falha ao Guardar Jogo{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Não é possível eliminar ficheiro -STR_4009_GAME_LOAD_FAILED :{WHITE}Falha ao Abrir Jogo +STR_4009_GAME_LOAD_FAILED :{WHITE}Falha ao Abrir Jogo{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista de unidades, directorias e ficheiros de jogos guardados STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nome escolhido para guardar o jogo STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Eliminar o jogo guardado seleccionado diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 58cf91de5a..15950ec0b8 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -1904,9 +1904,9 @@ STR_4003_DELETE :{BLACK}Şterge STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} liberi STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Nu pot citi acest disc -STR_4007_GAME_SAVE_FAILED :{WHITE}Salvarea jocului eşuată +STR_4007_GAME_SAVE_FAILED :{WHITE}Salvarea jocului eşuată{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Ştergerea jocului eşuată -STR_4009_GAME_LOAD_FAILED :{WHITE}Încărcarea jocului eşuată +STR_4009_GAME_LOAD_FAILED :{WHITE}Încărcarea jocului eşuată{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lista de discuri, directoare şi fişiere cu jocuri salvate STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Numele selectat pentru un joc salvat STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Şterge jocul salvat selectat diff --git a/src/lang/russian.txt b/src/lang/russian.txt index b3828e1c5f..395c598435 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1868,9 +1868,9 @@ STR_4003_DELETE :{BLACK}Удал STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} Мб свободно STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Не удалось прочитать диск -STR_4007_GAME_SAVE_FAILED :{WHITE}Невозможно сохранить игру +STR_4007_GAME_SAVE_FAILED :{WHITE}Невозможно сохранить игру{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Невозможно удалить файл -STR_4009_GAME_LOAD_FAILED :{WHITE}Невозможно загрузить игру +STR_4009_GAME_LOAD_FAILED :{WHITE}Невозможно загрузить игру{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Список дисков, папок и сохраненных игр STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Выбранное имя для сохранения игры STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Удалить выбранную сохраненную игру diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index e9f3d50470..198498c644 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -1828,9 +1828,9 @@ STR_4003_DELETE :{BLACK}删除 STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte(s) 可用 STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}不能读取驱动器 -STR_4007_GAME_SAVE_FAILED :{WHITE}保存游戏失败 +STR_4007_GAME_SAVE_FAILED :{WHITE}保存游戏失败{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}不能删除文件 -STR_4009_GAME_LOAD_FAILED :{WHITE}游戏存档读取失败 +STR_4009_GAME_LOAD_FAILED :{WHITE}游戏存档读取失败{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}驱动器、目录和游戏存档列表 STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}保存当前游戏用的存档名字 STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}删除选定的游戏存档 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index ff5c868d91..6665760c7d 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -1946,9 +1946,9 @@ STR_4003_DELETE :{BLACK}Vymazat STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabajtov volnych STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Zariadenie je necitatelne -STR_4007_GAME_SAVE_FAILED :{WHITE}Ulozenie hry zlyhalo +STR_4007_GAME_SAVE_FAILED :{WHITE}Ulozenie hry zlyhalo{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Subor sa neda vymazat -STR_4009_GAME_LOAD_FAILED :{WHITE}Nahratie hry zlyhalo +STR_4009_GAME_LOAD_FAILED :{WHITE}Nahratie hry zlyhalo{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Zoznam diskov, adresarov a subory ulozenych hier STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Vybrany nazov pre ulozenie hry STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Vymazat vybranu ulozenu hru diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 5608d63d11..4f970b058d 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -1944,9 +1944,9 @@ STR_4003_DELETE :{BLACK}Izbriši STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabajt{P "" a i ov} prosto STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Nemogoče branje pogona -STR_4007_GAME_SAVE_FAILED :{WHITE}Shranjevanje igre ni uspelo +STR_4007_GAME_SAVE_FAILED :{WHITE}Shranjevanje igre ni uspelo{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Nemogoče brisanje datoteke -STR_4009_GAME_LOAD_FAILED :{WHITE}Nalaganje igre ni uspelo +STR_4009_GAME_LOAD_FAILED :{WHITE}Nalaganje igre ni uspelo{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Seznam pogonov, map in shranjenih iger STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Trenutno izbrano ime za shranjevanje STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Izbriši trenutno izbrano shranjeno igro diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 81b6e0f845..df07be02eb 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -1849,9 +1849,9 @@ STR_4003_DELETE :{BLACK}Borrar STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabytes libres STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}No es posible leer la unidad -STR_4007_GAME_SAVE_FAILED :{WHITE}Error guardando juego +STR_4007_GAME_SAVE_FAILED :{WHITE}Error guardando juego{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}No es posible borrar el fichero -STR_4009_GAME_LOAD_FAILED :{WHITE}Carga de juego erronea +STR_4009_GAME_LOAD_FAILED :{WHITE}Carga de juego erronea{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Listado de unidades, directorios y juegos guardados STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Nombre seleccionado actualmente para el juego guardado STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Borrar el juego guardado seleccionado diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 613020e0ad..c268244458 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -1904,9 +1904,9 @@ STR_4003_DELETE :{BLACK}Ta bort STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} ledigt STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kan inte läsa från disk -STR_4007_GAME_SAVE_FAILED :{WHITE}Sparandet av spelet misslyckades +STR_4007_GAME_SAVE_FAILED :{WHITE}Sparandet av spelet misslyckades{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan inte ta bort filen -STR_4009_GAME_LOAD_FAILED :{WHITE}Läsningen av spelet misslyckades +STR_4009_GAME_LOAD_FAILED :{WHITE}Läsningen av spelet misslyckades{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Listar enheter, kataloger och sparade spel STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Valt namn för spelet STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Ta bort markerat sparat spel diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 8f3ede9706..bd1768a4b9 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -1867,9 +1867,9 @@ STR_4003_DELETE :{BLACK}刪除 STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}空間尚有 {COMMA} MB STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}無法讀取磁碟 -STR_4007_GAME_SAVE_FAILED :{WHITE}遊戲儲存失敗 +STR_4007_GAME_SAVE_FAILED :{WHITE}遊戲儲存失敗{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}無法刪除檔案 -STR_4009_GAME_LOAD_FAILED :{WHITE}遊戲載入失敗 +STR_4009_GAME_LOAD_FAILED :{WHITE}遊戲載入失敗{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}列出磁碟、目錄與遊戲存檔 STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}目前選定的存檔名稱 STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}刪除目前選定的存檔 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 273501ba16..18b6fcd957 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -1868,9 +1868,9 @@ STR_4003_DELETE :{BLACK}Sil STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} MB bos STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Sürücü okunamıyor -STR_4007_GAME_SAVE_FAILED :{WHITE}Oyun kaydedilemedi +STR_4007_GAME_SAVE_FAILED :{WHITE}Oyun kaydedilemedi{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Dosya silinemedi -STR_4009_GAME_LOAD_FAILED :{WHITE}Dosya yüklenemedi +STR_4009_GAME_LOAD_FAILED :{WHITE}Dosya yüklenemedi{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Sürücü, klasör ve kayıtli oyun listesi STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Kaydetmek için kullanılacak dosya adı STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Seçili oyunu sil diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 1975984bbd..7092b61a57 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -2030,9 +2030,9 @@ STR_4003_DELETE :{BLACK}Вида STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} мегабайт{P "" и ""} вільно STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Неможливо прочитати пристрій -STR_4007_GAME_SAVE_FAILED :{WHITE}Помилка запису гри +STR_4007_GAME_SAVE_FAILED :{WHITE}Помилка запису гри{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Неможливо стерти файл -STR_4009_GAME_LOAD_FAILED :{WHITE}Помилка завантаження гри +STR_4009_GAME_LOAD_FAILED :{WHITE}Помилка завантаження гри{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Список пристроїв, каталогів і збережених файлів гри STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Поточне вибране ім'я файлу для збереження гри STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Стерти вибрану збережену гру diff --git a/src/lang/unfinished/afrikaans.txt b/src/lang/unfinished/afrikaans.txt index ee63c204c2..99ba06221a 100644 --- a/src/lang/unfinished/afrikaans.txt +++ b/src/lang/unfinished/afrikaans.txt @@ -1697,9 +1697,9 @@ STR_4003_DELETE :{BLACK}Uitwis STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} vry STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Kan nie skyf lees nie -STR_4007_GAME_SAVE_FAILED :{WHITE}Spel Bewaar Gedop +STR_4007_GAME_SAVE_FAILED :{WHITE}Spel Bewaar Gedop{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kan nie l�r uitwis nie -STR_4009_GAME_LOAD_FAILED :{WHITE}Spel Laai Gedop +STR_4009_GAME_LOAD_FAILED :{WHITE}Spel Laai Gedop{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Lys van skywe, voublaaie en spel-bewaar l�rs STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Huidige naam vir bewaarde-spel STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Uitwis die verkieste bewaarde-spel diff --git a/src/lang/unfinished/croatian.txt b/src/lang/unfinished/croatian.txt index ae01930893..e909c15cdf 100644 --- a/src/lang/unfinished/croatian.txt +++ b/src/lang/unfinished/croatian.txt @@ -1828,9 +1828,9 @@ STR_4003_DELETE :{BLACK}Obriši STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabajt{P "" a a} slobod{P an na no} STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Ne mogu pročitati disk -STR_4007_GAME_SAVE_FAILED :{WHITE}Spremanje igre nije uspjelo +STR_4007_GAME_SAVE_FAILED :{WHITE}Spremanje igre nije uspjelo{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Ne mogu obrisati datoteku -STR_4009_GAME_LOAD_FAILED :{WHITE}Učitavanje igre nije uspjelo +STR_4009_GAME_LOAD_FAILED :{WHITE}Učitavanje igre nije uspjelo{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Popis diskova, mapa i spremljenih datoteka STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Trenutno odabrano ime za spremanje igre STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Obriši trenutno odabranu spremljenu igru diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 7ad14ea2d9..be84bbe6e5 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -1048,9 +1048,9 @@ STR_4002_SAVE :{BLACK}Opslaan STR_4003_DELETE :{BLACK}Fuortsmite STR_4004 :{COMPANY}, {DATE_LONG} STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Koe net fan 'e skiif lêze -STR_4007_GAME_SAVE_FAILED :{WHITE}Opslaan Mislearre +STR_4007_GAME_SAVE_FAILED :{WHITE}Opslaan Mislearre{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Kin triem net fuortsmite -STR_4009_GAME_LOAD_FAILED :{WHITE}Laden Mislearre +STR_4009_GAME_LOAD_FAILED :{WHITE}Laden Mislearre{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}List fan skiven, mappen en triemen STR_4011_LOAD_HEIGHTMAP :{WHITE}Laad Hichtemap diff --git a/src/lang/unfinished/greek.txt b/src/lang/unfinished/greek.txt index a1a185355b..8079d90c07 100644 --- a/src/lang/unfinished/greek.txt +++ b/src/lang/unfinished/greek.txt @@ -1557,9 +1557,9 @@ STR_4003_DELETE :{BLACK}Διαγ STR_4004 :{COMPANY}, {DATE_LONG} STR_4005_BYTES_FREE :{BLACK}{COMMA} megabyte{P "" s} ελεύθερα STR_4006_UNABLE_TO_READ_DRIVE :{BLACK}Αδύνατη η ανάγνωση του δίσκου -STR_4007_GAME_SAVE_FAILED :{WHITE}Αποθήκευση Παιχνιδιού Απέτυχε +STR_4007_GAME_SAVE_FAILED :{WHITE}Αποθήκευση Παιχνιδιού Απέτυχε{}{STRING} STR_4008_UNABLE_TO_DELETE_FILE :{WHITE}Αδύνατη η διαγραφή του αρχείου -STR_4009_GAME_LOAD_FAILED :{WHITE}Φόρτωση Παιχνιδιού Απέτυχε +STR_4009_GAME_LOAD_FAILED :{WHITE}Φόρτωση Παιχνιδιού Απέτυχε{}{STRING} STR_400A_LIST_OF_DRIVES_DIRECTORIES :{BLACK}Λίστα δίσκων, φακέλλων και αποθηκευμένων παιχνιδιών STR_400B_CURRENTLY_SELECTED_NAME :{BLACK}Τρέχον όνομα για το αποθηκευμένο παιχνίδι STR_400C_DELETE_THE_CURRENTLY_SELECTED :{BLACK}Διαγραφή του επιλεγμένου αποθηκευμένου παιχνιδιού diff --git a/src/openttd.cpp b/src/openttd.cpp index 13ce248aad..afbeaafe74 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -740,7 +740,8 @@ static void StartScenario() /* invalid type */ if (_file_to_saveload.mode == SL_INVALID) { DEBUG(sl, 0, "Savegame is obsolete or invalid format: '%s'", _file_to_saveload.name); - ShowErrorMessage(INVALID_STRING_ID, STR_4009_GAME_LOAD_FAILED, 0, 0); + SetDParamStr(0, GetSaveLoadErrorString()); + ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0); _game_mode = GM_MENU; return; } @@ -755,7 +756,8 @@ static void StartScenario() /* Load game */ if (SaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, SCENARIO_DIR) != SL_OK) { LoadIntroGame(); - ShowErrorMessage(INVALID_STRING_ID, STR_4009_GAME_LOAD_FAILED, 0, 0); + SetDParamStr(0, GetSaveLoadErrorString()); + ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0); } _opt_ptr = &_opt; @@ -863,7 +865,8 @@ void SwitchMode(int new_mode) if (!SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_NORMAL, NO_DIRECTORY)) { LoadIntroGame(); - ShowErrorMessage(INVALID_STRING_ID, STR_4009_GAME_LOAD_FAILED, 0, 0); + SetDParamStr(0, GetSaveLoadErrorString()); + ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0); } else { /* Update the local player for a loaded game. It is either always * player #1 (eg 0) or in the case of a dedicated server a spectator */ @@ -901,7 +904,8 @@ void SwitchMode(int new_mode) SetLocalPlayer(OWNER_NONE); _patches_newgame.starting_year = _cur_year; } else { - ShowErrorMessage(INVALID_STRING_ID, STR_4009_GAME_LOAD_FAILED, 0, 0); + SetDParamStr(0, GetSaveLoadErrorString()); + ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0); } break; } @@ -912,7 +916,8 @@ void SwitchMode(int new_mode) case SM_SAVE: /* Save game */ if (SaveOrLoad(_file_to_saveload.name, SL_SAVE, NO_DIRECTORY) != SL_OK) { - ShowErrorMessage(INVALID_STRING_ID, STR_4007_GAME_SAVE_FAILED, 0, 0); + SetDParamStr(0, GetSaveLoadErrorString()); + ShowErrorMessage(INVALID_STRING_ID, STR_012D, 0, 0); } else { DeleteWindowById(WC_SAVELOAD, 0); } @@ -1268,7 +1273,10 @@ bool AfterLoadGame() /* Check if all NewGRFs are present, we are very strict in MP mode */ GRFListCompatibility gcf_res = IsGoodGRFConfigList(); - if (_networking && gcf_res != GLC_ALL_GOOD) return false; + if (_networking && gcf_res != GLC_ALL_GOOD) { + SetSaveLoadError(STR_NETWORK_ERR_CLIENT_NEWGRF_MISMATCH); + return false; + } switch (gcf_res) { case GLC_COMPATIBLE: _switch_mode_errorstr = STR_NEWGRF_COMPATIBLE_LOAD_WARNING; break; @@ -1313,7 +1321,7 @@ bool AfterLoadGame() /* make sure there is a town in the game */ if (_game_mode == GM_NORMAL && !ClosestTownFromTile(0, (uint)-1)) { - _error_message = STR_NO_TOWN_IN_SCENARIO; + SetSaveLoadError(STR_NO_TOWN_IN_SCENARIO); return false; } diff --git a/src/saveload.cpp b/src/saveload.cpp index f8af5dc9bd..64d502b1db 100644 --- a/src/saveload.cpp +++ b/src/saveload.cpp @@ -26,6 +26,8 @@ #include "saveload.h" #include "network/network.h" #include "variables.h" +#include "table/strings.h" +#include "strings.h" #include #include @@ -65,7 +67,8 @@ static struct { FILE *fh; ///< the file from which is read or written to void (*excpt_uninit)(); ///< the function to execute on any encountered error - const char *excpt_msg; ///< the error message + StringID error_str; ///< the translateable error message to show + char *extra_msg; ///< the error message jmp_buf excpt; ///< @todo used to jump to "exception handler"; really ugly } _sl; @@ -136,9 +139,11 @@ static void SlWriteFill() /** Error handler, calls longjmp to simulate an exception. * @todo this was used to have a central place to handle errors, but it is * pretty ugly, and seriously interferes with any multithreaded approaches */ -static void NORETURN SlError(const char *msg) +static void NORETURN SlError(StringID string, const char *extra_msg = NULL) { - _sl.excpt_msg = msg; + _sl.error_str = string; + free(_sl.extra_msg); + _sl.extra_msg = (extra_msg == NULL) ? NULL : strdup(extra_msg); longjmp(_sl.excpt, 0); } @@ -224,7 +229,7 @@ static uint SlReadSimpleGamma() if (HASBIT(i, 5)) { i &= ~0x20; if (HASBIT(i, 4)) - SlError("Unsupported gamma"); + SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Unsupported gamma"); i = (i << 8) | SlReadByte(); } i = (i << 8) | SlReadByte(); @@ -859,7 +864,7 @@ void SlAutolength(AutolengthProc *proc, void *arg) /* And write the stuff */ proc(arg); - assert(offs == SlGetOffs()); + if (offs != SlGetOffs()) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Invalid chunk size"); } /** @@ -891,9 +896,9 @@ static void SlLoadChunk(const ChunkHandler *ch) _sl.obj_len = len; endoffs = SlGetOffs() + len; ch->load_proc(); - assert(SlGetOffs() == endoffs); + if (SlGetOffs() != endoffs) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Invalid chunk size"); } else { - SlError("Invalid chunk type"); + SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Invalid chunk type"); } break; } @@ -994,7 +999,7 @@ static void SlLoadChunks() DEBUG(sl, 2, "Loading chunk %c%c%c%c", id >> 24, id >> 16, id >> 8, id); ch = SlFindChunkHandler(id); - if (ch == NULL) SlError("found unknown tag in savegame (sync error)"); + if (ch == NULL) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Unknown chunk type"); SlLoadChunk(ch); } } @@ -1014,7 +1019,7 @@ static uint ReadLZO() uint len; /* Read header*/ - if (fread(tmp, sizeof(tmp), 1, _sl.fh) != 1) SlError("file read failed"); + if (fread(tmp, sizeof(tmp), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE, "File read failed"); /* Check if size is bad */ ((uint32*)out)[0] = size = tmp[1]; @@ -1024,13 +1029,13 @@ static uint ReadLZO() size = TO_BE32(size); } - if (size >= sizeof(out)) SlError("inconsistent size"); + if (size >= sizeof(out)) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Inconsistent size"); /* Read block */ - if (fread(out + sizeof(uint32), size, 1, _sl.fh) != 1) SlError("file read failed"); + if (fread(out + sizeof(uint32), size, 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); /* Verify checksum */ - if (tmp[0] != lzo_adler32(0, out, size + sizeof(uint32))) SlError("bad checksum"); + if (tmp[0] != lzo_adler32(0, out, size + sizeof(uint32))) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME, "Bad checksum"); /* Decompress */ lzo1x_decompress(out + sizeof(uint32)*1, size, _sl.buf, &len, NULL); @@ -1048,7 +1053,7 @@ static void WriteLZO(uint size) lzo1x_1_compress(_sl.buf, size, out + sizeof(uint32)*2, &outlen, wrkmem); ((uint32*)out)[1] = TO_BE32(outlen); ((uint32*)out)[0] = TO_BE32(lzo_adler32(0, out + sizeof(uint32), outlen + sizeof(uint32))); - if (fwrite(out, outlen + sizeof(uint32)*2, 1, _sl.fh) != 1) SlError("file write failed"); + if (fwrite(out, outlen + sizeof(uint32)*2, 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE); } static bool InitLZO() @@ -1092,7 +1097,6 @@ static void UninitNoComp() ********** START OF MEMORY CODE (in ram)**** ********************************************/ -#include "table/strings.h" #include "table/sprites.h" #include "gfx.h" #include "gui.h" @@ -1171,8 +1175,7 @@ static uint ReadZlib() if (r == Z_STREAM_END) break; - if (r != Z_OK) - SlError("inflate() failed"); + if (r != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "inflate() failed"); } while (_z.avail_out); return 4096 - _z.avail_out; @@ -1207,11 +1210,11 @@ static void WriteZlibLoop(z_streamp z, byte *p, uint len, int mode) r = deflate(z, mode); /* bytes were emitted? */ if ((n=sizeof(buf) - z->avail_out) != 0) { - if (fwrite(buf, n, 1, _sl.fh) != 1) SlError("file write error"); + if (fwrite(buf, n, 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE); } if (r == Z_STREAM_END) break; - if (r != Z_OK) SlError("zlib returned error code"); + if (r != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "zlib returned error code"); } while (z->avail_in || !z->avail_out); } @@ -1476,10 +1479,28 @@ void SaveFileDone() _ts.saveinprogress = false; } +/** Set the error message from outside of the actual loading/saving of the game (AfterLoadGame and friends) */ +void SetSaveLoadError(StringID str) +{ + _sl.error_str = str; +} + +/** Get the string representation of the error message */ +const char *GetSaveLoadErrorString() +{ + SetDParam(0, _sl.error_str); + SetDParamStr(1, _sl.extra_msg); + + static char err_str[512]; + GetString(err_str, _sl.save ? STR_4007_GAME_SAVE_FAILED : STR_4009_GAME_LOAD_FAILED, lastof(err_str)); + return err_str; +} + /** Show a gui message when saving has failed */ void SaveFileError() { - ShowErrorMessage(STR_4007_GAME_SAVE_FAILED, STR_NULL, 0, 0); + SetDParamStr(0, GetSaveLoadErrorString()); + ShowErrorMessage(STR_012D, STR_NULL, 0, 0); SaveFileDone(); } @@ -1493,13 +1514,16 @@ static SaveOrLoadResult SaveFileToDisk(bool threaded) const SaveLoadFormat *fmt; uint32 hdr[2]; + _sl.excpt_uninit = NULL; /* XXX - Setup setjmp error handler if an error occurs anywhere deep during * loading/saving execute a longjmp() and continue execution here */ if (setjmp(_sl.excpt)) { AbortSaveLoad(); - _sl.excpt_uninit(); + if (_sl.excpt_uninit != NULL) _sl.excpt_uninit(); + + ShowInfo(GetSaveLoadErrorString()); + fprintf(stderr, GetSaveLoadErrorString()); - fprintf(stderr, "Save game failed: %s.", _sl.excpt_msg); if (threaded) { OTTD_SendThreadMessage(MSG_OTTD_SAVETHREAD_ERROR); } else { @@ -1513,9 +1537,9 @@ static SaveOrLoadResult SaveFileToDisk(bool threaded) /* We have written our stuff to memory, now write it to file! */ hdr[0] = fmt->tag; hdr[1] = TO_BE32(SAVEGAME_VERSION << 16); - if (fwrite(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError("file write failed"); + if (fwrite(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE); - if (!fmt->init_write()) SlError("cannot initialize compressor"); + if (!fmt->init_write()) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor"); { uint i; @@ -1584,6 +1608,22 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) return SL_OK; } + /* XXX - Setup setjmp error handler if an error occurs anywhere deep during + * loading/saving execute a longjmp() and continue execution here */ + _sl.excpt_uninit = NULL; + if (setjmp(_sl.excpt)) { + AbortSaveLoad(); + + /* deinitialize compressor. */ + if (_sl.excpt_uninit != NULL) _sl.excpt_uninit(); + + /* Skip the "color" character */ + ShowInfoF(GetSaveLoadErrorString() + 3); + + /* A saver/loader exception!! reinitialize all variables to prevent crash! */ + return (mode == SL_LOAD) ? SL_REINIT : SL_ERROR; + } + _sl.fh = (mode == SL_SAVE) ? FioFOpenFile(filename, "wb", sb) : FioFOpenFile(filename, "rb", sb); /* Make it a little easier to load savegames from the console */ @@ -1591,8 +1631,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) if (_sl.fh == NULL && mode == SL_LOAD) _sl.fh = FioFOpenFile(filename, "rb", BASE_DIR); if (_sl.fh == NULL) { - DEBUG(sl, 0, "Cannot open savegame '%s' for saving/loading.", filename); - return SL_ERROR; + SlError(mode == SL_SAVE ? STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE : STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); } _sl.bufe = _sl.bufp = NULL; @@ -1601,24 +1640,6 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) _sl.includes = _desc_includes; _sl.chs = _chunk_handlers; - /* XXX - Setup setjmp error handler if an error occurs anywhere deep during - * loading/saving execute a longjmp() and continue execution here */ - if (setjmp(_sl.excpt)) { - AbortSaveLoad(); - - /* deinitialize compressor. */ - _sl.excpt_uninit(); - - /* A saver/loader exception!! reinitialize all variables to prevent crash! */ - if (mode == SL_LOAD) { - ShowInfoF("Load game failed: %s.", _sl.excpt_msg); - return SL_REINIT; - } - - ShowInfoF("Save game failed: %s.", _sl.excpt_msg); - return SL_ERROR; - } - /* General tactic is to first save the game to memory, then use an available writer * to write it to file, either in threaded mode if possible, or single-threaded */ if (mode == SL_SAVE) { /* SAVE game */ @@ -1650,10 +1671,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) } else { /* LOAD game */ assert(mode == SL_LOAD); - if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) { - DEBUG(sl, 0, "Cannot read savegame header, aborting"); - return AbortSaveLoad(); - } + if (fread(hdr, sizeof(hdr), 1, _sl.fh) != 1) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); /* see if we have any loader for this type. */ for (fmt = _saveload_formats; ; fmt++) { @@ -1685,10 +1703,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) DEBUG(sl, 1, "Loading savegame version %d", _sl_version); /* Is the version higher than the current? */ - if (_sl_version > SAVEGAME_VERSION) { - DEBUG(sl, 0, "Savegame version invalid"); - return AbortSaveLoad(); - } + if (_sl_version > SAVEGAME_VERSION) SlError(STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME); break; } } @@ -1698,13 +1713,15 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb) /* loader for this savegame type is not implemented? */ if (fmt->init_read == NULL) { - ShowInfoF("Loader for '%s' is not available.", fmt->name); - return AbortSaveLoad(); + char err_str[64]; + snprintf(err_str, lengthof(err_str), "Loader for '%s' is not available.", fmt->name); + SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str); } if (!fmt->init_read()) { - DEBUG(sl, 0, "Initializing loader '%s' failed", fmt->name); - return AbortSaveLoad(); + char err_str[64]; + snprintf(err_str, lengthof(err_str), "Initializing loader '%s' failed", fmt->name); + SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, err_str); } /* Old maps were hardcoded to 256x256 and thus did not contain diff --git a/src/saveload.h b/src/saveload.h index 009e73267c..c215a83ef5 100644 --- a/src/saveload.h +++ b/src/saveload.h @@ -28,6 +28,8 @@ enum SaveOrLoadMode { SL_BMP = 4, }; +void SetSaveLoadError(uint16 str); +const char *GetSaveLoadErrorString(); SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb); void WaitTillSaved(); void DoExitSave();