<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,30 +1,27 @@
 Description:
-    The extension generator creates stubs for a new Radiant extension.
+    The language_extension generator creates stubs for a new Radiant translation.
 
-    The generator takes an extension name as its argument.  The extension name may be
-    given in CamelCase or under_score and should not be suffixed with 'Extension'.
+    The generator takes an language abbreviation as its argument.  The extension name may be
+    given as a language abbreviation 'en' or a localized abbreviation 'en-GB' and should not 
+    be prefixed with 'i18n' or suffixed with 'Extension'.
 
     The generator creates an extension directory in vendor/extensions that includes
-    &lt;extension_name&gt;_extension.rb, README and Rakefile files as well as db, lib, task,
+    i18n_&lt;extension_name&gt;_extension.rb, README and Rakefile files as well as lib, task,
     and test directories.
 
 Example:
-    ./script/generate extension AssetManagement
+    ./script/generate language_extension fr 
 
     This will create:
-    vendor/extensions/asset_management/app/controllers
-    vendor/extensions/asset_management/app/helpers
-    vendor/extensions/asset_management/app/models
-    vendor/extensions/asset_management/app/views
-    vendor/extensions/asset_management/db/migrate
-    vendor/extensions/asset_management/lib/tasks
-    vendor/extensions/asset_management/README
-    vendor/extensions/asset_management/asset_management_extension.rb
-    vendor/extensions/asset_management/lib/tasks/asset_management_extension_tasks.rake
-    vendor/extensions/asset_management/spec/controllers
-    vendor/extensions/asset_management/spec/models
-    vendor/extensions/asset_management/spec/views
-    vendor/extensions/asset_management/spec/helpers
-    vendor/extensions/asset_management/Rakefile
-    vendor/extensions/asset_management/spec/spec_helper.rb
-    vendor/extensions/asset_management/spec/spec.opts
+    vendor/extensions/i18n_fr/config/locales/fr.yml
+    vendor/extensions/i18n_fr/lib/tasks
+    vendor/extensions/i18n_fr/README
+    vendor/extensions/i18n_fr/i18n_fr_extension.rb
+    vendor/extensions/i18n_fr/lib/tasks/i18n_fr_extension_tasks.rake
+    vendor/extensions/i18n_fr/spec/controllers
+    vendor/extensions/i18n_fr/spec/models
+    vendor/extensions/i18n_fr/spec/views
+    vendor/extensions/i18n_fr/spec/helpers
+    vendor/extensions/i18n_fr/Rakefile
+    vendor/extensions/i18n_fr/spec/spec_helper.rb
+    vendor/extensions/i18n_fr/spec/spec.opts</diff>
      <filename>lib/generators/language_extension/USAGE</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,13 @@
 class LanguageExtensionGenerator &lt; Rails::Generator::NamedBase
   default_options :with_test_unit =&gt; false
   
-  attr_reader :extension_path, :extension_file_name
+  attr_reader :extension_path, :extension_file_name, :localization_name
   
   def initialize(runtime_args, runtime_options = {})
     super
     @extension_file_name = &quot;i18n_#{file_name}_extension&quot;
     @extension_path = &quot;vendor/extensions/i18n_#{file_name}&quot;
+    @localization_name = localization_name
   end
   
   def manifest
@@ -14,10 +15,10 @@ class LanguageExtensionGenerator &lt; Rails::Generator::NamedBase
       m.directory &quot;#{extension_path}/config/locales&quot;
       m.directory &quot;#{extension_path}/lib/tasks&quot;
       
-      m.template 'README',              &quot;#{extension_path}/README&quot;
-      m.template 'extension.rb',        &quot;#{extension_path}/#{extension_file_name}.rb&quot;
-      m.template 'tasks.rake',          &quot;#{extension_path}/lib/tasks/#{extension_file_name}_tasks.rake&quot;
-      m.template 'lang.yml',            &quot;#{extension_path}/config/locales/#{file_name}.yml&quot;
+      m.template 'README',                &quot;#{extension_path}/README&quot;
+      m.template 'extension.rb',          &quot;#{extension_path}/#{extension_file_name}.rb&quot;
+      m.template 'tasks.rake',            &quot;#{extension_path}/lib/tasks/#{extension_file_name}_tasks.rake&quot;
+      m.template 'lang.yml',              &quot;#{extension_path}/config/locales/#{localization_name}.yml&quot;
       
       if options[:with_test_unit]
         m.directory &quot;#{extension_path}/test/fixtures&quot;
@@ -61,7 +62,6 @@ class LanguageExtensionGenerator &lt; Rails::Generator::NamedBase
   end
   
   def localization_name
-    @localization = file_name.split('_')[1]
-    @localization.nil? ?  file_name : &quot;#{file_name.split('_')[0]}-#{@localization.upcase}&quot;
+    file_name.split('_')[1] ? file_name : &quot;#{file_name.split('_')[0]}-#{@file_name.split('_')[1].upcase}&quot;
   end
 end
\ No newline at end of file</diff>
      <filename>lib/generators/language_extension/language_extension_generator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,18 +1,8 @@
