fronde 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/tasks/site.rake CHANGED
@@ -5,79 +5,104 @@ require_relative '../fronde/index'
5
5
  require_relative '../fronde/templater'
6
6
  require_relative '../fronde/cli/throbber'
7
7
 
8
+ def remove_orphan_file_maybe(file_path)
9
+ print I18n.t('fronde.tasks.site.remove_orphan_file')
10
+ action = $stdin.gets.strip.downcase
11
+ return unless action == 'y'
12
+
13
+ FileUtils.rm file_path
14
+ end
15
+
8
16
  namespace :site do
9
17
  desc 'Build all your projects'
10
18
  task :build, [:force?] => ['var/lib/org-config.el'] do |_, args|
11
19
  args.with_defaults(force?: false)
20
+
21
+ FileUtils.rm_f 'var/tmp/keywords'
12
22
  build_index = Thread.new do
13
23
  all_index = Fronde::Index.all_blog_index
24
+ offset = 0
14
25
  all_index.each do |index|
15
- index.write_all_org(verbose: verbose)
26
+ index.write_all_org(verbose:)
27
+ offset = File.write('var/tmp/keywords', index.emacs_keywords, offset)
16
28
  end
17
29
  Thread.current[:all_indexes] = all_index
18
30
  end
19
- if verbose
20
- build_index.join
21
- else
22
- Fronde::CLI::Throbber.run(
23
- build_index, R18n.t.fronde.tasks.site.generating_indexes
24
- )
25
- end
31
+ Fronde::CLI::Throbber.run(
32
+ build_index, I18n.t('fronde.tasks.site.generating_indexes'), verbose
33
+ )
26
34
  all_indexes = build_index[:all_indexes]
27
35
 
28
36
  build_html = Thread.new do
29
- rm_r 'var/tmp/timestamps', force: true if args[:force?]
30
- Fronde::Emacs.new(verbose: verbose).publish
37
+ Fronde::Emacs.new(verbose:).publish(force: args[:force?])
31
38
  end
32
- Fronde::CLI::Throbber.run(build_html, R18n.t.fronde.tasks.site.building)
33
-
39
+ Fronde::CLI::Throbber.run(
40
+ build_html, I18n.t('fronde.tasks.site.building'), verbose
41
+ )
34
42
  if all_indexes.any?
35
- if verbose
36
- all_indexes.each(&:write_all_feeds)
37
- else
38
- publish_feed = Thread.new do
39
- all_indexes.each do |index|
40
- index.write_all_feeds(verbose: false)
41
- end
43
+ publish_feed = Thread.new do
44
+ all_indexes.each do |index|
45
+ index.write_all_feeds(verbose: false)
42
46
  end
43
- Fronde::CLI::Throbber.run(
44
- publish_feed, R18n.t.fronde.tasks.site.publishing_feeds
45
- )
46
47
  end
48
+ Fronde::CLI::Throbber.run(
49
+ publish_feed, I18n.t('fronde.tasks.site.publishing_feeds'), verbose
50
+ )
47
51
  end
48
52
 
49
53
  next unless Fronde::CONFIG.sources.any? { |source| source.type == 'html' }
50
54
 
51
55
  customize_html = Thread.new do
52
56
  pubfolder = Fronde::CONFIG.get('html_public_folder')
