If you want more data out of Bookends references, then make sure the translator data (RIS field?) is in the Bookends-generated RIS.
$ReferenceRIS holds all the RIS data Tinderbox receives. If the needed RIS code is not there, you first need to amend the Bookends RIS export format (see the Format Manager, ask any questions on that in the Bookends support forum). Note that Tinderbox cannot use what’s not in the RIS it receives.
Otherwise, if the code & data value is there in $ReferenceRIS, make an attribute (e.g. $ReferenceTranslator or $Translator), add that to the ‘Reference’ prototype Displayed Attributes and then write some action code to parse the translator name value from $ReferenceRIS to your user attribute.
@Bernard-0 has posted a nice AppleScript-based solution—easier than the method here. But i’ll leave this in case it helps Bookends users or those trying RIS export from some other reference manager.
RIS field codes aren’t listed in the Bookends docs (just checked) but helpfully they are on Wikipedia here.
It would appear that RIS doesn’t have a nominated field for the translator (i.e. the person who translated the original work). But in Bookends’s Format Manager, Bookends’ ‘Translator’ field is code ‘u3’
This is Bookends’ RIS export format templates for a Journal:
Note the $ symbols and back-ticks are Bookends format specific code.
RIS has undefined fields U1 through U5 noting that UI is already in use. By adding a line $U2 - $u3, Bookends drags should include Translator data (if that reference has such information). Thus, note the new ocde in the last but one line:
Field order doesn’t matter, but the RIS first line must start with TY and the last line with ER. Also, there must be exactly two spaces between a lines opening code and the hyphen, i.e. U2+[two spaces]+hyphen+[space]+etc.
If you undertake this customisation in Bookends, there are four ‘types’ within the format (Journal, Book, etc.) so you should edit all four.
Once data is in Tinderbox, parse the $ReferenceRIS attribute date in the reference’s note for the ‘U2’ field data.
In exploring the above, I think I found some Bookends code where the RIS template had only one space between codes and the hyphen (I’ve reported it), but watch out for that if editing your own Bookends formats.
Having reported this, Jon (Bookends’s wonderful developer) reminds me my UI line is likely a user (me) edit that’s been forgotten. No doubt for some Tinderbox user forum help request long forgotten. The as installed Bookends RIS export is correct in terms of format.
Aside, who’d have guessed that two spaces are needed before the hyphen. It actually takes some googling to find a decent description of the format (the Wikipedia page to which I linked doesn’t go that deep). also, if rolling your own, the format must use Windows-OS-style carriage-return+line-feed line endings to be valid RIS.
FWIW, I use BibTeX format. Plain text and better supported (as in offered by publishers) than RIS; at least in my area of work , Web Science (i.e. mainly CompSci+SocSci).
I don’t believe so. Some RIS fields are also automatically, but not translator.
$ReferenceRIS is currently (v8) a string that is actually a list of semi-colon delimited key/ value pairs RIS key:value. So pass the string to a List, iterate with .each(), match the item beginning U2 split on the colon and use the value. Or extract using a .contains() on the whole string using a pattern to find the U2 key/value pair with a sub-pattern to return the value.
In v9, this gets easier as $ReferenceRIS becomes a Dictionary-type and so you can simply interrogate for ReferenceRIS[U2] to get the value.
My bad. I’m thinking of a new system attribute $DictionaryRIS $ReferenceDirectory. Here’s not (yet) the place to discuss v9 features. But suffice it to say, @Bernard-0’s task will be easier in the next version.
Using $OnAdd is actually a very good idea, @satikusala. Thanks for sharing!
@mwra, I believe the correct attribute is $ReferenceDictionary I was also wondering if setting up the dictionary in some way could make that an automatic process, but using OnAdd will do the trick (I just wanted to avoid using rules, edicts or agents for this).