Skip to content

Latest commit

 

History

History
183 lines (176 loc) · 8.58 KB

Backlog.md

File metadata and controls

183 lines (176 loc) · 8.58 KB

Development Backlog

Features for iLib

Here is a list of features in no particular order that may be developed for iLib in a future release. When it comes time to plan for the next release, the priority of each of the following will be re-evaluated and the top few will be scheduled for development.

  • Support the BCP-47 standard for locale specs - DONE
    • add script concept to locales, support ISO 15924 script IDs
  • code to auto-detect the locale of the environment that iLib is running in - DONE
    • perhaps part of the Locale class when you call the constructor with no arguments?
    • check the environment, http headers if available, browser variables if available, etc.
  • person names - DONE
    • parsing
    • formatting
    • sort names (in German and Dutch, "von Beethoven" sorts under "B" instead of "V")
  • phone numbers - DONE (Needs more locale data for many other countries)
    • parsing
    • formatting
    • geolocation
    • normalization
    • matching
    • letter dialing conversion (1-800-FLOWERS = 1-800-356-9377) (This part is not done)
  • address parsing and formatting - DONE
  • number parsing and formatting
    • better support for Asian formats
    • currency conversion via OANDA or other such services
  • date parsing and recognition
  • calendars
    • Persian calendar - DONE
    • Hebrew calendar - DONE
    • Chinese lunar calendar
    • Japanese Imperial
    • phase of the moon calculations - DONE
    • solstice and equinox calculations - DONE
  • Webpack support
    • Support sync and async operation (static and dynamic) versions
    • Support assembled and unassembled versions
    • Support compressed/uncompressed versions
    • Only include classes and the locale data that they need for a given set of locales.
  • Grunt work
    • Convert current ant scripts to grunt instead (except for the java directory, which stays on ant, and the qt directory which stays on qmake)
      • Overall build should be controlled by grunt, and call ant or qmake as necessary
  • String formatting
    • For choice formats, support a syntax like "*2" for the match string to match any number that ends in 2. Needed to do proper plurals and ordinals, especially in Russian. - DONE
      • alternate idea: maybe support regular expressions for the match strings?
    • String truncation function to truncate a string between words where possible - DONE
    • BreakIterator class. Detect breaks between
      • glyphs
      • words
      • sentences
      • paragraphs
    • Line wrapping function to wrap lines between words where possible
      • Depends on break iterator
      • hyphenation?
    • string case function. (Existing case functions operate on single characters, but this would operate on whole strings.)
      • title case
      • start case
      • sentence case
      • lower case
      • depends on break iterator
    • integrate choice formatting into replacement parameters in the regular format function?
    • pseudo-translation updates
      • support mapping to other scripts, such as RTL scripts or Asian scripts in order to test your app's support for those scripts - DONE
      • support a "hash" before each string so you can identify when two strings that appear in the UI come from the same or different resource strings
    • word syllabification
    • word hyphenation
      • depends on syllabification for many locales
  • phone numbers
    • More locale data for many other countries. Use data from libphonenumber?
    • letter dialing conversion (1-800-FLOWERS = 1-800-356-9377)
  • React components
    • wrapper around most ilib classes
    • support sync and async operation
    • support input for many classes such as date picker, time picker, calendar picker, as well as formatters for various classes
  • Locale fallback mechanism
    • Fall back from an unsupported locale to a supported locale in a smart manner
    • Build on top of user-provided configuration and use the locale matcher for default matches
  • resource bundle updates
    • translation wrappers around Bing, Babelfish, and Google in the ResBundle object
    • support fetching translations dynamically via AJAX (perhaps requiring the jQuery integration?)
    • resource bundle chaining to support fallbacks
    • A/B testing support
      • translate source string to different target strings depending on locale + bucket
  • number parsing and formatting
    • better support for Asian formats
    • support for non-decimal number formats, such as Hebrew numbers or Chinese numbers
    • currency conversion via OANDA or other such services
  • date parsing and recognition
    • Support more formats and more locales
    • Apply heuristics
    • Come up with test data sets to continually improve recognition
  • calendars
    • Chinese lunar calendar
    • Japanese Imperial calendar
    • Holiday calculation per locale
  • jQuery plugin.
    • iLib provides the date/locale information to configure the jQuery UI widgets
    • date picker (calendar)
    • IME
    • validators for various data types such as person names, phone numbers, date/times, numbers, currency, percentages, etc.
  • Holidays
    • configuration per locale
    • calculations of holiday dates in each year
  • transliteration
    • to base characters (de-accenting)
    • to lower- or upper-case
    • phonetically between scripts. eg. Romaji <-> katakana, Pinyin <-> ideographs, Cyrillic <-> Latin
    • to IPA for use in rhyming
    • from IPA to other characters in IPA for use in soundex
    • to sort key string
    • from numeric pinyin to accented pinyin
    • data is available on CLDR
  • resource bundle updates
    • translation wrapper around Bing, Babelfish, Google in the ResBundle object
    • support fetching translations dynamically via AJAX (perhaps requiring the jQuery integration?)
  • charset object - DONE
    • identification
    • normalization of IANA charset names
    • charset conversion
    • recognition
  • character functions - DONE
    • script identification (given a character, tell what script it is used in)
    • character normalization (Unicode normalizations, etc.) - DONE
  • word functions
    • given a word, tell which gender it is
    • given a word, tell which case it is
    • given a word, tell the plurality of it
    • given a word, tell the politeness level (Japanese)
    • integrate with Salesforce Grammaticus?
  • collation/sorting - DONE (code is done, but needs more locale data support though)
    • accent insensitive
    • case insensitive
    • support unique compressions
    • sort key generation and sort key strings
    • sort styles (eg. “dictionary sort” or “phonebook sort” in German)
    • expand locale coverage
    • write tool to convert CLDR data to ilib format
  • Segmentation
    • word- and sentence-segmenting
    • line breaking and text wrapping
      • Asian rules
      • syllabification for Euro languages
    • ellipsizing method in String class - DONE
  • unit conversions (metric <-> imperial, celcius <-> fahrenheit) - DONE
  • Locale-sensitive UI widgets
    • Calendar picker (based on jquery)
    • Time picker
    • Address form
  • Input Method Editors (IME)
    • configurable 101 software keyboards
    • KKC for Japanese
    • Hangul for Korean
    • Pinyin for Chinese (and others? Wubi?)
  • List Formatter - DONE
  • Alphabetic Index - DONE
  • More locale data
    • translations for strings to more locales - DONE
    • date components and formats - DONE
    • name parsing info
    • paper sizes - DONE
    • default timezone for the locale, and lists of timezones in the locale - DONE
    • keyboard layouts
    • collation configurations
    • phonetic transliterations
    • holiday schedules
    • configuration detailing dates of transition from Julian to Gregorian calendar
    • phone number info and geolocations
    • name configuration
  • jQuery plugin.
    • iLib provides the date/locale information to configure the jQuery UI widgets
    • date picker (calendar)
    • IME
    • validators for various data types such as person names, phone numbers, date/times, numbers, currency, percentages, etc.

Features for the JS Assembly Tool

May not need this any more because of webpack work...

Here are a proposed set of features to add to the assembly tool.

  • Ability to read a set of HTML/PHP/JSP/etc. files for depends and data directives without including them into the output file. This allows you to assemble an iLib JS file with only the stuff that is needed by your web app.
  • Rewrite in Javascript
  • Make a simple ilib generator web page, similar to the jquery-ui theme generator, where you pick which classes you want and which locales you want, and it will build a copy of ilib for you with all dependencies satisfied