GeoTools

OSGeo

Previous topic

Range

Next topic

Referencing

This Page

TextΒΆ

The Text utility class helps your code access GeoTools text facilities.:

    
    InternationalString greeting;
    
    // simple text place holder
    greeting = Text.text("hello world");
    
    // translated text for an internationalized application
    // useful as message.properties, message_fr.properties etc can be translated
    // outside of your application
    greeting = Text.text("greeting", "message.properties");
    
    // the next method is good for quickly doing things as a developer
    Map<String,String> translations = new HashMap<String,String>();
    translations.put("greeting", "Hello World");
    translations.put( "greeting_it", "ciao mondo");
    
    greeting = Text.text("greeting", translations );
    
    // you can actually use the same map to configure several international strings
    // (each string will only pick up the entries with a matching key)
    //
    // With that in mind we make a special effort to allow you to use properties
    Properties properties = new Properties();
    properties.load( new FileInputStream("message.properties") );
    
    InternationalString title = Text.text( "title", properties );
    InternationalString description = Text.text( "description", properties );
    

The idea of an InternationalString comes from the gt-opengis module.

The above class is backed by a couple of implementations provided by gt-metadata:

  • ResourceInternationalString

    Used to set up an InternationalString based on a resource bundle.

        ResourceInternationalString greeting = new ResourceInternationalString("message.properties",
                "greeting");
        
        System.out.println(greeting); // will output best match to current Locale
        System.out.println(greeting.toString(Locale.CANADA_FRENCH)); // should output best match
        
        // Note the "messages.properties" above is used with Java ResourceBundle
        // In a manner similar to this
        ResourceBundle.getBundle("message.properties", Locale.getDefault()).getString("greeting");
    

    As noted above Java ResourceBundle is responsible for loading the correct property file for the requested String.

  • SimpleInternationalString

    This is used when you need to quickly get back to work. You can replace the default english text with a real translator when a volunteer shows interest.

        SimpleInternationalString greeting = new SimpleInternationalString("Hello World");
        
        System.out.println(greeting); // will output best match to current
        System.out.println(greeting.toString(Locale.FRENCH)); // but since there is only one...
    
  • GrowableInternaionalString

    The easiest one to use as a programmer; allows you to set up multiple translations in code.

        GrowableInternationalString greeting = new GrowableInternationalString();
        
        // Make use of Locale when adding translations
        greeting.add(Locale.ENGLISH, "Hello World");
        greeting.add(Locale.FRENCH, "Bonjour tout le monde");
        greeting.add("fr", "greeting", "");
        
        System.out.println(greeting); // will output best match to current Locale
        System.out.println(greeting.toString(Locale.CANADA_FRENCH)); // should output best match
        
        // You can also use strings to avoid creating Locale objects right away
        // The method references a "key" which is handy when processing property files
        greeting.add("key_en", "key", "Hello World");
        greeting.add("key_fr", "key", "Bonjour tot le monde");
        
        // You can also quickly create an GrowableInternationalString and add to it later
        GrowableInternationalString cheerfulGreeting = new GrowableInternationalString("G'Day");
        cheerfulGreeting.add(Locale.UK, "Welcome");
        cheerfulGreeting.add(Locale.US, "Hello");