diff --git a/stepmania/src/RageUtil.cpp b/stepmania/src/RageUtil.cpp index 315f7ddda1..d1c2893dd9 100644 --- a/stepmania/src/RageUtil.cpp +++ b/stepmania/src/RageUtil.cpp @@ -176,22 +176,27 @@ RString Commify( int iNum ) return sReturn; } +static LocalizedString NUM_PREFIX ( "RageUtil", "NumPrefix" ); +static LocalizedString NUM_ST ( "RageUtil", "NumSt" ); +static LocalizedString NUM_ND ( "RageUtil", "NumNd" ); +static LocalizedString NUM_RD ( "RageUtil", "NumRd" ); +static LocalizedString NUM_TH ( "RageUtil", "NumTh" ); RString FormatNumberAndSuffix( int i ) { RString sSuffix; switch( i%10 ) { - case 1: sSuffix = "st"; break; - case 2: sSuffix = "nd"; break; - case 3: sSuffix = "rd"; break; - default: sSuffix = "th"; break; + case 1: sSuffix = NUM_ST; break; + case 2: sSuffix = NUM_ND; break; + case 3: sSuffix = NUM_RD; break; + default: sSuffix = NUM_TH; break; } // "11th", "113th", etc. if( ((i%100) / 10) == 1 ) - sSuffix = "th"; + sSuffix = NUM_TH; - return ssprintf("%i", i) + sSuffix; + return NUM_PREFIX.GetValue() + ssprintf("%i", i) + sSuffix; } struct tm GetLocalTime() @@ -1939,6 +1944,7 @@ void RefreshLocalizedStrings() LocalizedString::LocalizedString( const RString &sSection, const RString &sName ) { + m_bLoaded = false; m_sSection = sSection; m_sName = sName; @@ -1959,13 +1965,15 @@ LocalizedString::operator RString() const RString LocalizedString::GetValue() const { - ASSERT(!m_sValue.empty()); return m_sValue; + ASSERT(m_bLoaded); + return m_sValue; } void LocalizedString::Refresh() { ASSERT( g_pfnLocalizer ); m_sValue = g_pfnLocalizer( m_sSection, m_sName ); + m_bLoaded = true; } diff --git a/stepmania/src/RageUtil.h b/stepmania/src/RageUtil.h index af2d0eb674..e5713c80f5 100644 --- a/stepmania/src/RageUtil.h +++ b/stepmania/src/RageUtil.h @@ -519,6 +519,7 @@ private: RString m_sSection; RString m_sName; RString m_sValue; + bool m_bLoaded; }; #endif diff --git a/stepmania/src/ScreenEdit.cpp b/stepmania/src/ScreenEdit.cpp index 4364889996..0f1a6cef76 100644 --- a/stepmania/src/ScreenEdit.cpp +++ b/stepmania/src/ScreenEdit.cpp @@ -2488,6 +2488,7 @@ static LocalizedString REVERT_LAST_SAVE ( "ScreenEdit", "Do you want to rever static LocalizedString DESTROY_ALL_UNSAVED_CHANGES ( "ScreenEdit", "This will destroy all unsaved changes." ); static LocalizedString REVERT_FROM_DISK ( "ScreenEdit", "Do you want to revert from disk?" ); static LocalizedString SAVE_CHANGES_BEFORE_EXITING ( "ScreenEdit", "Do you want to save changes before exiting?" ); +static LocalizedString SAVED ( "ScreenEdit", "Saved '%s'" ); void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector &iAnswers ) { switch( c ) @@ -2573,7 +2574,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector &iAns SCREENMAN->ZeroNextUpdate(); // TODO: make localizable - CString s = ssprintf( "Saved \"%s\"", Basename(pSteps->GetFilename()).c_str() ); + CString s = ssprintf( SAVED.GetValue(), Basename(pSteps->GetFilename()).c_str() ); ScreenPrompt::Prompt( SM_None, s ); /* FIXME diff --git a/stepmania/src/ScreenEditMenu.cpp b/stepmania/src/ScreenEditMenu.cpp index e470145bcb..b8770d6016 100644 --- a/stepmania/src/ScreenEditMenu.cpp +++ b/stepmania/src/ScreenEditMenu.cpp @@ -142,19 +142,21 @@ static CString GetCopyDescription( const Steps *pSourceSteps ) return s; } +static LocalizedString YOU_MUST_SUPPLY_NAME ( "ScreenEditMenu", "You must supply a name for your new edit." ); +static LocalizedString EDIT_NAME_CONFLICTS ( "ScreenEditMenu", "The name you chose conflicts with another edit. Please use a different name." ); static bool ValidateCurrentStepsDescription( const CString &s, CString &sErrorOut ) { ASSERT( GAMESTATE->m_pCurSteps[0]->GetDifficulty() == DIFFICULTY_EDIT ); if( s.empty() ) { - sErrorOut = "You must supply a name for your new edit."; + sErrorOut = YOU_MUST_SUPPLY_NAME; return false; } if( !GAMESTATE->m_pCurSong->IsEditDescriptionUnique(GAMESTATE->m_pCurSteps[0]->m_StepsType, s, GAMESTATE->m_pCurSteps[0]) ) { - sErrorOut = "The supplied name supplied conflicts with another edit.\n\nPlease use a different name."; + sErrorOut = EDIT_NAME_CONFLICTS; return false; } @@ -172,7 +174,9 @@ static void DeleteCurrentSteps() GAMESTATE->m_pCurSteps[0].Set( NULL ); } -static LocalizedString MISSING_MUSIC_FILE( "ScreenEditMenu", "This song is missing a music file and cannot be edited." ); +static LocalizedString MISSING_MUSIC_FILE ( "ScreenEditMenu", "This song is missing a music file and cannot be edited." ); +static LocalizedString STEPS_WILL_BE_LOST ( "ScreenEditMenu", "These steps will be lost permanently." ); +static LocalizedString CONTINUE_WITH_DELETE ( "ScreenEditMenu", "Continue with delete?" ); void ScreenEditMenu::MenuStart( PlayerNumber pn ) { if( IsTransitioning() ) @@ -218,7 +222,7 @@ void ScreenEditMenu::MenuStart( PlayerNumber pn ) break; case EditMenuAction_Delete: ASSERT( pSteps ); - ScreenPrompt::Prompt( SM_None, "These steps will be lost permanently.\n\nContinue with delete?", PROMPT_YES_NO, ANSWER_NO ); + ScreenPrompt::Prompt( SM_None, STEPS_WILL_BE_LOST.GetValue() + "\n\n" + CONTINUE_WITH_DELETE.GetValue(), PROMPT_YES_NO, ANSWER_NO ); break; case EditMenuAction_Create: ASSERT( !pSteps ); diff --git a/stepmania/src/ScreenEz2SelectMusic.cpp b/stepmania/src/ScreenEz2SelectMusic.cpp index 78ac26e474..e9d79dc166 100644 --- a/stepmania/src/ScreenEz2SelectMusic.cpp +++ b/stepmania/src/ScreenEz2SelectMusic.cpp @@ -447,11 +447,12 @@ void ScreenEz2SelectMusic::MenuLeft( const InputEventPlus &input ) MusicChanged(); } +static LocalizedString DOES_NOT_HAVE_MUSIC_FILE( "ScreenEz2SelectMusic", "This song does not have a music file\n and cannot be played." ); void ScreenEz2SelectMusic::MenuStart( PlayerNumber pn ) { if( !m_MusicBannerWheel.GetSelectedSong()->HasMusic() ) { - ScreenPrompt::Prompt( SM_None, "ERROR:\n \nThis song does not have a music file\n and cannot be played." ); + ScreenPrompt::Prompt( SM_None, DOES_NOT_HAVE_MUSIC_FILE ); return; } @@ -481,7 +482,7 @@ void ScreenEz2SelectMusic::MenuStart( PlayerNumber pn ) m_sprOptionsMessage.SetZoomY( 0 ); } - +static LocalizedString NO_SONGS_AVAILABLE( "ScreenEz2SelectMusic", "There are no songs available for play." ); void ScreenEz2SelectMusic::Update( float fDeltaTime ) { m_DifficultyRating.Update(fDeltaTime); @@ -497,7 +498,7 @@ void ScreenEz2SelectMusic::Update( float fDeltaTime ) if(m_MusicBannerWheel.CheckSongsExist() == 0 && ! i_ErrorDetected) { - ScreenPrompt::Prompt( SM_NoSongs, "ERROR:\n \nThere are no songs available for play!" ); + ScreenPrompt::Prompt( SM_NoSongs, NO_SONGS_AVAILABLE ); i_ErrorDetected=1; this->PostScreenMessage( SM_NoSongs, 5.5f ); // timeout incase the user decides to do nothing :D } diff --git a/stepmania/src/ScreenJoinMultiplayer.cpp b/stepmania/src/ScreenJoinMultiplayer.cpp index 887525173d..6c781667ad 100644 --- a/stepmania/src/ScreenJoinMultiplayer.cpp +++ b/stepmania/src/ScreenJoinMultiplayer.cpp @@ -234,6 +234,7 @@ void ScreenJoinMultiplayer::MenuBack( PlayerNumber pn ) Cancel( SM_GoToPrevScreen ); } +static LocalizedString JOIN_2_OR_MORE_PLAYERS ("ScreenJoinMultiplayer", "You must join 2 or more players before continuing."); void ScreenJoinMultiplayer::MenuStart( PlayerNumber pn ) { int iNumJoinedPlayers = 0; @@ -249,7 +250,7 @@ void ScreenJoinMultiplayer::MenuStart( PlayerNumber pn ) if( iNumJoinedPlayers < 2 ) { - ScreenPrompt::Prompt( SM_None, "You must join 2 or more players before continuing." ); + ScreenPrompt::Prompt( SM_None, JOIN_2_OR_MORE_PLAYERS ); return; } diff --git a/stepmania/src/ScreenOptionsEditCourse.cpp b/stepmania/src/ScreenOptionsEditCourse.cpp index 1949c1a48a..c72ae3eda6 100644 --- a/stepmania/src/ScreenOptionsEditCourse.cpp +++ b/stepmania/src/ScreenOptionsEditCourse.cpp @@ -108,6 +108,21 @@ void ScreenOptionsEditCourse::BeginScreen() AfterChangeRow( GAMESTATE->m_MasterPlayerNumber ); } +static LocalizedString MAXIMUM_COURSE_ENTRIES ("ScreenOptionsEditCourse", "The maximum number of entries per course is %d. This course already has %d entries."); +static bool AreEntriesFull() +{ + Course *pCourse = GAMESTATE->m_pCurCourse; + + if( pCourse->m_vEntries.size() >= size_t(MAX_ENTRIES_PER_COURSE) ) + { + CString sError = ssprintf(MAXIMUM_COURSE_ENTRIES.GetValue(), MAX_ENTRIES_PER_COURSE, pCourse->m_vEntries.size() ); + ScreenPrompt::Prompt( SM_None, sError ); + return true; + } + return false; +} + +static LocalizedString CANNOT_DELETE_LAST_ENTRY ("ScreenOptionsEditCourse", "You cannot delete the last entry in a course."); void ScreenOptionsEditCourse::HandleScreenMessage( const ScreenMessage SM ) { Course *pCourse = GAMESTATE->m_pCurCourse; @@ -136,12 +151,8 @@ void ScreenOptionsEditCourse::HandleScreenMessage( const ScreenMessage SM ) break; case CourseEntryAction_InsertEntry: { - if( pCourse->m_vEntries.size() >= size_t(MAX_ENTRIES_PER_COURSE) ) - { - CString sError = "The maximum number of entries per course is %d. This course already has %d entries."; - ScreenPrompt::Prompt( SM_None, sError ); + if( AreEntriesFull() ) return; - } CourseEntry ce; CourseUtil::MakeDefaultEditCourseEntry( ce ); pCourse->m_vEntries.insert( pCourse->m_vEntries.begin() + GetCourseEntryIndexWithFocus(), ce ); @@ -152,8 +163,7 @@ void ScreenOptionsEditCourse::HandleScreenMessage( const ScreenMessage SM ) { if( pCourse->m_vEntries.size() == 1 ) { - CString sError = "You cannot delete the last entry in a course."; - ScreenPrompt::Prompt( SM_None, sError ); + ScreenPrompt::Prompt( SM_None, CANNOT_DELETE_LAST_ENTRY ); return; } pCourse->m_vEntries.erase( pCourse->m_vEntries.begin() + GetCourseEntryIndexWithFocus() ); @@ -249,12 +259,8 @@ void ScreenOptionsEditCourse::ProcessMenuStart( const InputEventPlus &input ) } else if( iCurRow == (int)m_pRows.size()-2 ) // "create entry" { - if( pCourse->m_vEntries.size() >= size_t(MAX_ENTRIES_PER_COURSE) ) - { - CString sError = "The maximum number of entries per course is %d. This course already has %d entries."; - ScreenPrompt::Prompt( SM_None, sError ); + if( AreEntriesFull() ) return; - } CourseEntry ce; CourseUtil::MakeDefaultEditCourseEntry( ce ); pCourse->m_vEntries.push_back( ce ); diff --git a/stepmania/src/ScreenOptionsManageCourses.cpp b/stepmania/src/ScreenOptionsManageCourses.cpp index 15b06ed90e..0377941554 100644 --- a/stepmania/src/ScreenOptionsManageCourses.cpp +++ b/stepmania/src/ScreenOptionsManageCourses.cpp @@ -106,6 +106,7 @@ static MenuDef g_TempMenu( ); +static LocalizedString EDIT_NAME_CONFLICTS ( "ScreenOptionsManageCourses", "The name you chose conflicts with another edit. Please use a different name." ); static bool ValidateEditCourseName( const CString &sAnswer, CString &sErrorOut ) { if( sAnswer.empty() ) @@ -120,7 +121,10 @@ static bool ValidateEditCourseName( const CString &sAnswer, CString &sErrorOut ) continue; // don't comepare name against ourself if( (*c)->GetDisplayFullTitle() == sAnswer ) + { + sErrorOut = EDIT_NAME_CONFLICTS; return false; + } } return true; @@ -230,6 +234,8 @@ void ScreenOptionsManageCourses::BeginScreen() AfterChangeRow( PLAYER_1 ); } +static LocalizedString COURSE_WILL_BE_LOST("ScreenOptionsManageCourses", "This course will be lost permanently."); +static LocalizedString CONTINUE_WITH_DELETE("ScreenOptionsManageCourses", "Continue with delete?"); void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_Success ) @@ -313,9 +319,7 @@ void ScreenOptionsManageCourses::HandleScreenMessage( const ScreenMessage SM ) } break; case CourseAction_Delete: - { - ScreenPrompt::Prompt( SM_None, "This course will be lost permanently.\n\nContinue with delete?", PROMPT_YES_NO, ANSWER_NO ); - } + ScreenPrompt::Prompt( SM_None, COURSE_WILL_BE_LOST.GetValue()+"\n\n"+CONTINUE_WITH_DELETE.GetValue(), PROMPT_YES_NO, ANSWER_NO ); break; } } @@ -343,6 +347,8 @@ void ScreenOptionsManageCourses::AfterChangeRow( PlayerNumber pn ) ScreenOptions::AfterChangeRow( pn ); } +static LocalizedString YOU_HAVE_MAXIMUM_EDITS_ALLOWED( "ScreenOptionsManageCourses", "You have %d course edits, the maximum number allowed." ); +static LocalizedString YOU_MUST_DELETE( "ScreenOptionsManageCourses", "You must delete an existing course edit before creating a new course edit." ); void ScreenOptionsManageCourses::ProcessMenuStart( const InputEventPlus &input ) { int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; @@ -352,8 +358,7 @@ void ScreenOptionsManageCourses::ProcessMenuStart( const InputEventPlus &input ) if( SONGMAN->GetNumEditCourses(ProfileSlot_Machine) >= MAX_EDIT_COURSES_PER_PROFILE ) { CString s = ssprintf( - "You have %d course edits, the maximum number allowed.\n\n" - "You must delete an existing course edit before creating a new course edit.", + YOU_HAVE_MAXIMUM_EDITS_ALLOWED.GetValue() + "\n\n" + YOU_MUST_DELETE.GetValue(), MAX_EDIT_COURSES_PER_PROFILE ); ScreenPrompt::Prompt( SM_None, s ); return; diff --git a/stepmania/src/ScreenOptionsManageEditSteps.cpp b/stepmania/src/ScreenOptionsManageEditSteps.cpp index b1a4a8c146..b27848b19d 100644 --- a/stepmania/src/ScreenOptionsManageEditSteps.cpp +++ b/stepmania/src/ScreenOptionsManageEditSteps.cpp @@ -129,6 +129,8 @@ void ScreenOptionsManageEditSteps::BeginScreen() AfterChangeRow( PLAYER_1 ); } +static LocalizedString THESE_STEPS_WILL_BE_LOST ("ScreenOptionsManageEditSteps", "These steps will be lost permanently."); +static LocalizedString CONTINUE_WITH_DELETE ("ScreenOptionsManageEditSteps", "Continue with delete?"); void ScreenOptionsManageEditSteps::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_GoToNextScreen ) @@ -206,7 +208,7 @@ void ScreenOptionsManageEditSteps::HandleScreenMessage( const ScreenMessage SM ) break; case StepsEditAction_Delete: { - ScreenPrompt::Prompt( SM_BackFromDelete, "This Steps will be lost permanently.\n\nContinue with delete?", PROMPT_YES_NO, ANSWER_NO ); + ScreenPrompt::Prompt( SM_BackFromDelete, THESE_STEPS_WILL_BE_LOST.GetValue()+"\n\n"+CONTINUE_WITH_DELETE.GetValue(), PROMPT_YES_NO, ANSWER_NO ); } break; } @@ -235,6 +237,8 @@ void ScreenOptionsManageEditSteps::AfterChangeRow( PlayerNumber pn ) ScreenOptions::AfterChangeRow( pn ); } +static LocalizedString YOU_HAVE_MAX_STEP_EDITS( "ScreenOptionsManageEditSteps", "You have %d step edits, the maximum number allowed." ); +static LocalizedString YOU_MUST_DELETE( "ScreenOptionsManageEditSteps", "You must delete an existing steps edit before creating a new steps edit." ); void ScreenOptionsManageEditSteps::ProcessMenuStart( const InputEventPlus &input ) { int iCurRow = m_iCurrentRow[GAMESTATE->m_MasterPlayerNumber]; @@ -245,10 +249,7 @@ void ScreenOptionsManageEditSteps::ProcessMenuStart( const InputEventPlus &input SONGMAN->GetStepsLoadedFromProfile( v, ProfileSlot_Machine ); if( v.size() >= size_t(MAX_EDIT_STEPS_PER_PROFILE) ) { - CString s = ssprintf( - "You have %d Steps edits, the maximum number allowed.\n\n" - "You must delete an existing Steps edit before creating a new Steps edit.", - MAX_EDIT_STEPS_PER_PROFILE ); + CString s = ssprintf( YOU_HAVE_MAX_STEP_EDITS.GetValue()+"\n\n"+YOU_MUST_DELETE.GetValue(), MAX_EDIT_STEPS_PER_PROFILE ); ScreenPrompt::Prompt( SM_None, s ); return; } diff --git a/stepmania/src/ScreenOptionsManageProfiles.cpp b/stepmania/src/ScreenOptionsManageProfiles.cpp index f6fab26322..d79a7ee9e9 100644 --- a/stepmania/src/ScreenOptionsManageProfiles.cpp +++ b/stepmania/src/ScreenOptionsManageProfiles.cpp @@ -47,11 +47,13 @@ static MenuDef g_TempMenu( "ScreenMiniMenuContext" ); +static LocalizedString PROFILE_NAME_BLANK ( "ScreenEditMenu", "Profile name cannot be blank." ); +static LocalizedString PROFILE_NAME_CONFLICTS ( "ScreenEditMenu", "The name you chose conflicts with another profile. Please use a different name." ); static bool ValidateLocalProfileName( const CString &sAnswer, CString &sErrorOut ) { if( sAnswer == "" ) { - sErrorOut = "Profile name cannot be blank."; + sErrorOut = PROFILE_NAME_BLANK; return false; } @@ -64,7 +66,7 @@ static bool ValidateLocalProfileName( const CString &sAnswer, CString &sErrorOut bool bAlreadyAProfileWithThisName = find( vsProfileNames.begin(), vsProfileNames.end(), sAnswer ) != vsProfileNames.end(); if( bAlreadyAProfileWithThisName ) { - sErrorOut = "There is already another profile with this name. Please choose a different name."; + sErrorOut = PROFILE_NAME_CONFLICTS; return false; } @@ -165,6 +167,8 @@ void ScreenOptionsManageProfiles::BeginScreen() AfterChangeRow( PLAYER_1 ); } +static LocalizedString CONFIRM_DELETE_PROFILE( "ScreenOptionsManageProfiles", "Are you sure you want to delete the profile '%s'?" ); +static LocalizedString CONFIRM_CLEAR_PROFILE( "ScreenOptionsManageProfiles", "Are you sure you want to clear all data in the profile '%s'?" ); void ScreenOptionsManageProfiles::HandleScreenMessage( const ScreenMessage SM ) { if( SM == SM_GoToNextScreen ) @@ -279,14 +283,14 @@ void ScreenOptionsManageProfiles::HandleScreenMessage( const ScreenMessage SM ) case ProfileAction_Delete: { CString sTitle = pProfile->m_sDisplayName; - CString sMessage = ssprintf( "Are you sure you want to delete the profile '%s'?", sTitle.c_str() ); + CString sMessage = ssprintf( CONFIRM_DELETE_PROFILE.GetValue(), sTitle.c_str() ); ScreenPrompt::Prompt( SM_BackFromDeleteConfirm, sMessage, PROMPT_YES_NO ); } break; case ProfileAction_Clear: { CString sTitle = pProfile->m_sDisplayName; - CString sMessage = ssprintf( "Are you sure you want to clear all data in the profile '%s'?", sTitle.c_str() ); + CString sMessage = ssprintf( CONFIRM_CLEAR_PROFILE.GetValue(), sTitle.c_str() ); ScreenPrompt::Prompt( SM_BackFromClearConfirm, sMessage, PROMPT_YES_NO ); } break; diff --git a/stepmania/src/ScreenOptionsMemoryCard.cpp b/stepmania/src/ScreenOptionsMemoryCard.cpp index d012cf12b3..871e9bfa9e 100644 --- a/stepmania/src/ScreenOptionsMemoryCard.cpp +++ b/stepmania/src/ScreenOptionsMemoryCard.cpp @@ -118,6 +118,7 @@ void ScreenOptionsMemoryCard::ExportOptions( int iRow, const vectorm_MasterPlayerNumber]; @@ -135,7 +136,7 @@ void ScreenOptionsMemoryCard::ProcessMenuStart( const InputEventPlus &input ) } else { - CString s = ssprintf("error mounting card: %s", MEMCARDMAN->GetCardError(PLAYER_1).c_str() ); + CString s = ssprintf(ERROR_MOUNTING_CARD.GetValue(), MEMCARDMAN->GetCardError(PLAYER_1).c_str() ); ScreenPrompt::Prompt( SM_None, s ); } } diff --git a/stepmania/src/ScreenSaveSync.cpp b/stepmania/src/ScreenSaveSync.cpp index 8a823576f8..83a1e23a36 100644 --- a/stepmania/src/ScreenSaveSync.cpp +++ b/stepmania/src/ScreenSaveSync.cpp @@ -5,6 +5,15 @@ #include "PrefsManager.h" +static LocalizedString EARLIER ("ScreenSaveSync","earlier"); +static LocalizedString LATER ("ScreenSaveSync","later"); +static LocalizedString CHANGED_GLOBAL_OFFSET ("ScreenSaveSync","You have changed the Global Offset from %+.3f to %+.3f (change of %+.3f, making the notes %s)."); +static LocalizedString CHANGED_SONG_OFFSET ("ScreenSaveSync","You have changed the Song Offset from %+.3f to %+.3f (change of %+.3f, making the notes %s)."); +static LocalizedString CHANGED_BPM ("ScreenSaveSync","The BPM segment number #%d changed from %+.3f BPS to %+.3f BPS (change of %+.3f)."); +static LocalizedString CHANGED_STOP ("ScreenSaveSync","The stop segment #%d changed from %+.3f seconds to %+.3f seconds (change of %+.3f)."); +static LocalizedString CHANGED_TIMING_OF ("ScreenSaveSync","You have changed the timing of"); +static LocalizedString WOULD_YOU_LIKE_TO_SAVE ("ScreenSaveSync","Would you like to save these changes?"); +static LocalizedString CHOOSING_NO_WILL_DISCARD ("ScreenSaveSync","Choosing NO will discard your changes."); static CString GetPromptText() { CString s; @@ -17,11 +26,11 @@ static CString GetPromptText() if( fabs(fDelta) > 0.00001 ) { s += ssprintf( - "You have changed the Global Offset\nfrom %+.3f to %+.3f (change of %+.3f, notes %s).\n\n", + CHANGED_GLOBAL_OFFSET.GetValue()+"\n\n", fOld, fNew, fDelta, - fDelta > 0 ? "earlier":"later" ); + (fDelta > 0 ? EARLIER:LATER).GetValue().c_str() ); } } @@ -35,11 +44,11 @@ static CString GetPromptText() if( fabs(fDelta) > 0.00001 ) { vsSongChanges.push_back( ssprintf( - "The song offset changed from %+.3f to %+.3f (change of %+.3f, notes %s).\n\n", + CHANGED_SONG_OFFSET.GetValue()+"\n\n", fOld, fNew, fDelta, - fDelta > 0 ? "earlier":"later" ) ); + (fDelta > 0 ? EARLIER:LATER).GetValue().c_str() ) ); } } @@ -52,8 +61,8 @@ static CString GetPromptText() if( fabs(fDelta) > 0.00001 ) { vsSongChanges.push_back( ssprintf( - "The %s BPM segment changed from %+.3f BPS to %+.3f BPS (change of %+.3f).\n\n", - FormatNumberAndSuffix(i+1).c_str(), + CHANGED_BPM.GetValue()+"\n\n", + i+1, fOld, fNew, fDelta ) ); @@ -69,8 +78,8 @@ static CString GetPromptText() if( fabs(fDelta) > 0.00001 ) { vsSongChanges.push_back( ssprintf( - "The %s Stop segment changed from %+.3f seconds to %+.3f seconds (change of %+.3f).\n\n", - FormatNumberAndSuffix(i+1).c_str(), + CHANGED_STOP.GetValue()+"\n\n", + i+1, fOld, fNew, fDelta ) ); @@ -81,7 +90,7 @@ static CString GetPromptText() if( !vsSongChanges.empty() ) { s += ssprintf( - "You have changed the timing of\n" + CHANGED_TIMING_OF.GetValue()+"\n" "%s:\n" "\n", GAMESTATE->m_pCurSong->GetDisplayFullTitle().c_str() ); @@ -89,10 +98,9 @@ static CString GetPromptText() s += join( "\n", vsSongChanges ); } - s +="\n\n" - "Would you like to save these changes?\n" - "Choosing NO will discard your changes."; - + s +="\n\n"+ + WOULD_YOU_LIKE_TO_SAVE.GetValue()+"\n"+ + CHOOSING_NO_WILL_DISCARD.GetValue(); return s; } diff --git a/stepmania/src/ScreenServiceAction.cpp b/stepmania/src/ScreenServiceAction.cpp index 354b41b578..ba8d928628 100644 --- a/stepmania/src/ScreenServiceAction.cpp +++ b/stepmania/src/ScreenServiceAction.cpp @@ -13,14 +13,15 @@ #include "GameState.h" #include "PlayerState.h" - +static LocalizedString BOOKKEEPING_DATA_CLEARED( "ScreenServiceAction", "Bookkeeping data cleared." ); static CString ClearBookkeepingData() { BOOKKEEPER->ClearAll(); BOOKKEEPER->WriteToDisk(); - return "Bookkeeping data cleared."; + return BOOKKEEPING_DATA_CLEARED; } +static LocalizedString MACHINE_STATS_CLEARED( "ScreenServiceAction", "Machine stats cleared." ); static CString ClearMachineStats() { Profile* pProfile = PROFILEMAN->GetMachineProfile(); @@ -29,9 +30,10 @@ static CString ClearMachineStats() pProfile->InitAll(); pProfile->m_sGuid = sGuid; PROFILEMAN->SaveMachineProfile(); - return "Machine stats cleared."; + return MACHINE_STATS_CLEARED; } +static LocalizedString MACHINE_EDITS_CLEARED( "ScreenServiceAction", "%d edits cleared, %d errors." ); static CString ClearMachineEdits() { int iNumAttempted = 0; @@ -52,7 +54,8 @@ static CString ClearMachineEdits() PROFILEMAN->SaveMachineProfile(); PROFILEMAN->LoadMachineProfile(); - return ssprintf("%d edits cleared, %d errors.",iNumSuccessful,iNumAttempted-iNumSuccessful); + int iNumErrors = iNumAttempted-iNumSuccessful; + return ssprintf(MACHINE_EDITS_CLEARED.GetValue(),iNumSuccessful,iNumErrors); } static PlayerNumber GetFirstReadyMemoryCard() @@ -70,11 +73,13 @@ static PlayerNumber GetFirstReadyMemoryCard() return PLAYER_INVALID; } +static LocalizedString MEMORY_CARD_EDITS_NOT_CLEARED( "ScreenServiceAction", "Edits not cleared - No memory cards ready." ); +static LocalizedString EDITS_CLEARED ( "ScreenServiceAction", "%d edits cleared, %d errors." ); static CString ClearMemoryCardEdits() { PlayerNumber pn = GetFirstReadyMemoryCard(); if( pn == PLAYER_INVALID ) - return "Stats not cleared - No memory cards ready."; + return MEMORY_CARD_EDITS_NOT_CLEARED; int iNumAttempted = 0; int iNumSuccessful = 0; @@ -96,7 +101,7 @@ static CString ClearMemoryCardEdits() MEMCARDMAN->UnmountCard(pn); - return ssprintf("%d edits cleared, %d errors.",iNumSuccessful,iNumAttempted-iNumSuccessful); + return ssprintf(EDITS_CLEARED.GetValue(),iNumSuccessful,iNumAttempted-iNumSuccessful); } static HighScore MakeRandomHighScore( float fPercentDP ) @@ -170,20 +175,24 @@ static void FillProfile( Profile *pProfile ) } } +static LocalizedString MACHINE_STATS_FILLED( "ScreenServiceAction", "Machine stats filled." ); static CString FillMachineStats() { Profile* pProfile = PROFILEMAN->GetMachineProfile(); FillProfile( pProfile ); PROFILEMAN->SaveMachineProfile(); - return "Machine stats filled."; + return MACHINE_STATS_FILLED; } +static LocalizedString STATS_NOT_SAVED ( "ScreenServiceAction", "Stats not saved - No memory cards ready." ); +static LocalizedString MACHINE_STATS_SAVED ( "ScreenServiceAction", "Machine stats saved to P%d card." ); +static LocalizedString ERROR_SAVING_MACHINE_STATS ( "ScreenServiceAction", "Error saving machine stats to P%d card." ); static CString TransferStatsMachineToMemoryCard() { PlayerNumber pn = GetFirstReadyMemoryCard(); if( pn == PLAYER_INVALID ) - return "Stats not saved - No memory cards ready."; + return STATS_NOT_SAVED; if( !MEMCARDMAN->IsMounted(pn) ) MEMCARDMAN->MountCard(pn); @@ -196,16 +205,20 @@ static CString TransferStatsMachineToMemoryCard() MEMCARDMAN->UnmountCard(pn); if( bSaved ) - return ssprintf("Machine stats saved to P%d card.",pn+1); + return ssprintf(MACHINE_STATS_SAVED.GetValue(),pn+1); else - return ssprintf("Error saving machine stats to P%d card.",pn+1); + return ssprintf(ERROR_SAVING_MACHINE_STATS.GetValue(),pn+1); } +static LocalizedString STATS_NOT_LOADED ( "ScreenServiceAction", "Stats not loaded - No memory cards ready." ); +static LocalizedString MACHINE_STATS_LOADED ( "ScreenServiceAction", "Machine stats loaded from P%d card." ); +static LocalizedString THERE_IS_NO_PROFILE ( "ScreenServiceAction", "There is no machine profile on P%d card." ); +static LocalizedString PROFILE_CORRUPT ( "ScreenServiceAction", "The profile on P%d card contains corrupt or tampered data." ); static CString TransferStatsMemoryCardToMachine() { PlayerNumber pn = GetFirstReadyMemoryCard(); if( pn == PLAYER_INVALID ) - return "Stats not loaded - No memory cards ready."; + return STATS_NOT_LOADED; if( !MEMCARDMAN->IsMounted(pn) ) MEMCARDMAN->MountCard(pn); @@ -216,18 +229,19 @@ static CString TransferStatsMemoryCardToMachine() Profile backup = *PROFILEMAN->GetMachineProfile(); ProfileLoadResult lr = PROFILEMAN->GetMachineProfile()->LoadAllFromDir( sDir, PREFSMAN->m_bSignProfileData ); + CString s; switch( lr ) { case ProfileLoadResult_Success: - return ssprintf("Machine stats loaded from P%d card.",pn+1); + s = ssprintf(MACHINE_STATS_LOADED.GetValue(),pn+1); break; case ProfileLoadResult_FailedNoProfile: - return ssprintf("There is no machine profile on P%d card.",pn+1); *PROFILEMAN->GetMachineProfile() = backup; + s = ssprintf(THERE_IS_NO_PROFILE.GetValue(),pn+1); break; case ProfileLoadResult_FailedTampered: - return ssprintf("The profile on P%d card contains corrupt or tampered data.",pn+1); *PROFILEMAN->GetMachineProfile() = backup; + s = ssprintf(PROFILE_CORRUPT.GetValue(),pn+1); break; default: ASSERT(0); @@ -235,7 +249,7 @@ static CString TransferStatsMemoryCardToMachine() MEMCARDMAN->UnmountCard(pn); - return "Stats transferred to machine."; + return s; } static void CopyEdits( const CString &sFrom, const CString &sTo, int &iNumAttempted, int &iNumSuccessful, int &iNumOverwritten ) @@ -279,11 +293,13 @@ static void CopyEdits( const CString &sFrom, const CString &sTo, int &iNumAttemp } } +static LocalizedString EDITS_NOT_COPIED( "ScreenServiceAction", "Edits not copied - No memory cards ready." ); +static LocalizedString COPIED_TO_CARD( "ScreenServiceAction", "Copied to P%d card: %d/%d copies OK (%d overwritten)." ); static CString CopyEditsMachineToMemoryCard() { PlayerNumber pn = GetFirstReadyMemoryCard(); if( pn == PLAYER_INVALID ) - return "Edits not copied - No memory cards ready."; + return EDITS_NOT_COPIED; if( !MEMCARDMAN->IsMounted(pn) ) MEMCARDMAN->MountCard(pn); @@ -299,14 +315,15 @@ static CString CopyEditsMachineToMemoryCard() MEMCARDMAN->UnmountCard(pn); // TODO: Make string themable - return ssprintf("Copied to P%d card:\n%d/%d copies OK (%d overwritten).",pn+1,iNumSuccessful,iNumAttempted,iNumOverwritten); + return ssprintf(COPIED_TO_CARD.GetValue(),pn+1,iNumSuccessful,iNumAttempted,iNumOverwritten); } +static LocalizedString COPIED_FROM_CARD( "ScreenServiceAction", "Copied from P%d card: %d/%d copies OK (%d overwritten)." ); static CString CopyEditsMemoryCardToMachine() { PlayerNumber pn = GetFirstReadyMemoryCard(); if( pn == PLAYER_INVALID ) - return "Edits not copied - No memory cards ready."; + return EDITS_NOT_COPIED; if( !MEMCARDMAN->IsMounted(pn) ) MEMCARDMAN->MountCard(pn); @@ -326,13 +343,14 @@ static CString CopyEditsMemoryCardToMachine() PROFILEMAN->LoadMachineProfile(); // TODO: Make themeable - return ssprintf("Copied from P%d card:\n%d/%d copies OK (%d overwritten).",pn+1,iNumSuccessful,iNumAttempted,iNumOverwritten); + return ssprintf(COPIED_FROM_CARD.GetValue(),pn+1,iNumSuccessful,iNumAttempted,iNumOverwritten); } +static LocalizedString PREFERENCES_RESET( "ScreenServiceAction", "Preferences reset." ); static CString ResetPreferences() { PREFSMAN->ResetToFactoryDefaults(); - return "Preferences reset."; + return PREFERENCES_RESET; }