title: In Sitecore 7.5 how to programmatically create media items with language versioning?
body: <p>I want to be able to create/update media items in code and also use language versioning.  Here are more specifics.  I have a Product content item.  When that item is saved I want to be able to generate a PDF version of that item and save it to the media library.  If the PDF version already exists in the media library I need to be able to update it.  In addition this is a multi-language site.  So if someone saves the French version of the Product content item I need to be able to generate the French version of the PDF and only save/update the French version of the associated PDF in the media library - not touch any of the other language versions of the PDF.  I can't seem to figure out how to do this.  The code that I have currently does the following:  if I save the English version of the Product then it creates and English version of the PDF.  But then if I save the French version of the Product, it creates a French version of the PDF and removes the English version of the PDF.</p>
  
  <p>Anyone know how to do this?</p>
  
  <pre><code>    public static Item AddMediaItem(byte[] fileBuffer, string fullMediaPath, string fileNameWithExtension, string title, Language language)
      {
          try
          {
              var db = Sitecore.Configuration.Factory.GetDatabase("master");
              var options = new MediaCreatorOptions();
              options.FileBased = false;
              options.IncludeExtensionInItemName = false;
              options.KeepExisting = false;
              options.Versioned = true;
              options.Destination = fullMediaPath;
              options.Database = db;
              options.Language = language;
  
              var creator = new MediaCreator();
              var fileStream = new MemoryStream(fileBuffer);
  
              var pdfItem = db.GetItem(fullMediaPath, language);
              if (pdfItem != null)
              {
                  var updatedItem = creator.AttachStreamToMediaItem(fileStream, fullMediaPath, fileNameWithExtension,
                      options);
                  updatedItem.Editing.BeginEdit();
                  updatedItem.Fields["Title"].Value = title;
                  updatedItem.Editing.EndEdit();
                  return updatedItem;
              }
              else
              {
                  //Create a new item
                  var newItem = creator.CreateFromStream(fileStream, fileNameWithExtension, options);
                  newItem.Editing.BeginEdit();
                  newItem.Fields["Title"].Value = title;
                  newItem.Editing.EndEdit();
                  return newItem;
              }
          }
          catch (Exception ex)
          {
              return null;
          }
      }
  </code></pre>