<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carlo</id>
		<title>EiffelStudio: an EiffelSoftware project - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Carlo"/>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/Special:Contributions/Carlo"/>
		<updated>2026-05-07T00:43:27Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/translation&amp;diff=6364</id>
		<title>Internationalization/translation</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/translation&amp;diff=6364"/>
				<updated>2006-11-23T07:24:54Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: removed (now broken) link to translation site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Internationalization]]&lt;br /&gt;
&lt;br /&gt;
EiffelStudio contains many sectorial terms, which may have a corresponding expression in other languages but their meaning may not be clear enough to the end user.&lt;br /&gt;
&lt;br /&gt;
This page is intended for discussion on terms difficult to translate.&lt;br /&gt;
&lt;br /&gt;
= Translation =&lt;br /&gt;
== A ==&lt;br /&gt;
Ancestor&lt;br /&gt;
  it: Antenato&lt;br /&gt;
  fr: Ancêtre &lt;br /&gt;
  zh_CN: 父类&lt;br /&gt;
&lt;br /&gt;
Anchor&lt;br /&gt;
&lt;br /&gt;
assignees&lt;br /&gt;
&lt;br /&gt;
Assigners&lt;br /&gt;
&lt;br /&gt;
== B ==&lt;br /&gt;
== C ==&lt;br /&gt;
Callers&lt;br /&gt;
  it: chiamanti&lt;br /&gt;
  fr: ''Appeleur'' is a possiblity but it sounds ugly and is possibly not common usage&lt;br /&gt;
  zh_CN: 调用方&lt;br /&gt;
&lt;br /&gt;
Cluster Legend&lt;br /&gt;
== D ==&lt;br /&gt;
== E ==&lt;br /&gt;
Execution Profile Generation&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
== F ==&lt;br /&gt;
Finalize&lt;br /&gt;
  it: finalizza -&amp;gt; finalized == finalizzato&lt;br /&gt;
Freeze&lt;br /&gt;
== G ==&lt;br /&gt;
== H ==&lt;br /&gt;
Heir&lt;br /&gt;
  it: Erede =&amp;gt; Heirs: eredi&lt;br /&gt;
  zh_CN: 后裔&lt;br /&gt;
== I ==&lt;br /&gt;
Indexing clause&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
== J ==&lt;br /&gt;
== K ==&lt;br /&gt;
== L ==&lt;br /&gt;
== M ==&lt;br /&gt;
Midpoint&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
Metric&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
== N ==&lt;br /&gt;
== O ==&lt;br /&gt;
Overrides&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
== P ==&lt;br /&gt;
Parent&lt;br /&gt;
  it: genitore&lt;br /&gt;
  zh_CN: 父类&lt;br /&gt;
&lt;br /&gt;
Put Handle Left&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
Profile&lt;br /&gt;
  zh_CN: 评测&lt;br /&gt;
&lt;br /&gt;
Pick and Drop&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
== Q ==&lt;br /&gt;
== R ==&lt;br /&gt;
== S ==&lt;br /&gt;
Step Out&lt;br /&gt;
&lt;br /&gt;
split area&lt;br /&gt;
  zh_CN:&lt;br /&gt;
&lt;br /&gt;
Suppliers&lt;br /&gt;
  it: fornitori&lt;br /&gt;
&lt;br /&gt;
== T ==&lt;br /&gt;
Toggle visibility&lt;br /&gt;
  it: Mostra/nascondi ''[used]''&lt;br /&gt;
== U ==&lt;br /&gt;
== V ==&lt;br /&gt;
== W ==&lt;br /&gt;
Watch&lt;br /&gt;
  it: osserva&lt;br /&gt;
  zh_CN: 观察&lt;br /&gt;
&lt;br /&gt;
Wizard&lt;br /&gt;
  it: Procedura guidata ''[used]'', wizard ''[used in menu]''&lt;br /&gt;
  zh_CN: 向导&lt;br /&gt;
== X ==&lt;br /&gt;
== Y ==&lt;br /&gt;
== Z ==&lt;br /&gt;
== Following words are left unchanged ==&lt;br /&gt;
* it: file, inheritance, overflow, stack, feature, routine, cluster, deferred, client, supplier, signature&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=EiffelStudio_Internationalization&amp;diff=5959</id>
		<title>EiffelStudio Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=EiffelStudio_Internationalization&amp;diff=5959"/>
				<updated>2006-11-09T12:04:58Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelStudio]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
