     @locale = App.i18n.get()
     @render()
     @bind(
-      'i18n:translation_update',
+      'i18n:translation_update_todo i18n:translation_update_list i18n:translation_update',
       =>
         @load()
     )

      data:        JSON.stringify(params)
      processData: false
      success: (data, status, xhr) ->
        App.Event.trigger('i18n:translation_update')
    )

  same: (e) =>
    e.preventDefault()
    @hasChanges = true
    field  = $(e.target).closest('tr').find('.js-Item')
    source = field.data('source')

    # remove from not translated list
    $(e.target).closest('tr').remove()

    # local update
    App.i18n.removeNotTranslated(@locale, source)

    # update runtime if same language is used
    if App.i18n.get() is @locale
      App.i18n.setMap(source, source, 'string')

    # remote update
    params =
      locale:         @locale
      source:         source
      target:         source
      target_initial: ''

    @ajax(
      id:          'translations'
      type:        'POST'
      url:         @apiPath + '/translations'
      data:        JSON.stringify(params)
      processData: false
      success: (data, status, xhr) ->
        App.Event.trigger('i18n:translation_update')
    )

class TranslationList extends App.Controller
  hasChanges: false
  events:
    'blur .js-translated input':          'updateItem'
    'click .js-translated .js-Reset':     'resetItem'

  constructor: ->
    super

        @_syncChanges(locale, locales, loader, hide)
      )

  updateOnServer: (params, event) =>

    # update runtime if same language is used
    if App.i18n.get() is params.locale
      App.i18n.setMap(params.source, params.target, params.format)

    # remove not needed attributes
    delete params.field

    if params.id
      method = 'PUT'
      url    = "#{@apiPath}/translations/#{params.id}"
    else
      method = 'POST'
      url    = "#{@apiPath}/translations"
