Commits

Anonymous committed b47a438

Localization plugin removed (replaced with GLoc)

Comments (0)

Files changed (92)

redmine/app/controllers/account_controller.rb

         self.logged_in_user = user
         redirect_back_or_default :controller => 'account', :action => 'my_page'
       else
-        flash[:notice] = l(:notice_account_invalid_creditentials)
+        flash.now[:notice] = l(:notice_account_invalid_creditentials)
       end
     end
   end
     @user = self.logged_in_user
     if request.post? and @user.update_attributes(@params[:user])
       set_localization
-      flash[:notice] = l(:notice_account_updated)
+      flash.now[:notice] = l(:notice_account_updated)
       self.logged_in_user.reload
     end
   end
   # Change logged in user's password
   def change_password
     @user = self.logged_in_user
+    flash.now[:notice] = l(:notice_can_t_change_password) and render :action => 'my_account' and return if @user.auth_source_id
     if @user.check_password?(@params[:password])
       @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
-      flash[:notice] = l(:notice_account_password_updated) if @user.save
+      flash.now[:notice] = l(:notice_account_password_updated) if @user.save
     else
-      flash[:notice] = l(:notice_account_wrong_password)
+      flash.now[:notice] = l(:notice_account_wrong_password)
     end
     render :action => 'my_account'
   end
       return
     else
       if request.post?
-        user = User.find_by_mail(params[:mail])      
-        flash[:notice] = l(:notice_account_unknown_email) and return unless user
+        user = User.find_by_mail(params[:mail])
+        # user not found in db
+        flash.now[:notice] = l(:notice_account_unknown_email) and return unless user
+        # user uses an external authentification
+        flash.now[:notice] = l(:notice_can_t_change_password) and return if user.auth_source_id
+        # create a new token for password recovery
         token = Token.new(:user => user, :action => "recovery")
         if token.save
-          Mailer.set_language_if_valid(Localization.lang)
+          # send token to user via email
+          Mailer.set_language_if_valid(user.language)
           Mailer.deliver_lost_password(token)
           flash[:notice] = l(:notice_account_lost_email_sent)
           redirect_to :action => 'login'
         @user.custom_values = @custom_values
         token = Token.new(:user => @user, :action => "register")
         if @user.save and token.save
-          Mailer.set_language_if_valid(Localization.lang)
+          Mailer.set_language_if_valid(@user.language)
           Mailer.deliver_register(token)
           flash[:notice] = l(:notice_account_register_done)
           redirect_to :controller => ''

redmine/app/controllers/application.rb

   end 
   
   def set_localization
-    Localization.lang = begin
-      if self.logged_in_user and Localization.langs.keys.include? self.logged_in_user.language
+    lang = begin
+      if self.logged_in_user and self.logged_in_user.language and !self.logged_in_user.language.empty? and GLoc.valid_languages.include? self.logged_in_user.language.to_sym
         self.logged_in_user.language
       elsif request.env['HTTP_ACCEPT_LANGUAGE']
         accept_lang = HTTPUtils.parse_qvalues(request.env['HTTP_ACCEPT_LANGUAGE']).first.split('-').first
-        if Localization.langs.keys.include? accept_lang
+        if accept_lang and !accept_lang.empty? and GLoc.valid_languages.include? accept_lang.to_sym
           accept_lang
         end
       end
     rescue
       nil
     end || $RDM_DEFAULT_LANG
-
-    set_language_if_valid(Localization.lang)
-    
+    set_language_if_valid(lang)    
   end
   
   def require_login

redmine/app/controllers/enumerations_controller.rb

   def create
     @enumeration = Enumeration.new(params[:enumeration])
     if @enumeration.save
-      flash[:notice] = 'Enumeration was successfully created.'
+      flash[:notice] = l(:notice_successful_create)
       redirect_to :action => 'list', :opt => @enumeration.opt
     else
       render :action => 'new'
   def update
     @enumeration = Enumeration.find(params[:id])
     if @enumeration.update_attributes(params[:enumeration])
-      flash[:notice] = 'Enumeration was successfully updated.'
+      flash[:notice] = l(:notice_successful_update)
       redirect_to :action => 'list', :opt => @enumeration.opt
     else
       render :action => 'edit'
   end
 
   def destroy
-    Enumeration.find(params[:id]).destroy
+    Enumeration.find(params[:id]).destroy
+    flash[:notice] = l(:notice_successful_delete)
     redirect_to :action => 'list'
   rescue
     flash[:notice] = "Unable to delete enumeration"

redmine/app/controllers/help_controller.rb

       end
     end
     # choose language according to available help translations
-    lang = (@help_config['langs'].include? Localization.lang) ? Localization.lang : @help_config['langs'].first
+    lang = (@help_config['langs'].include? current_language) ? current_language : @help_config['langs'].first
 	
     if template
       redirect_to "/manual/#{lang}/#{template}"

redmine/app/controllers/projects_controller.rb

     CSV::Writer.generate(export, ',') do |csv|
       csv << %w(Id Status Tracker Subject Author Created Updated)
       @issues.each do |issue|
-        csv << [issue.id, issue.status.name, issue.tracker.name, issue.subject, issue.author.display_name, _('(time)', issue.created_on),  _('(time)', issue.updated_on)]
+        csv << [issue.id, issue.status.name, issue.tracker.name, issue.subject, issue.author.display_name, l_datetime(issue.created_on),  l_datetime(issue.updated_on)]
       end
     end
     export.rewind

redmine/app/controllers/roles_controller.rb

         redirect_to :action => 'list'
       end
     end
-    @permissions = Permission.find(:all, :order => 'sort ASC')
+    @permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
   end
 
   def edit
       flash[:notice] = 'Role was successfully updated.'
       redirect_to :action => 'list'
     end
-    @permissions = Permission.find(:all, :order => 'sort ASC')
+    @permissions = Permission.find(:all, :conditions => ["is_public=?", false], :order => 'sort ASC')
   end
 
   def destroy
     redirect_to :action => 'list'
   end
   
-  def workflow
-    
+  def workflow    
     @role = Role.find_by_id(params[:role_id])
     @tracker = Tracker.find_by_id(params[:tracker_id])    
     

redmine/app/helpers/application_helper.rb

   end
 
   def format_date(date)
-    _('(date)', date) if date
+    l_date(date) if date
   end
   
   def format_time(time)
-    _('(time)', time) if time
+    l_datetime(time) if time
   end
   
   def pagination_links_full(paginator, options={}, html_options={})
     html =''
-    html << link_to(('&#171; ' + _('Previous') ), { :page => paginator.current.previous }) + ' ' if paginator.current.previous
+    html << link_to(('&#171; ' + l(:label_previous) ), { :page => paginator.current.previous }) + ' ' if paginator.current.previous
     html << (pagination_links(paginator, options, html_options) || '')
-    html << ' ' + link_to((_('Next') + ' &#187;'), { :page => paginator.current.next }) if paginator.current.next
+    html << ' ' + link_to((l(:label_next) + ' &#187;'), { :page => paginator.current.next }) if paginator.current.next
     html  
   end
   
       ""
     end
   end
+  
+  def lang_options_for_select
+    GLoc.valid_languages.collect {|lang| [ l_lang_name(lang.to_s, lang), lang.to_s]}
+  end
 end

