Authlogic polonizacja

Witajcie,

Skonfigurowalem locales na pl, utworzylem (skopiowalem skads) plik pl.yml w locales i otrzymuje komunikaty tego typu:

Nie zachowano z powodu jednego błędu

Błędy dotyczą następujących pól:

* You did not provide any details for authentication.

lub

Nie zachowano z powodu jednego błędu

Błędy dotyczą następujących pól:

* Password cannot be blank

Jak widac czesc jest po polsku, czesc po angielsku, chcialbym spolszczyc calosc.

W dokumentacji authlogic wyczytalem ze trzeba dodac komunikaty do pliku z locales, tak tez zrobilem ( http://pastie.org/645027 - na koncu pliku), ale jak widac powyzej, nie sa one tlumaczone, co robie zle ?

Pozdrowienia

dla password cannot be blank próbowałeś czegoś takiego?

pl: activerecord: attributes: user: password: Hasło errors: models: user: attributes: password: blank: nie może być puste

Tu może są wszystkie klucze:

pl: authlogic: error_messages: login_blank: "nie może być pusty" login_not_found: "nie istnieje" login_invalid: "może składać się wyłącznie z liter (a-z) oraz liczb (0-9)" consecutive_failed_logins_limit_exceeded: "Przekroczono dozwoloną ilość prób nieudanego logowania, dostęp do konta został zablokowany" email_invalid: "nie przypomina poprawnego adresu" password_blank: "nie może być puste" password_invalid: "niepoprawne" not_active: "Twoje konto jest nieaktywne" not_confirmed: "Twoje konto nie zostało potwierdzone" not_approved: "Twoje konto nie zostało zatwierdzone" no_authentication_details: "Nie podałeś wymaganych pól" models: user_session: attributes: user_session: login: "Nazwa użytkownika" email: "E-mail" password: "Hasło" remember_me: "Pamiętaj mnie"

Też używam Authlogic. Komunikat o błędzie E-mail jest za krótki, pojawiaja mi się podwójnie mimo że nic dziś nie piłem :wink: Podejrzewam że ActiveRecord robi swoje walidacje a Authlogic swoje, jak to naprawić ?

@Artur79, pokaż swój model User(czy jak tam sobie nazwałeś :slight_smile: )

[code=ruby]class User < ActiveRecord::Base
validates_length_of :username, :within => 3…40
validates_exclusion_of :username, :in => %w( admin Admin)
validates_acceptance_of :regulations, :on => :create

acts_as_authentic do |c|
c.login_field :email
end

attr_accessible :username, :email, :password, :password_confirmation, :regulations

attr_accessor :password_confirmation
…[/code]
jest jeszcze pusty model UserSession, z jakiegoś tutoriala to rozwiązanie skopiowałem

class UserSession < Authlogic::Session::Base end

Miałem podobny problem, kiedy również jako login_field ustawiłem e-maila.

aha, czyli jakiś bug w Authlogic? Pozostaje chyba przeparsowanie flash[:error] i wywalenie duplikatów ?

Ja też i poradziłem sobie w tłumaczeniu jeden ustawiając na “” czyli pusty. Nie najlepsze wyjście ale było.

Nie, nie, nie. Authlogic jest ok, tylko trzeba się dogrzebać tego w dokumentacji. Należy skorzytać z metod w stylu:
merge_validates_length_of_login_field_options. I wszystkie pola, z których korzysta authlogic, walidujemy z użyciem authlogica.

Więcej w authlogicowej dokumentacji:
walidacje email
walidacje loginu

Mi wystarcza taki kod.

acts_as_authentic do |c| c.ignore_blank_passwords = false c.validates_length_of_email_field_options :within => 0..100, :if => Proc.new { |u| !u.email.blank? } c.validates_length_of_login_field_options :within => 3..40, :if => Proc.new { |u| !u.login.blank? } c.validates_format_of_login_field_options :with => /\A\w[\w\.+\-_@]+\z/, :if => Proc.new { |u| !u.login.blank? } end

Authlogic coraz bardziej mnie męczy swoją magicznością i koniecznością przegrzebywania (kijowego zresztą) RDoca kiedy cokolwiek nie działa tak jak cywilizowani ludzie są przyzwyczajeni :confused:

Co w takim razie w zamian?

dzięki tjeden wygląda na to że działa

Podwójne komunikaty co do długości adresu email już się nie pojawiają ale za to jest gdy email jest już zajęty odpowiedni komunikat pojawia się dwukrotnie

acts_as_authentic do |c| c.login_field :email c.validates_length_of_email_field_options :within => 3..100, :if => Proc.new { |u| !u.email.blank? } c.validates_format_of_email_field_options :with => Authlogic::Regex.email, :if => Proc.new { |u| !u.email.blank? } end

Właśnie zaczynam dopiero obczajać authlogic, ale pewnie Artur chodzi o to że domyślnie authlogic ma zarówno walidację email_field jak i login_field. A u Ciebie to jest jedno o to samo, więc jest walidowane dwa razy. Co jest skrajnie głupie, ale jest. Musisz zajrzeć w dwa miejsca:


I albo dla login_field, albo dla email_field powyłączać walidacje ręcznie

A nie wystarczy?:

acts_as_authentic do |c| c.validate_login_field false c.login_field :email c.validates_length_of_email_field_options :within => 3..100, :if => Proc.new { |u| !u.email.blank? } c.validates_format_of_email_field_options :with => Authlogic::Regex.email, :if => Proc.new { |u| !u.email.blank? } end

Dzięki pomogło! Widzałem tą opcję ale byłem pewny że skoro ustawiam login field na email to ona nic nie da :slight_smile:

attributes: user_session: login: "Nazwa użytkownika" email: "E-mail" password: "Hasło" remember_me: "Pamiętaj mnie"
czy trzeba coś jeszcze to powyższego, żeby poprawnie już po naszemu wyświetlić login i hasło ?:

[code=ruby]

Login

<% form_for @user_session, :url => user_session_path do |f| %>
<%= f.error_messages %>
<%=f.label :login %>

<%=f.text_field :login %>



<%= f.label :password %>

<%= f.password_field :password %>



<%= f.check_box :remember_me %><%= f.label :remember_me %>



<%= f.submit “Login” %>
<% end %>[/code]
?