Translations sound suspiciously close to Metadata API which means it's not accessible from Apex (at least not without some callout-like hacks). Can't you just use standard Translation Workbench? Export to Excel, let users translate, import back... sure beats crafting XML files.
Besides even if you had such possibility to modify translations from Apex - how do you plan to write a "metadata change sniffer" that'd "fire" every time a new picklist is added or existing one modified? Or that would detect the fact a new language was enabled in the system?
I believe "you're doing it wrong" ;) I think it makes more sense to leverage the fact Salesforce kept picklist name & value identical (so no way to configure system out of the box to have <select>...<option value="Y">Yes</option>...</select>
). If you need this Yes/No somewhere else as Y/N - consider making a formula field?
EDIT
Translations metadata missing in Eclipse - check your package.xml. Mine contains (among others)
<types>
<members>*</members>
<name>CustomObjectTranslation</name>
</types>
<types>
<members>*</members>
<name>Translations</name>
</types>
("Translations" is for apps, custom labels etc) and my Opportunity-es.objectTranslation has correct data in it:
<?xml version="1.0" encoding="UTF-8"?>
<CustomObjectTranslation xmlns="http://soap.sforce.com/2006/04/metadata">
...
<fields>
<help>Si es Indirecto, debe rellenar el campo de mayorista</help>
<label>Directo / Indirecto</label>
<name>Direct_Indirect__c</name>
<picklistValues>
<masterLabel>Direct</masterLabel>
<translation>Directo</translation>
</picklistValues>
<picklistValues>
<masterLabel>Indirect</masterLabel>
<translation>Indirecto</translation>
</picklistValues>
</fields>
...
<fields>
<name>LeadSource</name>
<picklistValues>
<masterLabel>Advertisement</masterLabel>
<translation><!-- Advertisement --></translation>
</picklistValues>
<picklistValues>
<masterLabel>Customer Event</masterLabel>
<translation><!-- Customer Event --></translation>
</picklistValues>
...
Here a sample file for deploying Translations (German) of some Standard and Custom Objects with all its fields:
<types>
<members>Account</members>
<members>Contact</members>
<members>Case</members>
<members>CustomerRequest__c</members>
<name>CustomObject</name>
</types>
<types>
<members>Account-de</members>
<members>Contact-de</members>
<members>Case-de</members>
<members>CustomerRequest__c-de</members>
<name>CustomObjectTranslation</name>
</types>
<version>34.0</version>
Here a sample file for deploying Translations (German) of Custom Applications, Custom Labels, Custom Buttons and Custom Tabs:
<types>
<members>*</members>
<name>CustomApplication</name>
</types>
<types>
<members>*</members>
<name>CustomLabels</name>
</types>
<types>
<members>*</members>
<name>CustomPageWebLink</name>
</types>
<types>
<members>*</members>
<name>CustomTab</name>
</types>
<types>
<members>*</members>
<name>Translations</name>
</types>
Best Answer
In order to deploy Custom Label translations, it is necessary to include Language Translation to changeset.
Check the screenshot below: