I had thought of programming AMS the same way you described but decided against it because of the catalog files issue as well 😊 but since we should make sure the software is internationalized (now that its at cvs.openacs.org and not just in house), i think the approach you mentioned is a good one for dynamic attributes. But what about attributes created via plsql by the core or other packages. So, for example persons have first_names and last_name attributes inserted by acs-kernel. Would AMS then scan the attribute table and generate a key acs-kernel.first_names or would it create ams.first_names, or would it only do that if somebody went to change the pretty name of that attribute?
If we go with the solution to only change it when the "pretty name" changes, we cannot provide a pre-packaged internationalized version of AMS or Dynamic types with default attributes that work in multiple languages...