53
- Dir["#{pubfolder}/**/*.html"].each do |f|
57
+ Dir.glob("#{pubfolder}/**/*.html").each do |f|
58
+ if verbose
59
+ short_file = f.sub(/^#{Dir.pwd}/, '.')
60
+ puts I18n.t('fronde.tasks.site.customizing_file', file: short_file)
61
+ end
54
62
  Fronde::Templater.customize_output(f)
55
63
  end
56
64
  end
57
65
  Fronde::CLI::Throbber.run(
58
- customize_html, R18n.t.fronde.tasks.site.customizing
66
+ customize_html, I18n.t('fronde.tasks.site.customizing'), verbose
59
67
  )
60
68
  # :nocov:
61
69
  rescue RuntimeError, Interrupt
62
- warn R18n.t.fronde.tasks.site.aborting
70
+ warn I18n.t('fronde.tasks.site.aborting')
63
71
  next
64
72
  # :nocov:
65
73
  end
66
74
 
75
+ desc 'Build a single file'
76
+ task :build_file, %i[path force?] do |_, args|
77
+ args.with_defaults(force?: false)
78
+ Fronde::Emacs.new(verbose: true).publish_file(
79
+ args[:path], force: args[:force?]
80
+ )
81
+ puts I18n.t('fronde.tasks.site.customizing_file', file: args[:path])
82
+ Fronde::Templater.customize_output(args[:path])
83
+ end
84
+
67
85
  desc 'Cleanup orphaned published files'
68
86
  task :clean do
87
+ Fronde::Index.all_blog_index do |index|
88
+ project = index.project
89
+ all_tags = %w[index] + index.all_tags
90
+ Dir.glob("#{project['path']}/tags/*").each do |file_name|
91
+ slug = File.basename file_name, '.org'
92
+ next if all_tags.include?(slug)
93
+
94
+ short_file = file_name.sub(/^#{Dir.pwd}/, '.')
95
+ puts I18n.t('fronde.tasks.site.orphan_tag', file: short_file)
96
+ remove_orphan_file_maybe file_name
97
+ end
98
+ end
69
99
  pubfolder = Fronde::CONFIG.get('html_public_folder')
70
- Dir["#{pubfolder}/**/*.html"].each do |file_name|
100
+ Dir.glob("#{pubfolder}/**/*.html").each do |file_name|
71
101
  source = Fronde::Org::File.new(file_name)
72
-
73
102
  # Return if an org file has been found for this published file
74
103
  next unless source.file == file_name
75
104
 
76
- print R18n.t.fronde.tasks.site.remove_orphan_file
77
- action = $stdin.gets.strip.downcase
78
- next unless action == 'y'
79
-
80
- rm file_name
105
+ remove_orphan_file_maybe file_name
81
106
  end
82
107
  end
83
108
 
data/lib/tasks/sync.rake CHANGED
@@ -15,13 +15,9 @@ namespace :sync do
15
15
  publish_thread = Fronde::Sync.pull_or_push(
16
16
  :push, type, test: args[:test?], verbose: verbose
17
17
  )
18
- if verbose
19
- publish_thread.join
20
- else
21
- Fronde::CLI::Throbber.run(
22
- publish_thread, format('Publishing %<fmt>s:', fmt: type)
23
- )
24
- end
18
+ Fronde::CLI::Throbber.run(
19
+ publish_thread, format('Publishing %<fmt>s:', fmt: type), verbose
20
+ )
25
21
  rescue Fronde::Sync::Error => e
26
22
  warn e
27
23
  next
@@ -36,13 +32,9 @@ namespace :sync do
36
32
  pull_thread = Fronde::Sync.pull_or_push(
37
33
  :pull, type, test: args[:test?], verbose: verbose
38
34
  )
39
- if verbose
40
- pull_thread.join
41
- else
42
- Fronde::CLI::Throbber.run(
43
- pull_thread, format('Pulling %<fmt>s:', fmt: type)
44
- )
45
- end
35
+ Fronde::CLI::Throbber.run(
36
+ pull_thread, format('Pulling %<fmt>s:', fmt: type), verbose
37
+ )
46
38
  rescue Fronde::Sync::Error => e
47
39
  warn e
48
40
  next
data/locales/en.yml CHANGED
@@ -1,86 +1,147 @@
1
1
  ---
2
- fronde:
3
- bin:
4
- usage: 'Usage: fronde %1 [options]'
5
- done: done
6
- interrupted: interrupted
7
- commands:
8
- cmd_title: Commands
9
- alias: Alias for ‘%1’.
10
- new: Initialize a new Fronde instance.
11
- update: >-
12
- Update Fronde configuration and dependency (to be run after each
13
- modification of the config.yml file and once in a while to stay
14
- up-to-date with Org).
15
- preview: Start a test web server to preview the generated website.
16
- open: Open or create an org file.
17
- build: Compile all org files to HTML or gemtext.
18
- publish: Push local changes to the public web server.
19
- help: Alias for the -h switch.
20
- options:
21
- cmd_title: Options
22
- help: Display help for a command and exit.
23
- version: Display Fronde version and exit.
24
- default_title: New article
25
- error:
2
+ en:
3
+ fronde:
26
4
  bin:
27
- label: An error occurred.
28
- explanation: >-
29
- To see the error, run the same command again with more
30
- verbosity, for example, fronde build -v
31
- no_command: 'ERROR: no command or unknown command given.'
32
- no_file: >-
33
- Warning: No file path given. Default file will be used.
34
- config:
35
- deprecated_public_folder: >-
36
- ‘public_folder’ setting is deprecated. Please use either
37
- ‘html_public_folder’ or ‘gemini_public_folder’.
38
- source:
39
- no_path: Skipping %{source} as its ‘path’ key is missing.
40
- duplicate: >-
41
- Skipping %{source} as it appears at least twice in the sources
42
- of type %{type}.
43
- inclusion: >-
44
- Skipping %{source} as it might be already embedded into the
45
- other source %{other_source} of type %{type}.
46
- org_file:
47
- no_file_or_title: No file or title given.
48
- no_project: No project found for %{file}. Publication will fail.
5
+ usage: 'Usage: fronde %{label} [options]'
6
+ done: done
7
+ interrupted: interrupted
8
+ commands:
9
+ cmd_title: Commands
10
+ alias: Alias for ‘%{alias}’.
11
+ new: Initialize a new Fronde instance.
12
+ update: >-
13
+ Update Fronde configuration and dependency (to be run after each
14
+ modification of the config.yml file and once in a while to stay
15
+ up-to-date with Org).
16
+ preview: Start a test web server to preview the generated website.
17
+ open: Open or create an org file.
18
+ build: Compile all org files to HTML or gemtext.
19
+ publish: Push local changes to the public web server.
20
+ help: Alias for the -h switch.
21
+ options:
22
+ cmd_title: Options
23
+ help: Display help for a command and exit.
24
+ version: Display Fronde version and exit.
25
+ default_title: New article
26
+ error:
27
+ bin:
28
+ label: An error occurred.
29
+ explanation: >-
30
+ To see the error, run the same command again with more
31
+ verbosity, for example, fronde build -v
32
+ no_command: 'ERROR: no command or unknown command given.'
33
+ no_file: >-
34
+ Warning: No file path given. Default file will be used.
35
+ config:
36
+ deprecated_public_folder: >-
37
+ ‘public_folder’ setting is deprecated. Please use either
38
+ ‘html_public_folder’ or ‘gemini_public_folder’.
39
+ source:
40
+ no_path: Skipping %{source} as its ‘path’ key is missing.
41
+ duplicate: >-
42
+ Skipping %{source} as it appears at least twice in the sources
43
+ of type %{type}.
44
+ inclusion: >-
45
+ Skipping %{source} as it might be already embedded into the
46
+ other source %{other_source} of type %{type}.
47
+ org_file:
48
+ no_file_or_title: No file or title given.
49
+ no_project: No project found for %{file}. Publication will fail.
50
+ dangerous_code_block: >-
51
+ The file %{file} contains at least one code block to eval, which will
52
+ be ignored for security reasons. You can still evaluate it manually
53
+ from inside Org in order to have its result exported.
54
+ index:
55
+ wrong_sort_kind: '%{kind} not in %{accepted_values}'
56
+ templater:
57
+ no_element_found: >-
58
+ No element found with the selector %{source} in %{file}.
49
59
  index:
50
- wrong_sort_kind: '%{kind} not in %{accepted_values}'
51
- templater:
52
- no_element_found: >-
53
- No element found with the selector %{source} in %{file}.
54
- no_head_element: No head tag found in file %{file}.
55
- index:
56
- unsorted: Unsorted
57
- published_on: Published on %1
58
- all_tags: All tags
59
- by_name: By alphabetical order
60
- by_weight: By publication number
61
- full_date_format: '%A %{date}'
62
- full_date_with_time_format: '%{date} at %{time}'
63
- index_generated: Generated index file for %{tag}.
64
- atom_generated: Generated Atom feed for %{tag}.
65
- org:
66
- generate_blog_index: Generating blog home page for %{name}
67
- postamble:
68
- written_by: Written by %a
69
- last_modification: Last modification on %C
70
- with_emacs: with %c, and published with %n
71
- with_emacs_html: with %c, and published with %N
72
- tasks:
73
- site:
74
- aborting: Aborting
75
- generating_indexes: 'Generating index files:'
76
- building_indexes: 'Building index files:'
77
- publishing_feeds: 'Publishing Atom feeds:'
78
- building: 'Building:'
79
- customizing: 'Customizing:'
80
- remove_orphan_file: 'Remove it? [y/N]: '
60
+ unsorted: Unsorted
61
+ published_on: Published on %{date}
62
+ all_tags: All tags
63
+ by_name: By alphabetical order
64
+ by_weight: By publication number
65
+ index_generated: Generated index file for %{tag}.
66
+ atom_generated: Generated Atom feed for %{tag}.
81
67
  org:
82
- downloaded: Org version %{version} has been downloaded.
83
- downloading: 'Downloading Org:'
84
- no_download: Impossible to download Org now. Please try again later.
85
- installed: Org version %{version} has been locally installed.
86
- installing: 'Installing Org:'
68
+ generate_blog_index: Generating blog home page for %{name}
69
+ postamble:
70
+ written_by: Written by %a
71
+ last_modification: Last modification on %C
72
+ with_emacs: with %c, and published with %n
73
+ with_emacs_html: with %c, and published with %N
74
+ neocities:
75
+ deleting: deleting %{path}
76
+ sha1_differ: SHA1 hash differ for %{uri}
77
+ tasks:
78
+ site:
79
+ aborting: Aborting
80
+ generating_indexes: 'Generating index files:'
81
+ building_indexes: 'Building index files:'
82
+ publishing_feeds: 'Publishing Atom feeds:'
83
+ building: 'Building:'
84
+ customizing: 'Customizing:'
85
+ customizing_file: 'Customizing file %{file}'
86
+ orphan_tag: The file %{file} refers to a tag, which is no more in use.
87
+ remove_orphan_file: 'Remove it? [y/N]: '
88
+ org:
89
+ downloaded: Org version %{version} has been downloaded.
90
+ downloading: 'Downloading Org:'
91
+ no_download: Impossible to download Org now. Please try again later.
92
+ installed: Org version %{version} has been locally installed.
93
+ installing: 'Installing Org:'
94
+ time:
95
+ formats:
96
+ default: '%a, %b %-d, %Y %H:%M:%S %z'
97
+ long: '%A, %B %-d, %Y at %R'
98
+ long_no_year: '%A, %B %-d at %R'
99
+ long_no_time: '%A, %B %-d, %Y'
100
+ long_no_time_no_year: '%A, %B %-d'
101
+ date:
102
+ abbr_day_names:
103
+ - Sun
104
+ - Mon
105
+ - Tue
106
+ - Wed
107
+ - Thu
108
+ - Fri
109
+ - Sat
110
+ abbr_month_names:
111
+ -
112
+ - Jan
113
+ - Feb
114
+ - Mar
115
+ - Apr
116
+ - May
117
+ - Jun
118
+ - Jul
119
+ - Aug
120
+ - Sep
121
+ - Oct
122
+ - Nov
123
+ - Dec
124
+ day_names:
125
+ - Sunday
126
+ - Monday
127
+ - Tuesday
128
+ - Wednesday
129
+ - Thursday
130
+ - Friday
131
+ - Saturday
132
+ formats:
133
+ default: '%Y-%m-%d'
134
+ month_names:
135
+ -
136
+ - January
137
+ - February
138
+ - March
139
+ - April
140
+ - May
141
+ - June
142
+ - July
143
+ - August
144
+ - September
145
+ - October
146
+ - November
147
+ - December
data/locales/fr.yml CHANGED
@@ -1,94 +1,157 @@
1
1
  ---
2
- fronde:
3
- bin:
4
- usage: 'Usage : fronde %1 [options]'
5
- done: fait
6
- interrupted: arrêté
7
- commands:
8
- cmd_title: Commandes
9
- alias: Alias pour ‘%1’.
10
- new: Initialise une nouvelle instance de Fronde.
11
- update: >-
12
- Met à jour la configuration et les dépendances de Fronde (à
13
- lancer après chaque modification du fichier config.yml et une
14
- fois de temps à autre pour rester à jour avec Org).
15
- preview: >-
16
- Démarre un serveur web de test pour prévisualiser le site
17
- généré.
18
- open: Ouvre ou crée un fichier org.
19
- build: Compile les fichiers org en HTML ou gemtext.
20
- publish: >-
21
- Pousse les changements locaux vers le serveur web public.
22
- help: Alias pour l'argument -h.
23
- options:
24
- cmd_title: Options
25
- help: Affiche l'aide pour une commande et quitte.
26
- version: Affiche la version de Fronde et quitte.
27
- default_title: Nouvel article
28
- error:
2
+ fr:
3
+ fronde:
29
4
  bin:
30
- label: Une erreur est survenue
31
- explanation: >-
32
- Pour voir le détail, lancez de nouveau la commande avec plus de
33
- verbosité, par exemple fronde build -v
34
- no_command: 'ERREUR : Aucune commande ou commande inconnue donnée.'
35
- no_file: >-
36
- Attention : Aucun chemin de fichier donné. Utilisation du
37
- fichier par défaut.
38
- config:
39
- deprecated_public_folder: >-
40
- La clé de configuration ‘public_folder’ est dépréciée. Merci
41
- d’utiliser ‘html_public_folder’ ou ‘gemini_public_folder’ à la
42
- place.
43
- source:
44
- no_path: >-
45
- Ignore %{source} comme sa clé ‘path’ est manquante.
46
- duplicate: >-
47
- Ignore %{source} comme elle apparaît au moins deux fois dans les
48
- sources de type %{type}.
49
- inclusion: >-
50
- Ignore %{source} qui semble être déjà inclue dans l’autre source
51
- %{other_source} de type %{type}.
52
- org_file:
53
- no_file_or_title: Aucun chemin de fichier ou titre donné.
54
- no_project: Aucun projet trouvé pour %{file}. Sa publication va échouer.
5
+ usage: 'Usage : fronde %{label} [options]'
6
+ done: fait
7
+ interrupted: arrêté
8
+ commands:
9
+ cmd_title: Commandes
10
+ alias: Alias pour ‘%{alias}’.
11
+ new: Initialise une nouvelle instance de Fronde.
12
+ update: >-
13
+ Met à jour la configuration et les dépendances de Fronde (à
14
+ lancer après chaque modification du fichier config.yml et une
15
+ fois de temps à autre pour rester à jour avec Org).
16
+ preview: >-
17
+ Démarre un serveur web de test pour prévisualiser le site
18
+ généré.
19
+ open: Ouvre ou crée un fichier org.
20
+ build: Compile les fichiers org en HTML ou gemtext.
21
+ publish: >-
22
+ Pousse les changements locaux vers le serveur web public.
23
+ help: Alias pour l’argument -h.
24
+ options:
25
+ cmd_title: Options
26
+ help: Affiche l’aide pour une commande et quitte.
27
+ version: Affiche la version de Fronde et quitte.
28
+ default_title: Nouvel article
29
+ error:
30
+ bin:
31
+ label: Une erreur est survenue
32
+ explanation: >-
33
+ Pour voir le détail, lancez de nouveau la commande avec plus de
34
+ verbosité, par exemple fronde build -v
35
+ no_command: 'ERREUR : Aucune commande ou commande inconnue donnée.'
36
+ no_file: >-
37
+ Attention : Aucun chemin de fichier donné. Utilisation du
38
+ fichier par défaut.
39
+ config:
40
+ deprecated_public_folder: >-
41
+ La clé de configuration ‘public_folder’ est dépréciée. Merci
42
+ d’utiliser ‘html_public_folder’ ou ‘gemini_public_folder’ à la
43
+ place.
44
+ source:
45
+ no_path: >-
46
+ Ignore %{source} comme sa clé ‘path’ est manquante.
47
+ duplicate: >-
48
+ Ignore %{source} comme elle apparaît au moins deux fois dans les
49
+ sources de type %{type}.
50
+ inclusion: >-
51
+ Ignore %{source} qui semble être déjà inclue dans l’autre source
52
+ %{other_source} de type %{type}.
53
+ org_file:
54
+ no_file_or_title: Aucun chemin de fichier ou titre donné.
55
+ no_project: Aucun projet trouvé pour %{file}. Sa publication va échouer.
56
+ dangerous_code_block: >-
57
+ Le fichier %{file} contient au moins un bloc de code à évaluer qui
58
+ sera ignoré pour des raisons de sécûrité. Vous pouvez manuellement
59
+ l’évaluer dans Org pour que son résultat soit correctement exporté.
60
+ index:
61
+ wrong_sort_kind: '%{kind} n’est pas dans %{accepted_values}'
62
+ templater:
63
+ no_element_found: >-
64
+ Aucun élément trouvé avec le sélecteur %{source} dans %{file}.
55
65
  index:
56
- wrong_sort_kind: '%{kind} n’est pas dans %{accepted_values}'
57
- templater:
58
- no_element_found: >-
59
- Aucun élément trouvé avec le sélecteur %{source} dans %{file}.
60
- no_head_element: Aucun élément head trouvé dans le fichier %{file}.
61
- index:
62
- unsorted: Non triés
63
- published_on: Publié le %1
64
- all_tags: Toutes les étiquettes
65
- by_name: Par ordre alphabétique
66
- by_weight: Par nombre de publication
67
- full_date_format: '%A %{date}'
68
- full_date_with_time_format: '%{date} à %{time}'
69
- index_generated: Fichier d’index généré pour %{tag}.
70
- atom_generated: Flux Atom généré pour %{tag}.
71
- org:
72
- generate_blog_index: Génération de la page d’accueil du blog pour %{name}
73
- postamble:
74
- written_by: Écrit par %a
75
- last_modification: dernière modification le %C
76
- with_emacs: avec %c et publié avec %n
77
- with_emacs_html: avec %c et publié avec %N
78
- tasks:
79
- site:
80
- aborting: Annulation
81
- generating_indexes: 'Génération des fichiers d’index :'
82
- building_indexes: 'Compilation des fichiers d’index :'
83
- publishing_feeds: 'Publication des flux Atom :'
84
- building: 'Compilation :'
85
- customizing: 'Décoration :'
86
- remove_orphan_file: 'Le supprimer ? [y/N]: '
66
+ unsorted: Non triés
67
+ published_on: Publié le %{date}
68
+ all_tags: Toutes les étiquettes
69
+ by_name: Par ordre alphabétique
70
+ by_weight: Par nombre de publication
71
+ index_generated: Fichier d’index généré pour %{tag}.
72
+ atom_generated: Flux Atom généré pour %{tag}.
87
73
  org:
88
- downloaded: La version %{version} de Org a été téléchargée.
89
- downloading: 'Téléchargement de Org :'
90
- no_download: >-
91
- Impossible de télécharger Org maintenant. Merci de réessayer
92
- plus tard.
93
- installed: La version %{version} de Org a été installé localement.
94
- installing: 'Installation de Org :'
74
+ generate_blog_index: Génération de la page d’accueil du blog pour %{name}
75
+ postamble:
76
+ written_by: Écrit par %a
77
+ last_modification: dernière modification le %C
78
+ with_emacs: avec %c et publié avec %n
79
+ with_emacs_html: avec %c et publié avec %N
80
+ neocities:
81
+ deleting: suppression de %{path}
82
+ sha1_differ: La somme de contrôle SHA1 diffère pour %{uri}
83
+ tasks:
84
+ site:
85
+ aborting: Annulation
86
+ generating_indexes: 'Génération des fichiers d’index :'
87
+ building_indexes: 'Compilation des fichiers d’index :'
88
+ publishing_feeds: 'Publication des flux Atom :'
89
+ building: 'Compilation :'
90
+ customizing: 'Décoration :'
91
+ customizing_file: 'Décoration du fichier %{file}'
92
+ orphan_tag: >-
93
+ Le fichier %{file} fait référence à une étiquette qui n’est plus
94
+ utilisée.
95
+ remove_orphan_file: 'Le supprimer ? [y/N]: '
96
+ org:
97
+ downloaded: La version %{version} de Org a été téléchargée.
98
+ downloading: 'Téléchargement de Org :'
99
+ no_download: >-
100
+ Impossible de télécharger Org maintenant. Merci de réessayer
101
+ plus tard.
102
+ installed: La version %{version} de Org a été installé localement.
103
+ installing: 'Installation de Org :'
104
+ time:
105
+ formats:
106
+ default: '%A %-d %B %Y %R'
107
+ long: '%A %-d %B %Y à %R'
108
+ long_no_year: '%A %-d %B à %R'
109
+ long_no_time: '%A %-d %B %Y'
110
+ long_no_time_no_year: '%A %-d %B'
111
+ date:
112
+ abbr_day_names:
113
+ - dim
114
+ - lun
115
+ - mar
116
+ - mer
117
+ - jeu
118
+ - ven
119
+ - sam
120
+ abbr_month_names:
121
+ -
122
+ - jan.
123
+ - fév.
124
+ - mars
125
+ - avr.
126
+ - mai
127
+ - juin
128
+ - juil.
129
+ - août
130
+ - sept.
131
+ - oct.
132
+ - nov.
133
+ - déc.
134
+ day_names:
135
+ - dimanche
136
+ - lundi
137
+ - mardi
138
+ - mercredi
139
+ - jeudi
140
+ - vendredi
141
+ - samedi
142
+ formats:
143
+ default: '%d/%m/%Y'
144
+ month_names:
145
+ -
146
+ - janvier
147
+ - février
148
+ - mars
149
+ - avril
150
+ - mai
151
+ - juin
152
+ - juillet
153
+ - août
154
+ - septembre
155
+ - octobre
156
+ - novembre
157
+ - décembre