Drupal: User personalization of Taxonomy terms I have a requirement within Drupal to allow registered users to personalise the taxonomy terms that they see and use (leaving the defaults as they are) but haven't found any other information online on the best way to approach this - or if a module exists that does this. Specifically, the requirements are:


Drupal 6 or 7 (7 preferred)
Taxonomy items will be flat lists - not nested trees
The initial items will be the default set
Registered users can each change their default terms to suit their purposes - but the default set is untouched. Other users could have their own set. This would need to work similarly to internationalization (i18n).
Duplicate customizations are allowable.
Using (searching or displaying) duplicate customised terms will concatenate the result set of all the translated terms.


To try to give a simple example. Purely for illustration purposes, lets say the vocabulary is Soldiers. 

The terms in the default set is:

Guard
Footman
Swordsman
Archer
Sergeant
Captain


and an orc user wants to reference the same terms with these customisations:

Peon     (Guard)
Grunt    (Footman)
Grunt    (Swordsman)
         (Archer)
         (Sergeant)
Chief    (Captain)


So when using the system the orc user has the following soldier list:

Peon
Grunt
Archer
Sergeant
Chief


Where 'Grunt' references both the Footman and Swordsman terms from the original. Archer and Sergeant use the defaults.

Hope this makes sense.
This sounds like a rather tricky to do.

i18n_taxonomy.module needs to do a lot of hacking and overriding of the taxonomy.module behaviors to always display translated terms. I don't think something like this already exists as a ready to use module.

One option might be to do this using fake translations and building a custom UI which would allow users to create a new personal language and "translate" the terms. However, it won't be able to deal with the merging part. It's also rather hackish...

Another option might be to ditch taxonomy.module completely using either a simple list field (which supports using a callback function for the possible values, but only through the API, see list_field_info()) and then build a UI which allows users to override the default values (and store them somewhere) or maybe even provide custom field widgets and formatters. Depending on your exact requirements, it might be easier to re-implement the features from taxonomy.module you need rather than trying to bend it to your will.