What is the best way to detect which items are missing a particular language version as well as add them? Is there a method to performing this in bulk?
Turns out the guys over at SPE though through some of this too. Hopefully others find this answer helpful.
Here's a page describing how to manage item languages.
Example: The following will query all the items under home and add copy US english to CA english; skips if the language already exists.
$root = "master:\content\home" @(Get-Item -Path $root) + @(Get-ChildItem -Path $root) -Recurse | Add-ItemLanguage -Language "en-us" -TargetLanguage "en-ca" -IfExist Skip
For bulk, I'm sure someone skilled in Sitecore Powershell Extensions has an answer. I will give you another approach however.
In my most recent project; we implemented the Content Editor and Experience Editor authoring language extensions by Mikael Högberg. Essentially they expand upon the regular warning ribbons in Sitecore, to look something like this:
So while this doesn't exactly give you a report and allow you to bulk update, it will still supplement your editor users' daily work and perhaps act as a small quality-of-life improvement.
I highly recommend this. I think the core product would benefit from having this.
You might also want to take a look at the EasyLingo module on the marketplace. Will not help your 'bulk' requirement but it gives you an overview (in content and xp editor) of the languages you have and the ones you should have (also taking item fallback into account) on your item. And if you add the flags (back) to the languages it even looks good ;)