let add_translation t loc singular plural domain =
  let location =
    let (pos1,_) = loc
    in
    (!Pcaml.input_file,pos1.Lexing.pos_lnum)
  in
  let translation =
    match plural with 
      Some plural -> ([location],PoPlural([singular],[plural],[[""];[""]]))
    | None -> ([location],PoSingular([singular],[""]))
  in
  match domain with 
    Some domain -> 
      add_po_translation_domain domain t translation
  | None -> 
      (
        match !default_textdomain with
          Some domain ->
            add_po_translation_domain domain t translation
        | None ->
            add_po_translation_no_domain t translation
      )