-# Uncomment this if you reference any of your controllers in activate
-# require_dependency 'application_controller'
-
 class &lt;%= class_name %&gt; &lt; Radiant::Extension
   version &quot;1.0&quot;
-  description &quot;Describe your extension here&quot;
+  description &quot;&lt;%= localization_name %&gt;&quot; language pack for Radiant CMS&quot;
   url &quot;http://yourwebsite.com/&lt;%= file_name %&gt;&quot;
-  
-  # define_routes do |map|
-  #   map.namespace :admin, :member =&gt; { :remove =&gt; :get } do |admin|
-  #     admin.resources :&lt;%= file_name %&gt;
-  #   end
-  # end
-  
+    
   def activate
-    # admin.nav[:content] &lt;&lt; admin.nav_item(:&lt;%= file_name %&gt;, &quot;&lt;%= extension_name %&gt;&quot;, &quot;/admin/&lt;%= file_name %&gt;&quot;), :after =&gt; :pages
   end
 end</diff>
      <filename>lib/generators/language_extension/templates/extension.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,180 @@
 ---
 &lt;%= localization_name %&gt;:
-  this_file_language: &lt;%= extension_name %&gt;
\ No newline at end of file
+  account: 'Account'
+  activerecord:
+    errors:
+      messages:
+        blank: 'required' # required
+        invalid: 'invalid format' #invalid_format
+        not_a_number: 'must be a number' # must be number
+        taken: 'name already in use' # name_in_use
+        too_long: '{{count}}-character limit' # character_limit
+        too_short: '{{count}}-character minimum' # character_minimum
+      models:
+        page:
+          attributes:
+            slug:
+              taken: 'slug already in use for child of parent' # slug_in_use
+        user:
+          attributes:
+            email:
+              invalid: 'invalid e-mail address' # invalid_email
+            login:
+              taken: 'login already in use' # login already in use
+            password:
+              confirmation: 'must match confirmation' # password_confirmation
+  add_child: 'Add Child'
+  add_part: 'Add Part'
+  add_tab: 'Add Tab'
+  admin: 'Administrator' 
+  available_tags: 'Available Tags'
+  available_tags_for: 'Available Tags for'
+  body: 'Body'  
+  breadcrumb: 'Breadcrumb'
+  buttons:
+    create: 'Create {{name}}'   
+    save_and_continue: 'Save and Continue Editing'
+    save_changes: 'Save Changes'  
+  cancel: 'Cancel'
+  change: 'Change'
+  close: 'Close'
+  content: 'Content'
+  content_type: 'Content&amp;#8209;Type'    
+  creating_status: 'Creating {{model}}&amp;#8230;'
+  date:
+    abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
+    abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
+    day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
+    formats:
+      default: &quot;%Y-%m-%d&quot;
+      long: &quot;%B %e, %Y&quot;
+      only_day: &quot;%e&quot;
+      short: &quot;%e %b&quot;
+    month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]   
+    order: [ :year, :month, :day ]
+  delete_layout: 'Delete Layout'
+  delete_pages: 'Delete {{pages}}'  
+  delete_snippet: 'Delete Snippet'
+  delete_user: 'Delete User'
+  description: 'Description'
+  design: 'Design'
+  designer: 'Designer'
+  draft: 'Draft'
+  edit_layout: 'Edit Layout'
+  edit_page:  'Edit Page'   
+  edit_snippet: 'Edit Snippet'
+  edit_user: 'Edit User'
+  email_address: 'E-mail Address'
+  extension: 'Extension'
+  extensions: 'Extensions'
+  filter: 'Filter'
+  hidden: 'Hidden'
+  hide: 'Hide' 
+  keywords: 'Keywords'
+  language: 'Language'
+  layout: 'Layout'
+  layouts: 'Layouts'
+  log_out: 'Logout'
+  logged_in_as: 'Logged in as'
+  login: 'Login'
+  modify: 'Modify' 
+  more: 'More'
+  name: 'Name'
+  new_layout: 'New Layout'    
+  new_page: 'New Page'
+  new_password: 'New Password'
+  new_snippet: 'New Snippet'
+  new_user: 'New User'  
+  no_pages: 'No Pages' 
+  notes: 'Notes'    
+  optional: 'Optional'
+  or: 'or'
+  page: 'Page'
+  page_page: 'Page Part'
+  page_title: 'Page Title'  
+  page_type: 'Page Type'
+  pages: 'Pages'
+  pages_controller:
+    removed_many: &quot;The pages were successfully removed from the site.&quot;   
+    removed_one: &quot;The page was successfully removed from the site.&quot;  
+    saved: &quot;Your page has been saved below.&quot;  
+  password: 'Password' 
+  password_confirmation: 'Confirm New Password'
+  personal: 'Personal'
+  personal_preferences: 'Personal Preferences'
+  please_login: 'Please Login'
+  powered_by: 'Powered by'
+  preferences: 'Preferences' 
+  preferences_controller:
+    error_updating: 'There was an error updating your preferences.'      
+    updated: 'Your preferences have been updated.' 
+  published: 'Published'
+  published_at: 'Published at' 
+  reference:  'Reference'
+  remember_me: 'Remember me'
+  remove: 'Remove'
+  remove_layout: 'Remove Layout' 
+  remove_page: 'Remove Page'
+  remove_pages: 'Remove {{pages}}' 
+  remove_tab: 'Remove Tab'  
+  remove_user: 'Remove user'
+  required: 'Required'  
+  resource_controller:
+    not_found: &quot;{{humanized_model_name}} could not be found.&quot;
+    removed: &quot;{{humanized_model_name}} has been deleted.&quot;
+    saved: &quot;{{humanized_model_name}} saved below.&quot;
+    update_conflict: &quot;{{humanized_model_name}} has been modified since it was last loaded. Changes cannot be saved without potentially losing data.&quot; 
+    validation_errors: &quot;Validation errors occurred while processing this form. Please take a moment to  review the form and correct any input errors before continuing.&quot;
+  reviewed: 'Reviewed'
+  roles: 'Roles'
+  saving_changes: Saving Changes
+  saving_preferences: Saving preferences
+  search_tags: 'Search Tags:'
+  select:
+    inherit: '&lt;inherit&gt;'
+    none: '&lt;none&gt;' 
+    normal: '&lt;normal&gt;'
+  settings: 'Settings'
+  slug: 'Slug'
+  snippet: 'Snippet'   
+  snippets: 'Snippets'
+  status: 'Status'
+    # Warnings and info text:
+  text:
+    layouts:
+      remove_warning: 'Are you sure you want to &lt;strong class=&quot;warning&quot;&gt;permanently remove&lt;/strong&gt; the following layout?'   
+    pages: 
+      remove_warning: 'Are you sure you want to &lt;strong class=&quot;warning&quot;&gt;permanently remove&lt;/strong&gt; the following {{pages}}?'
+    snippets:
+      remove_warning: 'Are you sure you want to &lt;strong class=&quot;warning&quot;&gt;permanently remove&lt;/strong&gt; the following snippet?'
+    users: 
+      remove_warning: 'Are you sure you want to &lt;strong class=&quot;warning&quot;&gt;permanently remove&lt;/strong&gt; the following user?'
+  this_file_language: &quot;English&quot; 
+  time:
+    am: 'am'
+    formats:
+      datetime:
+        formats:
+          default: &quot;%Y-%m-%dT%H:%M:%S%Z&quot;
+      default: &quot;%a %b %d %H:%M:%S %Z %Y&quot;   
+      long: &quot;%B %d, %Y %H:%M&quot;
+      only_second: &quot;%S&quot;
+      short: &quot;%d %b %H:%M&quot;
+      time: &quot;%H:%M&quot;
+      timestamp: &quot;%I:%M %p on %B %d, %Y&quot; 
+    pm: 'pm'
+  timestamp:
+    at: 'at'
+    by: 'by'
+    last_updated: 'Last Updated'
+  user: 'User'
+  username: 'Username'
+  users: 'Users'
+  users_controller:
+    cannot_delete_self: 'You cannot delete yourself.'    
+  version: 'Version'
+  view_site: 'View Site'
+  website: 'Website'
+  welcome_controller:
+    invalid_user: 'Invalid username or password.' 
+    logged_out: 'You are now logged out.'  </diff>
      <filename>lib/generators/language_extension/templates/lang.yml</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ namespace :radiant do
   namespace :extensions do
     namespace :&lt;%= file_name %&gt; do
       
