On Monday, 20 February 2012 at 19:41:07 UTC, Nick Sabalausky
wrote:
Ok, I just saw your explanation here:
http://forum.dlang.org/post/[email protected]
And, IIUC, I assume that inside "stringTemplate()", you'd then
access some
table that roughly amounts to (yea, I know we don't have 2D
AAs):
string[string, Locale] i18nTable;
i18nTable["FileNotFoundExcepton", English] = "File ${filename}
not found";
Then stringTemplate() would look that up, find the string "File
${filename}
not found" and essentially do:
return "File "~e.info("filename")~" not found";
Although obviously not hardcoded like that.
Is that right?
In that case, I like the general idea, *but* why not just use
reflection to
access the members instead of essentially creating a JS-style
"class" with
AAs? That way we don't have to either A. throw away the
benefits that class
members have over AAs or B. violate DRY by duplicating field
members in an
AA.
Seconded. Reflection seems a much better solution for this.
The i18n table would map (exception type) -> (language, format
string)
and the i18n formatter would use reflection to map field values
to the format string.
a format string would be e.g. "File {filename} not found" and the
formatter would replace {filename} with
e.class.getField("filename").
This does not require any modifications to the exception
mechanism.