Class: Middleman::CoreExtensions::I18n::Localizer
- Inherits:
-
Object
- Object
- Middleman::CoreExtensions::I18n::Localizer
- Defined in:
- middleman-core/lib/middleman-core/core_extensions/i18n.rb
Instance Method Summary (collapse)
- - (Object) get_localization_data(path)
-
- (Localizer) initialize(app)
constructor
A new instance of Localizer.
- - (Object) langs
-
- (void) manipulate_resource_list(resources)
Update the main sitemap resource list.
- - (Object) setup(options)
Constructor Details
- (Localizer) initialize(app)
A new instance of Localizer
30 31 32 33 |
# File 'middleman-core/lib/middleman-core/core_extensions/i18n.rb', line 30 def initialize(app) @app = app @maps = {} end |
Instance Method Details
- (Object) get_localization_data(path)
78 79 80 81 |
# File 'middleman-core/lib/middleman-core/core_extensions/i18n.rb', line 78 def get_localization_data(path) @_localization_data ||= {} @_localization_data[path] end |
- (Object) langs
70 71 72 73 74 75 76 |
# File 'middleman-core/lib/middleman-core/core_extensions/i18n.rb', line 70 def langs @options[:langs] || begin Dir[File.join(@app.root, @app.locales_dir, "*.yml")].map { |file| File.basename(file).gsub(".yml", "") }.sort.map(&:to_sym) end end |
- (void) manipulate_resource_list(resources)
This method returns an undefined value.
Update the main sitemap resource list
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'middleman-core/lib/middleman-core/core_extensions/i18n.rb', line 85 def manipulate_resource_list(resources) @_localization_data = {} new_resources = [] resources.each do |resource| next unless File.fnmatch(File.join(@templates_dir, "**"), resource.path) page_id = File.basename(resource.path, File.extname(resource.path)) langs.map do |lang| ::I18n.locale = lang localized_page_id = ::I18n.t("paths.#{page_id}", :default => page_id) path = resource.path.sub(@templates_dir, "") # Build lang path if @mount_at_root == lang prefix = "/" else replacement = @lang_map.has_key?(lang) ? @lang_map[lang] : lang prefix = @path.sub(":locale", replacement.to_s) end path = ::Middleman::Util.normalize_path( File.join(prefix, path.sub(page_id, localized_page_id)) ) @_localization_data[path] = [lang, path, localized_page_id] p = ::Middleman::Sitemap::Resource.new( @app.sitemap, path ) p.proxy_to(resource.path) new_resources << p end end resources + new_resources end |
- (Object) setup(options)
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'middleman-core/lib/middleman-core/core_extensions/i18n.rb', line 35 def setup() @options = @lang_map = @options[:lang_map] || {} @path = @options[:path] || "/:locale/" @templates_dir = @options[:templates_dir] || "localizable" @mount_at_root = @options.has_key?(:mount_at_root) ? @options[:mount_at_root] : langs.first if !@app.build? puts "== Locales: #{langs.join(", ")}" end # Don't output localizable files @app.ignore File.join(@templates_dir, "**") @app.sitemap. do |url| if d = get_localization_data(url) lang, page_id = d instance_vars = Proc.new { ::I18n.locale = lang @lang = lang @page_id = page_id } { :blocks => [instance_vars] } else {} end end @app.sitemap.register_resource_list_manipulator( :i18n, @app.i18n ) end |