-      desc &quot;Runs the migration of the &lt;%= extension_name %&gt; extension&quot;
+      desc &quot;Runs the migration of the &lt;%= localization_name %&gt; language pack&quot;
       task :migrate =&gt; :environment do
         require 'radiant/extension_migrator'
         if ENV[&quot;VERSION&quot;]
@@ -12,7 +12,7 @@ namespace :radiant do
         end
       end
       
-      desc &quot;Copies public assets of the &lt;%= extension_name %&gt; to the instance public/ directory.&quot;
+      desc &quot;Copies public assets of the &lt;%= localization_name %&gt; language pack to the instance public/ directory.&quot;
       task :update =&gt; :environment do
         is_svn_or_dir = proc {|path| path =~ /\.svn/ || File.directory?(path) }
         puts &quot;Copying assets from &lt;%= class_name %&gt;&quot;</diff>
      <filename>lib/generators/language_extension/templates/tasks.rake</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1eea2cc2eb8aa6b8f5473ee813d8b230f5cbecb7</id>
    </parent>
  </parents>
  <author>
    <name>Keith</name>
    <email>keith@keithbingman.com</email>
  </author>
  <url>http://github.com/radiant/radiant/commit/5f8acb5e4c7445d43f5e763268483f708865cc26</url>
  <id>5f8acb5e4c7445d43f5e763268483f708865cc26</id>
  <committed-date>2009-10-16T02:33:05-07:00</committed-date>
  <authored-date>2009-10-16T02:33:05-07:00</authored-date>
  <message>added a generator for language extensions</message>
  <tree>53f9cf55b69b1a179dc152efaca83a8984b047d3</tree>
  <committer>
    <name>Keith</name>
    <email>keith@keithbingman.com</email>
  </committer>
</commit>
