Reload i18n files when they change, closes #616
This commit is contained in:
parent
c53c46729a
commit
3a4c063535
|
@ -2,6 +2,7 @@ Master
|
||||||
===
|
===
|
||||||
* Bundled Normalize.css updated to 2.0.1
|
* Bundled Normalize.css updated to 2.0.1
|
||||||
* Fixed encoding extension activation
|
* Fixed encoding extension activation
|
||||||
|
* Reload i18n on file changes (#616)
|
||||||
|
|
||||||
3.0.5
|
3.0.5
|
||||||
====
|
====
|
||||||
|
|
|
@ -18,7 +18,37 @@ Feature: i18n Preview
|
||||||
Then I should see "Como Esta?"
|
Then I should see "Como Esta?"
|
||||||
When I go to "/es/hola.html"
|
When I go to "/es/hola.html"
|
||||||
Then I should see "Hola World"
|
Then I should see "Hola World"
|
||||||
|
|
||||||
|
Scenario: A template changes i18n during preview
|
||||||
|
Given a fixture app "i18n-test-app"
|
||||||
|
And a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
activate :i18n
|
||||||
|
"""
|
||||||
|
Given the Server is running at "i18n-test-app"
|
||||||
|
And the file "locales/en.yml" has the contents
|
||||||
|
"""
|
||||||
|
---
|
||||||
|
en:
|
||||||
|
greetings: "Howdy"
|
||||||
|
hi: "Hello"
|
||||||
|
"""
|
||||||
|
When I go to "/"
|
||||||
|
Then I should see "Howdy"
|
||||||
|
When I go to "/hello.html"
|
||||||
|
Then I should see "Hello World"
|
||||||
|
When the file "locales/en.yml" has the contents
|
||||||
|
"""
|
||||||
|
---
|
||||||
|
en:
|
||||||
|
greetings: "How You Doin"
|
||||||
|
hi: "Sup"
|
||||||
|
"""
|
||||||
|
When I go to "/"
|
||||||
|
Then I should see "How You Doin"
|
||||||
|
When I go to "/hello.html"
|
||||||
|
Then I should see "Sup World"
|
||||||
|
|
||||||
Scenario: Running localize with the alt path config
|
Scenario: Running localize with the alt path config
|
||||||
Given a fixture app "i18n-test-app"
|
Given a fixture app "i18n-test-app"
|
||||||
And a file named "config.rb" with:
|
And a file named "config.rb" with:
|
||||||
|
|
|
@ -13,10 +13,12 @@ module Middleman
|
||||||
|
|
||||||
# Needed for helpers as well
|
# Needed for helpers as well
|
||||||
app.after_configuration do
|
app.after_configuration do
|
||||||
::I18n.load_path += Dir[File.join(root, locales_dir, "*.yml")]
|
locales_glob = File.join(locales_dir, "*.yml");
|
||||||
|
|
||||||
|
::I18n.load_path += Dir[File.join(root, locales_glob)]
|
||||||
::I18n.reload!
|
::I18n.reload!
|
||||||
|
|
||||||
Localizer.new(self, options)
|
Localizer.new(self, locales_glob, options)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
alias :included :registered
|
alias :included :registered
|
||||||
|
@ -27,8 +29,9 @@ module Middleman
|
||||||
attr_reader :app
|
attr_reader :app
|
||||||
delegate :logger, :to => :app
|
delegate :logger, :to => :app
|
||||||
|
|
||||||
def initialize(app, options={})
|
def initialize(app, locales_glob, options={})
|
||||||
@app = app
|
@app = app
|
||||||
|
@locales_glob = locales_glob
|
||||||
@maps = {}
|
@maps = {}
|
||||||
@options = options
|
@options = options
|
||||||
|
|
||||||
|
@ -62,11 +65,20 @@ module Middleman
|
||||||
:i18n,
|
:i18n,
|
||||||
self
|
self
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@app.files.changed(&method(:on_file_changed))
|
||||||
|
@app.files.deleted(&method(:on_file_changed))
|
||||||
|
end
|
||||||
|
|
||||||
|
def on_file_changed(file)
|
||||||
|
if File.fnmatch(@locales_glob, file)
|
||||||
|
::I18n.reload!
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def langs
|
def langs
|
||||||
@options[:langs] || begin
|
@options[:langs] || begin
|
||||||
Dir[File.join(@app.root, @app.locales_dir, "*.yml")].map { |file|
|
Dir[File.join(@app.root, @locales_glob)].map { |file|
|
||||||
File.basename(file).gsub(".yml", "")
|
File.basename(file).gsub(".yml", "")
|
||||||
}.sort.map(&:to_sym)
|
}.sort.map(&:to_sym)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue