fronde 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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