translate preferences -- finally.

This commit is contained in:
Eric House 2014-04-24 07:56:27 -07:00
parent 3b4c672492
commit 28e81e3a74
2 changed files with 51 additions and 2 deletions

View file

@ -25,6 +25,8 @@ import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import org.eehouse.android.xw4.loc.LocUtils;
public class PrefsActivity extends PreferenceActivity { public class PrefsActivity extends PreferenceActivity {
private PrefsDelegate m_dlgt; private PrefsDelegate m_dlgt;
@ -38,12 +40,18 @@ public class PrefsActivity extends PreferenceActivity {
@Override @Override
protected void onCreate( Bundle savedInstanceState ) protected void onCreate( Bundle savedInstanceState )
{ {
super.onCreate( savedInstanceState );
m_dlgt = new PrefsDelegate( this, savedInstanceState ); m_dlgt = new PrefsDelegate( this, savedInstanceState );
super.onCreate( savedInstanceState );
m_dlgt.init( savedInstanceState ); m_dlgt.init( savedInstanceState );
} }
@Override
protected void onStart()
{
LocUtils.xlatePreferences( this );
super.onStart();
}
@Override @Override
protected void onResume() protected void onResume()
{ {

View file

@ -36,6 +36,9 @@ import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceActivity;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@ -119,6 +122,11 @@ public class LocUtils {
xlateView( activity, Utils.getContentView( activity ) ); xlateView( activity, Utils.getContentView( activity ) );
} }
public static void xlatePreferences( PreferenceActivity activity )
{
xlatePreferences( activity, activity.getPreferenceScreen(), 0 );
}
public static void xlateView( Context context, View view ) public static void xlateView( Context context, View view )
{ {
DbgUtils.logf( "xlateView() top level" ); DbgUtils.logf( "xlateView() top level" );
@ -130,6 +138,15 @@ public class LocUtils {
xlateMenu( activity, menu, 0 ); xlateMenu( activity, menu, 0 );
} }
private static String xlateString( Context context, CharSequence str )
{
String result = null;
if ( null != str ) {
result = xlateString( context, str.toString() );
}
return result;
}
public static String xlateString( Context context, String str ) public static String xlateString( Context context, String str )
{ {
if ( LocIDs.getS_MAP( context ).containsKey( str ) ) { if ( LocIDs.getS_MAP( context ).containsKey( str ) ) {
@ -416,6 +433,30 @@ public class LocUtils {
} }
} }
public static void xlatePreferences( Context context, Preference pref,
int depth )
{
// DbgUtils.logf( "xlatePreferences(depth=%d, view=%s, canRecurse=%b)", depth,
// pref.getClass().getName(), pref instanceof PreferenceGroup );
String str = xlateString( context, pref.getSummary() );
if ( null != str ) {
pref.setSummary( str );
}
str = xlateString( context, pref.getTitle() );
if ( null != str ) {
pref.setTitle( str );
}
if ( pref instanceof PreferenceGroup ) {
PreferenceGroup group = (PreferenceGroup)pref;
int count = group.getPreferenceCount();
for ( int ii = 0; ii < count; ++ii ) {
xlatePreferences( context, group.getPreference(ii), 1 + depth );
}
}
}
// This is for testing, but the ability to pull the formatters will be // This is for testing, but the ability to pull the formatters will be
// critical for validating local transations of strings containing // critical for validating local transations of strings containing
// formatters. // formatters.