redmine/app/helpers/search_filter_helper.rb

 	
   def search_filter_init_list_issues
 	search_filter_criteria('status_id') { 
-    [ [_('[Open]'), "O", ["issue_statuses.is_closed=?", false]],
-      [_('[All]'), "A", nil]
+    [ [('['+l(:label_open_issues_plural)+']'), "O", ["issue_statuses.is_closed=?", false]],
+      [('['+l(:label_closed_issues_plural)+']'), "C", ["issue_statuses.is_closed=?", true]],
+      [('['+l(:label_all)+']'), "A", nil]
     ] + IssueStatus.find(:all).collect {|s| [s.name, s.id, ["issues.status_id=?", s.id]] }                                                      
     }
     
     search_filter_criteria('tracker_id') { 
-    [ [_('[All]'), "A", nil]
+    [ [('['+l(:label_all)+']'), "A", nil]
     ] + Tracker.find(:all).collect {|s| [s.name, s.id, ["issues.tracker_id=?", s.id]] }                                                      
     }
 	
     search_filter_criteria('priority_id') { 
-    [ [_('[All]'), "A", nil]
+    [ [('['+l(:label_all)+']'), "A", nil]
     ] + Enumeration.find(:all, :conditions => ['opt=?','IPRI']).collect {|s| [s.name, s.id, ["issues.priority_id=?", s.id]] }                                                      
     }
     
     search_filter_criteria('category_id') { 
-    [ [_('[All]'), "A", nil],
-      [_('[None]'), "N", ["issues.category_id is null"]]
+    [ [('['+l(:label_all)+']'), "A", nil],
+      [('['+l(:label_none)+']'), "N", ["issues.category_id is null"]]
     ] + @project.issue_categories.find(:all).collect {|s| [s.name, s.id, ["issues.category_id=?", s.id]] }                                                      
     }    
 
     search_filter_criteria('fixed_version_id') { 
-    [ [_('[All]'), "A", nil],
-      [_('[None]'), "N", ["issues.fixed_version_id is null"]]
+    [ [('['+l(:label_all)+']'), "A", nil],
+      [('['+l(:label_none)+']'), "N", ["issues.fixed_version_id is null"]]
     ] + @project.versions.collect {|s| [s.name, s.id, ["issues.fixed_version_id=?", s.id]] }                                                      
     }
 
     search_filter_criteria('assigned_to_id') { 
-    [ [_('[All]'), "A", nil],
-      [_('[None]'), "N", ["issues.assigned_to_id is null"]]
+    [ [('['+l(:label_all)+']'), "A", nil],
+      [('['+l(:label_none)+']'), "N", ["issues.assigned_to_id is null"]]
     ] + @project.users.collect {|s| [s.display_name, s.id, ["issues.assigned_to_id=?", s.id]] }                                                      
     }
     
     search_filter_criteria('subproject_id') { 
-    [ [_('[None]'), "N", ["issues.project_id=?", @project.id]],
-      [_('[All]'), "A", ["(issues.project_id=? or projects.parent_id=?)", @project.id, @project.id]]
+    [ [('['+l(:label_none)+']'), "N", ["issues.project_id=?", @project.id]],
+      [('['+l(:label_all)+']'), "A", ["(issues.project_id=? or projects.parent_id=?)", @project.id, @project.id]]
     ]                                                     
     }  
   end

redmine/app/models/auth_source_ldap.rb

     # get user's DN
     ldap_con = initialize_ldap_con(self.account, self.account_password)
     login_filter = Net::LDAP::Filter.eq( self.attr_login, login ) 
-    object_filter = Net::LDAP::Filter.eq( "objectClass", "organizationalPerson" ) 
+    object_filter = Net::LDAP::Filter.eq( "objectClass", "*" ) 
     dn = String.new
     ldap_con.search( :base => self.base_dn, 
                      :filter => object_filter & login_filter, 

redmine/app/models/enumeration.rb

 	validates_presence_of :opt, :name
 	validates_uniqueness_of :name, :scope => [:opt]
 	
-	OPTIONS = [
-		["Issue priorities", "IPRI"],
-		["Document categories", "DCAT"]
-	].freeze
+	OPTIONS = {
+	  "IPRI" => :enumeration_issue_priorities,
+      "DCAT" => :enumeration_doc_categories
+	}.freeze
 	
 	def self.get_values(option)
 		find(:all, :conditions => ['opt=?', option])
 	end
-
-  def name
-    _ self.attributes['name']
-  end
   
 private
   def check_integrity

redmine/app/models/issue_status.rb

     statuses
   end
   
-  def name
-    _ self.attributes['name']
-  end
-  
 private
   def check_integrity
     raise "Can't delete status" if Issue.find(:first, :conditions => ["status_id=?", self.id]) or IssueHistory.find(:first, :conditions => ["status_id=?", self.id])

redmine/app/models/mailer.rb

     @from           = 'redmine@somenet.foo'
     @subject        = "redMine account activation"
     @body['token']  = token
-  end  
-
+  end
 end

redmine/app/models/member.rb

 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 class Member < ActiveRecord::Base
-	belongs_to :user
-	belongs_to :role
-	belongs_to :project
-	
-	validates_presence_of :role, :user, :project
+  belongs_to :user
+  belongs_to :role
+  belongs_to :project
+
+  validates_presence_of :role, :user, :project
   validates_uniqueness_of :user_id, :scope => :project_id
-	
-	def name
-		self.user.display_name
-	end
+
+  def name
+    self.user.display_name
+  end
 end

redmine/app/models/news.rb

 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 class News < ActiveRecord::Base
-	belongs_to :project
-	belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
-	
-	validates_presence_of :title, :description
-
-	# returns last created news
-	def self.latest
-		find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")	
-	end	
+  belongs_to :project
+  belongs_to :author, :class_name => 'User', :foreign_key => 'author_id'
+  
+  validates_presence_of :title, :description
+  
+  # returns last created news
+  def self.latest
+    find(:all, :limit => 5, :include => [ :author, :project ], :order => "news.created_on DESC")	
+  end
 end

redmine/app/models/permission.rb

 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 class Permission < ActiveRecord::Base
-	has_and_belongs_to_many :roles
-  
-	validates_presence_of :controller, :action, :description
-  
+  has_and_belongs_to_many :roles
+
+  validates_presence_of :controller, :action, :description
+
   GROUPS = {
-    100 => "Project",
-		200 => "Membres",
-    300 => "Versions",
-    400 => "Issue categories",
-		1000 => "Issues",
-		1100 => "News",
-		1200 => "Documents",
-    1300 => "Files",
-	}.freeze
+    100 => :label_project,
+    200 => :label_member_plural,
+    300 => :label_version_plural,
+    400 => :label_issue_category_plural,
+    1000 => :label_issue_plural,
+    1100 => :label_news_plural,
+    1200 => :label_document_plural,
+    1300 => :label_attachment_plural,
+  }.freeze
   
   @@cached_perms_for_public = nil
   @@cached_perms_for_roles = nil
   
- 	def name
-		self.controller + "/" + self.action
-	end
+  def name
+    self.controller + "/" + self.action
+  end
   
   def group_id
     (self.sort / 100)*100

redmine/app/models/role.rb

 
 class Role < ActiveRecord::Base
   before_destroy :check_integrity  
-	has_and_belongs_to_many :permissions
+  has_and_belongs_to_many :permissions
   has_many :workflows, :dependent => true
   has_many :members
-	
-	validates_presence_of :name
-	validates_uniqueness_of :name
-  
+
+  validates_presence_of :name
+  validates_uniqueness_of :name
+
 private
   def check_integrity
     raise "Can't delete role" if Member.find(:first, :conditions =>["role_id=?", self.id])

redmine/app/models/tracker.rb

   validates_presence_of :name
   validates_uniqueness_of :name
   
-  def name
-    _ self.attributes['name']
-  end
-  
 private
   def check_integrity
     raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])

redmine/app/models/user.rb

         # user has an external authentication method
         return nil unless user.auth_source.authenticate(login, password)
       else
-        # local authentication
+        # authentication with local password
         return nil unless User.hash_password(password) == user.hashed_password        
       end
     else
         onthefly.language = $RDM_DEFAULT_LANG
         if onthefly.save
           user = find(:first, :conditions => ["login=?", login])
+          logger.info("User '#{user.login}' created on the fly.") if logger
         end
       end
     end    

redmine/app/views/account/my_account.rhtml

   <%= text_field 'user', 'mail' %></p>
   
   <p><label for="user_language"><%=l(:field_language)%></label><br/>
-  <%= select("user", "language", Localization.langs.invert) %></p>
+  <%= select("user", "language", lang_options_for_select) %></p>
   <!--[eoform:user]-->
 
   <p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
 </div>
 
 
-<div class="splitcontentright">
+<div class="splitcontentright">
+<% unless @user.auth_source_id %>
   <div class="box">
   <h3><%=l(:field_password)%></h3>
   &nbsp;
 
   <center><%= submit_tag l(:button_save) %></center>
   <%= end_form_tag %>
-  </div>
+  </div>
+<% end %>
 </div>

redmine/app/views/account/register.rhtml

 <h2><%=l(:label_register)%></h2>
 
 <%= start_form_tag %>
-
 <%= error_messages_for 'user' %>
 
 <div class="box">
 <%= text_field 'user', 'mail'  %></p>
 
 <p><label for="user_language"><%=l(:field_language)%></label><br/>
-<%= select("user", "language", Localization.langs.invert) %></p>
+<%= select("user", "language", lang_options_for_select) %></p>
 
-<% for custom_value in @custom_values %>
-  <div style="float:left;margin-right:10px;">
-	<p><%= content_tag "label", custom_value.custom_field.name %>
-	<% if custom_value.custom_field.is_required? %><span class="required">*</span><% end %>
-	<br />
-	<%= custom_field_tag custom_value %></p>
-  </div>
+<% for custom_value in @custom_values %>
+	<p><%= custom_field_tag_with_label custom_value %></p>
 <% end %>
 
-<div style="clear: both;"></div>
-
 <p><%= check_box 'user', 'mail_notification' %> <label for="user_mail_notification"><%=l(:field_mail_notification)%></label></p>
 <!--[eoform:user]-->
 </div>
 
-  <%= submit_tag l(:button_submit) %>
+<%= submit_tag l(:button_submit) %>
 <%= end_form_tag %>

redmine/app/views/admin/info.rhtml

-<h2><%=_('Information')%></h2>
+<h2><%=l(:label_information_plural)%></h2>
 
 <p><%=l(:field_version)%>: <strong><%= RDM_APP_NAME %> <%= RDM_APP_VERSION %></strong></p>
 

redmine/app/views/custom_fields/list.rhtml

 	<th><%=l(:field_field_format)%></th>
 	<th><%=l(:field_is_required)%></th>
 	<th><%=l(:field_is_for_all)%></th>
-	<th><%=_('Used by')%></th>
+	<th><%=l(:label_used_by)%></th>
 	<th></th>
 </tr>  
 <% for custom_field in @custom_fields %>

redmine/app/views/documents/_form.rhtml

 <p><label for="document_title"><%=l(:field_title)%> <span class="required">*</span></label><br />
 <%= text_field 'document', 'title', :size => 60 %></p>
 
-<p><label for="document_description"><%=l(:field_description)%> <span class="required">*</span></label><br />
+<p><label for="document_description"><%=l(:field_description)%></label><br />
 <%= text_area 'document', 'description', :cols => 60, :rows => 5 %></p>
 <!--[eoform:document]-->
 

redmine/app/views/documents/edit.rhtml

-<h2><%=_('Document')%></h2>
+<h2><%=l(:label_document)%></h2>
 
 <%= start_form_tag :action => 'edit', :id => @document %>
   <%= render :partial => 'form' %>
-  <%= submit_tag _('Save') %>
+  <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
 
 

redmine/app/views/documents/show.rhtml

 <h2><%= @document.title %></h2>
 
-<strong><%=_('Description')%>:</strong> <%= @document.description %><br />
-<strong><%=_('Category')%>:</strong> <%= @document.category.name %><br />
+<strong><%=l(:field_description)%>:</strong> <%= @document.description %><br />
+<strong><%=l(:field_category)%>:</strong> <%= @document.category.name %><br />
 <br />
 
 <% if authorize_for('documents', 'edit') %>
-  <%= start_form_tag ({ :controller => 'documents', :action => 'edit', :id => @document }, :method => 'get' ) %>
-  <%= submit_tag _('Edit') %>
+  <%= start_form_tag({ :controller => 'documents', :action => 'edit', :id => @document }, :method => 'get' ) %>
+  <%= submit_tag l(:button_edit) %>
   <%= end_form_tag %> 
 <% end %>
 
 <% if authorize_for('documents', 'destroy') %>
-  <%= start_form_tag ({ :controller => 'documents', :action => 'destroy', :id => @document } ) %>
-  <%= submit_tag _('Delete') %>
+  <%= start_form_tag({ :controller => 'documents', :action => 'destroy', :id => @document } ) %>
+  <%= submit_tag l(:button_delete) %>
   <%= end_form_tag %>  
 <% end %>
 
   <td><%= link_to attachment.filename, :action => 'download', :id => @document, :attachment_id => attachment %></td>
   <td align="center"><%= format_date(attachment.created_on) %></td>
   <td align="center"><%= attachment.author.display_name %></td>
-  <td><%= human_size(attachment.filesize) %><br /><%= attachment.downloads %> <%=_('download')%>(s)</td>
+  <td><%= human_size(attachment.filesize) %><br /><%= lwr(:label_download, attachment.downloads) %></td>
   
   <% if authorize_for('documents', 'destroy_attachment') %>
   <td align="center">
     <%= start_form_tag :action => 'destroy_attachment', :id => @document, :attachment_id => attachment %>
-    <%= submit_tag _('Delete'), :class => "button-small" %>
+    <%= submit_tag l(:button_delete), :class => "button-small" %>
     <%= end_form_tag %>
   </tr>
   <% end %>
 
 <% if authorize_for('documents', 'add_attachment') %>
   <%= start_form_tag ({ :controller => 'documents', :action => 'add_attachment', :id => @document }, :multipart => true) %>
-  <%=_('Add file')%><br /><%= file_field 'attachment', 'file'  %>
-  <%= submit_tag _('Add') %>
+  <%=l(:label_attachment_new)%><br /><%= file_field 'attachment', 'file'  %>
+  <%= submit_tag l(:button_add) %>
   <%= end_form_tag %> 
 <% end %>
 

redmine/app/views/enumerations/_form.rhtml

 <!--[form:optvalue]-->
 <%= hidden_field 'enumeration', 'opt'  %>
 
-<p><label for="enumeration_name"><%=_('Name')%></label><br/>
+<p><label for="enumeration_name"><%=l(:field_name)%></label><br/>
 <%= text_field 'enumeration', 'name'  %></p>
 <!--[eoform:optvalue]-->
 

redmine/app/views/enumerations/edit.rhtml

-<h2><%=_('Enumerations')%></h2>
+<h2><%=l(:label_enumerations)%></h2>
 
 <%= start_form_tag :action => 'update', :id => @enumeration %>
   <%= render :partial => 'form' %>
-  <%= submit_tag _('Save') %>
+  <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>
 
 <%= start_form_tag :action => 'destroy', :id => @enumeration %>
-  <%= submit_tag _('Delete') %>
+  <%= submit_tag l(:button_delete) %>
 <%= end_form_tag %>

redmine/app/views/enumerations/list.rhtml

-<h2><%=_('Enumerations')%></h2>
+<h2><%=l(:label_enumerations)%></h2>
 
-<% for option in Enumeration::OPTIONS %>
+<% Enumeration::OPTIONS.each do |option, name| %>
 
-	<% if @params[:opt]==option[1] %>	
+	<% if @params[:opt]==option %>	
   
-		<p><%= image_tag 'dir_open' %> <b><%=_ option[0] %></b></p>		
+		<p><%= image_tag 'dir_open' %> <b><%= l(name) %></b></p>		
 		<ul>
-		<% for value in Enumeration::find(:all, :conditions => [ "opt = ?", option[1]]) %>			
+		<% for value in Enumeration.find(:all, :conditions => ["opt = ?", option]) %>			
 			<li><%= link_to value.name, :action => 'edit', :id => value %></li>	
 		<% end %>
     </ul>
     <ul>
-      <li><%= link_to ('&#187; ' + _('New')), :action => 'new', :opt => option[1] %></li>
+      <li><%= link_to ('&#187; ' + l(:label_new)), :action => 'new', :opt => option %></li>
     </ul>
     
 	<% else %>	
-		<p><%= image_tag 'dir' %> <%= link_to _(option[0]), :opt => option[1] %></p>		
+		<p><%= image_tag 'dir' %> <%= link_to l(name), :opt => option %></p>		
 	<% end %>
   
-<% end %>
-
+<% end %>

redmine/app/views/enumerations/new.rhtml

-<h2><%=_('New enumeration')%></h2>
+<h2><%=l(:label_enumeration_new)%></h2>
 
 <%= start_form_tag :action => 'create' %>
   <%= render :partial => 'form' %>
-  <%= submit_tag _('Create') %>
+  <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>

redmine/app/views/issue_categories/_form.rhtml

 <%= error_messages_for 'issue_category' %>
 
 <!--[form:issue_category]-->
-<p><label for="issue_category_name"><%=_('Name')%></label><br/>
+<p><label for="issue_category_name"><%l(:field_name)%></label><br/>
 <%= text_field 'issue_category', 'name'  %></p>
 <!--[eoform:issue_category]-->
 

redmine/app/views/issue_categories/edit.rhtml

-<h2>Editing issue category</h2>
+<h2><%=l(:label_issue_category)%></h2>
 
 <%= start_form_tag :action => 'edit', :id => @category %>
   <%= render :partial => 'form' %>
-  <%= submit_tag _('Save') %>
+  <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>

redmine/app/views/issue_statuses/_form.rhtml

 <%= error_messages_for 'issue_status' %>
 
 <!--[form:issue_status]-->
-<p><label for="issue_status_name"><%=_('Name')%></label> <span class="required">*</span><br/>
+<p><label for="issue_status_name"><%=l(:field_name)%></label> <span class="required">*</span><br/>
 <%= text_field 'issue_status', 'name'  %></p>
 
 <p><%= check_box 'issue_status', 'is_closed' %>
-<label for="issue_status_is_closed"><%=_('Issue closed')%></label></p>
+<label for="issue_status_is_closed"><%=l(:field_is_closed)%></label></p>
 
 <p><%= check_box 'issue_status', 'is_default' %>
-<label for="issue_status_is_default"><%=_('Default status')%></label></p>
+<label for="issue_status_is_default"><%=l(:field_is_default)%></label></p>
 
-<p><label for="issue_status_html_color"><%=_('Color')%></label>
+<p><label for="issue_status_html_color"><%=l(:field_html_color)%></label>
 #<%= text_field 'issue_status', 'html_color', :maxlength => 6 %> <span class="required">*</span></p>
 
 <!--[eoform:issue_status]-->

redmine/app/views/issue_statuses/edit.rhtml

-<h2><%=_('Issue status')%></h2>
+<h2><%=l(:label_issue_status)%></h2>
 
 <%= start_form_tag :action => 'update', :id => @issue_status %>
   <%= render :partial => 'form' %>
-  <%= submit_tag _('Save') %>
+  <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>

redmine/app/views/issue_statuses/list.rhtml

-<h2><%=_('Issue statuses')%></h2>
+<h2><%=l(:label_issue_status_plural)%></h2>
  
 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
   <tr class="ListHead">
-  <th><%=_('Status')%></th>
-  <th><%=_('Default status')%></th>
-  <th><%=_('Issue closed')%></th>
-  <th><%=_('Color')%></th>
+  <th><%=l(:field_status)%></th>
+  <th><%=l(:field_is_default)%></th>
+  <th><%=l(:field_is_closed)%></th>
+  <th><%=l(:field_html_color)%></th>
   <th></th>
   </tr>
   
   <td bgcolor="#<%= status.html_color %>">&nbsp</td>  
   <td align="center">
     <%= start_form_tag :action => 'destroy', :id => status %>
-    <%= submit_tag _('Delete'), :class => "button-small" %>
+    <%= submit_tag l(:button_delete), :class => "button-small" %>
     <%= end_form_tag %>
   </td>
   </tr>
 <%= pagination_links_full @issue_status_pages %>
 <br />
 
-<%= link_to '&#187; ' + _('New issue status'), :action => 'new' %>
+<%= link_to '&#187; ' + l(:label_issue_status_new), :action => 'new' %>

redmine/app/views/issue_statuses/new.rhtml

-<h2><%=_('New issue status')%></h2>
+<h2><%=l(:label_issue_status_new)%></h2>
 
 <%= start_form_tag :action => 'create' %>
   <%= render :partial => 'form' %>
-  <%= submit_tag _('Create') %>
+  <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>

redmine/app/views/issues/_list_simple.rhtml

 <% if issues.length > 0 %>
-	<table cellspacing="0" cellpadding="1" width="100%" border="0" class="listTable">
-		<tr><td>
-		<table width="100%" border="0" cellspacing="1" cellpadding="2" class="listTableContent">		
-			<tr class="ListHead">	
-				<th>#</th>
-				<th><%=_('Tracker')%></th>
-				<th><%=_('Subject')%></th>
-			</tr>	
-			<% for issue in issues %>
-			<tr bgcolor="#<%= issue.status.html_color %>">
-				<td align="center">
-					<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %><br />
-				</td>
-				<td><p class="small"><%= issue.project.name %> - <%= issue.tracker.name %><br />
-          <%= issue.status.name %> - <%= format_time(issue.updated_on) %></p></td>
-				<td>
-          <p class="small"><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></p>
-        </td>
-			</tr>
-			<% end %>
-		</table>
-		</td>
+<table cellspacing="0" cellpadding="1" width="100%" border="0" class="listTable">
+	<tr><td>
+	<table width="100%" border="0" cellspacing="1" cellpadding="2" class="listTableContent">		
+		<tr class="ListHead">	
+		<th>#</th>
+		<th><%=l(:field_tracker)%></th>
+		<th><%=l(:field_subject)%></th>
 		</tr>	
-	</table>
+		<% for issue in issues %>
+		<tr bgcolor="#<%= issue.status.html_color %>">
+			<td align="center">
+				<%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %><br />
+			</td>
+			<td><p class="small"><%= issue.project.name %> - <%= issue.tracker.name %><br />
+                <%= issue.status.name %> - <%= format_time(issue.updated_on) %></p></td>
+			<td>
+                <p class="small"><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></p>
+            </td>
+		</tr>
+		<% end %>
+	</table>
+	</td>
+	</tr>	
+</table>
 <% else %>
-	<%=_('No issue')%>
+	<i><%=l(:label_no_data)%></i>
 <% end %>

redmine/app/views/issues/change_status.rhtml

-<h2><%=_('Issue')%> #<%= @issue.id %>: <%= @issue.subject %></h2>
+<h2><%=l(:label_issue)%> #<%= @issue.id %>: <%= @issue.subject %></h2>
 
 <%= error_messages_for 'history' %>
 <%= start_form_tag :action => 'change_status', :id => @issue %>
 <%= hidden_field 'history', 'status_id' %>
 
 <div class="box">
-<p><%=_('New status')%>: <b><%= @history.status.name %></b></p>
+<p><%=l(:label_issue_status_new)%>: <b><%= @history.status.name %></b></p>
 
 <div>
-<p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
+<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
 <select name="issue[assigned_to_id]">
 <option value=""></option>
 <%= options_from_collection_for_select @assignable_to, "id", "display_name", @issue.assigned_to_id %></p>
 </select></p>
 </div>
 
-<p><label for="issue_fixed_version"><%=_('Fixed in version')%></label><br/>
+<p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
 <select name="issue[fixed_version_id]">
 <option value="">--none--</option>
 <%= options_from_collection_for_select @issue.project.versions, "id", "name", @issue.fixed_version_id %>
 </select></p>
 
-<p><label for="history_notes"><%=_('Notes')%></label><br />
+<p><label for="history_notes"><%=l(:field_notes)%></label><br />
 <%= text_area 'history', 'notes', :cols => 60, :rows => 10  %></p>
 </div>
-
 
-<%= submit_tag _('Save') %>
+<%= submit_tag l(:button_save) %>
 <%= end_form_tag %>

redmine/app/views/issues/edit.rhtml

-<h2><%=_@issue.tracker.name%> #<%= @issue.id %> - <%= @issue.subject %></h2>
+<h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
 
 <%= error_messages_for 'issue' %>
 <%= start_form_tag :action => 'edit', :id => @issue %>
 
 <div class="box">
 <!--[form:issue]-->
-<p><%=_('Status')%>: <b><%= @issue.status.name %></b></p>
+<p><%=l(:field_status)%>: <b><%= @issue.status.name %></b></p>
 
 <div style="float:left;margin-right:10px;">
-<p><label for="issue_priority_id"><%=_('Priority')%> <span class="required">*</span></label><br/>
+<p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br/>
 <select name="issue[priority_id]">
 <%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
 </select></p>
 </div>
 
 <div style="float:left;margin-right:10px;">
-<p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
+<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br/>
 <select name="issue[assigned_to_id]">
 <option value=""></option>
 <%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
 </div>
 
 <div>
-<p><label for="issue_category_id"><%=_('Category')%></label><br/>
+<p><label for="issue_category_id"><%=l(:field_category)%></label><br/>
 <select name="issue[category_id]">
 <option value=""></option>
 <%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %></p>
 </select></p>
 </div>
 
-<p><label for="issue_subject"><%=_('Subject')%></label><span class="required">*</span><br/>
+<p><label for="issue_subject"><%=l(:field_subject)%></label><span class="required">*</span><br/>
 <%= text_field 'issue', 'subject', :size => 60  %></p>
 
-<p><label for="issue_description"><%=_('Description')%></label><span class="required">*</span><br/>
+<p><label for="issue_description"><%=l(:field_description)%></label><span class="required">*</span><br/>
 <%= text_area 'issue', 'description', :cols => 60, :rows => 10  %></p>
+
+<p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
+<%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
 
 <% for custom_value in @custom_values %>
 	<p><%= custom_field_tag_with_label custom_value %></p>
 <% end %>
 
-<p><label for="issue_fixed_version"><%=_('Fixed in version')%></label><br/>
+<p><label for="issue_fixed_version"><%=l(:field_fixed_version)%></label><br/>
 <select name="issue[fixed_version_id]">
 <option value="">--none--</option>
 <%= options_from_collection_for_select @project.versions, "id", "name", @issue.fixed_version_id %>
 <!--[eoform:issue]-->
 </div>
 
-<%= submit_tag _('Save') %>
+<%= submit_tag l(:button_save) %>
 <%= end_form_tag %>

redmine/app/views/issues/show.rhtml

-
-<h2><%=_(@issue.tracker.name)%> #<%= @issue.id %> - <%= @issue.subject %></h2>
+<h2><%= @issue.tracker.name %> #<%= @issue.id %> - <%= @issue.subject %></h2>
 
 <div class="box">
-<p><b><%=_('Status')%>:</b> <%= @issue.status.name %></p>
-<p><b><%=_('Priority')%>:</b> <%= @issue.priority.name %></p>
-<p><b><%=_('Category')%>:</b> <%= @issue.category.name unless @issue.category_id.nil? %></p>
-<p><b><%=_('Author')%>:</b> <%= @issue.author.display_name %></p>
-<p><b><%=_('Assigned to')%>:</b> <%= @issue.assigned_to.display_name unless @issue.assigned_to.nil? %></p>
-
-<p><b><%=_('Subject')%>:</b> <%= @issue.subject %></p>
-<p><b><%=_('Description')%>:</b> <%= simple_format auto_link @issue.description %></p>
-<p><b><%=_('Created on')%>:</b> <%= format_date(@issue.created_on) %></p>
+<p>
+<b><%=l(:field_status)%> :</b> <%= @issue.status.name %> &nbsp &nbsp
+<b><%=l(:field_priority)%> :</b> <%= @issue.priority.name %> &nbsp &nbsp
+<b><%=l(:field_assigned_to)%> :</b> <%= @issue.assigned_to ? @issue.assigned_to.display_name : "-" %> &nbsp &nbsp
+<b><%=l(:field_category)%> :</b> <%= @issue.category ? @issue.category.name : "-"  %>
+</p>
+<p><b><%=l(:field_author)%> :</b> <%= @issue.author.display_name %></p>
+<p><b><%=l(:field_subject)%> :</b> <%= @issue.subject %></p>
+<p><b><%=l(:field_description)%> :</b> <%= simple_format auto_link @issue.description %></p>
+<p><b><%=l(:field_due_date)%> :</b> <%= format_date(@issue.due_date) %></p>
+<p><b><%=l(:field_created_on)%> :</b> <%= format_date(@issue.created_on) %></p>
 
 <% for custom_value in @custom_values %>
-<p><b><%= custom_value.custom_field.name %></b>: <%= show_value custom_value %></p>
+<p><b><%= custom_value.custom_field.name %></b> : <%= show_value custom_value %></p>
 <% end %>
 
 <% if authorize_for('issues', 'edit') %>
   <%= start_form_tag ({:controller => 'issues', :action => 'edit', :id => @issue}, :method => "get" ) %>
-  <%= submit_tag _('Edit') %>
+  <%= submit_tag l(:button_edit) %>
   <%= end_form_tag %>
   &nbsp;&nbsp;
 <% end %>
 
 <% if authorize_for('issues', 'change_status') and @status_options and !@status_options.empty? %>
   <%= start_form_tag ({:controller => 'issues', :action => 'change_status', :id => @issue}) %>
-  <label for="history_status_id"><%=_('Change status')%>:</label>
+  <label for="history_status_id"><%=l(:label_change_status)%> :</label>
   <select name="history[status_id]">
   <%= options_from_collection_for_select @status_options, "id", "name" %>
   </select>
-  <%= submit_tag _ "Update..." %>
+  <%= submit_tag l(:button_change) %>
   <%= end_form_tag %>
   &nbsp;&nbsp;
 <% end %>
 
 <% if authorize_for('issues', 'destroy') %>
   <%= start_form_tag ({:controller => 'issues', :action => 'destroy', :id => @issue} ) %>
-  <%= submit_tag _ "Delete" %>
+  <%= submit_tag l(:button_delete) %>
   <%= end_form_tag %>
   &nbsp;&nbsp;
 <% end %>
 
 <div class="splitcontentleft">
 <div class="box">
-<h3><%=_('History')%></h3>
+<h3><%=l(:label_history)%></h3>
 <table width="100%">
 <% for history in @issue.histories.find(:all, :include => :author) %>
 <tr>
 
 <div class="splitcontentright">
 <div class="box">
-<h3><%=_('Attachments')%></h3>
+<h3><%=l(:label_attachment_plural)%></h3>
 <table width="100%">
 <% for attachment in @issue.attachments %>
 <tr>
 <% if authorize_for('issues', 'destroy_attachment') %>
   <td>
   <%= start_form_tag :action => 'destroy_attachment', :id => @issue, :attachment_id => attachment %>
-  <%= submit_tag _('Delete'), :class => "button-small" %>
+  <%= submit_tag l(:button_delete), :class => "button-small" %>
   <%= end_form_tag %>
   </td>
 <% end %>
 <br />
 <% if authorize_for('issues', 'add_attachment') %>
   <%= start_form_tag ({ :controller => 'issues', :action => 'add_attachment', :id => @issue }, :multipart => true) %>
-  <%=_('Add file')%>: <%= file_field 'attachment', 'file'  %>
-  <%= submit_tag _('Add') %>
+  <%=l(:label_attachment_new)%>: <%= file_field 'attachment', 'file'  %>
+  <%= submit_tag l(:button_add) %>
   <%= end_form_tag %> 
 <% end %>
 </div>

redmine/app/views/layouts/base.rhtml

 <script type='text/javascript'>
 var menu_contenu=' \
 <div id="menuAdmin" class="menu" onmouseover="menuMouseover(event)"> \
-<a class="menuItem" href="\/admin\/projects" onmouseover="menuItemMouseover(event,\'menuProjects\');"><span class="menuItemText"><%=_('Projects')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
-<a class="menuItem" href="\/users" onmouseover="menuItemMouseover(event,\'menuUsers\');"><span class="menuItemText"><%=_('Users')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
-<a class="menuItem" href="\/roles"><%=_('Roles and permissions')%><\/a> \
-<a class="menuItem" href="\/trackers" onmouseover="menuItemMouseover(event,\'menuTrackers\');"><span class="menuItemText"><%=_('Trackers')%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
-<a class="menuItem" href="\/custom_fields"><%=_('Custom fields')%><\/a> \
-<a class="menuItem" href="\/enumerations"><%=_('Enumerations')%><\/a> \
-<a class="menuItem" href="\/admin\/mail_options"><%=_('Mail notifications')%><\/a> \
+<a class="menuItem" href="\/admin\/projects" onmouseover="menuItemMouseover(event,\'menuProjects\');"><span class="menuItemText"><%=l(:label_project_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
+<a class="menuItem" href="\/users" onmouseover="menuItemMouseover(event,\'menuUsers\');"><span class="menuItemText"><%=l(:label_user_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
+<a class="menuItem" href="\/roles"><%=l(:label_role_and_permissions)%><\/a> \
+<a class="menuItem" href="\/trackers" onmouseover="menuItemMouseover(event,\'menuTrackers\');"><span class="menuItemText"><%=l(:label_tracker_plural)%><\/span><span class="menuItemArrow">&#9654;<\/span><\/a> \
+<a class="menuItem" href="\/custom_fields"><%=l(:label_custom_field_plural)%><\/a> \
+<a class="menuItem" href="\/enumerations"><%=l(:label_enumerations)%><\/a> \
+<a class="menuItem" href="\/admin\/mail_options"><%=l(:field_mail_notification)%><\/a> \
 <a class="menuItem" href="\/auth_sources"><%=l(:label_authentication)%><\/a> \
-<a class="menuItem" href="\/admin\/info"><%=_('Information')%><\/a> \
+<a class="menuItem" href="\/admin\/info"><%=l(:label_information_plural)%><\/a> \
 <\/div> \
 <div id="menuTrackers" class="menu"> \
-<a class="menuItem" href="\/issue_statuses"><%=_('Issue Statuses')%><\/a> \
-<a class="menuItem" href="\/roles\/workflow"><%=_('Workflow')%><\/a> \
+<a class="menuItem" href="\/issue_statuses"><%=l(:label_issue_status_plural)%><\/a> \
+<a class="menuItem" href="\/roles\/workflow"><%=l(:label_workflow)%><\/a> \
 <\/div> \
-<div id="menuProjects" class="menu"><a class="menuItem" href="\/projects\/add"><%=_('New')%><\/a><\/div> \
-<div id="menuUsers" class="menu"><a class="menuItem" href="\/users\/add"><%=_('New')%><\/a><\/div> \
+<div id="menuProjects" class="menu"><a class="menuItem" href="\/projects\/add"><%=l(:label_new)%><\/a><\/div> \
+<div id="menuUsers" class="menu"><a class="menuItem" href="\/users\/add"><%=l(:label_new)%><\/a><\/div> \
  \
 <% unless @project.nil? || @project.id.nil? %> \
 <div id="menuProject" class="menu" onmouseover="menuMouseover(event)"> \
-<%= link_to _('Issues'), {:controller => 'projects', :action => 'list_issues', :id => @project }, :class => "menuItem" %> \
-<%= link_to _('Reports'), {:controller => 'reports', :action => 'issue_report', :id => @project }, :class => "menuItem" %> \
-<%= link_to _('News'), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %> \
-<%= link_to _('Change log'), {:controller => 'projects', :action => 'changelog', :id => @project }, :class => "menuItem" %> \
-<%= link_to _('Documents'), {:controller => 'projects', :action => 'list_documents', :id => @project }, :class => "menuItem" %> \
-<%= link_to _('Members'), {:controller => 'projects', :action => 'list_members', :id => @project }, :class => "menuItem" %> \
-<%= link_to _('Files'), {:controller => 'projects', :action => 'list_files', :id => @project }, :class => "menuItem" %> \
-<%= link_to_if_authorized _('Settings'), {:controller => 'projects', :action => 'settings', :id => @project }, :class => "menuItem" %> \
+<%= link_to l(:label_issue_plural), {:controller => 'projects', :action => 'list_issues', :id => @project }, :class => "menuItem" %> \
+<%= link_to l(:label_report_plural), {:controller => 'reports', :action => 'issue_report', :id => @project }, :class => "menuItem" %> \
+<%= link_to l(:label_news_plural), {:controller => 'projects', :action => 'list_news', :id => @project }, :class => "menuItem" %> \
+<%= link_to l(:label_change_log), {:controller => 'projects', :action => 'changelog', :id => @project }, :class => "menuItem" %> \
+<%= link_to l(:label_document_plural), {:controller => 'projects', :action => 'list_documents', :id => @project }, :class => "menuItem" %> \
+<%= link_to l(:label_member_plural), {:controller => 'projects', :action => 'list_members', :id => @project }, :class => "menuItem" %> \
+<%= link_to l(:label_attachment_plural), {:controller => 'projects', :action => 'list_files', :id => @project }, :class => "menuItem" %> \
+<%= link_to_if_authorized l(:label_settings), {:controller => 'projects', :action => 'settings', :id => @project }, :class => "menuItem" %> \
 <\/div> \
 <% end %> \
 ';
 		<% unless @project.nil? || @project.id.nil? %>
 			<h2><%= @project.name %></h2>
 			<ul class="menublock">
-				<li><%= link_to _('Overview'), :controller => 'projects', :action => 'show', :id => @project %></li>
-				<li><%= link_to _('Issues'), :controller => 'projects', :action => 'list_issues', :id => @project %></li>
-				<li><%= link_to _('Reports'), :controller => 'reports', :action => 'issue_report', :id => @project %></li>
-				<li><%= link_to _('News'), :controller => 'projects', :action => 'list_news', :id => @project %></li>
-				<li><%= link_to _('Change log'), :controller => 'projects', :action => 'changelog', :id => @project %></li>
-				<li><%= link_to _('Documents'), :controller => 'projects', :action => 'list_documents', :id => @project %></li>
-				<li><%= link_to _('Members'), :controller => 'projects', :action => 'list_members', :id => @project %></li>
-				<li><%= link_to _('Files'), :controller => 'projects', :action => 'list_files', :id => @project %></li>
-				<li><%= link_to_if_authorized _('Settings'), :controller => 'projects', :action => 'settings', :id => @project %></li>
+				<li><%= link_to l(:label_overview), :controller => 'projects', :action => 'show', :id => @project %></li>
+				<li><%= link_to l(:label_issue_plural), :controller => 'projects', :action => 'list_issues', :id => @project %></li>
+				<li><%= link_to l(:label_report_plural), :controller => 'reports', :action => 'issue_report', :id => @project %></li>
+				<li><%= link_to l(:label_news_plural), :controller => 'projects', :action => 'list_news', :id => @project %></li>
+				<li><%= link_to l(:label_change_log), :controller => 'projects', :action => 'changelog', :id => @project %></li>
+				<li><%= link_to l(:label_document_plural), :controller => 'projects', :action => 'list_documents', :id => @project %></li>
+				<li><%= link_to l(:label_member_plural), :controller => 'projects', :action => 'list_members', :id => @project %></li>
+				<li><%= link_to l(:label_attachment_plural), :controller => 'projects', :action => 'list_files', :id => @project %></li>
+				<li><%= link_to_if_authorized l(:label_settings), :controller => 'projects', :action => 'settings', :id => @project %></li>
 			</ul>
 		<% end %>
 		
 		<% if loggedin? and @logged_in_user.memberships.length > 0 %>
-			<h2><%=_('My projects') %></h2>
+			<h2><%=l(:label_my_projects) %></h2>
 			<ul class="menublock">
 				<% for membership in @logged_in_user.memberships %>	
 					<li><%= link_to membership.project.name, :controller => 'projects', :action => 'show', :id => membership.project %></li>

redmine/app/views/mailer/_issue.rhtml

-<%=_('Issue')%> #<%= issue.id %> - <%= issue.subject %>
-<%=_('Author')%>: <%= issue.author.display_name %>
+<%=l(:label_issue)%> #<%= issue.id %> - <%= issue.subject %>
+<%=l(:field_author)%>: <%= issue.author.display_name %>
 
 <%= issue.description %>
 

redmine/app/views/news/_form.rhtml

 <%= error_messages_for 'news' %>
 
 <!--[form:news]-->
-<p><label for="news_title"><%=_('Title')%></label> <span class="required">*</span><br/>
+<p><label for="news_title"><%=l(:field_title)%></label> <span class="required">*</span><br/>
 <%= text_field 'news', 'title', :size => 60  %></p>
 
-<p><label for="news_summary"><%=_('Summary')%></label><br/>
+<p><label for="news_summary"><%=l(:field_summary)%></label><br/>
 <%= text_area 'news', 'summary', :cols => 60, :rows => 2 %></p>
 
-<p><label for="news_description"><%=_('Description')%> <span class="required">*</span></label><br/>
+<p><label for="news_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
 <%= text_area 'news', 'description', :cols => 60, :rows => 10 %></p>
 <!--[eoform:news]-->
 

redmine/app/views/news/edit.rhtml

-<h2><%=_('News')%></h2>
+<h2><%=l(:label_news)%></h2>
 
 <%= start_form_tag :action => 'edit', :id => @news %>
   <%= render :partial => 'form' %>
-  <%= submit_tag _('Save') %>
+  <%= submit_tag l(:button_save) %>
 <%= end_form_tag %>

redmine/app/views/news/show.rhtml

 <h2><%= @news.title %></h2>
 
 <p>
-<b><%=_('Summary')%></b>: <%= @news.summary %><br />
-<b><%=_('By')%></b>: <%= @news.author.display_name %><br />
-<b><%=_('Date')%></b>: <%= format_time(@news.created_on) %>
+<b><%=l(:field_summary)%></b>: <%= @news.summary %><br />
+<b><%=l(:field_author)%></b>: <%= @news.author.display_name %><br />
+<b><%=l(:field_created_on)%></b>: <%= format_time(@news.created_on) %>
 </p>
 
 <%= simple_format auto_link @news.description %>

redmine/app/views/projects/_form.rhtml

 
 <div class="box">
 <!--[form:project]-->
-<p><label for="project_name"><%=_('Name')%> <span class="required">*</span></label><br/>
+<p><label for="project_name"><%=l(:field_name)%> <span class="required">*</span></label><br/>
 <%= text_field 'project', 'name'  %></p>
 
 <% if admin_loggedin? %>
-<p><label for="project_parent_id"><%=_('Subproject of')%></label><br/>
+<p><label for="project_parent_id"><%=l(:field_parent)%></label><br/>
 <select name="project[parent_id]">
 <option value=""></option>
 <%= options_from_collection_for_select @root_projects, "id", "name", @project.parent_id %>
 </select></p>
 <% end %>
 
-<p><label for="project_description"><%=_('Description')%> <span class="required">*</span></label><br/>
+<p><label for="project_description"><%=l(:field_description)%> <span class="required">*</span></label><br/>
 <%= text_area 'project', 'description', :cols => 60, :rows => 3 %></p>
 
-<p><label for="project_homepage"><%=_('Homepage')%></label><br/>
+<p><label for="project_homepage"><%=l(:field_homepage)%></label><br/>
 <%= text_field 'project', 'homepage', :size => 40 %></p>
 
 <p><%= check_box 'project', 'is_public' %>
-<label for="project_is_public"><%=_('Public')%></label></p>
+<label for="project_is_public"><%=l(:field_is_public)%></label></p>
 
 <% for custom_value in @custom_values %>
 	<p><%= custom_field_tag_with_label custom_value %></p>
 <% end %>
 
-<fieldset><legend><%=_('Custom fields')%></legend>
+<fieldset><legend><%=l(:label_custom_field_plural)%></legend>
 <% for custom_field in @custom_fields %>
 	<input type="checkbox"
 	

redmine/app/views/projects/add.rhtml

-<h2><%=_('New project')%></h2>
+<h2><%=l(:label_project_new)%></h2>
 
 <%= start_form_tag :action => 'add' %>
 <%= render :partial => 'form' %>
-<%= submit_tag _('Create') %>
+<%= submit_tag l(:button_create) %>
 <%= end_form_tag %>

redmine/app/views/projects/add_document.rhtml

-<h2><%=_('New document')%></h2>
+<h2><%=l(:label_document_new)%></h2>
 
-<%= error_messages_for 'document' %>
 <%= start_form_tag( { :action => 'add_document', :id => @project }, :multipart => true) %>
-
-<!--[form:document]-->
-<p><label for="document_category_id"><%=_('Category')%></label><br />
-<select name="document[category_id]">
-<%= options_from_collection_for_select @categories, "id", "name",@document.category_id %>
-</select></p>
+<%= render :partial => 'documents/form' %>
 
-<p><label for="document_title"><%=_('Title')%> <span class="required">*</span></label><br />
-<%= text_field 'document', 'title', :size => 60 %></p>
-
-<p><label for="document_description"><%=_('Description')%> <span class="required">*</span></label><br />
-<%= text_area 'document', 'description', :cols => 60, :rows => 5 %></p>
-
-<p><label for="attachment_file"><%=_('File')%></label><br/>
+<p><label for="attachment_file"><%=l(:label_attachment)%></label><br/>
 <%= file_field 'attachment', 'file'  %></p>
 
-<!--[eoform:document]-->
-
-<%= submit_tag _('Create') %>
+<%= submit_tag l(:button_create) %>
 <%= end_form_tag %>
 
 

redmine/app/views/projects/add_file.rhtml

-<h2><%=_('New file')%></h2>
+<h2><%=l(:label_attachment_new)%></h2>
 
+<%= error_messages_for 'attachment' %>
 <%= start_form_tag ({ :action => 'add_file', :project => @project }, :multipart => true) %>
 
-<p><label for="version_id"><%=_('Version')%></label><br />
+<p><label for="version_id"><%=l(:field_version)%></label><br />
 <select name="version_id">
 <%= options_from_collection_for_select @versions, "id", "name" %>
 </select></p>
 
-<p><b><%=_('File')%><b><br /><%= file_field 'attachment', 'file'  %></p>
+<p><b><%=l(:label_attachment)%><b><br /><%= file_field 'attachment', 'file'  %></p>
 <br/>
-<%= submit_tag _('Add') %>
+<%= submit_tag l(:button_add) %>
 <%= end_form_tag %> 

redmine/app/views/projects/add_issue.rhtml

-<h2><%=_('New issue')%>: <%=_(@tracker.name)%></h2>
+<h2><%=l(:label_issue_new)%>: <%= @tracker.name %></h2>
 
 <%= start_form_tag( { :action => 'add_issue', :id => @project }, :multipart => true) %>
 <%= error_messages_for 'issue' %>
 <%= hidden_field_tag 'tracker_id', @tracker.id %>
 
 <div style="float:left;margin-right:10px;">
-<p><label for="issue_priority_id"><%=_('Priority')%> <span class="required">*</span></label><br/>
+<p><label for="issue_priority_id"><%=l(:field_priority)%> <span class="required">*</span></label><br />
 <select name="issue[priority_id]">
 <%= options_from_collection_for_select @priorities, "id", "name", @issue.priority_id %></p>
 </select></p>
 </div>
 
 <div style="float:left;margin-right:10px;">
-<p><label for="issue_assigned_to_id"><%=_('Assigned to')%></label><br/>
+<p><label for="issue_assigned_to_id"><%=l(:field_assigned_to)%></label><br />
 <select name="issue[assigned_to_id]">
 <option value=""></option>
 <%= options_from_collection_for_select @issue.project.members, "user_id", "name", @issue.assigned_to_id %></p>
 </div>
 
 <div>
-<p><label for="issue_category_id"><%=_('Category')%></label><br/>
+<p><label for="issue_category_id"><%=l(:field_category)%></label><br />
 <select name="issue[category_id]">
 <option value=""></option><%= options_from_collection_for_select @project.issue_categories, "id", "name", @issue.category_id %>
 </select></p>
 </div>
 
-<p><label for="issue_subject"><%=_('Subject')%> <span class="required">*</span></label><br/>
+<p><label for="issue_subject"><%=l(:field_subject)%> <span class="required">*</span></label><br />
 <%= text_field 'issue', 'subject', :size => 80  %></p>
 
-<p><label for="issue_description"><%=_('Description')%> <span class="required">*</span></label><br/>
+<p><label for="issue_description"><%=l(:field_description)%> <span class="required">*</span></label><br />
 <%= text_area 'issue', 'description', :cols => 60, :rows => 10 %></p>
+
+<p><label for="issue_due_date"><%=l(:field_due_date)%></label><br />
+<%= date_select 'issue', 'due_date', :start_year => Date.today.year, :include_blank => true %></p>
 
 <% for custom_value in @custom_values %>
 	<p><%= custom_field_tag_with_label custom_value %></p>
 <% end %>
 
-<p><label for="attachment_file"><%=_('Attachment')%></label><br/>
+<p><label for="attachment_file"><%=l(:label_attachment)%></label><br />
 <%= file_field 'attachment', 'file'  %></p>
-
 <!--[eoform:issue]-->
 </div>
 
-
-<%= submit_tag _('Create') %>
+<%= submit_tag l(:button_create) %>
 <%= end_form_tag %>

redmine/app/views/projects/add_news.rhtml

-<h2><%=('Add news')%></h2>
+<h2><%=l(:label_news_new)%></h2>
 
 <%= start_form_tag :action => 'add_news', :id => @project %>
   <%= render :partial => 'news/form' %>
-  <%= submit_tag _('Create') %>
+  <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>
 

redmine/app/views/projects/add_version.rhtml

-<h2><%=_('New version')%></h2>
+<h2><%=l(:label_version_new)%></h2>
 
 <%= start_form_tag :action => 'add_version', :id => @project  %>
   <%= render :partial => 'versions/form' %>
-  <%= submit_tag _('Create') %>
+  <%= submit_tag l(:button_create) %>
 <%= end_form_tag %>
 

redmine/app/views/projects/changelog.rhtml

-<h2><%=_('Change log')%></h2>
+<h2><%=l(:label_change_log)%></h2>
 
 <% fixed_issues = @fixed_issues.group_by {|i| i.fixed_version } %>
 <% fixed_issues.each do |version, issues| %>

redmine/app/views/projects/destroy.rhtml

-<h2><%=_('Confirmation')%></h2>
+<h2><%=l(:label_confirmation)%></h2>
 <div class="box">
 <center>
-<p><%=_('Are you sure you want to delete project')%> <strong><%= @project.name %></strong> ?</p>
+<p><strong><%= @project.name %></strong><br />
+<%=l(:text_project_destroy_confirmation)%></p>
+
 <p>
     <%= start_form_tag({:controller => 'projects', :action => 'destroy', :id => @project}) %>
     <%= hidden_field_tag "confirm", 1 %>
-    <%= submit_tag _('Delete') %>
+    <%= submit_tag l(:button_delete) %>
     <%= end_form_tag %>
 </p>
 </center>

redmine/app/views/projects/list.rhtml

-<h2><%=_('Public projects')%></h2>
+<h2><%=l(:label_public_projects)%></h2>
 
 <table width="100%" cellspacing="1" cellpadding="2" class="listTableContent">
   <tr class="ListHead">
-	<%= sort_header_tag('name', :caption => _('Project')) %>
-	<th>Description</th>
-	<%= sort_header_tag('created_on', :caption => _('Created on')) %>
+	<%= sort_header_tag('name', :caption => l(:label_project)) %>
+	<th><%=l(:field_description)%></th>
+	<%= sort_header_tag('created_on', :caption => l(:field_created_on)) %>
   </tr>
   
 <% for project in @projects %>

redmine/app/views/projects/list_documents.rhtml

-<h2><%=_('Documents')%></h2>
+<h2><%=l(:label_document_plural)%></h2>
 
 <% documents = @documents.group_by {|d| d.category } %>
 <% documents.each do |category, docs| %>
   <li>
     <b><%= link_to d.title, :controller => 'documents', :action => 'show', :id => d %></b>
     <br />
-    <%=_('Desciption')%>: <%= d.description %><br />
+    <%=l(:field_description)%>: <%= d.description %><br />
     <%= format_time(d.created_on) %>    
   </li>		
 
 <% end %>
 
 <p>
-<%= link_to_if_authorized '&#187; ' + _('New'), :controller => 'projects', :action => 'add_document', :id => @project %>
+<%= link_to_if_authorized '&#187; ' + l(:label_document_new), :controller => 'projects', :action => 'add_document', :id => @project %>
 </p>

redmine/app/views/projects/list_files.rhtml

-<h2><%=_('Files')%></h2>
+<h2><%=l(:label_attachment_plural)%></h2>
 
 <% delete_allowed = authorize_for('versions', 'destroy_file') %>
 
 <table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
   <tr class="ListHead">
-    <th><%=_('Version')%></th>
-    <th><%=_('File')%></th>
-    <th><%=_('Date')%></th>
-    <th><%=_('Size')%></th>
+    <th><%=l(:field_version)%></th>
+    <th><%=l(:field_filename)%></th>
+    <th><%=l(:label_date)%></th>
+    <th><%=l(:field_filesize)%></th>
     <th>D/L</th>
     <th>MD5</th>
     <% if delete_allowed %><th></th><% end %>
     <% if delete_allowed %>
     <td align="center">
       <%= start_form_tag :controller => 'versions', :action => 'destroy_file', :id => version, :attachment_id => file %>
-      <%= submit_tag _('Delete'), :class => "button-small" %>
+      <%= submit_tag l(:button_delete), :class => "button-small" %>
       <%= end_form_tag %>
     </td>
     <% end %>
 
 <br />
 <p>
-<%= link_to_if_authorized '&#187; ' + _('New'), :controller => 'projects', :action => 'add_file', :id => @project %>
+<%= link_to_if_authorized '&#187; ' + l(:label_attachment_new), :controller => 'projects', :action => 'add_file', :id => @project %>
 </p>
 
 

redmine/app/views/projects/list_issues.rhtml

-<h2><%=_('Issues')%></h2>
+<h2><%=l(:label_issue_plural)%></h2>
 
 <form method="post" class="noborder">
-	<table cellpadding=2>
+<table cellpadding=2>
   <tr>
-    <td><small><%=_('Status')%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
-    <td><small><%=_('Tracker')%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
-    <td><small><%=_('Priority')%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
-    <td><small><%=_('Category')%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
-    <td><small><%=_('Fixed in version')%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
-    <td><small><%=_('Assigned to')%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
-    <td><small><%=_('Subprojects')%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
+    <td><small><%=l(:field_status)%>:</small><br /><%= search_filter_tag 'status_id', :class => 'select-small' %></td>
+    <td><small><%=l(:field_tracker)%>:</small><br /><%= search_filter_tag 'tracker_id', :class => 'select-small' %></td>
+    <td><small><%=l(:field_priority)%>:</small><br /><%= search_filter_tag 'priority_id', :class => 'select-small' %></td>
+    <td><small><%=l(:field_category)%>:</small><br /><%= search_filter_tag 'category_id', :class => 'select-small' %></td>
+    <td><small><%=l(:field_fixed_version)%>:</small><br /><%= search_filter_tag 'fixed_version_id', :class => 'select-small' %></td>
+    <td><small><%=l(:field_assigned_to)%>:</small><br /><%= search_filter_tag 'assigned_to_id', :class => 'select-small' %></td>
+    <td><small><%=l(:label_subproject_plural)%>:</small><br /><%= search_filter_tag 'subproject_id', :class => 'select-small' %></td>
 
     <td valign="bottom">
-      <%= submit_tag _('Apply filter'), :class => 'button-small' %>
+      <%= submit_tag l(:button_apply), :class => 'button-small' %>
       <%= end_form_tag %>
       
       <%= start_form_tag %>
-      <%= submit_tag _('Reset'), :class => 'button-small' %>
+      <%= submit_tag l(:button_clear), :class => 'button-small' %>
       <%= end_form_tag %>
     </td>
   </tr>
 </table>
  &nbsp;
-	<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
-	
-	   <tr><td colspan="7" align="right">
-	   <small><%= link_to 'Export to CSV', :action => 'export_issues_csv', :id => @project.id %></small>
-	   </td></tr>
-	
-		<tr class="ListHead">	
-			<%= sort_header_tag('issues.id', :caption => '#') %>
-			<%= sort_header_tag('issue_statuses.name', :caption => _('Status')) %>
-			<%= sort_header_tag('issues.tracker_id', :caption => _('Tracker')) %>
-			<th><%=_('Subject')%></th>
-			<%= sort_header_tag('users.lastname', :caption => _('Author')) %>
-			<%= sort_header_tag('issues.created_on', :caption => _('Created on')) %>
-			<%= sort_header_tag('issues.updated_on', :caption => _('Last update')) %>
-		</tr>
-
-		<% for issue in @issues %>
-		<tr bgcolor="#<%= issue.status.html_color %>">
-			<td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
-			<td align="center"><%= issue.status.name %></td>
-			<td align="center"><%= issue.tracker.name %></td>
-			<td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
-			<td align="center"><%= issue.author.display_name %></td>
-			<td align="center"><%= format_time(issue.created_on) %></td>
-			<td align="center"><%= format_time(issue.updated_on) %></td>
-		</tr>
-		<% end %>
-	</table>
-	<p>
-	<%= pagination_links_full @issue_pages %>
-	[ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
-    </p>
+<table border="0" cellspacing="1" cellpadding="2" class="listTableContent">
+    <tr><td colspan="7" align="right">
+    <small><%= link_to l(:label_export_csv), :action => 'export_issues_csv', :id => @project.id %></small>
+    </td></tr>	
+    <tr class="ListHead">	
+		<%= sort_header_tag('issues.id', :caption => '#') %>
+		<%= sort_header_tag('issue_statuses.name', :caption => l(:field_status)) %>
+		<%= sort_header_tag('issues.tracker_id', :caption => l(:field_tracker)) %>
+		<th><%=l(:field_subject)%></th>
+		<%= sort_header_tag('users.lastname', :caption => l(:field_author)) %>
+		<%= sort_header_tag('issues.created_on', :caption => l(:field_created_on)) %>
+		<%= sort_header_tag('issues.updated_on', :caption => l(:field_updated_on)) %>
+	</tr>
+	<% for issue in @issues %>
+	<tr bgcolor="#<%= issue.status.html_color %>">
+		<td align="center"><%= link_to issue.long_id, :controller => 'issues', :action => 'show', :id => issue %></td>
+		<td align="center"><%= issue.status.name %></td>
+		<td align="center"><%= issue.tracker.name %></td>
+		<td><%= link_to issue.subject, :controller => 'issues', :action => 'show', :id => issue %></td>
+		<td align="center"><%= issue.author.display_name %></td>
+		<td align="center"><%= format_time(issue.created_on) %></td>
+		<td align="center"><%= format_time(issue.updated_on) %></td>
+	</tr>
+	<% end %>
+</table>
+<p>
+<%= pagination_links_full @issue_pages %>
+[ <%= @issue_pages.current.first_item %> - <%= @issue_pages.current.last_item %> / <%= @issue_count %> ]
+</p>

redmine/app/views/projects/list_members.rhtml

-<h2><%=_('Project members')%></h2>
+<h2><%=l(:label_member_plural)%></h2>
 
 <% members = @members.group_by {|m| m.role } %>
 <% members.each do |role, member| %>

redmine/app/views/projects/list_news.rhtml

-<h2><%=_('News')%></h2>
+<h2><%=l(:label_news_plural)%></h2>
 
 <% for news in @news %>
 	<p>
 	<%= link_to_if_authorized image_tag('delete'), { :controller => 'news', :action => 'destroy', :id => news }, :confirm => 'Are you sure?' %>
 	<br />
 	<%= news.summary %>
-	<small>[<%= link_to _('Read...'), :controller => 'news', :action => 'show', :id => news %>]</small>
+	<small>[<%= link_to l(:label_read), :controller => 'news', :action => 'show', :id => news %>]</small>
 	</p>
 <% end %>
 
 <%= pagination_links_full @news_pages %>
 <p>
-<%= link_to_if_authorized '&#187; ' + _('Add'), :controller => 'projects', :action => 'add_news', :id => @project %>
+<%= link_to_if_authorized '&#187; ' + l(:label_news_new), :controller => 'projects', :action => 'add_news', :id => @project %>
 </p>

redmine/app/views/projects/settings.rhtml

-<h2><%=_('Settings')%></h2>
+<h2><%=l(:label_settings)%></h2>
 
 <%= start_form_tag :action => 'edit', :id => @project %>
 <%= render :partial => 'form' %>
-<center><%= submit_tag _('Save') %></center>
+<center><%= submit_tag l(:button_save) %></center>
 <%= end_form_tag %>
 
 &nbsp;
 
 <div class="box">
-<h3><%=_('Members')%></h3>
+<h3><%=l(:label_member_plural)%></h3>
 <%= error_messages_for 'member' %>
 <table>
 <% for member in @project.members.find(:all, :include => :user) %>
       </select>
     </td>
     <td>
-      <%= submit_tag _('Save'), :class => "button-small" %>
+      <%= submit_tag l(:button_change), :class => "button-small" %>
       <%= end_form_tag %>
     </td>
 		<td>
       <%= start_form_tag :controller => 'members', :action => 'destroy', :id => member %>
-      <%= submit_tag _('Delete'), :class => "button-small" %>
+      <%= submit_tag l(:button_delete), :class => "button-small" %>
       <%= end_form_tag %>
 		</td>
 	</tr>
 <% end %>
 </table>
 <hr />
-    <label><%=_('New member')%></label><br/>
+    <label><%=l(:label_member_new)%></label><br/>
       <%= start_form_tag :controller => 'projects', :action => 'add_member', :id => @project %>
       <select name="member[user_id]">
         <%= options_from_collection_for_select @users, "id", "display_name", @member.user_id %>
       <select name="member[role_id]">
         <%= options_from_collection_for_select @roles, "id", "name", @member.role_id %>
       </select>
-      <%= submit_tag _('Add') %>
+      <%= submit_tag l(:button_add) %>
       <%= end_form_tag %>
 </div>
 
 <div class="box">
-<h3><%=_('Versions')%></h3>
+<h3><%=l(:label_version_plural)%></h3>
 
 <table>
 <% for version in @project.versions %>
   <td><%=h version.description %></td>
   <td>
       <%= start_form_tag :controller => 'versions', :action => 'destroy', :id => version %>
-      <%= submit_tag _('Delete'), :class => "button-small" %>
+      <%= submit_tag l(:button_delete), :class => "button-small" %>
       <%= end_form_tag %>  
   </td>
   </tr>
 </table>
 <hr />
       <%= start_form_tag ({ :controller => 'projects', :action => 'add_version', :id => @project }, :method => 'get' ) %>
-      <%= submit_tag _('New version...') %>
+      <%= submit_tag l(:label_version_new) %>
       <%= end_form_tag %>  
 </div>
 
 
 <div class="box">
-<h3><%=_('Issue categories')%></h3>
+<h3><%=l(:label_issue_category_plural)%></h3>
 <table>
 <% for @category in @project.issue_categories %>
 	<% unless @category.new_record? %>
       <%= text_field 'category', 'name', :size => 25  %>
     </td>
 		<td>
-      <%= submit_tag _('Save'), :class => "button-small" %>
+      <%= submit_tag l(:button_save), :class => "button-small" %>
       <%= end_form_tag %>
     </td>
     <td>
       <%= start_form_tag :controller => 'issue_categories', :action => 'destroy', :id => @category %>