i18n-js 3.8.3 → 4.0.0.alpha1
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.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +4 -0
- data/.github/FUNDING.yml +1 -1
- data/.github/ISSUE_TEMPLATE/bug_report.md +41 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +38 -0
- data/.github/dependabot.yml +15 -0
- data/.github/workflows/ruby-tests.yml +61 -0
- data/.gitignore +11 -7
- data/.rubocop.yml +12 -0
- data/CHANGELOG.md +12 -535
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +79 -0
- data/Gemfile +3 -0
- data/LICENSE.md +20 -0
- data/README.md +86 -1030
- data/Rakefile +10 -20
- data/exe/i18n +5 -0
- data/i18n-js.gemspec +47 -29
- data/lib/guard/i18n-js.rb +78 -0
- data/lib/guard/i18n-js/templates/Guardfile +10 -0
- data/lib/guard/i18n-js/version.rb +13 -0
- data/lib/i18n-js.rb +66 -1
- data/lib/i18n-js/cli.rb +47 -0
- data/lib/i18n-js/cli/command.rb +43 -0
- data/lib/i18n-js/cli/export_command.rb +108 -0
- data/lib/i18n-js/cli/init_command.rb +50 -0
- data/lib/i18n-js/cli/ui.rb +30 -0
- data/lib/i18n-js/cli/version_command.rb +18 -0
- data/lib/i18n-js/listen.rb +80 -0
- data/lib/i18n-js/schema.rb +92 -0
- data/lib/i18n-js/version.rb +5 -0
- metadata +122 -194
- data/.editorconfig +0 -24
- data/.github/workflows/tests.yaml +0 -100
- data/.npmignore +0 -27
- data/Appraisals +0 -44
- data/app/assets/javascripts/i18n.js +0 -1095
- data/app/assets/javascripts/i18n/filtered.js.erb +0 -23
- data/app/assets/javascripts/i18n/shims.js +0 -240
- data/app/assets/javascripts/i18n/translations.js +0 -3
- data/gemfiles/i18n_0_6.gemfile +0 -7
- data/gemfiles/i18n_0_7.gemfile +0 -7
- data/gemfiles/i18n_0_8.gemfile +0 -7
- data/gemfiles/i18n_0_9.gemfile +0 -7
- data/gemfiles/i18n_1_0.gemfile +0 -7
- data/gemfiles/i18n_1_1.gemfile +0 -7
- data/gemfiles/i18n_1_2.gemfile +0 -7
- data/gemfiles/i18n_1_3.gemfile +0 -7
- data/gemfiles/i18n_1_4.gemfile +0 -7
- data/gemfiles/i18n_1_5.gemfile +0 -7
- data/gemfiles/i18n_1_6.gemfile +0 -7
- data/gemfiles/i18n_1_7.gemfile +0 -7
- data/gemfiles/i18n_1_8.gemfile +0 -7
- data/i18njs.png +0 -0
- data/lib/i18n/js.rb +0 -264
- data/lib/i18n/js/dependencies.rb +0 -63
- data/lib/i18n/js/engine.rb +0 -87
- data/lib/i18n/js/fallback_locales.rb +0 -70
- data/lib/i18n/js/formatters/base.rb +0 -25
- data/lib/i18n/js/formatters/js.rb +0 -39
- data/lib/i18n/js/formatters/json.rb +0 -13
- data/lib/i18n/js/middleware.rb +0 -82
- data/lib/i18n/js/private/config_store.rb +0 -31
- data/lib/i18n/js/private/hash_with_symbol_keys.rb +0 -36
- data/lib/i18n/js/segment.rb +0 -80
- data/lib/i18n/js/utils.rb +0 -78
- data/lib/i18n/js/version.rb +0 -7
- data/lib/rails/generators/i18n/js/config/config_generator.rb +0 -19
- data/lib/rails/generators/i18n/js/config/templates/i18n-js.yml +0 -27
- data/lib/tasks/export.rake +0 -8
- data/package.json +0 -25
- data/spec/fixtures/custom_path.yml +0 -5
- data/spec/fixtures/default.yml +0 -5
- data/spec/fixtures/erb.yml +0 -5
- data/spec/fixtures/except_condition.yml +0 -7
- data/spec/fixtures/js_export_dir_custom.yml +0 -7
- data/spec/fixtures/js_export_dir_none.yml +0 -6
- data/spec/fixtures/js_extend_parent.yml +0 -6
- data/spec/fixtures/js_extend_segment.yml +0 -6
- data/spec/fixtures/js_file_per_locale.yml +0 -7
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_default_locale_symbol.yml +0 -4
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_hash.yml +0 -6
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale.yml +0 -4
- data/spec/fixtures/js_file_per_locale_with_fallbacks_as_locale_without_fallback_translations.yml +0 -4
- data/spec/fixtures/js_file_per_locale_with_fallbacks_enabled.yml +0 -4
- data/spec/fixtures/js_file_per_locale_without_fallbacks.yml +0 -4
- data/spec/fixtures/js_file_with_namespace_prefix_and_pretty_print.yml +0 -9
- data/spec/fixtures/js_sort_translation_keys_false.yml +0 -6
- data/spec/fixtures/js_sort_translation_keys_true.yml +0 -6
- data/spec/fixtures/json_only.yml +0 -18
- data/spec/fixtures/locales.yml +0 -133
- data/spec/fixtures/merge_plurals.yml +0 -6
- data/spec/fixtures/merge_plurals_with_no_overrides.yml +0 -4
- data/spec/fixtures/merge_plurals_with_partial_overrides.yml +0 -4
- data/spec/fixtures/millions.yml +0 -4
- data/spec/fixtures/multiple_conditions.yml +0 -7
- data/spec/fixtures/multiple_conditions_per_locale.yml +0 -7
- data/spec/fixtures/multiple_files.yml +0 -7
- data/spec/fixtures/no_config.yml +0 -2
- data/spec/fixtures/no_scope.yml +0 -4
- data/spec/fixtures/simple_scope.yml +0 -5
- data/spec/js/currency.spec.js +0 -62
- data/spec/js/current_locale.spec.js +0 -19
- data/spec/js/dates.spec.js +0 -276
- data/spec/js/defaults.spec.js +0 -31
- data/spec/js/extend.spec.js +0 -110
- data/spec/js/interpolation.spec.js +0 -124
- data/spec/js/jasmine/MIT.LICENSE +0 -20
- data/spec/js/jasmine/jasmine-html.js +0 -190
- data/spec/js/jasmine/jasmine.css +0 -166
- data/spec/js/jasmine/jasmine.js +0 -2476
- data/spec/js/jasmine/jasmine_favicon.png +0 -0
- data/spec/js/json_parsable.spec.js +0 -14
- data/spec/js/locales.spec.js +0 -31
- data/spec/js/localization.spec.js +0 -78
- data/spec/js/numbers.spec.js +0 -174
- data/spec/js/placeholder.spec.js +0 -24
- data/spec/js/pluralization.spec.js +0 -219
- data/spec/js/prepare_options.spec.js +0 -41
- data/spec/js/require.js +0 -2083
- data/spec/js/specs.html +0 -49
- data/spec/js/specs_requirejs.html +0 -72
- data/spec/js/translate.spec.js +0 -304
- data/spec/js/translations.js +0 -188
- data/spec/js/utility_functions.spec.js +0 -20
- data/spec/ruby/i18n/js/fallback_locales_spec.rb +0 -84
- data/spec/ruby/i18n/js/segment_spec.rb +0 -261
- data/spec/ruby/i18n/js/utils_spec.rb +0 -106
- data/spec/ruby/i18n/js_spec.rb +0 -748
- data/spec/spec_helper.rb +0 -80
- data/yarn.lock +0 -131
data/lib/i18n/js/segment.rb
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
require "i18n/js/private/hash_with_symbol_keys"
|
|
2
|
-
require "i18n/js/formatters/js"
|
|
3
|
-
require "i18n/js/formatters/json"
|
|
4
|
-
|
|
5
|
-
module I18n
|
|
6
|
-
module JS
|
|
7
|
-
|
|
8
|
-
# Class which enscapulates a translations hash and outputs a single JSON translation file
|
|
9
|
-
class Segment
|
|
10
|
-
OPTIONS = [:namespace, :pretty_print, :js_extend, :prefix, :suffix, :sort_translation_keys, :json_only].freeze
|
|
11
|
-
LOCALE_INTERPOLATOR = /%\{locale\}/
|
|
12
|
-
|
|
13
|
-
attr_reader *([:file, :translations] | OPTIONS)
|
|
14
|
-
|
|
15
|
-
def initialize(file, translations, options = {})
|
|
16
|
-
@file = file
|
|
17
|
-
# `#slice` will be used
|
|
18
|
-
# But when activesupport is absent,
|
|
19
|
-
# the core extension from `i18n` gem will be used instead
|
|
20
|
-
# And it's causing errors (at least in test)
|
|
21
|
-
#
|
|
22
|
-
# So the input is wrapped by our class for better `#slice`
|
|
23
|
-
@translations = Private::HashWithSymbolKeys.new(translations)
|
|
24
|
-
@namespace = options[:namespace] || 'I18n'
|
|
25
|
-
@pretty_print = !!options[:pretty_print]
|
|
26
|
-
@js_extend = options.key?(:js_extend) ? !!options[:js_extend] : true
|
|
27
|
-
@prefix = options.key?(:prefix) ? options[:prefix] : nil
|
|
28
|
-
@suffix = options.key?(:suffix) ? options[:suffix] : nil
|
|
29
|
-
@sort_translation_keys = options.key?(:sort_translation_keys) ? !!options[:sort_translation_keys] : true
|
|
30
|
-
@json_only = options.key?(:json_only) ? !!options[:json_only] : false
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Saves JSON file containing translations
|
|
34
|
-
def save!
|
|
35
|
-
if @file =~ LOCALE_INTERPOLATOR
|
|
36
|
-
I18n.available_locales.each do |locale|
|
|
37
|
-
write_file(file_for_locale(locale), @translations.slice(locale))
|
|
38
|
-
end
|
|
39
|
-
else
|
|
40
|
-
write_file
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
protected
|
|
45
|
-
|
|
46
|
-
def file_for_locale(locale)
|
|
47
|
-
@file.gsub(LOCALE_INTERPOLATOR, locale.to_s)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def write_file(_file = @file, _translations = @translations)
|
|
51
|
-
FileUtils.mkdir_p File.dirname(_file)
|
|
52
|
-
_translations = Utils.deep_key_sort(_translations) if @sort_translation_keys
|
|
53
|
-
contents = formatter.format(_translations)
|
|
54
|
-
|
|
55
|
-
return if File.exist?(_file) && File.read(_file) == contents
|
|
56
|
-
|
|
57
|
-
File.open(_file, "w+") do |f|
|
|
58
|
-
f << contents
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def formatter
|
|
63
|
-
if @json_only
|
|
64
|
-
Formatters::JSON.new(**formatter_options)
|
|
65
|
-
else
|
|
66
|
-
Formatters::JS.new(**formatter_options)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def formatter_options
|
|
71
|
-
{ js_extend: @js_extend,
|
|
72
|
-
namespace: @namespace,
|
|
73
|
-
pretty_print: @pretty_print,
|
|
74
|
-
prefix: @prefix,
|
|
75
|
-
suffix: @suffix
|
|
76
|
-
}
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
data/lib/i18n/js/utils.rb
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
module I18n
|
|
2
|
-
module JS
|
|
3
|
-
module Utils
|
|
4
|
-
PLURAL_KEYS = %i[zero one two few many other].freeze
|
|
5
|
-
|
|
6
|
-
# Based on deep_merge by Stefan Rusterholz, see <http://www.ruby-forum.com/topic/142809>.
|
|
7
|
-
# This method is used to handle I18n fallbacks. Given two equivalent path nodes in two locale trees:
|
|
8
|
-
# 1. If the node in the current locale appears to be an I18n pluralization (:one, :other, etc.),
|
|
9
|
-
# use the node, but merge in any missing/non-nil keys from the fallback (default) locale.
|
|
10
|
-
# 2. Else if both nodes are Hashes, combine (merge) the key-value pairs of the two nodes into one,
|
|
11
|
-
# prioritizing the current locale.
|
|
12
|
-
# 3. Else if either node is nil, use the other node.
|
|
13
|
-
PLURAL_MERGER = proc do |_key, v1, v2|
|
|
14
|
-
v1 || v2
|
|
15
|
-
end
|
|
16
|
-
MERGER = proc do |_key, v1, v2|
|
|
17
|
-
if Hash === v1 && Hash === v2
|
|
18
|
-
if (v2.keys - PLURAL_KEYS).empty?
|
|
19
|
-
slice(v2.merge(v1, &PLURAL_MERGER), v2.keys)
|
|
20
|
-
else
|
|
21
|
-
v1.merge(v2, &MERGER)
|
|
22
|
-
end
|
|
23
|
-
else
|
|
24
|
-
v2 || v1
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
HASH_NIL_VALUE_CLEANER_PROC = proc do |k, v|
|
|
29
|
-
v.kind_of?(Hash) ? (v.delete_if(&HASH_NIL_VALUE_CLEANER_PROC); false) : v.nil?
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.slice(hash, keys)
|
|
33
|
-
if hash.respond_to?(:slice) # ruby 2.5 onwards
|
|
34
|
-
hash.slice(*keys)
|
|
35
|
-
else
|
|
36
|
-
hash.select {|key, _| keys.include?(key)}
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def self.strip_keys_with_nil_values(hash)
|
|
41
|
-
hash.dup.delete_if(&HASH_NIL_VALUE_CLEANER_PROC)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def self.deep_merge(target_hash, hash) # :nodoc:
|
|
45
|
-
target_hash.merge(hash, &MERGER)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def self.deep_merge!(target_hash, hash) # :nodoc:
|
|
49
|
-
target_hash.merge!(hash, &MERGER)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def self.deep_reject(hash, scopes = [], &block)
|
|
53
|
-
hash.each_with_object({}) do |(k, v), memo|
|
|
54
|
-
unless block.call(k, v, scopes + [k.to_s])
|
|
55
|
-
memo[k] = v.kind_of?(Hash) ? deep_reject(v, scopes + [k.to_s], &block) : v
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def self.scopes_match?(scopes1, scopes2)
|
|
61
|
-
if scopes1.length == scopes2.length
|
|
62
|
-
[scopes1, scopes2].transpose.all? do |scope1, scope2|
|
|
63
|
-
scope1.to_s == '*' || scope2.to_s == '*' || scope1.to_s == scope2.to_s
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def self.deep_key_sort(hash)
|
|
69
|
-
# Avoid things like `true` or `1` from YAML which causes error
|
|
70
|
-
hash.keys.sort {|a, b| a.to_s <=> b.to_s}.
|
|
71
|
-
each_with_object({}) do |key, seed|
|
|
72
|
-
value = hash[key]
|
|
73
|
-
seed[key] = value.is_a?(Hash) ? deep_key_sort(value) : value
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
data/lib/i18n/js/version.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
module I18n
|
|
2
|
-
module Js
|
|
3
|
-
class ConfigGenerator < Rails::Generators::Base
|
|
4
|
-
# Copied files come from templates folder
|
|
5
|
-
source_root File.expand_path('../templates', __FILE__)
|
|
6
|
-
|
|
7
|
-
# Generator desc
|
|
8
|
-
desc <<-DESC
|
|
9
|
-
Creates a default i18n-js.yml configuration file in your app's config
|
|
10
|
-
folder. This file allows you to customize i18n:js:export rake task
|
|
11
|
-
outputted files.
|
|
12
|
-
DESC
|
|
13
|
-
|
|
14
|
-
def copy_initializer_file
|
|
15
|
-
copy_file "i18n-js.yml", "config/i18n-js.yml"
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Split context in several files.
|
|
2
|
-
#
|
|
3
|
-
# By default only one file with all translations is exported and
|
|
4
|
-
# no configuration is required. Your settings for asset pipeline
|
|
5
|
-
# are automatically recognized.
|
|
6
|
-
#
|
|
7
|
-
# If you want to split translations into several files or specify
|
|
8
|
-
# locale contexts that will be exported, just use this file to do
|
|
9
|
-
# so.
|
|
10
|
-
#
|
|
11
|
-
# For more informations about the export options with this file, please
|
|
12
|
-
# refer to the README
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
# If you're going to use the Rails 3.1 asset pipeline, change
|
|
16
|
-
# the following configuration to something like this:
|
|
17
|
-
#
|
|
18
|
-
# translations:
|
|
19
|
-
# - file: "app/assets/javascripts/i18n/translations.js"
|
|
20
|
-
#
|
|
21
|
-
# If you're running an old version, you can use something
|
|
22
|
-
# like this:
|
|
23
|
-
#
|
|
24
|
-
# translations:
|
|
25
|
-
# - file: "app/assets/javascripts/i18n/translations.js"
|
|
26
|
-
# only: "*"
|
|
27
|
-
#
|
data/lib/tasks/export.rake
DELETED
data/package.json
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "i18n-js",
|
|
3
|
-
"version": "3.8.0",
|
|
4
|
-
"description": "A javascript library similar to Ruby on Rails i18n gem",
|
|
5
|
-
"author": "Nando Vieira",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"keywords": [
|
|
8
|
-
"i18n"
|
|
9
|
-
],
|
|
10
|
-
"devDependencies": {
|
|
11
|
-
"jasmine-node": "^1.14.5"
|
|
12
|
-
},
|
|
13
|
-
"main": "app/assets/javascripts/i18n.js",
|
|
14
|
-
"scripts": {
|
|
15
|
-
"test": "./node_modules/.bin/jasmine-node spec/js"
|
|
16
|
-
},
|
|
17
|
-
"homepage": "https://github.com/fnando/i18n-js",
|
|
18
|
-
"bugs": {
|
|
19
|
-
"url": "https://github.com/fnando/i18n-js/issues"
|
|
20
|
-
},
|
|
21
|
-
"repository": {
|
|
22
|
-
"type": "git",
|
|
23
|
-
"url": "https://github.com/fnando/i18n-js.git"
|
|
24
|
-
}
|
|
25
|
-
}
|
data/spec/fixtures/default.yml
DELETED
data/spec/fixtures/erb.yml
DELETED
data/spec/fixtures/json_only.yml
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
fallbacks: false
|
|
2
|
-
json_only: true
|
|
3
|
-
|
|
4
|
-
translations:
|
|
5
|
-
- file: "tmp/i18n-js/json_only.%{locale}.js"
|
|
6
|
-
only:
|
|
7
|
-
- "*.date.formats.*"
|
|
8
|
-
- "*.number.currency.*"
|
|
9
|
-
|
|
10
|
-
- file: "tmp/i18n-js/json_only_multi.js"
|
|
11
|
-
only:
|
|
12
|
-
- "*.date.formats.*"
|
|
13
|
-
- "*.number.currency.*"
|
|
14
|
-
|
|
15
|
-
- file: "tmp/i18n-js/json_only_multi_pretty.js"
|
|
16
|
-
only:
|
|
17
|
-
- "*.date.formats.*"
|
|
18
|
-
- "*.number.currency.*"
|
data/spec/fixtures/locales.yml
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
en:
|
|
2
|
-
number:
|
|
3
|
-
human:
|
|
4
|
-
decimal_units:
|
|
5
|
-
units:
|
|
6
|
-
million: Million
|
|
7
|
-
format:
|
|
8
|
-
separator: "."
|
|
9
|
-
delimiter: ","
|
|
10
|
-
precision: 3
|
|
11
|
-
currency:
|
|
12
|
-
format:
|
|
13
|
-
format: "%u%n"
|
|
14
|
-
unit: "$"
|
|
15
|
-
separator: "."
|
|
16
|
-
delimiter: ","
|
|
17
|
-
precision: 2
|
|
18
|
-
date:
|
|
19
|
-
formats:
|
|
20
|
-
default: "%Y-%m-%d"
|
|
21
|
-
short: "%b %d"
|
|
22
|
-
long: "%B %d, %Y"
|
|
23
|
-
day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
|
|
24
|
-
abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
|
|
25
|
-
month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
|
|
26
|
-
abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
|
|
27
|
-
# order: [ :year, :month, :day ]
|
|
28
|
-
time:
|
|
29
|
-
formats:
|
|
30
|
-
default: "%a, %d %b %Y %H:%M:%S %z"
|
|
31
|
-
short: "%d %b %H:%M"
|
|
32
|
-
long: "%B %d, %Y %H:%M"
|
|
33
|
-
am: "am"
|
|
34
|
-
pm: "pm"
|
|
35
|
-
admin:
|
|
36
|
-
show:
|
|
37
|
-
title: "Show"
|
|
38
|
-
note: "more details"
|
|
39
|
-
edit:
|
|
40
|
-
title: "Edit"
|
|
41
|
-
foo: "Foo"
|
|
42
|
-
fallback_test: "Success"
|
|
43
|
-
null_test: "fallback for null"
|
|
44
|
-
merge_plurals:
|
|
45
|
-
one: Apple
|
|
46
|
-
other: Apples
|
|
47
|
-
merge_plurals_with_no_overrides:
|
|
48
|
-
zero: "No Apple"
|
|
49
|
-
one: Apple
|
|
50
|
-
other: Apples
|
|
51
|
-
merge_plurals_with_partial_overrides:
|
|
52
|
-
one: Cat
|
|
53
|
-
other: Cats
|
|
54
|
-
|
|
55
|
-
es:
|
|
56
|
-
number:
|
|
57
|
-
human:
|
|
58
|
-
decimal_units:
|
|
59
|
-
units:
|
|
60
|
-
million:
|
|
61
|
-
one: millón
|
|
62
|
-
other: millones
|
|
63
|
-
|
|
64
|
-
ru:
|
|
65
|
-
merge_plurals_with_no_overrides:
|
|
66
|
-
one: кот
|
|
67
|
-
few: кошек
|
|
68
|
-
many: кошка
|
|
69
|
-
other: кошек
|
|
70
|
-
|
|
71
|
-
de:
|
|
72
|
-
fallback_test: "Erfolg"
|
|
73
|
-
null_test: ~
|
|
74
|
-
|
|
75
|
-
fr:
|
|
76
|
-
date:
|
|
77
|
-
formats:
|
|
78
|
-
default: "%d/%m/%Y"
|
|
79
|
-
short: "%e %b"
|
|
80
|
-
long: "%e %B %Y"
|
|
81
|
-
long_ordinal: "%e %B %Y"
|
|
82
|
-
only_day: "%e"
|
|
83
|
-
day_names: [dimanche, lundi, mardi, mercredi, jeudi, vendredi, samedi]
|
|
84
|
-
abbr_day_names: [dim, lun, mar, mer, jeu, ven, sam]
|
|
85
|
-
month_names: [~, janvier, février, mars, avril, mai, juin, juillet, août, septembre, octobre, novembre, décembre]
|
|
86
|
-
abbr_month_names: [~, jan., fév., mar., avr., mai, juin, juil., août, sept., oct., nov., déc.]
|
|
87
|
-
# order: [ :day, :month, :year ]
|
|
88
|
-
time:
|
|
89
|
-
formats:
|
|
90
|
-
default: "%d %B %Y %H:%M"
|
|
91
|
-
time: "%H:%M"
|
|
92
|
-
short: "%d %b %H:%M"
|
|
93
|
-
long: "%A %d %B %Y %H:%M:%S %Z"
|
|
94
|
-
long_ordinal: "%A %d %B %Y %H:%M:%S %Z"
|
|
95
|
-
only_second: "%S"
|
|
96
|
-
am: 'am'
|
|
97
|
-
pm: 'pm'
|
|
98
|
-
number:
|
|
99
|
-
format:
|
|
100
|
-
precision: 3
|
|
101
|
-
separator: ','
|
|
102
|
-
delimiter: ' '
|
|
103
|
-
currency:
|
|
104
|
-
format:
|
|
105
|
-
unit: '€'
|
|
106
|
-
precision: 2
|
|
107
|
-
format: '%n %u'
|
|
108
|
-
admin:
|
|
109
|
-
show:
|
|
110
|
-
title: "Visualiser"
|
|
111
|
-
note: "plus de détails"
|
|
112
|
-
edit:
|
|
113
|
-
title: "Editer"
|
|
114
|
-
merge_plurals:
|
|
115
|
-
zero: Pomme
|
|
116
|
-
one: Pomme
|
|
117
|
-
other: Pommes
|
|
118
|
-
|
|
119
|
-
en-US:
|
|
120
|
-
merge_plurals_with_no_overrides:
|
|
121
|
-
zero:
|
|
122
|
-
one:
|
|
123
|
-
other:
|
|
124
|
-
merge_plurals_with_partial_overrides:
|
|
125
|
-
one: Cat
|
|
126
|
-
few:
|
|
127
|
-
many:
|
|
128
|
-
other:
|
|
129
|
-
|
|
130
|
-
ja:
|
|
131
|
-
admin:
|
|
132
|
-
show:
|
|
133
|
-
title: "Ignore me"
|