don't pseudolocalize replacement markers in strings

This commit is contained in:
Chris Danford
2006-01-18 04:09:14 +00:00
parent 48aa85bfdb
commit cc2558fac6
+48 -18
View File
@@ -932,6 +932,30 @@ void ThemeManager::GetMetric( const RString &sClassName, const RString &sValueNa
valueOut.SetFromExpression( "function(self) " + sValue + "end" ); valueOut.SetFromExpression( "function(self) " + sValue + "end" );
} }
static RString PseudoLocalize( RString s )
{
s.Replace( "a", "àá" );
s.Replace( "A", "ÀÀ" );
s.Replace( "e", "éé" );
s.Replace( "E", "ÉÉ" );
s.Replace( "i", "íí" );
s.Replace( "I", "ÍÍ" );
s.Replace( "o", "óó" );
s.Replace( "O", "ÓÓ" );
s.Replace( "u", "üü" );
s.Replace( "U", "ÜÜ" );
s.Replace( "n", "ñ" );
s.Replace( "N", "Ñ" );
s.Replace( "c", "ç" );
s.Replace( "C", "Ç" );
// transformations that helpexpose punctuation assumptions
//s.Replace( ":", " :" ); // this messes up "::" help text tip separator markers
s.Replace( "?", " ?" );
s.Replace( "!", " !" );
return s;
}
RString ThemeManager::GetString( const RString &sClassName, const RString &sValueName_ ) RString ThemeManager::GetString( const RString &sClassName, const RString &sValueName_ )
{ {
RString sValueName = sValueName_; RString sValueName = sValueName_;
@@ -964,24 +988,30 @@ RString ThemeManager::GetString( const RString &sClassName, const RString &sValu
if( m_bPseudoLocalize ) if( m_bPseudoLocalize )
{ {
s.Replace( "a", "àá" ); // pseudolocalize ignoring replace markers. e.g.: "%{steps} steps: %{author}"
s.Replace( "A", "ÀÀ" ); RString sTranslated;
s.Replace( "e", "éé" );
s.Replace( "E", "ÉÉ" ); for( ; true; )
s.Replace( "i", "íí" ); {
s.Replace( "I", "ÍÍ" ); RString::size_type pos = s.find( "%{" );
s.Replace( "o", "óó" ); if( pos == s.npos )
s.Replace( "O", "ÓÓ" ); {
s.Replace( "u", "üü" ); sTranslated += PseudoLocalize( s );
s.Replace( "U", "ÜÜ" ); s = RString();
s.Replace( "n", "ñ" ); break;
s.Replace( "N", "Ñ" ); }
s.Replace( "c", "ç" ); else
s.Replace( "C", "Ç" ); {
// transformations that helpexpose punctuation assumptions sTranslated += PseudoLocalize( s.substr(0,pos) );
//s.Replace( ":", " :" ); // this messes up "::" help text tip separator markers s.erase( s.begin(), s.begin()+pos );
s.Replace( "?", " ?" ); }
s.Replace( "!", " !" );
pos = s.find( "}" );
sTranslated += s.substr(0,pos+1);
s.erase( s.begin(), s.begin()+pos+1 );
}
s = sTranslated;
} }
return s; return s;