add static import of tinygettext
[supertux.git] / external / tinygettext / TODO
diff --git a/external/tinygettext/TODO b/external/tinygettext/TODO
new file mode 100644 (file)
index 0000000..29daf3f
--- /dev/null
@@ -0,0 +1,76 @@
+tinygettext API related stuff:
+==============================
+
+* translate, translate_ctxt, translate_ctxt_plural, ... could be
+  unified via overloading, not sure if that is a good idea. For the
+  same reason add_translation() could be de-overloaded, to
+  add_translation_ctxt, ...
+
+* iconv handling needs cleanup and more flexibility, since some
+  systems don't provide iconv or only through SDL
+
+* Customizability could use grouping and documentation or other means
+  to make it more obvious:
+
+  - POParser::pedantic
+  - iconv (???)
+  - logging (log_callback(std::string))
+
+* handle errors better, not with log_* stream, cases of errors:
+
+  - couldn't translate
+  - collision while adding translation
+  - failure to open file or directory
+  - unknown language
+  - iconv failure to convert charset
+
+* ABI management/freezing. If tinygettext is to benefit other projects,
+  it should be able to provide a stable API (and, better, ABI).
+
+
+tinygettext implementation details:
+===================================
+
+* with PluralForms moved into Dictionary a lot of the Langugae stuff
+  is pointless
+
+* get rid of goto
+
+* POParser can handle Big5, but needs testing.
+  Big5 is one byte for ASCII letters and two bytes for chinese ones,
+  this means some two byte characters collide with '\', some .po files
+  seem to escape the \ properly so that the string can be read as
+  usual, while others don't.
+
+* _()  -> getext() (gettext default)
+  N_(id) -> gettext_noop(id) (gettext default)
+  C_(ctxt, id) -> pgettext(ctxt, id) (Gnome does this: http://library.gnome.org/devel/glib/2.16/glib-I18N.html#Q-:CAPS)
+  NC_(ctxt, id) -> pgettext(ctxt, id) (Gnome does this: http://library.gnome.org/devel/glib/2.16/glib-I18N.html#Q-:CAPS)
+
+* figure out how up-to-date other tinygettext implementations in the
+  wild are (LinCity):
+
+  Pingus: 
+  -------
+  dictionary.hpp (synced with Pingus)
+  dictionary_manager.hpp (PhysFS vs opendir())
+  language_def.hpp (synced with Pingus)
+  po_file_reader.hpp (UTF-8 0xef-'header', lots of stuff from mathner)
+  tinygettext.hpp (iconv vs convert)
+
+\f
+Random Unimportant Stuff
+========================
+
+* a hashmap instead of std::map might be a good idea
+
+* support for .gmo files would be cool
+\f
+tinygettext Documentation:
+==========================
+
+* recommend a way to handle translation of speech and other data files
+
+* document how to use tinygettext and make it work like gettext
+\f
+# EOF #