Generating readable text in a human language from machine-readable data
I see a couple of potential issues with regards to internationalization:


pluralization is more complex than (qty == 1 ? singular : plural). What about the value 0? Also in some languages, different plural forms are in use depending on the number.
numbers should be formatted according to language, using appropriate separators
concatenation (that you mention is done in main program) must be avoided because the order of words and phrases will often vary in translations in different languages


I would advise to :


localize translations using named parameters to be replaced: this solves the ordering issue, and avoids concatenation.
format values, for number formatting and pluralization, using a separate function localized for each language
replace parameters with formatted values in parameterized translations using a template engine: this should keep some potentially buggy regular expressions out of your code :)


You may be interested in having a look at:


JavaScript Internationalisation, a post by Matthew Somerville on 24 Ways
jQuery-global, "a jQuery plugin for the globalization of string, date, and number formatting and parsing"


and last but not least, the i18n API part of the Scalable JavaScript Application framework, which I designed for Legal-Box :)


eric-brechemier/lb_js_scalableApp, the project home page on GitHub
lb.core.Sandbox.js, check the i18n part of the API, methods starting with "i18n."


I may be able to provide more practical suggestions if you show more of your code, especially at the "top", part of the main program.