idStr CDownloadMenu::GetMissionDownloadProgressString( int modIndex ) {
	ActiveDownloads::const_iterator it = _downloads.find( modIndex );
	if( it == _downloads.end() ) {
		return common->Translate( "#str_02180" );
	}
	CDownloadPtr download = gameLocal.m_DownloadManager->GetDownload( it->second.missionDownloadId );
	CDownloadPtr l10nDownload;
	if( it->second.l10nPackDownloadId != -1 ) {
		l10nDownload = gameLocal.m_DownloadManager->GetDownload( it->second.l10nPackDownloadId );
	}
	if( !download && !l10nDownload ) {
		return idStr();
	}
	switch( download->GetStatus() ) {
	case CDownload::NOT_STARTED_YET:
		return common->Translate( "#str_02180" );	// "queued "
	case CDownload::FAILED:
		return common->Translate( "#str_02181" );	// "failed "
	case CDownload::IN_PROGRESS: {
		double totalFraction = download->GetProgressFraction();
		if( l10nDownload ) {
			// We assume the L10n pack to consume 10% of the whole download
			// This is just a rough guess, for some missions the l10n pack
			// is bigger than the mission, for others it is only 5%
			totalFraction *= 0.90f;
			totalFraction += 0.10f * l10nDownload->GetProgressFraction();
		}
		return va( "%0.1f%s", totalFraction * 100, "% " );
	}
	case CDownload::SUCCESS:
		return "100% ";
	default:
		return "??";
	};
}