== Overview ==&lt;br /&gt;
Since i18n have been mostly implemented in Eiffel, Eiffel Studio is coming into the new era of [[internationalization]]. The goal of i18n integration is to provide multiple language support in Eiffel Studio and let users switch languages of the interface easily at runtime.&lt;br /&gt;
&lt;br /&gt;
== Steps to integrate i18n ==&lt;br /&gt;
=== Non-editor part ===&lt;br /&gt;
The first step concentrates on the interface of Eiffel Studio. All buttons, labels, tool tips and grids that are directly used by Eiffel Studio project.&lt;br /&gt;
# Collect all static interface strings in the system., including some context depend strings.&lt;br /&gt;
## This is not necessary, but doing this give us better management and code quality. Only INTERFACE_NAMES knows i18n. &lt;br /&gt;
## Change all types in INTERFACE_NAMES to be STRING_GENERAL. Caller should be adapted correspondingly.&lt;br /&gt;
## Rewrite bodies of those strings using i18n translation routines, STRING_32 instances are actually produced.&lt;br /&gt;
# Build language menus to switch language. &lt;br /&gt;
## Make interface classes locale observers so that all tools know when interface names should be reread.&lt;br /&gt;
# Solve the problems in vision2.&lt;br /&gt;
## In Chinese, menu chars are conventionally parenthesized and under scored following the menu text. &lt;br /&gt;
## Handle &amp;quot;&amp;amp;&amp;quot; as both char and wchar for menu items.&lt;br /&gt;
## Fix &amp;quot;tab&amp;quot; issue for menu items.&lt;br /&gt;
# Integrate i18n .po generation tool. It has been done in i18n branch.&lt;br /&gt;
# using .po generation tool integrated ec to compile an ec in which interface names have been adapted. &lt;br /&gt;
# Use .po generation tool to generate .pot file. The .po generation tool generally extracts strings that are taken as parameters of `translated' and `translated_plural' and produce .pot file.&lt;br /&gt;
# Duplicate .pot file to .po files with names of locale ids. Each .po file represents a locale. i18n library read .mo files with correct names of id. Though .po files are not necessary to have names of locale id, .mo files are one-to-one produced from .po files. So using locale ids as names of .po files is reasonable.&lt;br /&gt;
# Translators using .po editor open .po files and translate interface names to all kinds of languages.&lt;br /&gt;
# Generate .mo files using .mo generation script.&lt;br /&gt;
&lt;br /&gt;
=== Editor part ===&lt;br /&gt;
# This step might be more complicated. And will be done later after the first step. Probably after 6.0 release. This step concentrates on extending the editor library to accept wide characters. Internationalization of any output directed to the editor is done in the step. Many existing tools might be affected, search tool, formatting tools etc. &lt;br /&gt;
# Encoding conversion facility is needed.&lt;br /&gt;
&lt;br /&gt;
== File structure ==&lt;br /&gt;
All files are stored in %EIFFEL_SRC%\Delivery\studio\lang&lt;br /&gt;
&lt;br /&gt;
%EIFFEL_SRC%\Delivery\studio\lang\script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Place where scripts for generating .mo files are put. The scripts are invoked when building a delivery.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
%EIFFEL_SRC%\Delivery\studio\lang\mo_files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Place to put .mo files. Those files are actually used at runtime.&lt;br /&gt;
Only .mo files need to be included in a delivery.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
%EIFFEL_SRC%\Delivery\studio\lang\po_files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Place to put .pot file and .po files. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintenance ==&lt;br /&gt;
* .pot file is PO template file which is generated by .po generation tool that will be integrated in Eiffel Studio. In my point, .pot file is simply untranslated file with only source entries and blank target entries.&lt;br /&gt;
* .po files are the files translators actually work on. Whenever translators get a new version of .pot file, they should merge .pot file and the .po file they are working on. When merging, tools like [http://www.poedit.org poEdit] give lists of new strings and obsolete strings. And in the full list new strings and fuzzy strings are marked in different colors by poEdit. &lt;br /&gt;
* Fuzzy strings are applied when merging. msgmerge of [http://www.gnu.org/software/gettext Gettext] make slightly changed strings fuzzy. When the checking of fuzzy strings is done, translators should remove fuzzy marks.&lt;br /&gt;
* Obsolete strings are commented out at the end of .po files when merging. Those comments can be removed at anytime if we wish.&lt;br /&gt;
* When the translation or modification is done, translators only need to commit .po file(s) that they are working on.&lt;br /&gt;
* New .po file can be added directly in %EIFFEL_SRC%\Delivery\studio\lang\po_files. Eiffel Studio should have the ability to detect at runtime what languages are available.&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3906</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3906"/>
				<updated>2006-07-01T16:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M3: June 13 */ changed wiki-link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June 13 ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
* compile a [[Internationalization/l10n_features|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
==M4: June 28 ==&lt;br /&gt;
* internationalization of EiffelStudio: surround strings with our functions&lt;br /&gt;
* [[Internationalization/translation|translation]] of EiffelStudio in some languages, for demo purposes (Italian, German, Chinese, ...) (see [http://slhk.ath.cx/projects/estudio/ pootle])&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .pot file ''(Leo)''&lt;br /&gt;
* language selection: add an entry in the preferences system&lt;br /&gt;
* create a function to detect current environment language and settings (aka [[Internationalization/locale|locale]])&lt;br /&gt;
&lt;br /&gt;
==M5: July ?? ==&lt;br /&gt;
* Refactoring of whole library&lt;br /&gt;
* Use our library for EiffelStudio&lt;br /&gt;
* Clean up Wiki and improve Developer manual&lt;br /&gt;
* Add support for other aspects of localisation - dates, number format etc. ''(possibly we can defer this a bit)''&lt;br /&gt;
** Compile a [[Internationalization/l10n_features | list of basic features]] to provide (e.g. date/time format, system locale) ''(deferred from M3)''&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programs with translation facilities.&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
&lt;br /&gt;
* [[Internationalization/requirements_specification|Requirements specification]]&lt;br /&gt;
* [[Internationalization/developer_manual|Developer manual]]&lt;br /&gt;
* [[Internationalization/obstacles|Obstacles]]: why can't achieve all of our goals&lt;br /&gt;
&lt;br /&gt;
= l10n: completed and on the work =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;3&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!'''Language'''&lt;br /&gt;
!'''Status'''&lt;br /&gt;
|-&lt;br /&gt;
|Arabic&lt;br /&gt;
|Active&lt;br /&gt;
|-&lt;br /&gt;
|Chinese&lt;br /&gt;
|Active&lt;br /&gt;
|-&lt;br /&gt;
|Italian&lt;br /&gt;
|Active&lt;br /&gt;
|-&lt;br /&gt;
|Rhaeto-Romanic&lt;br /&gt;
|Active - Ready for use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3905</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3905"/>
				<updated>2006-07-01T16:37:57Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M5: July ?? */ deferred from M3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June 13 ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
==M4: June 28 ==&lt;br /&gt;
* internationalization of EiffelStudio: surround strings with our functions&lt;br /&gt;
* [[Internationalization/translation|translation]] of EiffelStudio in some languages, for demo purposes (Italian, German, Chinese, ...) (see [http://slhk.ath.cx/projects/estudio/ pootle])&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .pot file ''(Leo)''&lt;br /&gt;
* language selection: add an entry in the preferences system&lt;br /&gt;
* create a function to detect current environment language and settings (aka [[Internationalization/locale|locale]])&lt;br /&gt;
&lt;br /&gt;
==M5: July ?? ==&lt;br /&gt;
* Refactoring of whole library&lt;br /&gt;
* Use our library for EiffelStudio&lt;br /&gt;
* Clean up Wiki and improve Developer manual&lt;br /&gt;
* Add support for other aspects of localisation - dates, number format etc. ''(possibly we can defer this a bit)''&lt;br /&gt;
** Compile a [[Internationalization/l10n_features | list of basic features]] to provide (e.g. date/time format, system locale) ''(deferred from M3)''&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programs with translation facilities.&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
&lt;br /&gt;
* [[Internationalization/requirements_specification|Requirements specification]]&lt;br /&gt;
* [[Internationalization/developer_manual|Developer manual]]&lt;br /&gt;
* [[Internationalization/obstacles|Obstacles]]: why can't achieve all of our goals&lt;br /&gt;
&lt;br /&gt;
= l10n: completed and on the work =&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;3&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!'''Language'''&lt;br /&gt;
!'''Status'''&lt;br /&gt;
|-&lt;br /&gt;
|Arabic&lt;br /&gt;
|Active&lt;br /&gt;
|-&lt;br /&gt;
|Chinese&lt;br /&gt;
|Active&lt;br /&gt;
|-&lt;br /&gt;
|Italian&lt;br /&gt;
|Active&lt;br /&gt;
|-&lt;br /&gt;
|Rhaeto-Romanic&lt;br /&gt;
|Active - Ready for use&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/obstacles&amp;diff=3877</id>
		<title>Internationalization/obstacles</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/obstacles&amp;diff=3877"/>
				<updated>2006-06-29T14:30:58Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: added function arguments and case conversion problems in eStudio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Problems we encountered during implementation&lt;br /&gt;
&lt;br /&gt;
* Unicode (UTF-8) support was not fully implemented (e.g. for gtk)&lt;br /&gt;
* Facilities to write and read STRING_32 to/from files were not present&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Difficulties to complete the translation of EiffelStudio:&lt;br /&gt;
* Many strings are hard-coded anywhere inside EiffelStudio, making the translation difficult&lt;br /&gt;
* All the functions taking strings as arguments expect a STRING, where they should expect a STRING_GENERAL, and they return a STRING which may not be applicable in every case. A STRING_32 can also represent the same content of a STRING_8, thus it should be preferred.&lt;br /&gt;
* It seems that to_uppercase and to_lowercase procedures are not defined for STRING_32 and are used in teh studio, these should have been implemented by the vision project and may be buggy.&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/obstacles&amp;diff=3856</id>
		<title>Internationalization/obstacles</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/obstacles&amp;diff=3856"/>
				<updated>2006-06-27T23:15:27Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Problems we encountered during implementation&lt;br /&gt;
&lt;br /&gt;
* Unicode (UTF-8) support was not fully implemented (e.g. for gtk)&lt;br /&gt;
* Facilities to write and read STRING_32 to/from files were not present&lt;br /&gt;
&lt;br /&gt;
* Many strings are hard-coded anywhere inside EiffelStudio, making the translation difficult&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3855</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3855"/>
				<updated>2006-06-27T23:02:14Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M4: June ??? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June 13 ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
==M4: June 28 ==&lt;br /&gt;
* internationalization of EiffelStudio: surround strings with our functions&lt;br /&gt;
* [[Internationalization/translation|translation]] of EiffelStudio in some languages, for demo purposes (Italian, German, Chinese, ...) (see [http://slhk.ath.cx/projects/estudio/ pootle])&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .pot file ''(Leo)''&lt;br /&gt;
* language selection: add an entry in the preferences system&lt;br /&gt;
* create a function to detect current environment language and settings (aka [[Internationalization/locale|locale]])&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programs with translation facilities.&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
&lt;br /&gt;
* [[Internationalization/requirements_specification|Requirements specification]]&lt;br /&gt;
* [[Internationalization/developer_manual|Developer manual]]&lt;br /&gt;
* [[Internationalization/obstacles|Obstacles]]: why can't achieve all of our goals&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3726</id>
		<title>Talk:Internationalization/locale</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3726"/>
				<updated>2006-06-22T21:40:28Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present we are using [http://en.wikipedia.org/wiki/ISO_639 ISO 639-1] to identify the languages.&lt;br /&gt;
[http://www.unicode.org/onlinedat/languages.html Here] is a list of correspondences between different coding conventions.&lt;br /&gt;
&lt;br /&gt;
In GNU informations on current locale are stored in [http://man.splitbrain.org/locale(1) LC_* environment variables].  [http://man.splitbrain.org/locale(5) This] may explain how a locale is defined.&lt;br /&gt;
&lt;br /&gt;
(these notes should be added to the article)   --[[User:Carlo|Carlo]] 00:30, 19 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Feel free to add them to the article.&lt;br /&gt;
&lt;br /&gt;
About the conversion that we need to do: do we have to build an entire structure and copy all of these win codes and corresponding ISO codes or we simply add a couple of them (like english, italian, german, french and chinese)?&lt;br /&gt;
&lt;br /&gt;
About the codes: I don't think it's sufficient to take only the language part... especially because there are languages that uses different scripts (info found on SortID for windows) and regional differences in the format (in the end we are not only translating eiffel... the objective is i18n and in this there are numeric formats and date formats too)&lt;br /&gt;
&lt;br /&gt;
just to be clear:&lt;br /&gt;
&amp;quot;it&amp;quot; is not sufficient, we need &amp;quot;it_ch&amp;quot; to have complete information&lt;br /&gt;
&lt;br /&gt;
--[[User:Cconti|Cconti]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: My suggestion is to design a scalable structure, insert the codes and informations that we need now and let the opportunity to easily add other later on. (e.g. an hash_table of objects, each one representing a code with the related properties)&lt;br /&gt;
&lt;br /&gt;
: Sure we need more than just the language code, but for now it's enough to extract it (split language/nation where both available, codesets). On Linux locale (source) data are found at /usr/share/i18n/locales/ but parsing such information is, at present, out of our concern. --[[User:Carlo|Carlo]] 23:23, 22 June 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3725</id>
		<title>Talk:Internationalization/locale</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3725"/>
				<updated>2006-06-22T21:23:18Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present we are using [http://en.wikipedia.org/wiki/ISO_639 ISO 639-1] to identify the languages.&lt;br /&gt;
[http://www.unicode.org/onlinedat/languages.html Here] is a list of correspondences between different coding conventions.&lt;br /&gt;
&lt;br /&gt;
In GNU informations on current locale are stored in [http://man.splitbrain.org/locale(1) LC_* environment variables].  [http://man.splitbrain.org/locale(5) This] may explain how a locale is defined.&lt;br /&gt;
&lt;br /&gt;
(these notes should be added to the article)   --[[User:Carlo|Carlo]] 00:30, 19 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Feel free to add them to the article.&lt;br /&gt;
&lt;br /&gt;
About the conversion that we need to do: do we have to build an entire structure and copy all of these win codes and corresponding ISO codes or we simply add a couple of them (like english, italian, german, french and chinese)?&lt;br /&gt;
&lt;br /&gt;
About the codes: I don't think it's sufficient to take only the language part... especially because there are languages that uses different scripts (info found on SortID for windows) and regional differences in the format (in the end we are not only translating eiffel... the objective is i18n and in this there are numeric formats and date formats too)&lt;br /&gt;
&lt;br /&gt;
just to be clear:&lt;br /&gt;
&amp;quot;it&amp;quot; is not sufficient, we need &amp;quot;it_ch&amp;quot; to have complete information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Cconti|Cconti]]&lt;br /&gt;
&lt;br /&gt;
My suggestion is to design a scalable structure, insert the codes and informations that we need now and let the opportunity to easily add other later on. (e.g. an hash_table of objects, each one representing a code with the related properties)&lt;br /&gt;
&lt;br /&gt;
Sure we need more than just the language code, but for now it's enough to extract it (split language/nation where both available, codesets). On Linux locale (source) data are found at /usr/share/i18n/locales/ but parsing such information is, at present, out of our concern. --[[User:Carlo|Carlo]] 23:23, 22 June 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3589</id>
		<title>Talk:Internationalization/locale</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3589"/>
				<updated>2006-06-18T22:31:25Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present we are using [http://en.wikipedia.org/wiki/ISO_639 ISO 639-1] to identify the languages.&lt;br /&gt;
[http://www.unicode.org/onlinedat/languages.html Here] is a list of correspondences between different coding conventions.&lt;br /&gt;
&lt;br /&gt;
In GNU informations on current locale are stored in [http://man.splitbrain.org/locale(1) LC_* environment variables].  [http://man.splitbrain.org/locale(5) This] may explain how a locale is defined.&lt;br /&gt;
&lt;br /&gt;
(these notes should be added to the article)   --[[User:Carlo|Carlo]] 00:30, 19 June 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3588</id>
		<title>Talk:Internationalization/locale</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/locale&amp;diff=3588"/>
				<updated>2006-06-18T22:30:36Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At present we are using [http://en.wikipedia.org/wiki/ISO_639 ISO 639] to identify the languages.&lt;br /&gt;
[http://www.unicode.org/onlinedat/languages.html Here] is a list of correspondences between different coding conventions.&lt;br /&gt;
&lt;br /&gt;
In GNU informations on current locale are stored in [http://man.splitbrain.org/locale(1) LC_* environment variables].  [http://man.splitbrain.org/locale(5) This] may explain how a locale is defined.&lt;br /&gt;
&lt;br /&gt;
(these notes should be added to the article)   --[[User:Carlo|Carlo]] 00:30, 19 June 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=User_talk:Trosim&amp;diff=3558</id>
		<title>User talk:Trosim</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=User_talk:Trosim&amp;diff=3558"/>
				<updated>2006-06-17T10:20:56Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: i18n user manual&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ciao Martino, come continuiamo con il mo_parser?[[User:Etienner|&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''E'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Black&amp;quot;&amp;gt;'''T'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''N'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt;&lt;br /&gt;
:Direi che per prima cosa vale la pena decidere come vogliamo salvare il tutto in Eiffel; se possibile in modo incrementale, in seguito creiamo le classi che ci servono e poi il parser vero e proprio. Qualche osservazione/idea? [[User:Trosim|Trosim]]&lt;br /&gt;
::Yes, observation #1: English please :) observation #2: How we store the strings in memory is, I think, a seperate matter. The parser should of course know about it but I think you can at least get started on designing it with just the .mo format. [[User:Leo|Leo]] 18:20, 8 May 2006 (CEST)&lt;br /&gt;
:::*cough* observation #3: this is User_talk:Trosim and _not_ Talk:Internationalization/mo_parser. Carry on in italian then ;) [[User:Leo|Leo]] 18:22, 8 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== i18n user manual ==&lt;br /&gt;
&lt;br /&gt;
In that case (your entry on our homepage) the manual is related to EiffelStudio, not to the library. Moreover the feature should be simple enough not to need a manual... A &amp;quot;translator manual&amp;quot; may be of better use --[[User:Carlo|Carlo]] 12:20, 17 June 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3548</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3548"/>
				<updated>2006-06-16T22:44:12Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Documentation */ manual is for developers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June 13 ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
==M4: June ??? ==&lt;br /&gt;
* internationalization of EiffelStudio: surround strings with our functions&lt;br /&gt;
* [[Internationalization/translation|translation]] of EiffelStudio in some languages, for demo purposes (Italian, German, Chinese, ...) (see [http://slhk.ath.cx/projects/estudio/ pootle])&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .pot file ''(Leo)''&lt;br /&gt;
* language selection: add an entry in the preferences system&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programms with translation facilities.&lt;br /&gt;
&lt;br /&gt;
= Documentation =&lt;br /&gt;
&lt;br /&gt;
* [[Internationalization/requirements_specification|Requirements specification]]&lt;br /&gt;
* [[Internationalization/developer_manual|Developer manual]]&lt;br /&gt;
* [[Internationalization/obstacles|Obstacles]]: why can't achieve all of our goals&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/translation_function&amp;diff=3298</id>
		<title>Talk:Internationalization/translation function</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/translation_function&amp;diff=3298"/>
				<updated>2006-06-10T08:32:51Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: Templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Globality ==&lt;br /&gt;
Content moved to [[Internationalization/class_structure|class structure]]. [[User:Trosim|Trosim]] 12:29, 24 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Propose==&lt;br /&gt;
&lt;br /&gt;
As I said, this is only a suggestion, I have syntactical and semantic criticism (tuple, tuple item types, names, plural form,...), too. But I made it to give our group a boost.&lt;br /&gt;
So '''please''' make some changes and/or criticize my solution!!  [[User:Etienner|&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''E'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Black&amp;quot;&amp;gt;'''T'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''N'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt; 09:00, 25 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use STRING_32 instead of STRING for output. Use STRING_GENERAL whenever it is possible on input.&lt;br /&gt;
--[[User:Manus|manus]] 16:23, 25 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
A new class (I18N_TEMPLATE_FORMATTER) has been writte by Trosim, but it would be nice to use existing ones. It happens that ST_FORMATTER (part of Gobo) is explicitly excluded from the library, somebody knows the reason?&lt;br /&gt;
&lt;br /&gt;
At present when translating a template you must already give the variables that must be substituted. In many situations it is useful to separate translation from variable substitution. This is what I'm working on.&lt;br /&gt;
--[[User:Carlo|Carlo]] 10:32, 10 June 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/translation&amp;diff=3285</id>
		<title>Internationalization/translation</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/translation&amp;diff=3285"/>
				<updated>2006-06-09T11:57:29Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: add 'finalize', 'watch'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Internationalization]]&lt;br /&gt;
&lt;br /&gt;
The translation of EiffelStudio is going on [http://slhk.ath.cx/projects/estudio/ here].&lt;br /&gt;
&lt;br /&gt;
EiffelStudio contains many sectorial terms, wich may have a corresponding expression in other languages but their meaning may not be clear enough to the end user.&lt;br /&gt;
&lt;br /&gt;
This page is intended for discussion on terms difficult to translate.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ancestor&lt;br /&gt;
* it: Antenato&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Callers&lt;br /&gt;
* it: chiamanti&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalize&lt;br /&gt;
* it: finalizza -&amp;gt; finalized == finalizzato&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Put Handle Left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step Out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suppliers&lt;br /&gt;
* it: contribuenti&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toggle visibility&lt;br /&gt;
* it: Mostra/nascondi ''[used]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Watch&lt;br /&gt;
* it: osserva&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wizard&lt;br /&gt;
* it: Procedura guidata ''[used]'', wizard ''[used in menu]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Following words are left unchanged&lt;br /&gt;
* it: file, inheritance, overflow, stack, feature, routine&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/translation&amp;diff=3282</id>
		<title>Internationalization/translation</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/translation&amp;diff=3282"/>
				<updated>2006-06-09T11:47:35Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: description and first words&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Internationalization]]&lt;br /&gt;
&lt;br /&gt;
The translation of EiffelStudio is going on [http://slhk.ath.cx/projects/estudio/ here].&lt;br /&gt;
&lt;br /&gt;
EiffelStudio contains many sectorial terms, wich may have a corresponding expression in other languages but their meaning may not be clear enough to the end user.&lt;br /&gt;
&lt;br /&gt;
This page is intended for discussion on terms difficult to translate.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ancestor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Callers&lt;br /&gt;
* it: chiamanti&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Put Handle Left&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step Out&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suppliers&lt;br /&gt;
* it: contribuenti&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toggle visibility&lt;br /&gt;
* it: Mostra/nascondi ''[used]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wizard&lt;br /&gt;
* it: Procedura guidata ''[used]'', wizard ''[used in menu]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Following words are left unchanged&lt;br /&gt;
* it: file, inheritance, overflow, stack&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3281</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3281"/>
				<updated>2006-06-09T11:25:29Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M4: June ??? */ link to translation discussion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June 13 ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
==M4: June ??? ==&lt;br /&gt;
* internationalization of EiffelStudio: surround strings with our functions&lt;br /&gt;
* [[Internationalization/translation|translation]] of EiffelStudio in some languages, for demo purposes (Italian, German, Chinese, ...) (see [http://slhk.ath.cx/projects/estudio/ pootle])&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .pot file ''(Leo)''&lt;br /&gt;
* language selection: add an entry in the preferences system&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programms with translation facilities.&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3280</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3280"/>
				<updated>2006-06-09T11:23:12Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M3: June 13 */ fix split&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June 13 ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
==M4: June ??? ==&lt;br /&gt;
* internationalization of EiffelStudio: surround strings with our functions&lt;br /&gt;
* translation of EiffelStudio in some languages, for demo purposes (Italian, German, Chinese, ...) (see [http://slhk.ath.cx/projects/estudio/ pootle])&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .pot file ''(Leo)''&lt;br /&gt;
* language selection: add an entry in the preferences system&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programms with translation facilities.&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3249</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3249"/>
				<updated>2006-06-08T10:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M4: June ??? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
==Who should do the achieving?==&lt;br /&gt;
It is clear that our [[User:Carlo|Glorious Leader]] should be credited with any achieving. However he will have to delegate things somewhat, as he is is not [http://en.wikipedia.org/wiki/Aleksei_Grigorievich_Stakhanov Stakhanov].&lt;br /&gt;
We can probably divide the project into the following parts, modulo preliminary research:&lt;br /&gt;
&lt;br /&gt;
''This should be probably be completed after we have got past M1''&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June 13 ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .po file ''(Leo)'' ''[deferred]''&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
==M4: June ??? ==&lt;br /&gt;
* internationalization of EiffelStudio: surround strings with our functions&lt;br /&gt;
* translation of EiffelStudio in some languages, for demo purposes (Italian, German, Chinese, ...) (see [http://slhk.ath.cx/projects/estudio/ pootle])&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .pot file ''(Leo)''&lt;br /&gt;
* language selection: add an entry in the preferences system&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programms with translation facilities.&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3237</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3237"/>
				<updated>2006-06-07T19:29:02Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M3: June ??? */ reorganized&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
==Who should do the achieving?==&lt;br /&gt;
It is clear that our [[User:Carlo|Glorious Leader]] should be credited with any achieving. However he will have to delegate things somewhat, as he is is not [http://en.wikipedia.org/wiki/Aleksei_Grigorievich_Stakhanov Stakhanov].&lt;br /&gt;
We can probably divide the project into the following parts, modulo preliminary research:&lt;br /&gt;
&lt;br /&gt;
''This should be probably be completed after we have got past M1''&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: June ??? ==&lt;br /&gt;
:At good point:&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)'' ''[done]''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated strings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:What need work:&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .po file&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings ''(Martino)''&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
** find out how to use plurals (see [[Internationalization/plural_forms|plural forms]])&lt;br /&gt;
* Test unicode support in Vision2. [See test application in the [https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Src/library/i18n/example/ SVN repository]]&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programms with translation facilities.&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3139</id>
		<title>Internationalization/translation function</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3139"/>
				<updated>2006-06-01T14:37:17Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: counting lists&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The problem for the translation is that we need a way to translate three different types of string:&lt;br /&gt;
&lt;br /&gt;
* normal strings&lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A normal string&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* composed string &lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A string composed by &amp;quot;+count.out+&amp;quot; strings, like this or &amp;quot;+a_string+&amp;quot;%N&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* strings with plural form&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
 if n=1 then&lt;br /&gt;
     Result := &amp;quot;a string&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    Result := &amp;quot;strings&amp;quot;&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another problem is that not all languages have the same rules for plural forms, see below and [[internationalization/plural_forms|here]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Possible solution==&lt;br /&gt;
&lt;br /&gt;
I [[Talk:Internationalization/translation_function|'''propose''']] a solution, with four functions (I've got little fantasy for the function names):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
i18n (a_string : STRING) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
&lt;br /&gt;
i18n_pl (strings : TUPLE[STRING]; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
    -- with plural form&lt;br /&gt;
&lt;br /&gt;
i18n_comp (a_string : STRING; args : TUPLE) : STRING&lt;br /&gt;
    --Function for the translation of composit strings&lt;br /&gt;
&lt;br /&gt;
i18n_comp_pl (strings : TUPLE[STRING]; args : TUPLE; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of composit&lt;br /&gt;
    -- strings with plural forms&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this solution, the programmer should write composit strings as (or in a similar way) he would do it for the C ''printf'' function. The composit string above would be somthing like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N] i18n_comp(&amp;quot;A string composed by %a1 strings, like this or %a2%N&amp;quot;, [count, a_string])&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''%a1'' is the place where the first string in the argument tuple (here ''count'') has to go. I've [[Talk:Internationalization/translation_function|'''choosen''']] that the items in the argument tuple are of type ANY, to insert them in the string we have to apply the functon ''out'' to all items.&lt;br /&gt;
&lt;br /&gt;
===An example===&lt;br /&gt;
&lt;br /&gt;
A complete example of how it could work.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Piece of code without internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
if n = 1&lt;br /&gt;
io.put_string(&amp;quot;Remove file &amp;quot;+file_name.out+&amp;quot;?%N&amp;quot;)&lt;br /&gt;
else&lt;br /&gt;
io.put_string (&amp;quot;Delete following files?&amp;quot;+list.out+&amp;quot; there are &amp;quot;&lt;br /&gt;
                +list.count.out+&amp;quot;files%N&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Piece of code with internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string(i18n_comp_pl([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], n))&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the content of the PO file would be:&lt;br /&gt;
&lt;br /&gt;
 #: A comment&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You might ask yourself, ''why a function for all the pluralforms''?&lt;br /&gt;
&lt;br /&gt;
The number of plural forms differ between languages. This is somewhat surprising for those who only have experiences with Romanic and Germanic languages since here the number is the same (there are two). &lt;br /&gt;
But other language families have only one form or many forms. For example,&lt;br /&gt;
&lt;br /&gt;
In Polish the translation of file is plik, and the plural forms are: &lt;br /&gt;
 &lt;br /&gt;
:2,3,4 pliki&lt;br /&gt;
:5-21 pliko'w&lt;br /&gt;
:22-24 pliki&lt;br /&gt;
:25-31 pliko'w&lt;br /&gt;
:and so on...&lt;br /&gt;
&lt;br /&gt;
for more information about this topic go [http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC150 here]&lt;br /&gt;
&lt;br /&gt;
==Additional things==&lt;br /&gt;
&lt;br /&gt;
A nice thing whe could do, when parsing the source code of a program to internationalize, is to recognize comments about the string.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string(i18n_comp_pl([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], list_count))&lt;br /&gt;
--A comment of the author&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
woud then look like this in the PO file:&lt;br /&gt;
&lt;br /&gt;
 #. A comment of the author&lt;br /&gt;
 #. Function name, class name, file path&lt;br /&gt;
 #. %a1 = file_name&lt;br /&gt;
 #. %a2 = list&lt;br /&gt;
 #. %a3 = list_count&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3138</id>
		<title>Internationalization/translation function</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3138"/>
				<updated>2006-06-01T14:34:59Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Additional things */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The problem for the translation is that we need a way to translate three different types of string:&lt;br /&gt;
&lt;br /&gt;
* normal strings&lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A normal string&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* composed string &lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A string composed by &amp;quot;+count.out+&amp;quot; strings, like this or &amp;quot;+a_string+&amp;quot;%N&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* strings with plural form&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
 if n=1 then&lt;br /&gt;
     Result := &amp;quot;a string&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    Result := &amp;quot;strings&amp;quot;&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another problem is that not all languages have the same rules for plural forms, see below and [[internationalization/plural_forms|here]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Possible solution==&lt;br /&gt;
&lt;br /&gt;
I [[Talk:Internationalization/translation_function|'''propose''']] a solution, with four functions (I've got little fantasy for the function names):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
i18n (a_string : STRING) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
&lt;br /&gt;
i18n_pl (strings : TUPLE[STRING]; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
    -- with plural form&lt;br /&gt;
&lt;br /&gt;
i18n_comp (a_string : STRING; args : TUPLE) : STRING&lt;br /&gt;
    --Function for the translation of composit strings&lt;br /&gt;
&lt;br /&gt;
i18n_comp_pl (strings : TUPLE[STRING]; args : TUPLE; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of composit&lt;br /&gt;
    -- strings with plural forms&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this solution, the programmer should write composit strings as (or in a similar way) he would do it for the C ''printf'' function. The composit string above would be somthing like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N] i18n_comp(&amp;quot;A string composed by %a1 strings, like this or %a2%N&amp;quot;, [count, a_string])&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''%a1'' is the place where the first string in the argument tuple (here ''count'') has to go. I've [[Talk:Internationalization/translation_function|'''choosen''']] that the items in the argument tuple are of type ANY, to insert them in the string we have to apply the functon ''out'' to all items.&lt;br /&gt;
&lt;br /&gt;
===An example===&lt;br /&gt;
&lt;br /&gt;
A complete example of how it could work.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Piece of code without internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
if n = 1&lt;br /&gt;
io.put_string(&amp;quot;Remove file &amp;quot;+file_name.out+&amp;quot;?%N&amp;quot;)&lt;br /&gt;
else&lt;br /&gt;
io.put_string (&amp;quot;Delete following files?&amp;quot;+list.out+&amp;quot; there are &amp;quot;&lt;br /&gt;
                +list.count.out+&amp;quot;files%N&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Piece of code with internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string(i18n_comp_pl([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], n))&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the content of the PO file would be:&lt;br /&gt;
&lt;br /&gt;
 #: A comment&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You might ask yourself, ''why a function for all the pluralforms''?&lt;br /&gt;
&lt;br /&gt;
The number of plural forms differ between languages. This is somewhat surprising for those who only have experiences with Romanic and Germanic languages since here the number is the same (there are two). &lt;br /&gt;
But other language families have only one form or many forms. For example,&lt;br /&gt;
&lt;br /&gt;
In Polish the translation of file is plik, and the plural forms are: &lt;br /&gt;
 &lt;br /&gt;
:2,3,4 pliki&lt;br /&gt;
:5-21 pliko'w&lt;br /&gt;
:22-24 pliki&lt;br /&gt;
:25-31 pliko'w&lt;br /&gt;
:and so on...&lt;br /&gt;
&lt;br /&gt;
for more information about this topic go [http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC150 here]&lt;br /&gt;
&lt;br /&gt;
==Additional things==&lt;br /&gt;
&lt;br /&gt;
A nice thing whe could do, when parsing the source code of a program to internationalize, is to recognize comments about the string.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string(i18n_comp_pl([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], n))&lt;br /&gt;
--A comment of the author&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
woud then look like this in the PO file:&lt;br /&gt;
&lt;br /&gt;
 #. A comment of the author&lt;br /&gt;
 #. Function name, class name, file path&lt;br /&gt;
 #. %a1 = file_name&lt;br /&gt;
 #. %a2 = list&lt;br /&gt;
 #. %a3 = list_count&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3137</id>
		<title>Internationalization/translation function</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3137"/>
				<updated>2006-06-01T14:34:29Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: small but important detail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The problem for the translation is that we need a way to translate three different types of string:&lt;br /&gt;
&lt;br /&gt;
* normal strings&lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A normal string&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* composed string &lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A string composed by &amp;quot;+count.out+&amp;quot; strings, like this or &amp;quot;+a_string+&amp;quot;%N&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* strings with plural form&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
 if n=1 then&lt;br /&gt;
     Result := &amp;quot;a string&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    Result := &amp;quot;strings&amp;quot;&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another problem is that not all languages have the same rules for plural forms, see below and [[internationalization/plural_forms|here]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Possible solution==&lt;br /&gt;
&lt;br /&gt;
I [[Talk:Internationalization/translation_function|'''propose''']] a solution, with four functions (I've got little fantasy for the function names):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
i18n (a_string : STRING) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
&lt;br /&gt;
i18n_pl (strings : TUPLE[STRING]; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
    -- with plural form&lt;br /&gt;
&lt;br /&gt;
i18n_comp (a_string : STRING; args : TUPLE) : STRING&lt;br /&gt;
    --Function for the translation of composit strings&lt;br /&gt;
&lt;br /&gt;
i18n_comp_pl (strings : TUPLE[STRING]; args : TUPLE; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of composit&lt;br /&gt;
    -- strings with plural forms&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this solution, the programmer should write composit strings as (or in a similar way) he would do it for the C ''printf'' function. The composit string above would be somthing like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N] i18n_comp(&amp;quot;A string composed by %a1 strings, like this or %a2%N&amp;quot;, [count, a_string])&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''%a1'' is the place where the first string in the argument tuple (here ''count'') has to go. I've [[Talk:Internationalization/translation_function|'''choosen''']] that the items in the argument tuple are of type ANY, to insert them in the string we have to apply the functon ''out'' to all items.&lt;br /&gt;
&lt;br /&gt;
===An example===&lt;br /&gt;
&lt;br /&gt;
A complete example of how it could work.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Piece of code without internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
if n = 1&lt;br /&gt;
io.put_string(&amp;quot;Remove file &amp;quot;+file_name.out+&amp;quot;?%N&amp;quot;)&lt;br /&gt;
else&lt;br /&gt;
io.put_string (&amp;quot;Delete following files?&amp;quot;+list.out+&amp;quot; there are &amp;quot;&lt;br /&gt;
                +list.count.out+&amp;quot;files%N&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Piece of code with internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string(i18n_comp_pl([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], n))&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the content of the PO file would be:&lt;br /&gt;
&lt;br /&gt;
 #: A comment&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You might ask yourself, ''why a function for all the pluralforms''?&lt;br /&gt;
&lt;br /&gt;
The number of plural forms differ between languages. This is somewhat surprising for those who only have experiences with Romanic and Germanic languages since here the number is the same (there are two). &lt;br /&gt;
But other language families have only one form or many forms. For example,&lt;br /&gt;
&lt;br /&gt;
In Polish the translation of file is plik, and the plural forms are: &lt;br /&gt;
 &lt;br /&gt;
:2,3,4 pliki&lt;br /&gt;
:5-21 pliko'w&lt;br /&gt;
:22-24 pliki&lt;br /&gt;
:25-31 pliko'w&lt;br /&gt;
:and so on...&lt;br /&gt;
&lt;br /&gt;
for more information about this topic go [http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC150 here]&lt;br /&gt;
&lt;br /&gt;
==Additional things==&lt;br /&gt;
&lt;br /&gt;
A nice thing whe could do, when parsing the source code of a program to internationalize, is to recognize comments about the string.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], n)&lt;br /&gt;
--A comment of the author&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
woud then look like this in the PO file:&lt;br /&gt;
&lt;br /&gt;
 #. A comment of the author&lt;br /&gt;
 #. Function name, class name, file path&lt;br /&gt;
 #. %a1 = file_name&lt;br /&gt;
 #. %a2 = list&lt;br /&gt;
 #. %a3 = list_count&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3136</id>
		<title>Internationalization/translation function</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/translation_function&amp;diff=3136"/>
				<updated>2006-06-01T14:32:00Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Internationalization]]&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The problem for the translation is that we need a way to translate three different types of string:&lt;br /&gt;
&lt;br /&gt;
* normal strings&lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A normal string&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* composed string &lt;br /&gt;
 &amp;lt;code&amp;gt;[eiffel,N] &amp;quot;A string composed by &amp;quot;+count.out+&amp;quot; strings, like this or &amp;quot;+a_string+&amp;quot;%N&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* strings with plural form&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
 if n=1 then&lt;br /&gt;
     Result := &amp;quot;a string&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    Result := &amp;quot;strings&amp;quot;&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another problem is that not all languages have the same rules for plural forms, see below and [[internationalization/plural_forms|here]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Possible solution==&lt;br /&gt;
&lt;br /&gt;
I [[Talk:Internationalization/translation_function|'''propose''']] a solution, with four functions (I've got little fantasy for the function names):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
i18n (a_string : STRING) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
&lt;br /&gt;
i18n_pl (strings : TUPLE[STRING]; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of normal strings&lt;br /&gt;
    -- with plural form&lt;br /&gt;
&lt;br /&gt;
i18n_comp (a_string : STRING; args : TUPLE) : STRING&lt;br /&gt;
    --Function for the translation of composit strings&lt;br /&gt;
&lt;br /&gt;
i18n_comp_pl (strings : TUPLE[STRING]; args : TUPLE; form : INTEGER) : STRING&lt;br /&gt;
    --Function for the translation of composit&lt;br /&gt;
    -- strings with plural forms&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this solution, the programmer should write composit strings as (or in a similar way) he would do it for the C ''printf'' function. The composit string above would be somthing like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N] i18n_comp(&amp;quot;A string composed by %a1 strings, like this or %a2%N&amp;quot;, [count, a_string])&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where ''%a1'' is the place where the first string in the argument tuple (here ''count'') has to go. I've [[Talk:Internationalization/translation_function|'''choosen''']] that the items in the argument tuple are of type ANY, to insert them in the string we have to apply the functon ''out'' to all items.&lt;br /&gt;
&lt;br /&gt;
===An example===&lt;br /&gt;
&lt;br /&gt;
A complete example of how it could work.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Piece of code without internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
if n = 1&lt;br /&gt;
io.put_string(&amp;quot;Remove file &amp;quot;+file_name.out+&amp;quot;?%N&amp;quot;)&lt;br /&gt;
else&lt;br /&gt;
io.put_string (&amp;quot;Delete following files?&amp;quot;+list.out+&amp;quot; there are &amp;quot;&lt;br /&gt;
                +list.count.out+&amp;quot;files%N&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Piece of code with internationalization:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], n)&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the content of the PO file would be:&lt;br /&gt;
&lt;br /&gt;
 #: A comment&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;br /&gt;
&lt;br /&gt;
You might ask yourself, ''why a function for all the pluralforms''?&lt;br /&gt;
&lt;br /&gt;
The number of plural forms differ between languages. This is somewhat surprising for those who only have experiences with Romanic and Germanic languages since here the number is the same (there are two). &lt;br /&gt;
But other language families have only one form or many forms. For example,&lt;br /&gt;
&lt;br /&gt;
In Polish the translation of file is plik, and the plural forms are: &lt;br /&gt;
 &lt;br /&gt;
:2,3,4 pliki&lt;br /&gt;
:5-21 pliko'w&lt;br /&gt;
:22-24 pliki&lt;br /&gt;
:25-31 pliko'w&lt;br /&gt;
:and so on...&lt;br /&gt;
&lt;br /&gt;
for more information about this topic go [http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC150 here]&lt;br /&gt;
&lt;br /&gt;
==Additional things==&lt;br /&gt;
&lt;br /&gt;
A nice thing whe could do, when parsing the source code of a program to internationalize, is to recognize comments about the string.&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[eiffel,N]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
io.put_string([&amp;quot;Remove file %a1?%N&amp;quot;,&lt;br /&gt;
                &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;],&lt;br /&gt;
                [file_name, list, list_count], n)&lt;br /&gt;
--A comment of the author&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
woud then look like this in the PO file:&lt;br /&gt;
&lt;br /&gt;
 #. A comment of the author&lt;br /&gt;
 #. Function name, class name, file path&lt;br /&gt;
 #. %a1 = file_name&lt;br /&gt;
 #. %a2 = list&lt;br /&gt;
 #. %a3 = list_count&lt;br /&gt;
 msgid &amp;quot;Remove file %a1?%N&amp;quot;&lt;br /&gt;
 msgid_plural &amp;quot;Delete following files? %a2 there are %a3 files%N&amp;quot;&lt;br /&gt;
 msgstr[0] &amp;quot;Rimuovere il file %a1?&amp;quot;&lt;br /&gt;
 msgstr[1] &amp;quot;Cancellare i seguenti file? %a2 ce ne sono %a3%N&amp;quot;&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3028</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=3028"/>
				<updated>2006-05-24T19:27:17Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M3: May ??? */ cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
==Who should do the achieving?==&lt;br /&gt;
It is clear that our [[User:Carlo|Glorious Leader]] should be credited with any achieving. However he will have to delegate things somewhat, as he is is not [http://en.wikipedia.org/wiki/Aleksei_Grigorievich_Stakhanov Stakhanov].&lt;br /&gt;
We can probably divide the project into the following parts, modulo preliminary research:&lt;br /&gt;
&lt;br /&gt;
''This should be probably be completed after we have got past M1''&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: April ??? ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated stings from .mo files ''([[User:etienner|Etienne]], [[User:Trosim|Martino]])''&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .po file&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules (see [[Internationalization/class_structure|class structure]])&lt;br /&gt;
* collaborate with the [[Vision2_and_Unicode]] team&lt;br /&gt;
* Test unicode support in Vision2 ''(Ivano)''&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programms with translation facilities.&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/mo_parser&amp;diff=2682</id>
		<title>Talk:Internationalization/mo parser</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/mo_parser&amp;diff=2682"/>
				<updated>2006-05-07T16:32:12Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has been originally created by [[User:Trosim|Trosim]] as [[Internationalization/code parser]]&lt;br /&gt;
and then moved here by [[User:Carlo|me]] for consistency between title and content. --[[User:Carlo|Carlo]] 18:32, 7 May 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/code_parser&amp;diff=2681</id>
		<title>Internationalization/code parser</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/code_parser&amp;diff=2681"/>
				<updated>2006-05-07T16:23:10Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: moved page to mo parser, content didn't match title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;page moved to [[Internationalization/mo parser|mo parser]] because content didn't match title. --[[User:Carlo|Carlo]] 18:23, 7 May 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/mo_parser&amp;diff=2679</id>
		<title>Internationalization/mo parser</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/mo_parser&amp;diff=2679"/>
				<updated>2006-05-07T16:18:15Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: moved from code parser&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
That's what this part of the project should achieve:&lt;br /&gt;
* reading and parsing of MO files containing the strings and their translations&lt;br /&gt;
* organize the object collection in an incremental way: don't load the whole file if it's not needed&lt;br /&gt;
* give a simple interface to the localization class, so that the strings can be printed out without too much efforts&lt;br /&gt;
&lt;br /&gt;
== Reading and parsing ==&lt;br /&gt;
&lt;br /&gt;
=== Parser structure ===&lt;br /&gt;
&lt;br /&gt;
I'll propose the class structure of the parser, later.&lt;br /&gt;
&lt;br /&gt;
=== MO file structure ===&lt;br /&gt;
&lt;br /&gt;
As reported from the [http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC136 gettext manual].&lt;br /&gt;
&lt;br /&gt;
           byte&lt;br /&gt;
                +------------------------------------------+&lt;br /&gt;
             0  | magic number = 0x950412de                |&lt;br /&gt;
                |                                          |&lt;br /&gt;
             4  | file format revision = 0                 |&lt;br /&gt;
                |                                          |&lt;br /&gt;
             8  | number of strings                        |  == N&lt;br /&gt;
                |                                          |&lt;br /&gt;
            12  | offset of table with original strings    |  == O&lt;br /&gt;
                |                                          |&lt;br /&gt;
            16  | offset of table with translation strings |  == T&lt;br /&gt;
                |                                          |&lt;br /&gt;
            20  | size of hashing table                    |  == S&lt;br /&gt;
                |                                          |&lt;br /&gt;
            24  | offset of hashing table                  |  == H&lt;br /&gt;
                |                                          |&lt;br /&gt;
                .                                          .&lt;br /&gt;
                .    (possibly more entries later)         .&lt;br /&gt;
                .                                          .&lt;br /&gt;
                |                                          |&lt;br /&gt;
             O  | length &amp;amp; offset 0th string  ----------------.&lt;br /&gt;
         O + 8  | length &amp;amp; offset 1st string  ------------------.&lt;br /&gt;
                 ...                                    ...   | |&lt;br /&gt;
 O + ((N-1)*8)  | length &amp;amp; offset (N-1)th string           |  | |&lt;br /&gt;
                |                                          |  | |&lt;br /&gt;
             T  | length &amp;amp; offset 0th translation  ---------------.&lt;br /&gt;
         T + 8  | length &amp;amp; offset 1st translation  -----------------.&lt;br /&gt;
                 ...                                    ...   | | | |&lt;br /&gt;
 T + ((N-1)*8)  | length &amp;amp; offset (N-1)th translation      |  | | | |&lt;br /&gt;
                |                                          |  | | | |&lt;br /&gt;
             H  | start hash table                         |  | | | |&lt;br /&gt;
                 ...                                    ...   | | | |&lt;br /&gt;
     H + S * 4  | end hash table                           |  | | | |&lt;br /&gt;
                |                                          |  | | | |&lt;br /&gt;
                | NUL terminated 0th string  &amp;lt;----------------' | | |&lt;br /&gt;
                |                                          |    | | |&lt;br /&gt;
                | NUL terminated 1st string  &amp;lt;------------------' | |&lt;br /&gt;
                |                                          |      | |&lt;br /&gt;
                 ...                                    ...       | |&lt;br /&gt;
                |                                          |      | |&lt;br /&gt;
                | NUL terminated 0th translation  &amp;lt;---------------' |&lt;br /&gt;
                |                                          |        |&lt;br /&gt;
                | NUL terminated 1st translation  &amp;lt;-----------------'&lt;br /&gt;
                |                                          |&lt;br /&gt;
                 ...                                    ...&lt;br /&gt;
                |                                          |&lt;br /&gt;
                +------------------------------------------+&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2678</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2678"/>
				<updated>2006-05-07T16:10:11Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M3: May ??? */ updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Image:ebabylon.png|right|frame| Our Eiffel Tower of Babylon]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access information and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
==What is internationalisation?==&lt;br /&gt;
&lt;br /&gt;
The first thing that comes to mind is translation. But internationalisation isn't restricted to enabling translation: it includes making it possible to localise notations (time, date, numbers), measures, paper size, and much more.&lt;br /&gt;
&lt;br /&gt;
==What should we achieve?==&lt;br /&gt;
*Applications should be able to load localized strings at runtime and be provided with localized format strings (e.g date format).&lt;br /&gt;
*Developers can use tools that automagically extract strings from source code and can try to get them translated in a file to distribute along with the application.&lt;br /&gt;
*Users will still be unhappy and get depressed ''but in their own language'', which we can all agree is a significant step forward.&lt;br /&gt;
&lt;br /&gt;
==Who should do the achieving?==&lt;br /&gt;
It is clear that our [[User:Carlo|Glorious Leader]] should be credited with any achieving. However he will have to delegate things somewhat, as he is is not [http://en.wikipedia.org/wiki/Aleksei_Grigorievich_Stakhanov Stakhanov].&lt;br /&gt;
We can probably divide the project into the following parts, modulo preliminary research:&lt;br /&gt;
&lt;br /&gt;
''This should be probably be completed after we have got past M1''&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* [[Internationalization/feasibility|feasibility]]: look at string classes (unicode and not) and how strings are used in EiffelStudio (creation, composition) ''(Ivano, Carlo, Leo, Hong)''&lt;br /&gt;
* [[Internationalization/file_format|file format]]: compare existing file formats for dictionaries ''(Etienne, Andreas)''&lt;br /&gt;
* [[Internationalization/tool_evaluation|tool evaluation]]: list and compare existing translation tools ''(Christian, Martino)''&lt;br /&gt;
&lt;br /&gt;
==M3: May ??? ==&lt;br /&gt;
* write an initial .po to start translating and have a .mo for testing ''(Leo, Carlo)''&lt;br /&gt;
* [[Internationalization/mo parser|mo parser]]: extract translated stings from .mo files ''([[User:etienner|Etienne]], Martino?)''&lt;br /&gt;
* [[Internationalization/code_parser|code parser]]: extract strings to be translated from source code and generate .po file&lt;br /&gt;
* [[Internationalization/translation function|translation function]]: map hard-coded strings to translated strings&lt;br /&gt;
** find a solution with templates&lt;br /&gt;
** globality: how to implement, the object should be shared between all modules&lt;br /&gt;
** collaborate with the [[Vision2_and_Unicode]] team&lt;br /&gt;
*Test unicode support in Vision2 ''(Ivano)''&lt;br /&gt;
* compile a [[Internationalization/features list|list of basic features]] to provide (e.g. date/time format, system locale) ''[deferred]''&lt;br /&gt;
&lt;br /&gt;
= Possible future developments =&lt;br /&gt;
&lt;br /&gt;
* collaborate with the [[ESWizard]] team. Create wizards for programms with translation facilities.&lt;br /&gt;
&lt;br /&gt;
=Relevant Links=&lt;br /&gt;
[http://www.debian.org/doc/manuals/intro-i18n/ Introduction to i18n]&lt;br /&gt;
&lt;br /&gt;
==What other people have done==&lt;br /&gt;
[http://doc.trolltech.com/4.1/i18n.html internationalisation with QT]&lt;br /&gt;
&lt;br /&gt;
[http://oss.erdfunkstelle.de/kde-i18n/tiki-index.php?page=miniHowtoGui howto for internationalisation of KDE programs ]&lt;br /&gt;
&lt;br /&gt;
[http://l10n.kde.org/docs/translation-howto/ another KDE howto (doesn't Gnome do any internationalisation?)]&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* [[User:kiwi| Ivano Somaini]]&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* [[User:cconti | Christian Conti]]&lt;br /&gt;
* [[User:Trosim |Martino Trosi]]&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization&amp;diff=2625</id>
		<title>Talk:Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization&amp;diff=2625"/>
				<updated>2006-05-04T23:15:32Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Useful link */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What is the difference between PO and MO files?&lt;br /&gt;
--[[User:Manus|manus]] 21:35, 4 May 2006 (CEST)&lt;br /&gt;
:PO (Portable Object) is the human readable format, with keywords and all the white-spaces; MO (Machine object) are intended to be read by computers and have no formatting. [[User:Trosim|Trosim]] 21:49, 4 May 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
Cooles Logo&lt;br /&gt;
''Bernd''&lt;br /&gt;
&lt;br /&gt;
=Useful link=&lt;br /&gt;
&lt;br /&gt;
[http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC191 Here] is the approach of GNU for internationalization.&lt;br /&gt;
&lt;br /&gt;
[http://xnap-commons.sourceforge.net/gettext-commons/tutorial.html Gettext and Java]&lt;br /&gt;
&lt;br /&gt;
[http://www.eiffelzone.com/esd/eutils/index.html a project for SmartEiffel that has a class for Printf-like STRING formatting with positional indexes]&lt;br /&gt;
&lt;br /&gt;
About object globality see ''OO Software Construction 2nd edition'', B. Meyer; chap. 18 ''Global objects and constants''&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/file_format&amp;diff=2535</id>
		<title>Talk:Internationalization/file format</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/file_format&amp;diff=2535"/>
				<updated>2006-05-02T20:57:02Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Voting */ fix total&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Format proposals =&lt;br /&gt;
&lt;br /&gt;
About our today's talk on file formats, you can read the [[http://en.wikipedia.org/wiki/Xml XML page on Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
=Parallel Wikis=&lt;br /&gt;
&lt;br /&gt;
I think that the wiki for the project should be only one, we are allowed to put test versions or proposals... ''(Martino)''&lt;br /&gt;
&lt;br /&gt;
I agree. We should probably stick to one wiki because it will get confusing otherwise - sorry, Carlo.&lt;br /&gt;
[[User:Leo|Leo]] 01:52, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=Comments=&lt;br /&gt;
&lt;br /&gt;
So, as you can see I found few positive aspects for XML and few negative for PO. I don't want to advertise the PO format, so if you know/find aspects that I haven't mentioned, don't hesitate to add them! [[User:Etienner|Etienner]] 17:09, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partiality, unicode and readability==&lt;br /&gt;
&lt;br /&gt;
It seems like these judgments are a bit &amp;quot;partial&amp;quot;, but that's normal... maybe someone sustaining XML should put his opinion...&lt;br /&gt;
and about readability: I don't think it's really a big problem... if it is, it can be solved by writing a simple &amp;quot;translator&amp;quot; to &amp;quot;human readable&amp;quot;&lt;br /&gt;
Unicode: isn't it a big advantage that XML fully supports unicode? [[User:Cconti|Cconti]]&lt;br /&gt;
&lt;br /&gt;
:I know, the judgments are partial, but this is the great advantage of wiki pages combined with the comunity that uses them: the more it is modified, the more pages get unpartial...&lt;br /&gt;
:For the human readability, you are right.&lt;br /&gt;
:Unicode IS a big advantage, but [http://en.wikipedia.org/wiki/UTF-8 UTF-8] is a unicode encoding, and it appears as last entry in the [[Internationalization/file_format#Supported_character_encodings|list]]. [[User:Etienner|&amp;lt;font color=&amp;quot;Green&amp;quot;&amp;gt;'''Etienne'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::My opinion on the whole thing: We do not really need to build hierarchies, which is what XML would be good at.&lt;br /&gt;
::On the other hand, we have an XML parser in Eiffel already, and despite there being gettext under a free license it is probably far better to avoid new external dependancies.&lt;br /&gt;
::If cats could talk they would chose XML-described catfood. In this case.&lt;br /&gt;
:::Because if cats could talk, they could read the ingredients of catfood, too. But not if they are XML-described... :-) [[User:Etienner|&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''E'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Black&amp;quot;&amp;gt;'''T'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''N'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
We will have to write our own .po parser because ISE will want copyright assignent (or at the least BSD licensing) &amp;amp; we can't just use gettext because there is probably no way to make this an optional addon. [[User:Leo|Leo]] 19:29, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
:I'm not an expert on licensing stuff so I'v copied from the gettext manual and pasted it here.&lt;br /&gt;
&lt;br /&gt;
:Some people wonder if using GNU gettext necessarily brings their package under the protective wing of the GNU General Public License or the GNU Library General Public License, when they do not want to make their program free, or want other kinds of freedom. The simplest answer is &amp;quot;normally not&amp;quot;. &lt;br /&gt;
:The GNU gettext library, i.e. the contents of libintl, is covered by the GNU Library General Public License. The rest of the GNU gettext package is covered by the GNU General Public License. &lt;br /&gt;
:The mere marking of localizable strings in a package, or conditional inclusion of a few lines for initialization, is not really including GPL'ed or LGPL'ed code. However, since the localization routines in libintl are under the LGPL, the LGPL needs to be considered. It gives the right to distribute the complete unmodified source of libintl evehttp://eiffelsoftware.origo.ethz.ch/index.php?title=Talk:Internationalization/file_format&amp;amp;action=editn with non-free programs. It also gives the right to use libintl as a shared library, even for non-free programs. But it gives the right to use libintl as a static library or to incorporate libintl into another library only to free software. [[User:Etienner|Etienner]] 19:49, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
::There exists a [http://developer.postgresql.org/~petere/bsd-gettext/ BSD-licensed gettext implementation] from the NetBSD project. --[[User:Thom|Thom]] 10:09, 29 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::Thanks. I'll have a look at it. [[User:Leo|Leo]] 15:15, 29 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
&lt;br /&gt;
I think there are now enough information for a voting on the file format...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| BORDER=&amp;quot;0&amp;quot; CELLPADDING=&amp;quot;3&amp;quot; CELLSPACING=&amp;quot;0&amp;quot; ID=&amp;quot;Table3&amp;quot;&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e0e0e0&amp;quot;&lt;br /&gt;
! Person!! XML !! PO !! New!!&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Etienner|Etienne]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Vpiff|Vpiff]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Murbi|Murbi]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Lücs|Lücs]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Carlo|Carlo]] || || X || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Put your vote adding this lines:--&amp;gt;&lt;br /&gt;
&amp;lt;!--|- ALIGN=&amp;quot;center&amp;quot;--&amp;gt;&lt;br /&gt;
&amp;lt;!--|Your name || || || ||--&amp;gt;&lt;br /&gt;
&amp;lt;!--with an X on the fileformat that you whant--&amp;gt;&lt;br /&gt;
&amp;lt;!--...And update the Total--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e0e0e0&amp;quot;&lt;br /&gt;
!Total !! 0 !! 5 !! 0!!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Despite the votation the file format will still be discussed (with argumentations) at the next meeting. --[[User:Carlo|Carlo]] 22:43, 2 May 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/file_format&amp;diff=2534</id>
		<title>Talk:Internationalization/file format</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/file_format&amp;diff=2534"/>
				<updated>2006-05-02T20:45:50Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Voting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Format proposals =&lt;br /&gt;
&lt;br /&gt;
About our today's talk on file formats, you can read the [[http://en.wikipedia.org/wiki/Xml XML page on Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
=Parallel Wikis=&lt;br /&gt;
&lt;br /&gt;
I think that the wiki for the project should be only one, we are allowed to put test versions or proposals... ''(Martino)''&lt;br /&gt;
&lt;br /&gt;
I agree. We should probably stick to one wiki because it will get confusing otherwise - sorry, Carlo.&lt;br /&gt;
[[User:Leo|Leo]] 01:52, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=Comments=&lt;br /&gt;
&lt;br /&gt;
So, as you can see I found few positive aspects for XML and few negative for PO. I don't want to advertise the PO format, so if you know/find aspects that I haven't mentioned, don't hesitate to add them! [[User:Etienner|Etienner]] 17:09, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partiality, unicode and readability==&lt;br /&gt;
&lt;br /&gt;
It seems like these judgments are a bit &amp;quot;partial&amp;quot;, but that's normal... maybe someone sustaining XML should put his opinion...&lt;br /&gt;
and about readability: I don't think it's really a big problem... if it is, it can be solved by writing a simple &amp;quot;translator&amp;quot; to &amp;quot;human readable&amp;quot;&lt;br /&gt;
Unicode: isn't it a big advantage that XML fully supports unicode? [[User:Cconti|Cconti]]&lt;br /&gt;
&lt;br /&gt;
:I know, the judgments are partial, but this is the great advantage of wiki pages combined with the comunity that uses them: the more it is modified, the more pages get unpartial...&lt;br /&gt;
:For the human readability, you are right.&lt;br /&gt;
:Unicode IS a big advantage, but [http://en.wikipedia.org/wiki/UTF-8 UTF-8] is a unicode encoding, and it appears as last entry in the [[Internationalization/file_format#Supported_character_encodings|list]]. [[User:Etienner|&amp;lt;font color=&amp;quot;Green&amp;quot;&amp;gt;'''Etienne'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::My opinion on the whole thing: We do not really need to build hierarchies, which is what XML would be good at.&lt;br /&gt;
::On the other hand, we have an XML parser in Eiffel already, and despite there being gettext under a free license it is probably far better to avoid new external dependancies.&lt;br /&gt;
::If cats could talk they would chose XML-described catfood. In this case.&lt;br /&gt;
:::Because if cats could talk, they could read the ingredients of catfood, too. But not if they are XML-described... :-) [[User:Etienner|&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''E'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Black&amp;quot;&amp;gt;'''T'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''N'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
We will have to write our own .po parser because ISE will want copyright assignent (or at the least BSD licensing) &amp;amp; we can't just use gettext because there is probably no way to make this an optional addon. [[User:Leo|Leo]] 19:29, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
:I'm not an expert on licensing stuff so I'v copied from the gettext manual and pasted it here.&lt;br /&gt;
&lt;br /&gt;
:Some people wonder if using GNU gettext necessarily brings their package under the protective wing of the GNU General Public License or the GNU Library General Public License, when they do not want to make their program free, or want other kinds of freedom. The simplest answer is &amp;quot;normally not&amp;quot;. &lt;br /&gt;
:The GNU gettext library, i.e. the contents of libintl, is covered by the GNU Library General Public License. The rest of the GNU gettext package is covered by the GNU General Public License. &lt;br /&gt;
:The mere marking of localizable strings in a package, or conditional inclusion of a few lines for initialization, is not really including GPL'ed or LGPL'ed code. However, since the localization routines in libintl are under the LGPL, the LGPL needs to be considered. It gives the right to distribute the complete unmodified source of libintl evehttp://eiffelsoftware.origo.ethz.ch/index.php?title=Talk:Internationalization/file_format&amp;amp;action=editn with non-free programs. It also gives the right to use libintl as a shared library, even for non-free programs. But it gives the right to use libintl as a static library or to incorporate libintl into another library only to free software. [[User:Etienner|Etienner]] 19:49, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
::There exists a [http://developer.postgresql.org/~petere/bsd-gettext/ BSD-licensed gettext implementation] from the NetBSD project. --[[User:Thom|Thom]] 10:09, 29 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::Thanks. I'll have a look at it. [[User:Leo|Leo]] 15:15, 29 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
&lt;br /&gt;
I think there are now enough information for a voting on the file format...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| BORDER=&amp;quot;0&amp;quot; CELLPADDING=&amp;quot;3&amp;quot; CELLSPACING=&amp;quot;0&amp;quot; ID=&amp;quot;Table3&amp;quot;&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e0e0e0&amp;quot;&lt;br /&gt;
! Person!! XML !! PO !! New!!&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Etienner|Etienne]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Vpiff|Vpiff]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Murbi|Murbi]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Lücs|Lücs]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Carlo|Carlo]] || || X || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Put your vote adding this lines:--&amp;gt;&lt;br /&gt;
&amp;lt;!--|- ALIGN=&amp;quot;center&amp;quot;--&amp;gt;&lt;br /&gt;
&amp;lt;!--|Your name || || || ||--&amp;gt;&lt;br /&gt;
&amp;lt;!--with an X on the fileformat that you whant--&amp;gt;&lt;br /&gt;
&amp;lt;!--...And update the Total--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e0e0e0&amp;quot;&lt;br /&gt;
!Total !! 0 !! 4 !! 0!!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Despite the votation the file format will still be discussed (with argumentations) at the next meeting. --[[User:Carlo|Carlo]] 22:43, 2 May 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/file_format&amp;diff=2533</id>
		<title>Talk:Internationalization/file format</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/file_format&amp;diff=2533"/>
				<updated>2006-05-02T20:43:03Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Voting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Format proposals =&lt;br /&gt;
&lt;br /&gt;
About our today's talk on file formats, you can read the [[http://en.wikipedia.org/wiki/Xml XML page on Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
=Parallel Wikis=&lt;br /&gt;
&lt;br /&gt;
I think that the wiki for the project should be only one, we are allowed to put test versions or proposals... ''(Martino)''&lt;br /&gt;
&lt;br /&gt;
I agree. We should probably stick to one wiki because it will get confusing otherwise - sorry, Carlo.&lt;br /&gt;
[[User:Leo|Leo]] 01:52, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=Comments=&lt;br /&gt;
&lt;br /&gt;
So, as you can see I found few positive aspects for XML and few negative for PO. I don't want to advertise the PO format, so if you know/find aspects that I haven't mentioned, don't hesitate to add them! [[User:Etienner|Etienner]] 17:09, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Partiality, unicode and readability==&lt;br /&gt;
&lt;br /&gt;
It seems like these judgments are a bit &amp;quot;partial&amp;quot;, but that's normal... maybe someone sustaining XML should put his opinion...&lt;br /&gt;
and about readability: I don't think it's really a big problem... if it is, it can be solved by writing a simple &amp;quot;translator&amp;quot; to &amp;quot;human readable&amp;quot;&lt;br /&gt;
Unicode: isn't it a big advantage that XML fully supports unicode? [[User:Cconti|Cconti]]&lt;br /&gt;
&lt;br /&gt;
:I know, the judgments are partial, but this is the great advantage of wiki pages combined with the comunity that uses them: the more it is modified, the more pages get unpartial...&lt;br /&gt;
:For the human readability, you are right.&lt;br /&gt;
:Unicode IS a big advantage, but [http://en.wikipedia.org/wiki/UTF-8 UTF-8] is a unicode encoding, and it appears as last entry in the [[Internationalization/file_format#Supported_character_encodings|list]]. [[User:Etienner|&amp;lt;font color=&amp;quot;Green&amp;quot;&amp;gt;'''Etienne'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::My opinion on the whole thing: We do not really need to build hierarchies, which is what XML would be good at.&lt;br /&gt;
::On the other hand, we have an XML parser in Eiffel already, and despite there being gettext under a free license it is probably far better to avoid new external dependancies.&lt;br /&gt;
::If cats could talk they would chose XML-described catfood. In this case.&lt;br /&gt;
:::Because if cats could talk, they could read the ingredients of catfood, too. But not if they are XML-described... :-) [[User:Etienner|&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''E'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Black&amp;quot;&amp;gt;'''T'''&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;'''N'''&amp;lt;/font&amp;gt;]] &amp;lt;sup&amp;gt;[[User talk:Etienner|'''&amp;lt;font color=&amp;quot;Yellow&amp;quot;&amp;gt;talk&amp;lt;/font&amp;gt;''']]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
&lt;br /&gt;
We will have to write our own .po parser because ISE will want copyright assignent (or at the least BSD licensing) &amp;amp; we can't just use gettext because there is probably no way to make this an optional addon. [[User:Leo|Leo]] 19:29, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
:I'm not an expert on licensing stuff so I'v copied from the gettext manual and pasted it here.&lt;br /&gt;
&lt;br /&gt;
:Some people wonder if using GNU gettext necessarily brings their package under the protective wing of the GNU General Public License or the GNU Library General Public License, when they do not want to make their program free, or want other kinds of freedom. The simplest answer is &amp;quot;normally not&amp;quot;. &lt;br /&gt;
:The GNU gettext library, i.e. the contents of libintl, is covered by the GNU Library General Public License. The rest of the GNU gettext package is covered by the GNU General Public License. &lt;br /&gt;
:The mere marking of localizable strings in a package, or conditional inclusion of a few lines for initialization, is not really including GPL'ed or LGPL'ed code. However, since the localization routines in libintl are under the LGPL, the LGPL needs to be considered. It gives the right to distribute the complete unmodified source of libintl evehttp://eiffelsoftware.origo.ethz.ch/index.php?title=Talk:Internationalization/file_format&amp;amp;action=editn with non-free programs. It also gives the right to use libintl as a shared library, even for non-free programs. But it gives the right to use libintl as a static library or to incorporate libintl into another library only to free software. [[User:Etienner|Etienner]] 19:49, 28 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
::There exists a [http://developer.postgresql.org/~petere/bsd-gettext/ BSD-licensed gettext implementation] from the NetBSD project. --[[User:Thom|Thom]] 10:09, 29 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::Thanks. I'll have a look at it. [[User:Leo|Leo]] 15:15, 29 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
&lt;br /&gt;
I think there are now enough information for a voting on the file format...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| BORDER=&amp;quot;0&amp;quot; CELLPADDING=&amp;quot;3&amp;quot; CELLSPACING=&amp;quot;0&amp;quot; ID=&amp;quot;Table3&amp;quot;&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e0e0e0&amp;quot;&lt;br /&gt;
! Person!! XML !! PO !! New!!&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Etienner|Etienne]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Vpiff|Vpiff]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Murbi|Murbi]] || || X || ||&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot;&lt;br /&gt;
| [[User:Lücs|Lücs]] || || X || ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Put your vote adding this lines:--&amp;gt;&lt;br /&gt;
&amp;lt;!--|- ALIGN=&amp;quot;center&amp;quot;--&amp;gt;&lt;br /&gt;
&amp;lt;!--|Your name || || || ||--&amp;gt;&lt;br /&gt;
&amp;lt;!--with an X on the fileformat that you whant--&amp;gt;&lt;br /&gt;
&amp;lt;!--...And update the Total--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- ALIGN=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#e0e0e0&amp;quot;&lt;br /&gt;
!Total !! 0 !! 4 !! 0!!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Despite the votation the file format will still be discussed (with argumentations) at the next meeting. --[[User:Carlo|Carlo]] 22:43, 2 May 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/tool_evaluation&amp;diff=2475</id>
		<title>Talk:Internationalization/tool evaluation</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/tool_evaluation&amp;diff=2475"/>
				<updated>2006-05-02T09:16:26Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Some translation tools */ forgot signature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have suggestions on the tool to be used contact us!&lt;br /&gt;
&lt;br /&gt;
Every experience will help us a lot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ok, here are my thoughts: there are two sets of tools needed.&lt;br /&gt;
* Translation tools - they will let you edit a file containg strings/templates in a friendly manner.&lt;br /&gt;
* Extraction tools - they will let you pull all strings to be localised from the source code. Such a tool will possibly need to be Eiffel-specific, and we will probably have to do this ourselves.&lt;br /&gt;
&lt;br /&gt;
I think it is only worth discussing the first category. Once we find a handy tool we can write a filter for it's file format to/from our own and use it for any &amp;quot;demo&amp;quot; localisations we produce.&lt;br /&gt;
Ideally we should be able to export to a variety of popular formats. How does Windows do it? What are the preferred tools for localisation in the Microsoft world? [[User:Leo|Leo]] 02:11, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It would be nice to see how the VisualStudio handle this. --[[User:Carlo|Carlo]] 08:20, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Some translation tools ==&lt;br /&gt;
&lt;br /&gt;
The short list is here [http://say.uaz.ch/wiki/tiki-index.php?page=translation+tools] --[[User:Carlo|Carlo]] 11:16, 2 May 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/tool_evaluation&amp;diff=2474</id>
		<title>Talk:Internationalization/tool evaluation</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/tool_evaluation&amp;diff=2474"/>
				<updated>2006-05-02T09:15:37Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: Some translation tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have suggestions on the tool to be used contact us!&lt;br /&gt;
&lt;br /&gt;
Every experience will help us a lot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ok, here are my thoughts: there are two sets of tools needed.&lt;br /&gt;
* Translation tools - they will let you edit a file containg strings/templates in a friendly manner.&lt;br /&gt;
* Extraction tools - they will let you pull all strings to be localised from the source code. Such a tool will possibly need to be Eiffel-specific, and we will probably have to do this ourselves.&lt;br /&gt;
&lt;br /&gt;
I think it is only worth discussing the first category. Once we find a handy tool we can write a filter for it's file format to/from our own and use it for any &amp;quot;demo&amp;quot; localisations we produce.&lt;br /&gt;
Ideally we should be able to export to a variety of popular formats. How does Windows do it? What are the preferred tools for localisation in the Microsoft world? [[User:Leo|Leo]] 02:11, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It would be nice to see how the VisualStudio handle this. --[[User:Carlo|Carlo]] 08:20, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Some translation tools ==&lt;br /&gt;
&lt;br /&gt;
The short list is here [http://say.uaz.ch/wiki/tiki-index.php?page=translation+tools]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/feasibility&amp;diff=2455</id>
		<title>Internationalization/feasibility</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/feasibility&amp;diff=2455"/>
				<updated>2006-05-01T11:35:51Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Important Classes */ categoryzed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
Our task is to find out the possible main difficulties that will be encoutered during both design and implementation of the [[internationalization|i18n]] framework.&lt;br /&gt;
&lt;br /&gt;
Main focuses are:&lt;br /&gt;
* state of the Unicode implementation&lt;br /&gt;
* strings usage in Vision2&lt;br /&gt;
* runtime generated/composed strings with variables&lt;br /&gt;
&lt;br /&gt;
==String types and their possible difficulties==&lt;br /&gt;
&lt;br /&gt;
===Constant String===&lt;br /&gt;
 Workbench_name: &amp;lt;font color=&amp;quot;Blue&amp;quot;&amp;gt;STRING is&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;Green&amp;quot;&amp;gt;&amp;quot;EiffelStudio&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Difficulties====&lt;br /&gt;
====Possible Solution====&lt;br /&gt;
&lt;br /&gt;
===String with label specific syntax===&lt;br /&gt;
 m_to_lower: &amp;lt;font color=&amp;quot;Blue&amp;quot;&amp;gt;STRING is&amp;lt;/font&amp;gt; &amp;lt;font color=&amp;quot;Green&amp;quot;&amp;gt;&amp;quot;Set to &amp;amp;Lowercase%TCtrl+Shift+U&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Difficulties====&lt;br /&gt;
* Bad readability for the traducer&lt;br /&gt;
* Shortcuts conflict&lt;br /&gt;
====Possible Solution====&lt;br /&gt;
&lt;br /&gt;
===Composed String===&lt;br /&gt;
 m_About:&amp;lt;font color=&amp;quot;Blue&amp;quot;&amp;gt;STRING is&amp;lt;/font&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;Blue&amp;quot;&amp;gt;once&amp;lt;/font&amp;gt;&lt;br /&gt;
        &amp;lt;font color=&amp;quot;Blue&amp;quot;&amp;gt;Result&amp;lt;/font&amp;gt;:&amp;lt;font color=&amp;quot;Green&amp;quot;&amp;gt;&amp;quot;&amp;amp;About&amp;quot; &amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Red&amp;quot;&amp;gt;+&amp;lt;/font&amp;gt; Workbench_name &amp;lt;font color=&amp;quot;Red&amp;quot;&amp;gt;+&amp;lt;/font&amp;gt;&amp;lt;font color=&amp;quot;Green&amp;quot;&amp;gt; &amp;quot;...&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
   &amp;lt;font color=&amp;quot;Blue&amp;quot;&amp;gt;end&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Difficulties====&lt;br /&gt;
====Possible Solution====&lt;br /&gt;
&lt;br /&gt;
==Important Classes==&lt;br /&gt;
&lt;br /&gt;
====Defining and formatting Strings====&lt;br /&gt;
&lt;br /&gt;
* INTERFACE_NAMES: Include all the strings of the ES interface (buttons, labels, shortcuts...)&lt;br /&gt;
* TEXT_FORMATTER: Text formatter for all text output formatting&lt;br /&gt;
* 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...)&lt;br /&gt;
&lt;br /&gt;
====Implementations====&lt;br /&gt;
&lt;br /&gt;
* STRING_GENERAL: &amp;quot;Common ancestors to all STRING classes.&amp;quot; [base]&lt;br /&gt;
** STRING:  [base]&lt;br /&gt;
*** UC_STRING: Unicode strings [gobo]&lt;br /&gt;
**** UC_UTF8_STRING: Unicode strings with UTF-8 encoding&lt;br /&gt;
** STRING_32:  [base]&lt;br /&gt;
* UC_CHARACTER: Unicode characters [gobo]&lt;br /&gt;
&lt;br /&gt;
* KS_STRING: Portable interface for class STRING [Gobo]&lt;br /&gt;
* cluster: &amp;quot;gobo.kernel.unicode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* WIDE_CHARACTER: Unicode characters, with comparison operations [base]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/feasibility&amp;diff=2442</id>
		<title>Internationalization/feasibility</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/feasibility&amp;diff=2442"/>
				<updated>2006-04-30T23:27:03Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Important Classes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
Our task is to find out the possible main difficulties that will be encoutered during both design and implementation of the [[internationalization|i18n]] framework.&lt;br /&gt;
&lt;br /&gt;
Main focuses are:&lt;br /&gt;
* state of the Unicode implementation&lt;br /&gt;
* strings usage in Vision2&lt;br /&gt;
* runtime generated/composed strings with variables&lt;br /&gt;
&lt;br /&gt;
==String types and their possible extraction difficulties==&lt;br /&gt;
&lt;br /&gt;
==Important Classes==&lt;br /&gt;
&lt;br /&gt;
* INTERFACE_NAMES: include all the strings of the ES interface (buttons, labels, shortcuts...)&lt;br /&gt;
&lt;br /&gt;
* STRING_GENERAL: &amp;quot;Common ancestors to all STRING classes.&amp;quot; [base]&lt;br /&gt;
** STRING:  [base]&lt;br /&gt;
*** UC_STRING: Unicode strings [gobo]&lt;br /&gt;
**** UC_UTF8_STRING: Unicode strings with UTF-8 encoding&lt;br /&gt;
** STRING_32:  [base]&lt;br /&gt;
* UC_CHARACTER: Unicode characters [gobo]&lt;br /&gt;
&lt;br /&gt;
* KS_STRING: Portable interface for class STRING [Gobo]&lt;br /&gt;
* cluster: &amp;quot;gobo.kernel.unicode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* WIDE_CHARACTER: Unicode characters, with comparison operations [base]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/feasibility&amp;diff=2396</id>
		<title>Talk:Internationalization/feasibility</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/feasibility&amp;diff=2396"/>
				<updated>2006-04-29T20:36:17Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Unicode support==&lt;br /&gt;
A report on the current support for Unicode in Gobo has been requested (see [http://origo.ethz.ch/pipermail/es-vision/2006-April/000002.html here]) but may not come in time for us to profit.&lt;br /&gt;
It seems like there are two efforts to support Unicode, one for Gobo and one for EiffelVision, that are still sort of independent from oneanother. --[[User:Carlo|Carlo]] 22:36, 29 April 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization/feasibility&amp;diff=2393</id>
		<title>Internationalization/feasibility</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization/feasibility&amp;diff=2393"/>
				<updated>2006-04-29T20:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: summary draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Summary==&lt;br /&gt;
Our task is to find out the possible main difficulties that will be encoutered during both design and implementation of the [[i18n]] framework.&lt;br /&gt;
&lt;br /&gt;
Main focuses are:&lt;br /&gt;
* state of the Unicode implementation&lt;br /&gt;
* strings usage in Vision2&lt;br /&gt;
* runtime generated/composed strings with variables&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Talk:Internationalization/tool_evaluation&amp;diff=2305</id>
		<title>Talk:Internationalization/tool evaluation</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Talk:Internationalization/tool_evaluation&amp;diff=2305"/>
				<updated>2006-04-27T06:20:42Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you have suggestions on the tool to be used contact us!&lt;br /&gt;
&lt;br /&gt;
Every experience will help us a lot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ok, here are my thoughts: there are two sets of tools needed.&lt;br /&gt;
* Translation tools - they will let you edit a file containg strings/templates in a friendly manner.&lt;br /&gt;
* Extraction tools - they will let you pull all strings to be localised from the source code. Such a tool will possibly need to be Eiffel-specific, and we will probably have to do this ourselves.&lt;br /&gt;
&lt;br /&gt;
I think it is only worth discussing the first category. Once we find a handy tool we can write a filter for it's file format to/from our own and use it for any &amp;quot;demo&amp;quot; localisations we produce.&lt;br /&gt;
Ideally we should be able to export to a variety of popular formats. How does Windows do it? What are the preferred tools for localisation in the Microsoft world? [[User:Leo|Leo]] 02:11, 27 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It would be nice to see how the VisualStudio handle this. --[[User:Carlo|Carlo]] 08:20, 27 April 2006 (CEST)&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2199</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2199"/>
				<updated>2006-04-25T16:20:19Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access informations and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* feasibility (look at string classes (unicode and not) and how strings are used in eStudio (creation, composition))&lt;br /&gt;
* [http://say.uaz.ch/wiki/tiki-index.php?page=compare+xml+po file format] (compare existing file formats for dictionaries)&lt;br /&gt;
* tools evaluation (list and compare existing translation tools)&lt;br /&gt;
&lt;br /&gt;
==M3: May ??? ==&lt;br /&gt;
* design:&lt;br /&gt;
** file formats (files holding translated strings)&lt;br /&gt;
** code parser (extract strings to be translated from source code)&lt;br /&gt;
** globality (how to implement, the object should be shared between all modules)&lt;br /&gt;
* compile a list of basic features to provide (e.g. date/time format, system locale)&lt;br /&gt;
* collaborate with the [[Vision2_and_Unicode]] team&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Frank Fellmann]]&lt;br /&gt;
* Ivano Somaini&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* Christian Conti&lt;br /&gt;
* Martino Trosi&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2198</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2198"/>
				<updated>2006-04-25T16:19:02Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M2: May ??? */ postponed a milestone, introduced new M2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access informations and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==M2: May 5 ==&lt;br /&gt;
* feasibility (look at string classes (unicode and not) and how strings are used in eStudio (creation, composition))&lt;br /&gt;
* [http://say.uaz.ch/wiki/tiki-index.php?page=compare+xml+po file format] (compare existing file formats for dictionaries)&lt;br /&gt;
* tools evaluation (list and compare existing translation tools)&lt;br /&gt;
&lt;br /&gt;
==M3: May ??? ==&lt;br /&gt;
* design:&lt;br /&gt;
** file formats (files holding translated strings)&lt;br /&gt;
** code parser (extract strings to be translated from source code)&lt;br /&gt;
** globality (how to implement, the object should be shared between all modules)&lt;br /&gt;
* compile a list of basic features to provide (e.g. date/time format, system locale)&lt;br /&gt;
* collaborate with the [[Vision2_and_Unicode]] team&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Frank Fellmann]]&lt;br /&gt;
* Ivano Somaini&lt;br /&gt;
* [[User:murbi|Andreas Murbach]]&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* [[User:hong |Hong Zhang]]&lt;br /&gt;
* Christian Conti&lt;br /&gt;
* Martino Trosi&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2135</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2135"/>
				<updated>2006-04-24T22:53:20Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Many [people] would simply love seeing their computer screen showing a lot less of English, and far more of their own language.&amp;quot;'' -- gettext doc&lt;br /&gt;
&lt;br /&gt;
Our aim is not only to provide a framework to ease the translation of Eiffel-written applications, allowing the user to chose his/her preferred language at runtime, but also to let the developer access informations and formats based on users' locale.&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==M2: May ??? ==&lt;br /&gt;
* design:&lt;br /&gt;
** file formats (files holding translated strings)&lt;br /&gt;
** code parser (extract strings to be translated from source code)&lt;br /&gt;
** globality (how to implement, the object should be shared between all modules)&lt;br /&gt;
* compile a list of basic features to provide (e.g. date/time format, system locale)&lt;br /&gt;
* collaborate with the [[Vision2_and_Unicode]] team&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* Ivano Somaini&lt;br /&gt;
* Andreas Hans Murbach&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* Hong Zhang&lt;br /&gt;
* Christian Conti&lt;br /&gt;
* Martino Trosi&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2072</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2072"/>
				<updated>2006-04-21T18:02:18Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* M2: May ??? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''To be added''&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M1: April 25th==&lt;br /&gt;
* set up mailinglist es-i18n@origo.ethz.ch ([[User:Schoelle|Bernd]])&lt;br /&gt;
&lt;br /&gt;
==M2: May ??? ==&lt;br /&gt;
* design:&lt;br /&gt;
** file formats (files holding translated strings)&lt;br /&gt;
** code parser (extract strings to be translated from source code)&lt;br /&gt;
** globality (how to implement, the object should be shared between all modules)&lt;br /&gt;
* compile a list of basic features to provide (e.g. date/time format, system locale)&lt;br /&gt;
* collaborate with the [[Vision2_and_Unicode]] team&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* Ivano Somaini&lt;br /&gt;
* Andreas Hans Murbach&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* Hong Zhang&lt;br /&gt;
* Christian Conti&lt;br /&gt;
* Martino Trosi&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Vision2_and_Unicode&amp;diff=2069</id>
		<title>Vision2 and Unicode</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Vision2_and_Unicode&amp;diff=2069"/>
				<updated>2006-04-21T17:28:11Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:EiffelVision2]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
[[Category:Unicode]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Have a look at the [[WEL_and_Unicode|description made for the WEL library]]. The same applies to EiffelVision2.&lt;br /&gt;
&lt;br /&gt;
=Readings=&lt;br /&gt;
&lt;br /&gt;
==Unicode==&lt;br /&gt;
* http://de.wikipedia.org/wiki/Unicode&lt;br /&gt;
* http://www.unicode.org/&lt;br /&gt;
** http://www.unicode.org/standard/WhatIsUnicode.html&lt;br /&gt;
** http://www.unicode.org/standard/standard.html&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M1: April 25th==&lt;br /&gt;
&lt;br /&gt;
==M2: May ??? ==&lt;br /&gt;
* implement multi screen support for Vision: [[Multi screen support]]&lt;br /&gt;
* collaborate with the [[internationalization]] team&lt;br /&gt;
* write a decent STRING_32 implementation for &lt;br /&gt;
** string comparisons&lt;br /&gt;
** lower/upper case conversion&lt;br /&gt;
** some of it is already in Gobo but not completely as efficient as it should&lt;br /&gt;
* To be completed by the team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to join our mailinglist [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-vision es-vision@origo.ethz.ch]&lt;br /&gt;
&lt;br /&gt;
* Project Leader: Raffaele&lt;br /&gt;
* [[User:korzieher| Adrian]]&lt;br /&gt;
* [[User:Dartzki| Dario]]&lt;br /&gt;
* [[User:Bayt| Bayt]]&lt;br /&gt;
* [[User:frEeAx| Michele]]&lt;br /&gt;
* [[User:Serafin| Serafin]]&lt;br /&gt;
&lt;br /&gt;
=Communication=&lt;br /&gt;
We agreed to communicate via [http://de.wikipedia.org/wiki/Irc IRC] (orwell.freenode.net/es-vision).&lt;br /&gt;
For Windows user there are different programs available. For example:&lt;br /&gt;
* [http://hydrairc.com/index.php?page=downloads HydraIRC]&lt;br /&gt;
* [http://www.mirc.com/get.html mirc]&lt;br /&gt;
&lt;br /&gt;
Linux user (for ex.) one of the following&lt;br /&gt;
* xchat&lt;br /&gt;
* irssi (console-app.)&lt;br /&gt;
&lt;br /&gt;
after downloading and installing, you can connect to a server with the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/server &amp;lt;serveradress&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where &amp;lt;serveradress&amp;gt; is (for ex.) orwell.freenode.net ([http://freenode.net/irc_servers.shtml more freenode servers]).&lt;br /&gt;
&lt;br /&gt;
to enter our channel, type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/join #es-vision&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
also you can set/change your nickname with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/nick &amp;lt;new_nick&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where &amp;lt;new_nick&amp;gt; is you nickname.&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2064</id>
		<title>Internationalization</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=Internationalization&amp;diff=2064"/>
				<updated>2006-04-21T16:25:02Z</updated>
		
		<summary type="html">&lt;p&gt;Carlo: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
''To be added''&lt;br /&gt;
&lt;br /&gt;
=Milestones=&lt;br /&gt;
&lt;br /&gt;
==M1: April 25th==&lt;br /&gt;
* set up mailinglist es-i18n@origo.ethz.ch ([[User:Schoelle|Bernd]])&lt;br /&gt;
&lt;br /&gt;
==M2: May ??? ==&lt;br /&gt;
* To be completed by the team&lt;br /&gt;
&lt;br /&gt;
=Team=&lt;br /&gt;
&lt;br /&gt;
Everyone interested in this project is welcome to [http://origo.ethz.ch/cgi-bin/mailman/listinfo/es-i18n join our mailinglist] es-i18n@origo.ethz.ch&lt;br /&gt;
&lt;br /&gt;
* Project Leader: [[User:Carlo|Carlo Vanini]]&lt;br /&gt;
* [[User:leo| Leo Fellmann]]&lt;br /&gt;
* Ivano Somaini&lt;br /&gt;
* Andreas Hans Murbach&lt;br /&gt;
* [[User:etienner|Etienne Reichenbach]]&lt;br /&gt;
* Hong Zhang&lt;br /&gt;
* Christian Conti&lt;br /&gt;
* Martino Trosi&lt;br /&gt;
* [[User:Schoelle| Bernd Schoeller]]&lt;/div&gt;</summary>
		<author><name>Carlo</name></author>	</entry>

	</feed>