Internationalization/feasibility


Summary

Our task is to find out the possible main difficulties that will be encoutered during both design and implementation of the i18n framework.

Main focuses are:

  • state of the Unicode implementation
  • strings usage in Vision2
  • runtime generated/composed strings with variables

String types and their possible difficulties

Constant String

Workbench_name: STRING is "EiffelStudio"

Difficulties

Possible Solution

String with label specific syntax

m_to_lower: STRING is "Set to &Lowercase%TCtrl+Shift+U"

Difficulties

  • Bad readability for the traducer
  • Shortcuts conflict

Possible Solution

Composed String

m_About:STRING is
  once
       Result:"&About"+ Workbench_name + "..."
  end

Difficulties

Possible Solution

Runtime composed String containging queries

w_Project_directory_not_exist (file_name, dir_name: STRING):STRING is
  do
       create Result.make(256)
       Result.append ("%NCannot open project '")
       Result.append (file_name)
       Result.append ("'.%N%NMake sure you have a complete EIFGEN directory in '")
       Result.append (dir_name)
       Result.append ("'.")
  end

Difficulties

Possible Solution

Important Classes

Defining and formatting Strings

  • INTERFACE_NAMES: Include all the strings of the ES interface (buttons, labels, shortcuts...)
  • TEXT_FORMATTER: Text formatter for all text output formatting
  • ERROR: Error object sent by the compiler to the workbench. Ancestor class of all error classes (WARNING, SYNTAX_ERROR, INTERRUPT_ERROR, LACE_ERROR,EIFFEL_ERROR...)

Implementations

  • STRING_GENERAL: "Common ancestors to all STRING classes." [base]
    • STRING: [base]
      • UC_STRING: Unicode strings [gobo]
        • UC_UTF8_STRING: Unicode strings with UTF-8 encoding
    • STRING_32: [base]
  • UC_CHARACTER: Unicode characters [gobo]
  • KS_STRING: Portable interface for class STRING [Gobo]
  • cluster: "gobo.kernel.unicode"
  • WIDE_CHARACTER: Unicode characters, with comparison operations [base]