From 75a1051668e9b3fff228f8b84c123ee5d11ef622 Mon Sep 17 00:00:00 2001 From: wvengen Date: Fri, 22 Mar 2013 00:50:30 +0100 Subject: [PATCH] finish articles i18n, controller+model --- app/controllers/articles_controller.rb | 34 +++++++++++++------------- app/models/article.rb | 2 +- config/locales/de/de.articles.yml | 24 ++++++++++++++++++ 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/app/controllers/articles_controller.rb b/app/controllers/articles_controller.rb index 820242d6..d24e6f98 100644 --- a/app/controllers/articles_controller.rb +++ b/app/controllers/articles_controller.rb @@ -88,7 +88,7 @@ class ArticlesController < ApplicationController end end - raise "Artikel sind fehlerhaft. Bitte überprüfe Deine Eingaben." if invalid_articles + raise I18n.t('articles.update_all.error_invalid') if invalid_articles end # delete articles if params[:outlisted_articles] @@ -96,12 +96,12 @@ class ArticlesController < ApplicationController end end # Successfully done. - redirect_to supplier_articles_path(@supplier), notice: "Alle Artikel und Preise wurden aktalisiert" + redirect_to supplier_articles_path(@supplier), notice: I18n.t('articles.update_all.notice') rescue => e # An error has occurred, transaction has been rolled back. if params[:sync] - flash[:error] = "Es trat ein Fehler beim Aktualisieren des Artikels '#{current_article.name}' auf: #{e.message}" + flash[:error] = I18n.t('articles.update_all.error_update', :article => current_article.name, :msg => e.message) redirect_to(supplier_articles_path(@supplier)) else flash.now.alert = e.message @@ -112,21 +112,21 @@ class ArticlesController < ApplicationController # makes different actions on selected articles def update_selected - raise 'Du hast keine Artikel ausgewählt' if params[:selected_articles].nil? + raise I18n.t('articles.update_selected.error_nosel') if params[:selected_articles].nil? articles = Article.find(params[:selected_articles]) Article.transaction do case params[:selected_action] when 'destroy' articles.each(&:mark_as_deleted) - flash[:notice] = 'Alle gewählten Artikel wurden gelöscht' + flash[:notice] = I18n.t('articles.update_selected.notice_destroy') when 'setNotAvailable' articles.each {|a| a.update_attribute(:availability, false) } - flash[:notice] = 'Alle gewählten Artikel wurden auf "nicht verfügbar" gesetzt' + flash[:notice] = I18n.t('articles.update_selected.notice_unavail') when 'setAvailable' articles.each {|a| a.update_attribute(:availability, true) } - flash[:notice] = 'Alle gewählten Artikel wurden auf "verfügbar" gesetzt' + flash[:notice] = I18n.t('articles.update_selected.notice_avail') else - flash[:alert] = 'Keine Aktion ausgewählt!' + flash[:alert] = I18n.t('articles.update_selected.notice_noaction') end end # action succeded @@ -134,7 +134,7 @@ class ArticlesController < ApplicationController rescue => error redirect_to supplier_articles_url(@supplier, :per_page => params[:per_page]), - :alert => "Ein Fehler ist aufgetreten: #{error}" + :alert => I18n.t('errors.general_msg', :msg => error) end # lets start with parsing articles from uploaded file, yeah @@ -167,13 +167,13 @@ class ArticlesController < ApplicationController :tax => row[:tax]) # stop parsing, when an article isn't valid unless article.valid? - raise article.errors.full_messages.join(", ") + " ..in line " + (articles.index(row) + 2).to_s + raise I18n.t('articles.parse_upload.error_parse', :msg => article.errors.full_messages.join(", "), :line => (articles.index(row) + 2).to_s) end @articles << article end - flash.now[:notice] = "#{@articles.size} articles are parsed successfully." + flash.now[:notice] = I18n.t('articles.parse_upload.notice', :count => @articles.size) rescue => error - redirect_to upload_supplier_articles_path(@supplier), :alert => "An error has occurred: #{error.message}" + redirect_to upload_supplier_articles_path(@supplier), :alert => I18n.t('errors.general_msg', :msg => error.message) end end @@ -188,14 +188,14 @@ class ArticlesController < ApplicationController invalid_articles = true unless article.save end - raise "Artikel sind fehlerhaft" if invalid_articles + raise I18n.t('articles.create_from_upload.error_invalid') if invalid_articles end # Successfully done. - redirect_to supplier_articles_path(@supplier), notice: "Es wurden #{@articles.size} neue Artikel gespeichert." + redirect_to supplier_articles_path(@supplier), notice: I18n.t('articles.create_from_upload.notice', :count => @articles.size) rescue => error # An error has occurred, transaction has been rolled back. - flash.now[:error] = "An error occured: #{error.message}" + flash.now[:error] = I18n.t('errors.general_msg', :msg => error.message) render :parse_upload end end @@ -222,14 +222,14 @@ class ArticlesController < ApplicationController def sync # check if there is an shared_supplier unless @supplier.shared_supplier - redirect_to supplier_articles_url(@supplier), :alert => "#{@supplier.name} ist nicht mit einer externen Datenbank verknüpft." + redirect_to supplier_articles_url(@supplier), :alert => I18n.t('articles.sync.shared_alert', :supplier => @supplier.name) end # sync articles against external database @updated_articles, @outlisted_articles = @supplier.sync_all # convert to db-compatible-string @updated_articles.each {|a, b| a.shared_updated_on = a.shared_updated_on.to_formatted_s(:db)} if @updated_articles.empty? && @outlisted_articles.empty? - redirect_to supplier_articles_path(@supplier), :notice => "Der Katalog ist aktuell." + redirect_to supplier_articles_path(@supplier), :notice => I18n.t('articles.sync.notice') end end end diff --git a/app/models/article.rb b/app/models/article.rb index 80ef567e..334a3076 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -154,7 +154,7 @@ class Article < ActiveRecord::Base # Checks if the article is in use before it will deleted def check_article_in_use - raise self.name.to_s + " kann nicht gelöscht werden. Der Artikel befindet sich in einer laufenden Bestellung!" if self.in_open_order + raise I18n.t('articles.model.error_in_use', :article => self.name.to_s) if self.in_open_order end # Create an ArticlePrice, when the price-attr are changed. diff --git a/config/locales/de/de.articles.yml b/config/locales/de/de.articles.yml index fdbd0a17..232e73bd 100644 --- a/config/locales/de/de.articles.yml +++ b/config/locales/de/de.articles.yml @@ -92,3 +92,27 @@ de: submit: 'Speichere neue Artikel für %{supplier}' or_cancel: 'oder abbrechen' + # used by controller + update_all: + notice: 'Alle Artikel und Preise wurden aktualisiert' + error_invalid: 'Artikel sind fehlerhaft. Bitte überprüfe Deine Eingaben.' + error_update: "Es trat ein Fehler beim Aktualisieren des Artikels '%{article}' auf: %{msg}" + update_selected: + notice_destroy: 'Alle gewählten Artikel wurden gelöscht' + notice_unavail: 'Alle gewählten Artikel wurden auf "nicht verfügbar" gesetzt' + notice_avail: 'Alle gewählten Artikel wurden auf "verfügbar" gesetzt' + notice_noaction: 'Keine Aktion ausgewählt!' + error_nosel: 'Du hast keine Artikel ausgewählt' + parse_upload: + notice: '%{count} Artikel sind erfolgreich analysiert.' + error_parse: '%{msg} ... in Zeile %{line}' + create_from_upload: + notice: 'Es wurden %{count} neue Artikel gespeichert.' + error_invalid: 'Artikel sind fehlerhaft' + sync: + shared_alert: '%{supplier} ist nicht mit einer externen Datenbank verknüpft.' + notice: 'Der Katalog ist aktuell' + + # used by model + model: + error_in_use: '%{article} kann nicht gelöscht werden. Der Artikel befindet sich in einer laufenden Bestellung!'