Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
student:java:localization [2018/08/16 10:46] bernstdhstudent:java:localization [2022/05/03 14:12] bernstdh
Line 17: Line 17:
  
  
-Java has a [[ http://docs.oracle.com/javase/9/docs/api/java/util/Locale.html |  java.util.Locale ]] class that   encapsulates the identifying attributes of a locale.  These   attributes include a //language// (defined in   [[ http://www.loc.gov/standards/iso639-2/php/code_list.php | ISO   639 ]]), a //script// or writing system (defined in   [[ http://unicode.org/iso15924/iso15924-codes.html | ISO   15924 ]]), a //country// or region (defined in   [[ https://www.iso.org/iso-3166-country-codes.html | ISO 3166 ]]),   and a //variant// (defined in   [[ https://tools.ietf.org/html/bcp47 | IETF BCP47 ]]) like   Canadian French or Swiss German.+Java has a [[ http://docs.oracle.com/javase/9/docs/api/java/util/Locale.html |  java.util.Locale ]] class that   encapsulates the identifying attributes of a locale.  These   attributes include a //language// (defined in   [[ http://www.loc.gov/standards/iso639-2/php/code_list.php | ISO   639 ]]), a //script// or writing system (defined in   [[ http://unicode.org/iso15924/iso15924-codes.html | ISO   15924 ]]), a //country// or region (defined in   [[ https://www.iso.org/iso-3166-country-codes.html | ISO 3166 ]]),   and a //variant// (defined in   [[ https://tools.ietf.org/html/bcp47 | IETF BCP47 ]]) like   Canadian French or Swiss German.
  
  
-When the Java Virtual Machine is started it determines   the ''%%Locale%%'' of the processor it is running on. This   information can be obtained from within a program using the   [[ http://docs.oracle.com/javase/9/docs/api/java/util/Locale.html#getDefault() |  java.util.Locale#getDefault() ]] method.+When the Java Virtual Machine is started it determines   the ''%%Locale%%'' of the processor it is running on. This   information can be obtained from within a program using the   [[ http://docs.oracle.com/javase/9/docs/api/java/util/Locale.html#getDefault() |  java.util.Locale#getDefault() ]] method.
  
  
Line 26: Line 26:
  
  
-The Java Virtual Machine can be provided with the information is   should use to identify the ''%%Locale%%'' when it is started   using the ''%%-Duser.country%%''   and ''%%-Duser.language%%'' options. For example, when   executing an application named ''%%Test%%'' in the United   States one could tell the JVM to use the ''%%Locale%%'' for   Canadian French as follows: +The Java Virtual Machine can be provided with the information is   should use to identify the ''%%Locale%%'' when it is started   using the ''%%-Duser.country%%''   and ''%%-Duser.language%%'' options. For example, when   executing an application named ''%%Test%%'' in the United   States one could tell the JVM to use the ''%%Locale%%'' for  Canadian French using the following virtual machine (VM) options:
  
 <code> <code>
-java -Duser.country=CA -Duser.language=fr Test+-Duser.country=CA -Duser.language=fr
 </code> </code>
  
-It is also possible to change the ''%%Locale%%'' inside of a   program using   the [[ http://docs.oracle.com/javase/9/docs/api/java/util/Locale.html#setDefault(java.util.Locale) |  java.util.Locale#setDefault(java.util.Locale) ]]   method.+They can be passed to the VM from the command line when executing the ''%%java%%'' command. (Note: When using PowerShell, the arguments must be enclosed in double-quotes.) All IDEs also have a way of passing options to the VM (e.g., in Eclipse as part of the "Run Configuration"; in jGRASP as "RUN Arguments"). 
 + 
 + 
 +It is also possible to change the ''%%Locale%%'' inside of a   program using   the [[ http://docs.oracle.com/javase/9/docs/api/java/util/Locale.html#setDefault(java.util.Locale) |  java.util.Locale#setDefault(java.util.Locale) ]]   method.
  
  
Line 39: Line 41:
  
  
-Some people/companies approach the localization of terminology as a   problem in machine translation but most use a simple mapping (and   rely on human translators to do the hard work of translation). Java   provides a [[ http://docs.oracle.com/javase/9/docs/api/java/util/ResourceBundle.html |  java.util.ResourceBundle ]] class for   working which such mappings. To use it, one creates a file   containing a mapping between keys (in the programmer’s language) and   values (in the target language). Each key is, essentially,   a ''%%String%%'' literal that appears in the user interface   (e.g., "File", "Open", etc…).  One mapping is created for each   language, **including the programmer’s language**. The   appropriate mapping is then loaded (based on   the ''%%Locale%%'') and is used everywhere   a ''%%String%%'' literal would otherwise be used.+Some people/companies approach the localization of terminology as a   problem in machine translation but most use a simple mapping (and   rely on human translators to do the hard work of translation). Java   provides a [[ http://docs.oracle.com/javase/9/docs/api/java/util/ResourceBundle.html |  java.util.ResourceBundle ]] class for   working which such mappings. To use it, one creates a file   containing a mapping between keys (in the programmer’s language) and   values (in the target language). Each key is, essentially,   a ''%%String%%'' literal that appears in the user interface   (e.g., "File", "Open", etc…).  One mapping is created for each   language, **including the programmer’s language**. The   appropriate mapping is then loaded (based on   the ''%%Locale%%'') and is used everywhere   a ''%%String%%'' literal would otherwise be used.
  
  
Line 85: Line 87:
  
  
-There are versions of the ''%%printf()%%''     and ''%%format()%%'' methods in     the [[ http://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html |  java.io.PrintStream | ]] class that are     a ''%%Locale%%'' object and use it to determine the     appropriate formatting for numbers. The versions that are not     passed a ''%%Locale%%'' simply call the versions that are,     passing the default ''%%Locale%%''. Hence, if one uses these     methods one need not make any special accommodations to handle     locales.+There are versions of the ''%%printf()%%'' method in  the [[ http://docs.oracle.com/javase/9/docs/api/java/io/PrintStream.html |  java.io.PrintStream ]] class and and ''%%format()%%'' in the [[ http://docs.oracle.com/javase/9/docs/api/java/lang/String.html |  java.lang.String ]] class that are     a ''%%Locale%%'' object and use it to determine the     appropriate formatting for numbers. The versions that are not     passed a ''%%Locale%%'' simply call the versions that are,     passing the default ''%%Locale%%''. Hence, if one uses these     methods one need not make any special accommodations to handle     locales.
  
  
-There is also a [[ http://docs.oracle.com/javase/9/docs/api/java/text/NumberFormat.html |  java.text.NumberFormat ]] class     that provides even more flexibility, though it is less convenient.+There is also a [[ http://docs.oracle.com/javase/9/docs/api/java/text/NumberFormat.html |  java.text.NumberFormat ]] class     that provides even more flexibility, though it is less convenient.
  
  
Line 100: Line 102:
  
  
-The [[ http://docs.oracle.com/javase/9/docs/api/java/text/DateFormat.html |  java.text.DateFormat ]] class has     a ''%%format()%%'' method that can be used to format dates in     a variety of ways. It can be used to     create ''%%SHORT%%'', ''%%MEDIUM%%'', ''%%LONG%%''     and ''%%FULL%%'' representations.+The [[ http://docs.oracle.com/javase/9/docs/api/java/text/DateFormat.html |  java.text.DateFormat ]] class has     a ''%%format()%%'' method that can be used to format dates in     a variety of ways. It can be used to     create ''%%SHORT%%'', ''%%MEDIUM%%'', ''%%LONG%%''     and ''%%FULL%%'' representations.
  
  
Line 111: Line 113:
   * [[ https://docs.oracle.com/javase/tutorial/i18n/ | Localization/Internationalization in Java ]]   * [[ https://docs.oracle.com/javase/tutorial/i18n/ | Localization/Internationalization in Java ]]
   * [[ http://www.oracle.com/technetwork/articles/javase/locale-140624.html |    * [[ http://www.oracle.com/technetwork/articles/javase/locale-140624.html | 
-  Understanding ''%%Locale%%'' ]]+  Understanding Locale ]]
   * [[ https://docs.oracle.com/javase/tutorial/i18n/text/shapedDigits.html |    * [[ https://docs.oracle.com/javase/tutorial/i18n/text/shapedDigits.html | 
   Using Different Number-Writing Systems ]]   Using Different Number-Writing Systems ]]