fixed JS parsing
This commit is contained in:
parent
02bab763a3
commit
3e73d5c4da
274 changed files with 36169 additions and 121 deletions
8
.idea/runConfigurations/for_loop_in_render_test_dart.xml
Normal file
8
.idea/runConfigurations/for_loop_in_render_test_dart.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="for loop in render_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" singleton="true" nameIsGenerated="true">
|
||||||
|
<option name="filePath" value="$PROJECT_DIR$/jael/test/render/render_test.dart" />
|
||||||
|
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||||
|
<option name="testName" value="for loop" />
|
||||||
|
<method />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
7
.idea/runConfigurations/jael__example.xml
Normal file
7
.idea/runConfigurations/jael__example.xml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="jael::example" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application" singleton="true">
|
||||||
|
<option name="filePath" value="$PROJECT_DIR$/jael/example/main.dart" />
|
||||||
|
<option name="workingDirectory" value="$PROJECT_DIR$/jael" />
|
||||||
|
<method />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
2
jael/.gitignore
vendored
2
jael/.gitignore
vendored
|
@ -12,3 +12,5 @@ pubspec.lock
|
||||||
# Directory created by dartdoc
|
# Directory created by dartdoc
|
||||||
# If you don't generate documentation locally you can remove this line.
|
# If you don't generate documentation locally you can remove this line.
|
||||||
doc/api/
|
doc/api/
|
||||||
|
|
||||||
|
.dart_tool
|
4
jael/CHANGELOG.md
Normal file
4
jael/CHANGELOG.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# 1.0.1
|
||||||
|
* Reworked the scanner; thereby fixing an extremely pesky bug
|
||||||
|
that prevented successful parsing of Jael files containing
|
||||||
|
JavaScript.
|
|
@ -11,7 +11,7 @@ In your `pubspec.yaml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
dependencies:
|
dependencies:
|
||||||
jael: ^1.0.0-beta
|
jael: ^1.0.0
|
||||||
```
|
```
|
||||||
|
|
||||||
# API
|
# API
|
||||||
|
|
37
jael/example/main.dart
Normal file
37
jael/example/main.dart
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import 'dart:io';
|
||||||
|
import 'package:charcode/charcode.dart';
|
||||||
|
import 'package:code_buffer/code_buffer.dart';
|
||||||
|
import 'package:jael/jael.dart' as jael;
|
||||||
|
import 'package:symbol_table/symbol_table.dart';
|
||||||
|
|
||||||
|
main() {
|
||||||
|
while (true) {
|
||||||
|
var buf = new StringBuffer();
|
||||||
|
int ch;
|
||||||
|
print('Enter lines of Jael text, terminated by CTRL^D.');
|
||||||
|
print('All environment variables are injected into the template scope.');
|
||||||
|
|
||||||
|
while ((ch = stdin.readByteSync()) != $eot && ch != -1) {
|
||||||
|
buf.writeCharCode(ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
var document = jael.parseDocument(
|
||||||
|
buf.toString(),
|
||||||
|
sourceUrl: 'stdin',
|
||||||
|
onError: stderr.writeln,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (document == null) {
|
||||||
|
stderr.writeln('Could not parse the given text.');
|
||||||
|
} else {
|
||||||
|
var output = new CodeBuffer();
|
||||||
|
const jael.Renderer().render(
|
||||||
|
document,
|
||||||
|
output,
|
||||||
|
new SymbolTable(values: Platform.environment),
|
||||||
|
strictResolution: false,
|
||||||
|
);
|
||||||
|
print('GENERATED HTML:\n$output');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,8 +3,9 @@ import 'package:source_span/source_span.dart';
|
||||||
class Token {
|
class Token {
|
||||||
final TokenType type;
|
final TokenType type;
|
||||||
final FileSpan span;
|
final FileSpan span;
|
||||||
|
final Match match;
|
||||||
|
|
||||||
Token(this.type, this.span);
|
Token(this.type, this.span, this.match);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
|
|
|
@ -10,6 +10,8 @@ Document parseDocument(String text,
|
||||||
{sourceUrl, void onError(JaelError error)}) {
|
{sourceUrl, void onError(JaelError error)}) {
|
||||||
var scanner = scan(text, sourceUrl: sourceUrl);
|
var scanner = scan(text, sourceUrl: sourceUrl);
|
||||||
|
|
||||||
|
//scanner.tokens.forEach(print);
|
||||||
|
|
||||||
if (scanner.errors.isNotEmpty && onError != null)
|
if (scanner.errors.isNotEmpty && onError != null)
|
||||||
scanner.errors.forEach(onError);
|
scanner.errors.forEach(onError);
|
||||||
else if (scanner.errors.isNotEmpty) throw scanner.errors.first;
|
else if (scanner.errors.isNotEmpty) throw scanner.errors.first;
|
||||||
|
|
|
@ -260,7 +260,7 @@ class Parser {
|
||||||
if (tagName2.name != tagName.name) {
|
if (tagName2.name != tagName.name) {
|
||||||
errors.add(new JaelError(
|
errors.add(new JaelError(
|
||||||
JaelErrorSeverity.error,
|
JaelErrorSeverity.error,
|
||||||
'Mismatched closing tags. Expected "${tagName.span}"; got "${tagName2.name}" instead.',
|
'Mismatched closing tags. Expected "${tagName.span.text}"; got "${tagName2.name}" instead.',
|
||||||
lt2.span));
|
lt2.span));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
|
import 'dart:collection';
|
||||||
import 'package:charcode/ascii.dart';
|
import 'package:charcode/ascii.dart';
|
||||||
import 'package:string_scanner/string_scanner.dart';
|
import 'package:string_scanner/string_scanner.dart';
|
||||||
import '../ast/ast.dart';
|
import '../ast/ast.dart';
|
||||||
|
|
||||||
final RegExp _whitespace = new RegExp(r'[ \n\r\t]+');
|
final RegExp _whitespace = new RegExp(r'[ \n\r\t]+');
|
||||||
|
|
||||||
final RegExp _id = new RegExp(r'(([A-Za-z][A-Za-z0-9_]*-)*([A-Za-z][A-Za-z0-9_]*))');
|
final RegExp _id =
|
||||||
|
new RegExp(r'(([A-Za-z][A-Za-z0-9_]*-)*([A-Za-z][A-Za-z0-9_]*))');
|
||||||
final RegExp _string1 = new RegExp(
|
final RegExp _string1 = new RegExp(
|
||||||
r"'((\\(['\\/bfnrt]|(u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])))|([^'\\]))*'");
|
r"'((\\(['\\/bfnrt]|(u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])))|([^'\\]))*'");
|
||||||
final RegExp _string2 = new RegExp(
|
final RegExp _string2 = new RegExp(
|
||||||
|
@ -18,7 +20,8 @@ abstract class Scanner {
|
||||||
List<Token> get tokens;
|
List<Token> get tokens;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Map<Pattern, TokenType> _htmlPatterns = {
|
final Map<Pattern, TokenType> _expressionPatterns = {
|
||||||
|
//final Map<Pattern, TokenType> _htmlPatterns = {
|
||||||
'{{': TokenType.doubleCurlyL,
|
'{{': TokenType.doubleCurlyL,
|
||||||
'{{-': TokenType.doubleCurlyL,
|
'{{-': TokenType.doubleCurlyL,
|
||||||
|
|
||||||
|
@ -34,9 +37,9 @@ final Map<Pattern, TokenType> _htmlPatterns = {
|
||||||
_string1: TokenType.string,
|
_string1: TokenType.string,
|
||||||
_string2: TokenType.string,
|
_string2: TokenType.string,
|
||||||
_id: TokenType.id,
|
_id: TokenType.id,
|
||||||
};
|
//};
|
||||||
|
|
||||||
final Map<Pattern, TokenType> _expressionPatterns = {
|
//final Map<Pattern, TokenType> _expressionPatterns = {
|
||||||
'}}': TokenType.doubleCurlyR,
|
'}}': TokenType.doubleCurlyR,
|
||||||
|
|
||||||
// Keywords
|
// Keywords
|
||||||
|
@ -78,6 +81,8 @@ final Map<Pattern, TokenType> _expressionPatterns = {
|
||||||
class _Scanner implements Scanner {
|
class _Scanner implements Scanner {
|
||||||
final List<JaelError> errors = [];
|
final List<JaelError> errors = [];
|
||||||
final List<Token> tokens = [];
|
final List<Token> tokens = [];
|
||||||
|
_ScannerState state = _ScannerState.html;
|
||||||
|
final Queue<String> openTags = new Queue();
|
||||||
|
|
||||||
SpanScanner _scanner;
|
SpanScanner _scanner;
|
||||||
|
|
||||||
|
@ -85,121 +90,153 @@ class _Scanner implements Scanner {
|
||||||
_scanner = new SpanScanner(text, sourceUrl: sourceUrl);
|
_scanner = new SpanScanner(text, sourceUrl: sourceUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
Token _scanFrom(Map<Pattern, TokenType> patterns,
|
void scan() {
|
||||||
[LineScannerState textStart]) {
|
while (!_scanner.isDone) {
|
||||||
var potential = <Token>[];
|
if (state == _ScannerState.html) {
|
||||||
|
scanHtml();
|
||||||
|
} else if (state == _ScannerState.freeText) {
|
||||||
|
// Just keep parsing until we hit "</"
|
||||||
|
var start = _scanner.state, end = start;
|
||||||
|
|
||||||
patterns.forEach((pattern, type) {
|
while (!_scanner.isDone) {
|
||||||
if (_scanner.matches(pattern))
|
// Break on {{
|
||||||
potential.add(new Token(type, _scanner.lastSpan));
|
if (_scanner.matches('{{')) {
|
||||||
});
|
state = _ScannerState.html;
|
||||||
|
//_scanner.position--;
|
||||||
if (potential.isEmpty) return null;
|
break;
|
||||||
|
|
||||||
if (textStart != null) {
|
|
||||||
var span = _scanner.spanFrom(textStart);
|
|
||||||
tokens.add(new Token(TokenType.text, span));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ch = _scanner.readChar();
|
||||||
|
|
||||||
|
if (ch == $lt && !_scanner.isDone) {
|
||||||
|
if (_scanner.matches('/')) {
|
||||||
|
// If we reached "</", backtrack and break into HTML
|
||||||
|
|
||||||
|
// Also break when we reach <foo.
|
||||||
|
//
|
||||||
|
// HOWEVER, that is also JavaScript. So we must
|
||||||
|
// only break in this case when the current tag is NOT "script".
|
||||||
|
var shouldBreak =
|
||||||
|
(openTags.isEmpty || openTags.first != 'script');
|
||||||
|
|
||||||
|
if (!shouldBreak) {
|
||||||
|
// Try to see if we are closing a script tag
|
||||||
|
var replay = _scanner.state;
|
||||||
|
_scanner
|
||||||
|
..readChar()
|
||||||
|
..scan(_whitespace);
|
||||||
|
//print(_scanner.emptySpan.highlight());
|
||||||
|
|
||||||
|
if (_scanner.matches(_id)) {
|
||||||
|
//print(_scanner.lastMatch[0]);
|
||||||
|
shouldBreak = _scanner.lastMatch[0] == 'script';
|
||||||
|
_scanner.position--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!shouldBreak) {
|
||||||
|
_scanner.state = replay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shouldBreak) {
|
||||||
|
openTags.removeFirst();
|
||||||
|
_scanner.position--;
|
||||||
|
state = _ScannerState.html;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, just add to the "buffer"
|
||||||
|
end = _scanner.state;
|
||||||
|
}
|
||||||
|
|
||||||
|
var span = _scanner.spanFrom(start, end);
|
||||||
|
|
||||||
|
if (span.text.isNotEmpty)
|
||||||
|
tokens.add(new Token(TokenType.text, span, null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void scanHtml() {
|
||||||
|
var brackets = new Queue<Token>();
|
||||||
|
|
||||||
|
do {
|
||||||
|
// Only continue if we find a left bracket
|
||||||
|
if (true) {// || _scanner.matches('<') || _scanner.matches('{{')) {
|
||||||
|
var potential = <Token>[];
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
// Scan whitespace
|
||||||
|
_scanner.scan(_whitespace);
|
||||||
|
|
||||||
|
_expressionPatterns.forEach((pattern, type) {
|
||||||
|
if (_scanner.matches(pattern))
|
||||||
|
potential
|
||||||
|
.add(new Token(type, _scanner.lastSpan, _scanner.lastMatch));
|
||||||
|
});
|
||||||
|
|
||||||
potential.sort((a, b) => b.span.length.compareTo(a.span.length));
|
potential.sort((a, b) => b.span.length.compareTo(a.span.length));
|
||||||
|
|
||||||
|
if (potential.isEmpty) break;
|
||||||
|
|
||||||
var token = potential.first;
|
var token = potential.first;
|
||||||
tokens.add(token);
|
tokens.add(token);
|
||||||
|
|
||||||
_scanner.scan(token.span.text);
|
_scanner.scan(token.span.text);
|
||||||
|
|
||||||
return token;
|
if (token.type == TokenType.lt) {
|
||||||
}
|
brackets.addFirst(token);
|
||||||
|
|
||||||
void scan() {
|
// Try to see if we are at a tag.
|
||||||
while (!_scanner.isDone) scanHtmlTokens();
|
var replay = _scanner.state;
|
||||||
}
|
|
||||||
|
|
||||||
void scanHtmlTokens() {
|
|
||||||
LineScannerState textStart;
|
|
||||||
|
|
||||||
while (!_scanner.isDone) {
|
|
||||||
var state = _scanner.state;
|
|
||||||
|
|
||||||
// Skip whitespace conditionally
|
|
||||||
if (textStart == null) {
|
|
||||||
_scanner.scan(_whitespace);
|
_scanner.scan(_whitespace);
|
||||||
|
|
||||||
|
if (_scanner.matches(_id)) {
|
||||||
|
openTags.addFirst(_scanner.lastMatch[0]);
|
||||||
|
} else {
|
||||||
|
_scanner.state = replay;
|
||||||
}
|
}
|
||||||
|
} else if (token.type == TokenType.slash) {
|
||||||
|
// Only push if we're at </foo
|
||||||
|
if (brackets.isNotEmpty && brackets.first.type == TokenType.lt) {
|
||||||
|
brackets
|
||||||
|
..removeFirst()
|
||||||
|
..addFirst(token);
|
||||||
|
}
|
||||||
|
} else if (token.type == TokenType.gt) {
|
||||||
|
// Only pop the bracket if we're at foo>, </foo> or foo/>
|
||||||
|
|
||||||
var lastToken = _scanFrom(_htmlPatterns, textStart);
|
if (brackets.isNotEmpty && brackets.first.type == TokenType.slash)
|
||||||
|
brackets.removeFirst();
|
||||||
|
//else if (_scanner.matches('>')) brackets.removeFirst();
|
||||||
|
else if (brackets.isNotEmpty &&
|
||||||
|
brackets.first.type == TokenType.lt) {
|
||||||
|
// We're at foo>, try to parse text?
|
||||||
|
brackets.removeFirst();
|
||||||
|
|
||||||
if (lastToken?.type == TokenType.gt) {
|
var replay = _scanner.state;
|
||||||
if (!_scanner.isDone) {
|
_scanner.scan(_whitespace);
|
||||||
var state = _scanner.state;
|
|
||||||
var ch = _scanner.peekChar();
|
|
||||||
|
|
||||||
if (ch != $space && ch != $cr && ch != $lf && ch != $tab) {
|
if (!_scanner.matches('<')) {
|
||||||
while (!_scanner.isDone) {
|
_scanner.state = replay;
|
||||||
var ch = _scanner.peekChar();
|
state = _ScannerState.freeText;
|
||||||
|
|
||||||
if (ch == $lt || (ch == $open_brace && _scanner.peekChar() == $open_brace)) {
|
|
||||||
var span = _scanner.spanFrom(state);
|
|
||||||
tokens.add(new Token(TokenType.text, span));
|
|
||||||
break;
|
break;
|
||||||
} else
|
|
||||||
_scanner.readChar();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (token.type == TokenType.doubleCurlyR) {
|
||||||
|
state = _ScannerState.freeText;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (lastToken?.type == TokenType.equals ||
|
potential.clear();
|
||||||
lastToken?.type == TokenType.nequ) {
|
|
||||||
textStart = null;
|
|
||||||
scanExpressionTokens();
|
|
||||||
return;
|
|
||||||
} else if (lastToken?.type == TokenType.doubleCurlyL) {
|
|
||||||
textStart = null;
|
|
||||||
scanExpressionTokens(true);
|
|
||||||
return;
|
|
||||||
} else if (lastToken?.type == TokenType.id &&
|
|
||||||
tokens.length >= 2 &&
|
|
||||||
tokens[tokens.length - 2].type == TokenType.gt) {
|
|
||||||
// Fold in the ID into a text node...
|
|
||||||
tokens.removeLast();
|
|
||||||
textStart = state;
|
|
||||||
} else if ((lastToken?.type == TokenType.id ||
|
|
||||||
lastToken?.type == TokenType.string) &&
|
|
||||||
tokens.length >= 2 &&
|
|
||||||
tokens[tokens.length - 2].type == TokenType.text) {
|
|
||||||
// Append the ID/string into the old text node
|
|
||||||
tokens.removeLast();
|
|
||||||
tokens.removeLast();
|
|
||||||
|
|
||||||
// Not sure how, but the following logic seems to occur
|
|
||||||
// automatically:
|
|
||||||
//
|
|
||||||
//var textToken = tokens.removeLast();
|
|
||||||
//var newSpan = textToken.span.expand(lastToken.span);
|
|
||||||
//tokens.add(new Token(TokenType.text, newSpan));
|
|
||||||
} else if (lastToken != null) {
|
|
||||||
textStart = null;
|
|
||||||
} else if (!_scanner.isDone ?? lastToken == null) {
|
|
||||||
textStart ??= state;
|
|
||||||
_scanner.readChar();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} while (brackets.isNotEmpty && !_scanner.isDone);
|
||||||
|
|
||||||
if (textStart != null) {
|
state = _ScannerState.freeText;
|
||||||
var span = _scanner.spanFrom(textStart);
|
|
||||||
tokens.add(new Token(TokenType.text, span));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void scanExpressionTokens([bool allowGt = false]) {
|
|
||||||
Token lastToken;
|
|
||||||
|
|
||||||
do {
|
|
||||||
_scanner.scan(_whitespace);
|
|
||||||
lastToken = _scanFrom(_expressionPatterns);
|
|
||||||
} while (!_scanner.isDone &&
|
|
||||||
lastToken != null &&
|
|
||||||
lastToken.type != TokenType.doubleCurlyR &&
|
|
||||||
(allowGt || lastToken.type != TokenType.gt));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum _ScannerState { html, freeText }
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
name: jael
|
name: jael
|
||||||
version: 1.0.0
|
version: 1.0.1
|
||||||
description: A simple server-side HTML templating engine for Dart.
|
description: A simple server-side HTML templating engine for Dart.
|
||||||
author: Tobe O <thosakwe@gmail.com>
|
author: Tobe O <thosakwe@gmail.com>
|
||||||
homepage: https://github.com/angel-dart/jael/tree/master/jael
|
homepage: https://github.com/angel-dart/jael/tree/master/jael
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=1.19.0"
|
sdk: ">=1.19.0 <=2.0.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
charcode: ^1.0.0
|
charcode: ^1.0.0
|
||||||
code_buffer: ^1.0.0
|
code_buffer: ^1.0.0
|
||||||
|
|
|
@ -27,7 +27,7 @@ main() {
|
||||||
'avatar': 'thosakwe.png',
|
'avatar': 'thosakwe.png',
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} on jael.JaelError catch(e) {
|
} on jael.JaelError catch (e) {
|
||||||
print(e);
|
print(e);
|
||||||
print(e.stackTrace);
|
print(e.stackTrace);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ main() {
|
||||||
print(buf);
|
print(buf);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
buf.toString(),
|
buf.toString().replaceAll('\n', '').replaceAll(' ', '').trim(),
|
||||||
'''
|
'''
|
||||||
<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||||
<html>
|
<html>
|
||||||
|
@ -84,10 +84,12 @@ main() {
|
||||||
Pokémon
|
Pokémon
|
||||||
</h1>
|
</h1>
|
||||||
Darkrai - Dark
|
Darkrai - Dark
|
||||||
<img/>
|
<img>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
'''
|
'''
|
||||||
|
.replaceAll('\n', '')
|
||||||
|
.replaceAll(' ', '')
|
||||||
.trim());
|
.trim());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
1
jael_preprocessor/.dart_tool/pub/bin/sdk-version
Normal file
1
jael_preprocessor/.dart_tool/pub/bin/sdk-version
Normal file
|
@ -0,0 +1 @@
|
||||||
|
2.0.0-dev.32.0
|
BIN
jael_preprocessor/.dart_tool/pub/bin/test/test.dart.snapshot
Normal file
BIN
jael_preprocessor/.dart_tool/pub/bin/test/test.dart.snapshot
Normal file
Binary file not shown.
|
@ -0,0 +1,38 @@
|
||||||
|
// Copyright (c) 2017, the Dart project authors.
|
||||||
|
// Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code
|
||||||
|
// is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// API to allow setting Date/Time formatting in a custom way.
|
||||||
|
///
|
||||||
|
/// It does not actually provide any data - that's left to the user of the API.
|
||||||
|
import "date_symbols.dart";
|
||||||
|
import "src/date_format_internal.dart";
|
||||||
|
|
||||||
|
/// This should be called for at least one [locale] before any date
|
||||||
|
/// formatting methods are called.
|
||||||
|
///
|
||||||
|
/// It sets up the lookup for date information. The [symbols] argument should
|
||||||
|
/// contain a populated [DateSymbols], and [patterns] should contain a Map for
|
||||||
|
/// the same locale from skeletons to the specific format strings. For examples,
|
||||||
|
/// see date_time_patterns.dart.
|
||||||
|
///
|
||||||
|
/// If data for this locale has already been initialized it will be overwritten.
|
||||||
|
void initializeDateFormattingCustom(
|
||||||
|
{String locale, DateSymbols symbols, Map<String, String> patterns}) {
|
||||||
|
initializeDateSymbols(_emptySymbols);
|
||||||
|
initializeDatePatterns(_emptyPatterns);
|
||||||
|
if (symbols == null)
|
||||||
|
throw new ArgumentError("Missing DateTime formatting symbols");
|
||||||
|
if (patterns == null)
|
||||||
|
throw new ArgumentError("Missing DateTime formatting patterns");
|
||||||
|
if (locale != symbols.NAME)
|
||||||
|
throw new ArgumentError.value(
|
||||||
|
[locale, symbols.NAME], "Locale does not match symbols.NAME");
|
||||||
|
dateTimeSymbols[symbols.NAME] = symbols;
|
||||||
|
dateTimePatterns[symbols.NAME] = patterns;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, DateSymbols> _emptySymbols() => {};
|
||||||
|
Map<String, Map<String, String>> _emptyPatterns() => {};
|
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// This file should be imported, along with date_format.dart in order to read
|
||||||
|
/// locale data from files in the file system.
|
||||||
|
|
||||||
|
library date_symbol_data_file;
|
||||||
|
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:path/path.dart' as path;
|
||||||
|
|
||||||
|
import 'date_symbols.dart';
|
||||||
|
import 'src/data/dates/locale_list.dart';
|
||||||
|
import 'src/date_format_internal.dart';
|
||||||
|
import 'src/file_data_reader.dart';
|
||||||
|
import 'src/lazy_locale_data.dart';
|
||||||
|
|
||||||
|
export 'src/data/dates/locale_list.dart';
|
||||||
|
|
||||||
|
/// This should be called for at least one [locale] before any date formatting
|
||||||
|
/// methods are called. It sets up the lookup for date symbols using [path].
|
||||||
|
/// The [path] parameter should end with a directory separator appropriate
|
||||||
|
/// for the platform.
|
||||||
|
Future initializeDateFormatting(String locale, String filePath) {
|
||||||
|
var reader = new FileDataReader(path.join(filePath, 'symbols'));
|
||||||
|
initializeDateSymbols(() => new LazyLocaleData(
|
||||||
|
reader, _createDateSymbol, availableLocalesForDateFormatting));
|
||||||
|
var reader2 = new FileDataReader(path.join(filePath, 'patterns'));
|
||||||
|
initializeDatePatterns(() =>
|
||||||
|
new LazyLocaleData(reader2, (x) => x, availableLocalesForDateFormatting));
|
||||||
|
return initializeIndividualLocaleDateFormatting((symbols, patterns) {
|
||||||
|
return Future.wait(
|
||||||
|
<Future>[symbols.initLocale(locale), patterns.initLocale(locale)]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Defines how new date symbol entries are created.
|
||||||
|
DateSymbols _createDateSymbol(Map map) =>
|
||||||
|
new DateSymbols.deserializeFromMap(map);
|
|
@ -0,0 +1,43 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// This file should be imported, along with date_format.dart in order to read
|
||||||
|
/// locale data via http requests to a web server..
|
||||||
|
library date_symbol_data_http_request;
|
||||||
|
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'date_symbols.dart';
|
||||||
|
import 'intl.dart';
|
||||||
|
import 'src/data/dates/locale_list.dart';
|
||||||
|
import 'src/date_format_internal.dart';
|
||||||
|
import 'src/http_request_data_reader.dart';
|
||||||
|
import 'src/lazy_locale_data.dart';
|
||||||
|
|
||||||
|
export 'src/data/dates/locale_list.dart';
|
||||||
|
|
||||||
|
/// This should be called for at least one [locale] before any date formatting
|
||||||
|
/// methods are called. It sets up the lookup for date symbols using [url].
|
||||||
|
/// The [url] parameter should end with a "/". For example,
|
||||||
|
/// "http://localhost:8000/dates/"
|
||||||
|
Future initializeDateFormatting(String locale, String url) {
|
||||||
|
var reader = new HttpRequestDataReader('${url}symbols/');
|
||||||
|
initializeDateSymbols(() => new LazyLocaleData(
|
||||||
|
reader, _createDateSymbol, availableLocalesForDateFormatting));
|
||||||
|
var reader2 = new HttpRequestDataReader('${url}patterns/');
|
||||||
|
initializeDatePatterns(() =>
|
||||||
|
new LazyLocaleData(reader2, (x) => x, availableLocalesForDateFormatting));
|
||||||
|
var actualLocale = Intl.verifiedLocale(
|
||||||
|
locale, (l) => availableLocalesForDateFormatting.contains(l));
|
||||||
|
return initializeIndividualLocaleDateFormatting((symbols, patterns) {
|
||||||
|
return Future.wait(<Future>[
|
||||||
|
symbols.initLocale(actualLocale),
|
||||||
|
patterns.initLocale(actualLocale)
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Defines how new date symbol entries are created.
|
||||||
|
DateSymbols _createDateSymbol(Map map) =>
|
||||||
|
new DateSymbols.deserializeFromMap(map);
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,393 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
library date_symbols;
|
||||||
|
|
||||||
|
/// This holds onto information about how a particular locale formats dates. It
|
||||||
|
/// contains mostly strings, e.g. what the names of months or weekdays are,
|
||||||
|
/// but also indicates things like the first day of the week. We expect the data
|
||||||
|
/// for instances of these to be generated out of ICU or a similar reference
|
||||||
|
/// source. This is used in conjunction with the date_time_patterns, which
|
||||||
|
/// defines for a particular locale the different named formats that will
|
||||||
|
/// make use of this data.
|
||||||
|
class DateSymbols {
|
||||||
|
String NAME;
|
||||||
|
List<String>
|
||||||
|
|
||||||
|
/// The short name of the era, e.g. 'BC' or 'AD'
|
||||||
|
ERAS,
|
||||||
|
|
||||||
|
/// The long name of the era, e.g. 'Before Christ' or 'Anno Domino'
|
||||||
|
ERANAMES,
|
||||||
|
|
||||||
|
/// Very short names of months, e.g. 'J'.
|
||||||
|
NARROWMONTHS,
|
||||||
|
|
||||||
|
/// Very short names of months as they would be written on their own,
|
||||||
|
/// e.g. 'J'.
|
||||||
|
STANDALONENARROWMONTHS,
|
||||||
|
|
||||||
|
/// Full names of months, e.g. 'January'.
|
||||||
|
MONTHS,
|
||||||
|
|
||||||
|
/// Full names of months as they would be written on their own,
|
||||||
|
/// e.g. 'January'.
|
||||||
|
///
|
||||||
|
/// These are frequently the same as MONTHS, but for example might start
|
||||||
|
/// with upper case where the names in MONTHS might not.
|
||||||
|
STANDALONEMONTHS,
|
||||||
|
|
||||||
|
/// Short names of months, e.g. 'Jan'.
|
||||||
|
SHORTMONTHS,
|
||||||
|
|
||||||
|
/// Short names of months as they would be written on their own,
|
||||||
|
/// e.g. 'Jan'.
|
||||||
|
STANDALONESHORTMONTHS,
|
||||||
|
|
||||||
|
/// The days of the week, starting with Sunday.
|
||||||
|
WEEKDAYS,
|
||||||
|
|
||||||
|
/// The days of the week as they would be written on their own, starting
|
||||||
|
/// with Sunday.
|
||||||
|
/// Frequently the same as WEEKDAYS, but for example might
|
||||||
|
/// start with upper case where the names in WEEKDAYS might not.
|
||||||
|
STANDALONEWEEKDAYS,
|
||||||
|
|
||||||
|
/// Short names for days of the week, starting with Sunday, e.g. 'Sun'.
|
||||||
|
SHORTWEEKDAYS,
|
||||||
|
|
||||||
|
/// Short names for days of the week as they would be written on their
|
||||||
|
/// own, starting with Sunday, e.g. 'Sun'.
|
||||||
|
STANDALONESHORTWEEKDAYS,
|
||||||
|
|
||||||
|
/// Very short names for days of the week, starting with Sunday, e.g. 'S'.
|
||||||
|
NARROWWEEKDAYS,
|
||||||
|
|
||||||
|
/// Very short names for days of the week as they would be written on
|
||||||
|
/// their own, starting with Sunday, e.g. 'S'.
|
||||||
|
STANDALONENARROWWEEKDAYS,
|
||||||
|
|
||||||
|
/// Names of the quarters of the year in a short form, e.g. 'Q1'.
|
||||||
|
SHORTQUARTERS,
|
||||||
|
|
||||||
|
/// Long names of the quartesr of the year, e.g. '1st Quarter'.
|
||||||
|
QUARTERS,
|
||||||
|
|
||||||
|
/// A list of length 2 with localized text for 'AM' and 'PM'.
|
||||||
|
AMPMS,
|
||||||
|
|
||||||
|
/// The supported date formats for this locale.
|
||||||
|
DATEFORMATS,
|
||||||
|
|
||||||
|
/// The supported time formats for this locale.
|
||||||
|
TIMEFORMATS,
|
||||||
|
|
||||||
|
/// The ways date and time formats can be combined for this locale.
|
||||||
|
DATETIMEFORMATS;
|
||||||
|
Map<String, String> AVAILABLEFORMATS;
|
||||||
|
|
||||||
|
/// The first day of the week, in ISO 8601 style, where the first day of the
|
||||||
|
/// week, i.e. index 0, is Monday.
|
||||||
|
int FIRSTDAYOFWEEK;
|
||||||
|
|
||||||
|
/// Which days are weekend days, integers where 0=Monday.
|
||||||
|
///
|
||||||
|
/// For example, [5, 6] to mean Saturday and Sunday are weekend days.
|
||||||
|
List<int> WEEKENDRANGE;
|
||||||
|
int FIRSTWEEKCUTOFFDAY;
|
||||||
|
|
||||||
|
String ZERODIGIT;
|
||||||
|
|
||||||
|
DateSymbols(
|
||||||
|
{this.NAME,
|
||||||
|
this.ERAS,
|
||||||
|
this.ERANAMES,
|
||||||
|
this.NARROWMONTHS,
|
||||||
|
this.STANDALONENARROWMONTHS,
|
||||||
|
this.MONTHS,
|
||||||
|
this.STANDALONEMONTHS,
|
||||||
|
this.SHORTMONTHS,
|
||||||
|
this.STANDALONESHORTMONTHS,
|
||||||
|
this.WEEKDAYS,
|
||||||
|
this.STANDALONEWEEKDAYS,
|
||||||
|
this.SHORTWEEKDAYS,
|
||||||
|
this.STANDALONESHORTWEEKDAYS,
|
||||||
|
this.NARROWWEEKDAYS,
|
||||||
|
this.STANDALONENARROWWEEKDAYS,
|
||||||
|
this.SHORTQUARTERS,
|
||||||
|
this.QUARTERS,
|
||||||
|
this.AMPMS,
|
||||||
|
this.ZERODIGIT,
|
||||||
|
// TODO(alanknight): These formats are taken from Closure,
|
||||||
|
// where there's only a fixed set of available formats.
|
||||||
|
// Here we have the patterns separately. These should
|
||||||
|
// either be used, or removed.
|
||||||
|
this.DATEFORMATS,
|
||||||
|
this.TIMEFORMATS,
|
||||||
|
this.AVAILABLEFORMATS,
|
||||||
|
this.FIRSTDAYOFWEEK,
|
||||||
|
this.WEEKENDRANGE,
|
||||||
|
this.FIRSTWEEKCUTOFFDAY,
|
||||||
|
this.DATETIMEFORMATS});
|
||||||
|
|
||||||
|
// TODO(alanknight): Replace this with use of a more general serialization
|
||||||
|
// facility once one is available. Issue 4926.
|
||||||
|
DateSymbols.deserializeFromMap(Map map) {
|
||||||
|
List<String> _getStringList(String name) =>
|
||||||
|
new List<String>.from(map[name]);
|
||||||
|
NAME = map["NAME"];
|
||||||
|
ERAS = _getStringList("ERAS");
|
||||||
|
ERANAMES = _getStringList("ERANAMES");
|
||||||
|
NARROWMONTHS = _getStringList("NARROWMONTHS");
|
||||||
|
STANDALONENARROWMONTHS = _getStringList("STANDALONENARROWMONTHS");
|
||||||
|
MONTHS = _getStringList("MONTHS");
|
||||||
|
STANDALONEMONTHS = _getStringList("STANDALONEMONTHS");
|
||||||
|
SHORTMONTHS = _getStringList("SHORTMONTHS");
|
||||||
|
STANDALONESHORTMONTHS = _getStringList("STANDALONESHORTMONTHS");
|
||||||
|
WEEKDAYS = _getStringList("WEEKDAYS");
|
||||||
|
STANDALONEWEEKDAYS = _getStringList("STANDALONEWEEKDAYS");
|
||||||
|
SHORTWEEKDAYS = _getStringList("SHORTWEEKDAYS");
|
||||||
|
STANDALONESHORTWEEKDAYS = _getStringList("STANDALONESHORTWEEKDAYS");
|
||||||
|
NARROWWEEKDAYS = _getStringList("NARROWWEEKDAYS");
|
||||||
|
STANDALONENARROWWEEKDAYS = _getStringList("STANDALONENARROWWEEKDAYS");
|
||||||
|
SHORTQUARTERS = _getStringList("SHORTQUARTERS");
|
||||||
|
QUARTERS = _getStringList("QUARTERS");
|
||||||
|
AMPMS = _getStringList("AMPMS");
|
||||||
|
ZERODIGIT = map["ZERODIGIT"];
|
||||||
|
DATEFORMATS = _getStringList("DATEFORMATS");
|
||||||
|
TIMEFORMATS = _getStringList("TIMEFORMATS");
|
||||||
|
AVAILABLEFORMATS =
|
||||||
|
new Map<String, String>.from(map["AVAILABLEFORMATS"] ?? {});
|
||||||
|
FIRSTDAYOFWEEK = map["FIRSTDAYOFWEEK"];
|
||||||
|
WEEKENDRANGE = new List<int>.from(map["WEEKENDRANGE"]);
|
||||||
|
FIRSTWEEKCUTOFFDAY = map["FIRSTWEEKCUTOFFDAY"];
|
||||||
|
DATETIMEFORMATS = _getStringList("DATETIMEFORMATS");
|
||||||
|
}
|
||||||
|
|
||||||
|
Map serializeToMap() {
|
||||||
|
// Don't write default ZERODIGIT, conserves space, but also minimize file
|
||||||
|
// churn.
|
||||||
|
var basicMap = _serializeToMap();
|
||||||
|
if (ZERODIGIT != null && ZERODIGIT != '') {
|
||||||
|
basicMap["ZERODIGIT"] = ZERODIGIT;
|
||||||
|
}
|
||||||
|
return basicMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map _serializeToMap() => {
|
||||||
|
"NAME": NAME,
|
||||||
|
"ERAS": ERAS,
|
||||||
|
"ERANAMES": ERANAMES,
|
||||||
|
"NARROWMONTHS": NARROWMONTHS,
|
||||||
|
"STANDALONENARROWMONTHS": STANDALONENARROWMONTHS,
|
||||||
|
"MONTHS": MONTHS,
|
||||||
|
"STANDALONEMONTHS": STANDALONEMONTHS,
|
||||||
|
"SHORTMONTHS": SHORTMONTHS,
|
||||||
|
"STANDALONESHORTMONTHS": STANDALONESHORTMONTHS,
|
||||||
|
"WEEKDAYS": WEEKDAYS,
|
||||||
|
"STANDALONEWEEKDAYS": STANDALONEWEEKDAYS,
|
||||||
|
"SHORTWEEKDAYS": SHORTWEEKDAYS,
|
||||||
|
"STANDALONESHORTWEEKDAYS": STANDALONESHORTWEEKDAYS,
|
||||||
|
"NARROWWEEKDAYS": NARROWWEEKDAYS,
|
||||||
|
"STANDALONENARROWWEEKDAYS": STANDALONENARROWWEEKDAYS,
|
||||||
|
"SHORTQUARTERS": SHORTQUARTERS,
|
||||||
|
"QUARTERS": QUARTERS,
|
||||||
|
"AMPMS": AMPMS,
|
||||||
|
"DATEFORMATS": DATEFORMATS,
|
||||||
|
"TIMEFORMATS": TIMEFORMATS,
|
||||||
|
"AVAILABLEFORMATS": AVAILABLEFORMATS,
|
||||||
|
"FIRSTDAYOFWEEK": FIRSTDAYOFWEEK,
|
||||||
|
"WEEKENDRANGE": WEEKENDRANGE,
|
||||||
|
"FIRSTWEEKCUTOFFDAY": FIRSTWEEKCUTOFFDAY,
|
||||||
|
"DATETIMEFORMATS": DATETIMEFORMATS,
|
||||||
|
};
|
||||||
|
|
||||||
|
toString() => NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// We hard-code the locale data for en_US here so that there's at least one
|
||||||
|
/// locale always available.
|
||||||
|
var en_USSymbols = new DateSymbols(
|
||||||
|
NAME: "en_US",
|
||||||
|
ERAS: const ['BC', 'AD'],
|
||||||
|
ERANAMES: const ['Before Christ', 'Anno Domini'],
|
||||||
|
NARROWMONTHS: const [
|
||||||
|
'J',
|
||||||
|
'F',
|
||||||
|
'M',
|
||||||
|
'A',
|
||||||
|
'M',
|
||||||
|
'J',
|
||||||
|
'J',
|
||||||
|
'A',
|
||||||
|
'S',
|
||||||
|
'O',
|
||||||
|
'N',
|
||||||
|
'D'
|
||||||
|
],
|
||||||
|
STANDALONENARROWMONTHS: const [
|
||||||
|
'J',
|
||||||
|
'F',
|
||||||
|
'M',
|
||||||
|
'A',
|
||||||
|
'M',
|
||||||
|
'J',
|
||||||
|
'J',
|
||||||
|
'A',
|
||||||
|
'S',
|
||||||
|
'O',
|
||||||
|
'N',
|
||||||
|
'D'
|
||||||
|
],
|
||||||
|
MONTHS: const [
|
||||||
|
'January',
|
||||||
|
'February',
|
||||||
|
'March',
|
||||||
|
'April',
|
||||||
|
'May',
|
||||||
|
'June',
|
||||||
|
'July',
|
||||||
|
'August',
|
||||||
|
'September',
|
||||||
|
'October',
|
||||||
|
'November',
|
||||||
|
'December'
|
||||||
|
],
|
||||||
|
STANDALONEMONTHS: const [
|
||||||
|
'January',
|
||||||
|
'February',
|
||||||
|
'March',
|
||||||
|
'April',
|
||||||
|
'May',
|
||||||
|
'June',
|
||||||
|
'July',
|
||||||
|
'August',
|
||||||
|
'September',
|
||||||
|
'October',
|
||||||
|
'November',
|
||||||
|
'December'
|
||||||
|
],
|
||||||
|
SHORTMONTHS: const [
|
||||||
|
'Jan',
|
||||||
|
'Feb',
|
||||||
|
'Mar',
|
||||||
|
'Apr',
|
||||||
|
'May',
|
||||||
|
'Jun',
|
||||||
|
'Jul',
|
||||||
|
'Aug',
|
||||||
|
'Sep',
|
||||||
|
'Oct',
|
||||||
|
'Nov',
|
||||||
|
'Dec'
|
||||||
|
],
|
||||||
|
STANDALONESHORTMONTHS: const [
|
||||||
|
'Jan',
|
||||||
|
'Feb',
|
||||||
|
'Mar',
|
||||||
|
'Apr',
|
||||||
|
'May',
|
||||||
|
'Jun',
|
||||||
|
'Jul',
|
||||||
|
'Aug',
|
||||||
|
'Sep',
|
||||||
|
'Oct',
|
||||||
|
'Nov',
|
||||||
|
'Dec'
|
||||||
|
],
|
||||||
|
WEEKDAYS: const [
|
||||||
|
'Sunday',
|
||||||
|
'Monday',
|
||||||
|
'Tuesday',
|
||||||
|
'Wednesday',
|
||||||
|
'Thursday',
|
||||||
|
'Friday',
|
||||||
|
'Saturday'
|
||||||
|
],
|
||||||
|
STANDALONEWEEKDAYS: const [
|
||||||
|
'Sunday',
|
||||||
|
'Monday',
|
||||||
|
'Tuesday',
|
||||||
|
'Wednesday',
|
||||||
|
'Thursday',
|
||||||
|
'Friday',
|
||||||
|
'Saturday'
|
||||||
|
],
|
||||||
|
SHORTWEEKDAYS: const ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
||||||
|
STANDALONESHORTWEEKDAYS: const [
|
||||||
|
'Sun',
|
||||||
|
'Mon',
|
||||||
|
'Tue',
|
||||||
|
'Wed',
|
||||||
|
'Thu',
|
||||||
|
'Fri',
|
||||||
|
'Sat'
|
||||||
|
],
|
||||||
|
NARROWWEEKDAYS: const ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
|
||||||
|
STANDALONENARROWWEEKDAYS: const ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
|
||||||
|
SHORTQUARTERS: const ['Q1', 'Q2', 'Q3', 'Q4'],
|
||||||
|
QUARTERS: const [
|
||||||
|
'1st quarter',
|
||||||
|
'2nd quarter',
|
||||||
|
'3rd quarter',
|
||||||
|
'4th quarter'
|
||||||
|
],
|
||||||
|
AMPMS: const ['AM', 'PM'],
|
||||||
|
DATEFORMATS: const ['EEEE, MMMM d, y', 'MMMM d, y', 'MMM d, y', 'M/d/yy'],
|
||||||
|
TIMEFORMATS: const ['h:mm:ss a zzzz', 'h:mm:ss a z', 'h:mm:ss a', 'h:mm a'],
|
||||||
|
FIRSTDAYOFWEEK: 6,
|
||||||
|
WEEKENDRANGE: const [5, 6],
|
||||||
|
FIRSTWEEKCUTOFFDAY: 5,
|
||||||
|
DATETIMEFORMATS: const [
|
||||||
|
'{1} \'at\' {0}',
|
||||||
|
'{1} \'at\' {0}',
|
||||||
|
'{1}, {0}',
|
||||||
|
'{1}, {0}'
|
||||||
|
]);
|
||||||
|
|
||||||
|
var en_USPatterns = const {
|
||||||
|
'd': 'd', // DAY
|
||||||
|
'E': 'EEE', // ABBR_WEEKDAY
|
||||||
|
'EEEE': 'EEEE', // WEEKDAY
|
||||||
|
'LLL': 'LLL', // ABBR_STANDALONE_MONTH
|
||||||
|
'LLLL': 'LLLL', // STANDALONE_MONTH
|
||||||
|
'M': 'L', // NUM_MONTH
|
||||||
|
'Md': 'M/d', // NUM_MONTH_DAY
|
||||||
|
'MEd': 'EEE, M/d', // NUM_MONTH_WEEKDAY_DAY
|
||||||
|
'MMM': 'LLL', // ABBR_MONTH
|
||||||
|
'MMMd': 'MMM d', // ABBR_MONTH_DAY
|
||||||
|
'MMMEd': 'EEE, MMM d', // ABBR_MONTH_WEEKDAY_DAY
|
||||||
|
'MMMM': 'LLLL', // MONTH
|
||||||
|
'MMMMd': 'MMMM d', // MONTH_DAY
|
||||||
|
'MMMMEEEEd': 'EEEE, MMMM d', // MONTH_WEEKDAY_DAY
|
||||||
|
'QQQ': 'QQQ', // ABBR_QUARTER
|
||||||
|
'QQQQ': 'QQQQ', // QUARTER
|
||||||
|
'y': 'y', // YEAR
|
||||||
|
'yM': 'M/y', // YEAR_NUM_MONTH
|
||||||
|
'yMd': 'M/d/y', // YEAR_NUM_MONTH_DAY
|
||||||
|
'yMEd': 'EEE, M/d/y', // YEAR_NUM_MONTH_WEEKDAY_DAY
|
||||||
|
'yMMM': 'MMM y', // YEAR_ABBR_MONTH
|
||||||
|
'yMMMd': 'MMM d, y', // YEAR_ABBR_MONTH_DAY
|
||||||
|
'yMMMEd': 'EEE, MMM d, y', // YEAR_ABBR_MONTH_WEEKDAY_DAY
|
||||||
|
'yMMMM': 'MMMM y', // YEAR_MONTH
|
||||||
|
'yMMMMd': 'MMMM d, y', // YEAR_MONTH_DAY
|
||||||
|
'yMMMMEEEEd': 'EEEE, MMMM d, y', // YEAR_MONTH_WEEKDAY_DAY
|
||||||
|
'yQQQ': 'QQQ y', // YEAR_ABBR_QUARTER
|
||||||
|
'yQQQQ': 'QQQQ y', // YEAR_QUARTER
|
||||||
|
'H': 'HH', // HOUR24
|
||||||
|
'Hm': 'HH:mm', // HOUR24_MINUTE
|
||||||
|
'Hms': 'HH:mm:ss', // HOUR24_MINUTE_SECOND
|
||||||
|
'j': 'h a', // HOUR
|
||||||
|
'jm': 'h:mm a', // HOUR_MINUTE
|
||||||
|
'jms': 'h:mm:ss a', // HOUR_MINUTE_SECOND
|
||||||
|
'jmv': 'h:mm a v', // HOUR_MINUTE_GENERIC_TZ
|
||||||
|
'jmz': 'h:mm a z', // HOUR_MINUTETZ
|
||||||
|
'jz': 'h a z', // HOURGENERIC_TZ
|
||||||
|
'm': 'm', // MINUTE
|
||||||
|
'ms': 'mm:ss', // MINUTE_SECOND
|
||||||
|
's': 's', // SECOND
|
||||||
|
'v': 'v', // ABBR_GENERIC_TZ
|
||||||
|
'z': 'z', // ABBR_SPECIFIC_TZ
|
||||||
|
'zzzz': 'zzzz', // SPECIFIC_TZ
|
||||||
|
'ZZZZ': 'ZZZZ' // ABBR_UTC_TZ
|
||||||
|
};
|
File diff suppressed because it is too large
Load diff
547
jael_preprocessor/.dart_tool/pub/deps/debug/intl/lib/intl.dart
Normal file
547
jael_preprocessor/.dart_tool/pub/deps/debug/intl/lib/intl.dart
Normal file
|
@ -0,0 +1,547 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// This library provides internationalization and localization. This includes
|
||||||
|
/// message formatting and replacement, date and number formatting and parsing,
|
||||||
|
/// and utilities for working with Bidirectional text.
|
||||||
|
///
|
||||||
|
/// This is part of the [intl package]
|
||||||
|
/// (https://pub.dartlang.org/packages/intl).
|
||||||
|
///
|
||||||
|
/// For things that require locale or other data, there are multiple different
|
||||||
|
/// ways of making that data available, which may require importing different
|
||||||
|
/// libraries. See the class comments for more details.
|
||||||
|
///
|
||||||
|
/// There is also a simple example application that can be found in the
|
||||||
|
/// [example/basic](https://github.com/dart-lang/intl/tree/master/example/basic)
|
||||||
|
/// directory.
|
||||||
|
library intl;
|
||||||
|
|
||||||
|
import 'dart:async';
|
||||||
|
import 'dart:collection';
|
||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'date_symbols.dart';
|
||||||
|
import 'number_symbols.dart';
|
||||||
|
import 'number_symbols_data.dart';
|
||||||
|
import 'src/date_format_internal.dart';
|
||||||
|
import 'src/intl_helpers.dart';
|
||||||
|
import 'package:intl/src/plural_rules.dart' as plural_rules;
|
||||||
|
|
||||||
|
part 'src/intl/bidi_formatter.dart';
|
||||||
|
part 'src/intl/bidi_utils.dart';
|
||||||
|
|
||||||
|
part 'src/intl/compact_number_format.dart';
|
||||||
|
part 'src/intl/date_format.dart';
|
||||||
|
part 'src/intl/date_format_field.dart';
|
||||||
|
part 'src/intl/date_format_helpers.dart';
|
||||||
|
part 'src/intl/number_format.dart';
|
||||||
|
|
||||||
|
/// The Intl class provides a common entry point for internationalization
|
||||||
|
/// related tasks. An Intl instance can be created for a particular locale
|
||||||
|
/// and used to create a date format via `anIntl.date()`. Static methods
|
||||||
|
/// on this class are also used in message formatting.
|
||||||
|
///
|
||||||
|
/// Examples:
|
||||||
|
/// today(date) => Intl.message(
|
||||||
|
/// "Today's date is $date",
|
||||||
|
/// name: 'today',
|
||||||
|
/// args: [date],
|
||||||
|
/// desc: 'Indicate the current date',
|
||||||
|
/// examples: const {'date' : 'June 8, 2012'});
|
||||||
|
/// print(today(new DateTime.now().toString());
|
||||||
|
///
|
||||||
|
/// howManyPeople(numberOfPeople, place) => Intl.plural(
|
||||||
|
/// zero: 'I see no one at all',
|
||||||
|
/// one: 'I see one other person',
|
||||||
|
/// other: 'I see $numberOfPeople other people')} in $place.''',
|
||||||
|
/// name: 'msg',
|
||||||
|
/// args: [numberOfPeople, place],
|
||||||
|
/// desc: 'Description of how many people are seen in a place.',
|
||||||
|
/// examples: const {'numberOfPeople': 3, 'place': 'London'});
|
||||||
|
///
|
||||||
|
/// Calling `howManyPeople(2, 'Athens');` would
|
||||||
|
/// produce "I see 2 other people in Athens." as output in the default locale.
|
||||||
|
/// If run in a different locale it would produce appropriately translated
|
||||||
|
/// output.
|
||||||
|
///
|
||||||
|
/// For more detailed information on messages and localizing them see
|
||||||
|
/// the main [package documentation](https://pub.dartlang.org/packages/intl)
|
||||||
|
///
|
||||||
|
/// You can set the default locale.
|
||||||
|
/// Intl.defaultLocale = "pt_BR";
|
||||||
|
///
|
||||||
|
/// To temporarily use a locale other than the default, use the `withLocale`
|
||||||
|
/// function.
|
||||||
|
/// var todayString = new DateFormat("pt_BR").format(new DateTime.now());
|
||||||
|
/// print(withLocale("pt_BR", () => today(todayString));
|
||||||
|
///
|
||||||
|
/// See `tests/message_format_test.dart` for more examples.
|
||||||
|
//TODO(efortuna): documentation example involving the offset parameter?
|
||||||
|
|
||||||
|
class Intl {
|
||||||
|
/// String indicating the locale code with which the message is to be
|
||||||
|
/// formatted (such as en-CA).
|
||||||
|
String _locale;
|
||||||
|
|
||||||
|
/// The default locale. This defaults to being set from systemLocale, but
|
||||||
|
/// can also be set explicitly, and will then apply to any new instances where
|
||||||
|
/// the locale isn't specified. Note that a locale parameter to
|
||||||
|
/// [Intl.withLocale]
|
||||||
|
/// will supercede this value while that operation is active. Using
|
||||||
|
/// [Intl.withLocale] may be preferable if you are using different locales
|
||||||
|
/// in the same application.
|
||||||
|
static String get defaultLocale {
|
||||||
|
var zoneLocale = Zone.current[#Intl.locale];
|
||||||
|
return zoneLocale == null ? _defaultLocale : zoneLocale;
|
||||||
|
}
|
||||||
|
|
||||||
|
static set defaultLocale(String newLocale) {
|
||||||
|
_defaultLocale = newLocale;
|
||||||
|
}
|
||||||
|
|
||||||
|
static String _defaultLocale;
|
||||||
|
|
||||||
|
/// The system's locale, as obtained from the window.navigator.language
|
||||||
|
/// or other operating system mechanism. Note that due to system limitations
|
||||||
|
/// this is not automatically set, and must be set by importing one of
|
||||||
|
/// intl_browser.dart or intl_standalone.dart and calling findSystemLocale().
|
||||||
|
static String systemLocale = 'en_US';
|
||||||
|
|
||||||
|
/// Return a new date format using the specified [pattern].
|
||||||
|
/// If [desiredLocale] is not specified, then we default to [locale].
|
||||||
|
DateFormat date([String pattern, String desiredLocale]) {
|
||||||
|
var actualLocale = (desiredLocale == null) ? locale : desiredLocale;
|
||||||
|
return new DateFormat(pattern, actualLocale);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Constructor optionally [aLocale] for specifics of the language
|
||||||
|
/// locale to be used, otherwise, we will attempt to infer it (acceptable if
|
||||||
|
/// Dart is running on the client, we can infer from the browser/client
|
||||||
|
/// preferences).
|
||||||
|
Intl([String aLocale]) {
|
||||||
|
_locale = aLocale != null ? aLocale : getCurrentLocale();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Use this for a message that will be translated for different locales. The
|
||||||
|
/// expected usage is that this is inside an enclosing function that only
|
||||||
|
/// returns the value of this call and provides a scope for the variables that
|
||||||
|
/// will be substituted in the message.
|
||||||
|
///
|
||||||
|
/// The [message_str] is the string to be translated, which may be
|
||||||
|
/// interpolated based on one or more variables. The [name] of the message
|
||||||
|
/// must match the enclosing function name. For methods, it can also be
|
||||||
|
/// className_methodName. So for a method hello in class Simple, the name can
|
||||||
|
/// be either "hello" or "Simple_hello". The name must also be globally unique
|
||||||
|
/// in the program, so the second form can make it easier to distinguish
|
||||||
|
/// messages with the same name but in different classes.
|
||||||
|
///
|
||||||
|
/// The [args] repeats the arguments of the enclosing
|
||||||
|
/// function, [desc] provides a description of usage,
|
||||||
|
/// [examples] is a Map of examples for each interpolated variable.
|
||||||
|
/// For example
|
||||||
|
///
|
||||||
|
/// hello(yourName) => Intl.message(
|
||||||
|
/// "Hello, $yourName",
|
||||||
|
/// name: "hello",
|
||||||
|
/// args: [yourName],
|
||||||
|
/// desc: "Say hello",
|
||||||
|
/// examples = const {"yourName": "Sparky"}.
|
||||||
|
///
|
||||||
|
/// The source code will be processed via the analyzer to extract out the
|
||||||
|
/// message data, so only a subset of valid Dart code is accepted. In
|
||||||
|
/// particular, everything must be literal and cannot refer to variables
|
||||||
|
/// outside the scope of the enclosing function. The [examples] map must be a
|
||||||
|
/// valid const literal map. Similarly, the [desc] argument must be a single,
|
||||||
|
/// simple string. These two arguments will not be used at runtime but will be
|
||||||
|
/// extracted from the source code and used as additional data for
|
||||||
|
/// translators. For more information see the "Messages" section of the main
|
||||||
|
/// [package documentation] (https://pub.dartlang.org/packages/intl).
|
||||||
|
///
|
||||||
|
/// The [name] and [args] arguments are required, and are used at runtime
|
||||||
|
/// to look up the localized version and pass the appropriate arguments to it.
|
||||||
|
/// We may in the future modify the code during compilation to make manually
|
||||||
|
/// passing those arguments unnecessary.
|
||||||
|
static String message(String message_str,
|
||||||
|
{String desc: '',
|
||||||
|
Map<String, dynamic> examples: const {},
|
||||||
|
String locale,
|
||||||
|
String name,
|
||||||
|
List args,
|
||||||
|
String meaning}) =>
|
||||||
|
_message(message_str, locale, name, args, meaning);
|
||||||
|
|
||||||
|
/// Omit the compile-time only parameters so dart2js can see to drop them.
|
||||||
|
static _message(String message_str, String locale, String name, List args,
|
||||||
|
String meaning) {
|
||||||
|
return messageLookup.lookupMessage(
|
||||||
|
message_str, locale, name, args, meaning);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Return the locale for this instance. If none was set, the locale will
|
||||||
|
/// be the default.
|
||||||
|
String get locale => _locale;
|
||||||
|
|
||||||
|
/// Given [newLocale] return a locale that we have data for that is similar
|
||||||
|
/// to it, if possible.
|
||||||
|
///
|
||||||
|
/// If [newLocale] is found directly, return it. If it can't be found, look up
|
||||||
|
/// based on just the language (e.g. 'en_CA' -> 'en'). Also accepts '-'
|
||||||
|
/// as a separator and changes it into '_' for lookup, and changes the
|
||||||
|
/// country to uppercase.
|
||||||
|
///
|
||||||
|
/// There is a special case that if a locale named "fallback" is present
|
||||||
|
/// and has been initialized, this will return that name. This can be useful
|
||||||
|
/// for messages where you don't want to just use the text from the original
|
||||||
|
/// source code, but wish to have a universal fallback translation.
|
||||||
|
///
|
||||||
|
/// Note that null is interpreted as meaning the default locale, so if
|
||||||
|
/// [newLocale] is null the default locale will be returned.
|
||||||
|
static String verifiedLocale(String newLocale, Function localeExists,
|
||||||
|
{Function onFailure: _throwLocaleError}) {
|
||||||
|
// TODO(alanknight): Previously we kept a single verified locale on the Intl
|
||||||
|
// object, but with different verification for different uses, that's more
|
||||||
|
// difficult. As a result, we call this more often. Consider keeping
|
||||||
|
// verified locales for each purpose if it turns out to be a performance
|
||||||
|
// issue.
|
||||||
|
if (newLocale == null) {
|
||||||
|
return verifiedLocale(getCurrentLocale(), localeExists,
|
||||||
|
onFailure: onFailure);
|
||||||
|
}
|
||||||
|
if (localeExists(newLocale)) {
|
||||||
|
return newLocale;
|
||||||
|
}
|
||||||
|
for (var each in [
|
||||||
|
canonicalizedLocale(newLocale),
|
||||||
|
shortLocale(newLocale),
|
||||||
|
"fallback"
|
||||||
|
]) {
|
||||||
|
if (localeExists(each)) {
|
||||||
|
return each;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return onFailure(newLocale);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The default action if a locale isn't found in verifiedLocale. Throw
|
||||||
|
/// an exception indicating the locale isn't correct.
|
||||||
|
static String _throwLocaleError(String localeName) {
|
||||||
|
throw new ArgumentError("Invalid locale '$localeName'");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Return the short version of a locale name, e.g. 'en_US' => 'en'
|
||||||
|
static String shortLocale(String aLocale) {
|
||||||
|
if (aLocale.length < 2) return aLocale;
|
||||||
|
return aLocale.substring(0, 2).toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Return the name [aLocale] turned into xx_YY where it might possibly be
|
||||||
|
/// in the wrong case or with a hyphen instead of an underscore. If
|
||||||
|
/// [aLocale] is null, for example, if you tried to get it from IE,
|
||||||
|
/// return the current system locale.
|
||||||
|
static String canonicalizedLocale(String aLocale) {
|
||||||
|
// Locales of length < 5 are presumably two-letter forms, or else malformed.
|
||||||
|
// We return them unmodified and if correct they will be found.
|
||||||
|
// Locales longer than 6 might be malformed, but also do occur. Do as
|
||||||
|
// little as possible to them, but make the '-' be an '_' if it's there.
|
||||||
|
// We treat C as a special case, and assume it wants en_ISO for formatting.
|
||||||
|
// TODO(alanknight): en_ISO is probably not quite right for the C/Posix
|
||||||
|
// locale for formatting. Consider adding C to the formats database.
|
||||||
|
if (aLocale == null) return getCurrentLocale();
|
||||||
|
if (aLocale == "C") return "en_ISO";
|
||||||
|
if (aLocale.length < 5) return aLocale;
|
||||||
|
if (aLocale[2] != '-' && (aLocale[2] != '_')) return aLocale;
|
||||||
|
var region = aLocale.substring(3);
|
||||||
|
// If it's longer than three it's something odd, so don't touch it.
|
||||||
|
if (region.length <= 3) region = region.toUpperCase();
|
||||||
|
return '${aLocale[0]}${aLocale[1]}_$region';
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Format a message differently depending on [howMany]. Normally used
|
||||||
|
/// as part of an `Intl.message` text that is to be translated.
|
||||||
|
/// Selects the correct plural form from
|
||||||
|
/// the provided alternatives. The [other] named argument is mandatory.
|
||||||
|
static String plural(int howMany,
|
||||||
|
{String zero,
|
||||||
|
String one,
|
||||||
|
String two,
|
||||||
|
String few,
|
||||||
|
String many,
|
||||||
|
String other,
|
||||||
|
String desc,
|
||||||
|
Map<String, dynamic> examples,
|
||||||
|
String locale,
|
||||||
|
String name,
|
||||||
|
List args,
|
||||||
|
String meaning}) {
|
||||||
|
// Call our internal method, dropping examples and desc because they're not
|
||||||
|
// used at runtime and we want them to be optimized away.
|
||||||
|
return _plural(howMany,
|
||||||
|
zero: zero,
|
||||||
|
one: one,
|
||||||
|
two: two,
|
||||||
|
few: few,
|
||||||
|
many: many,
|
||||||
|
other: other,
|
||||||
|
locale: locale,
|
||||||
|
name: name,
|
||||||
|
args: args,
|
||||||
|
meaning: meaning);
|
||||||
|
}
|
||||||
|
|
||||||
|
static String _plural(int howMany,
|
||||||
|
{String zero,
|
||||||
|
String one,
|
||||||
|
String two,
|
||||||
|
String few,
|
||||||
|
String many,
|
||||||
|
String other,
|
||||||
|
String locale,
|
||||||
|
String name,
|
||||||
|
List args,
|
||||||
|
String meaning}) {
|
||||||
|
// Look up our translation, but pass in a null message so we don't have to
|
||||||
|
// eagerly evaluate calls that may not be necessary.
|
||||||
|
var translated = _message(null, locale, name, args, meaning);
|
||||||
|
|
||||||
|
/// If there's a translation, return it, otherwise evaluate with our
|
||||||
|
/// original text.
|
||||||
|
return translated ??
|
||||||
|
pluralLogic(howMany,
|
||||||
|
zero: zero,
|
||||||
|
one: one,
|
||||||
|
two: two,
|
||||||
|
few: few,
|
||||||
|
many: many,
|
||||||
|
other: other,
|
||||||
|
locale: locale);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Internal: Implements the logic for plural selection - use [plural] for
|
||||||
|
/// normal messages.
|
||||||
|
static pluralLogic(int howMany,
|
||||||
|
{zero, one, two, few, many, other, String locale, String meaning}) {
|
||||||
|
if (other == null) {
|
||||||
|
throw new ArgumentError("The 'other' named argument must be provided");
|
||||||
|
}
|
||||||
|
if (howMany == null) {
|
||||||
|
throw new ArgumentError("The howMany argument to plural cannot be null");
|
||||||
|
}
|
||||||
|
// If there's an explicit case for the exact number, we use it. This is not
|
||||||
|
// strictly in accord with the CLDR rules, but it seems to be the
|
||||||
|
// expectation. At least I see e.g. Russian translations that have a zero
|
||||||
|
// case defined. The rule for that locale will never produce a zero, and
|
||||||
|
// treats it as other. But it seems reasonable that, even if the language
|
||||||
|
// rules treat zero as other, we might want a special message for zero.
|
||||||
|
if (howMany == 0 && zero != null) return zero;
|
||||||
|
if (howMany == 1 && one != null) return one;
|
||||||
|
if (howMany == 2 && two != null) return two;
|
||||||
|
var pluralRule = _pluralRule(locale, howMany);
|
||||||
|
var pluralCase = pluralRule();
|
||||||
|
switch (pluralCase) {
|
||||||
|
case plural_rules.PluralCase.ZERO:
|
||||||
|
return zero ?? other;
|
||||||
|
case plural_rules.PluralCase.ONE:
|
||||||
|
return one ?? other;
|
||||||
|
case plural_rules.PluralCase.TWO:
|
||||||
|
return two ?? few ?? other;
|
||||||
|
case plural_rules.PluralCase.FEW:
|
||||||
|
return few ?? other;
|
||||||
|
case plural_rules.PluralCase.MANY:
|
||||||
|
return many ?? other;
|
||||||
|
case plural_rules.PluralCase.OTHER:
|
||||||
|
return other;
|
||||||
|
default:
|
||||||
|
throw new ArgumentError.value(
|
||||||
|
howMany, "howMany", "Invalid plural argument");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static var _cachedPluralRule;
|
||||||
|
static String _cachedPluralLocale;
|
||||||
|
|
||||||
|
static _pluralRule(String locale, int howMany) {
|
||||||
|
plural_rules.startRuleEvaluation(howMany);
|
||||||
|
var verifiedLocale = Intl.verifiedLocale(
|
||||||
|
locale, plural_rules.localeHasPluralRules,
|
||||||
|
onFailure: (locale) => 'default');
|
||||||
|
if (_cachedPluralLocale == verifiedLocale) {
|
||||||
|
return _cachedPluralRule;
|
||||||
|
} else {
|
||||||
|
_cachedPluralRule = plural_rules.pluralRules[verifiedLocale];
|
||||||
|
_cachedPluralLocale = verifiedLocale;
|
||||||
|
return _cachedPluralRule;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Format a message differently depending on [targetGender].
|
||||||
|
static String gender(String targetGender,
|
||||||
|
{String female,
|
||||||
|
String male,
|
||||||
|
String other,
|
||||||
|
String desc,
|
||||||
|
Map<String, dynamic> examples,
|
||||||
|
String locale,
|
||||||
|
String name,
|
||||||
|
List args,
|
||||||
|
String meaning}) {
|
||||||
|
// Call our internal method, dropping args and desc because they're not used
|
||||||
|
// at runtime and we want them to be optimized away.
|
||||||
|
return _gender(targetGender,
|
||||||
|
male: male,
|
||||||
|
female: female,
|
||||||
|
other: other,
|
||||||
|
locale: locale,
|
||||||
|
name: name,
|
||||||
|
args: args,
|
||||||
|
meaning: meaning);
|
||||||
|
}
|
||||||
|
|
||||||
|
static String _gender(String targetGender,
|
||||||
|
{String female,
|
||||||
|
String male,
|
||||||
|
String other,
|
||||||
|
String desc,
|
||||||
|
Map<String, dynamic> examples,
|
||||||
|
String locale,
|
||||||
|
String name,
|
||||||
|
List args,
|
||||||
|
String meaning}) {
|
||||||
|
// Look up our translation, but pass in a null message so we don't have to
|
||||||
|
// eagerly evaluate calls that may not be necessary.
|
||||||
|
var translated = _message(null, locale, name, args, meaning);
|
||||||
|
|
||||||
|
/// If there's a translation, return it, otherwise evaluate with our
|
||||||
|
/// original text.
|
||||||
|
return translated ??
|
||||||
|
genderLogic(targetGender,
|
||||||
|
female: female, male: male, other: other, locale: locale);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Internal: Implements the logic for gender selection - use [gender] for
|
||||||
|
/// normal messages.
|
||||||
|
static genderLogic(String targetGender,
|
||||||
|
{female, male, other, String locale}) {
|
||||||
|
if (other == null) {
|
||||||
|
throw new ArgumentError("The 'other' named argument must be specified");
|
||||||
|
}
|
||||||
|
switch (targetGender) {
|
||||||
|
case "female":
|
||||||
|
return female == null ? other : female;
|
||||||
|
case "male":
|
||||||
|
return male == null ? other : male;
|
||||||
|
default:
|
||||||
|
return other;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Format a message differently depending on [choice]. We look up the value
|
||||||
|
/// of [choice] in [cases] and return the result, or an empty string if
|
||||||
|
/// it is not found. Normally used as part
|
||||||
|
/// of an Intl.message message that is to be translated.
|
||||||
|
static String select(Object choice, Map<String, String> cases,
|
||||||
|
{String desc,
|
||||||
|
Map<String, dynamic> examples,
|
||||||
|
String locale,
|
||||||
|
String name,
|
||||||
|
List args,
|
||||||
|
String meaning}) {
|
||||||
|
return _select(choice, cases,
|
||||||
|
locale: locale, name: name, args: args, meaning: meaning);
|
||||||
|
}
|
||||||
|
|
||||||
|
static String _select(Object choice, Map<String, String> cases,
|
||||||
|
{String locale, String name, List args, String meaning}) {
|
||||||
|
// Look up our translation, but pass in a null message so we don't have to
|
||||||
|
// eagerly evaluate calls that may not be necessary.
|
||||||
|
var translated = _message(null, locale, name, args, meaning);
|
||||||
|
|
||||||
|
/// If there's a translation, return it, otherwise evaluate with our
|
||||||
|
/// original text.
|
||||||
|
return translated ?? selectLogic(choice, cases);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Internal: Implements the logic for select - use [select] for
|
||||||
|
/// normal messages.
|
||||||
|
static selectLogic(Object choice, Map<String, String> cases) {
|
||||||
|
// Allow passing non-strings, e.g. enums to a select.
|
||||||
|
choice = "$choice";
|
||||||
|
var exact = cases[choice];
|
||||||
|
if (exact != null) return exact;
|
||||||
|
var other = cases["other"];
|
||||||
|
if (other == null)
|
||||||
|
throw new ArgumentError("The 'other' case must be specified");
|
||||||
|
return other;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Run [function] with the default locale set to [locale] and
|
||||||
|
/// return the result.
|
||||||
|
///
|
||||||
|
/// This is run in a zone, so async operations invoked
|
||||||
|
/// from within [function] will still have the locale set.
|
||||||
|
///
|
||||||
|
/// In simple usage [function] might be a single
|
||||||
|
/// `Intl.message()` call or number/date formatting operation. But it can
|
||||||
|
/// also be an arbitrary function that calls multiple Intl operations.
|
||||||
|
///
|
||||||
|
/// For example
|
||||||
|
///
|
||||||
|
/// Intl.withLocale("fr", () => new NumberFormat.format(123456));
|
||||||
|
///
|
||||||
|
/// or
|
||||||
|
///
|
||||||
|
/// hello(name) => Intl.message(
|
||||||
|
/// "Hello $name.",
|
||||||
|
/// name: 'hello',
|
||||||
|
/// args: [name],
|
||||||
|
/// desc: 'Say Hello');
|
||||||
|
/// Intl.withLocale("zh", new Timer(new Duration(milliseconds:10),
|
||||||
|
/// () => print(hello("World")));
|
||||||
|
static withLocale(String locale, function()) {
|
||||||
|
var canonical = Intl.canonicalizedLocale(locale);
|
||||||
|
return runZoned(function, zoneValues: {#Intl.locale: canonical});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Accessor for the current locale. This should always == the default locale,
|
||||||
|
/// unless for some reason this gets called inside a message that resets the
|
||||||
|
/// locale.
|
||||||
|
static String getCurrentLocale() {
|
||||||
|
if (defaultLocale == null) defaultLocale = systemLocale;
|
||||||
|
return defaultLocale;
|
||||||
|
}
|
||||||
|
|
||||||
|
toString() => "Intl($locale)";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Convert a string to beginning of sentence case, in a way appropriate to the
|
||||||
|
/// locale.
|
||||||
|
///
|
||||||
|
/// Currently this just converts the first letter to uppercase, which works for
|
||||||
|
/// many locales, and we have the option to extend this to handle more cases
|
||||||
|
/// without changing the API for clients. It also hard-codes the case of
|
||||||
|
/// dotted i in Turkish and Azeri.
|
||||||
|
String toBeginningOfSentenceCase(String input, [String locale]) {
|
||||||
|
if (input == null || input.isEmpty) return input;
|
||||||
|
return "${_upperCaseLetter(input[0], locale)}${input.substring(1)}";
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Convert the input single-letter string to upper case. A trivial
|
||||||
|
/// hard-coded implementation that only handles simple upper case
|
||||||
|
/// and the dotted i in Turkish/Azeri.
|
||||||
|
///
|
||||||
|
/// Private to the implementation of [toBeginningOfSentenceCase].
|
||||||
|
// TODO(alanknight): Consider hard-coding other important cases.
|
||||||
|
// See http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt
|
||||||
|
// TODO(alanknight): Alternatively, consider toLocaleUpperCase in browsers.
|
||||||
|
// See also https://github.com/dart-lang/sdk/issues/6706
|
||||||
|
String _upperCaseLetter(String input, String locale) {
|
||||||
|
// Hard-code the important edge case of i->İ
|
||||||
|
if (locale != null) {
|
||||||
|
if (input == "i" && locale.startsWith("tr") || locale.startsWith("az")) {
|
||||||
|
return "\u0130";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return input.toUpperCase();
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// This provides facilities for Internationalization that are only available
|
||||||
|
/// when running in the web browser. You should import only one of this or
|
||||||
|
/// intl_standalone.dart. Right now the only thing provided here is the
|
||||||
|
/// ability to find the default locale from the browser.
|
||||||
|
|
||||||
|
library intl_browser;
|
||||||
|
|
||||||
|
import "dart:async";
|
||||||
|
import "dart:html";
|
||||||
|
import "intl.dart";
|
||||||
|
|
||||||
|
// TODO(alanknight): The need to do this by forcing the user to specially
|
||||||
|
// import a particular library is a horrible hack, only done because there
|
||||||
|
// seems to be no graceful way to do this at all. Either mirror access on
|
||||||
|
// dart2js or the ability to do spawnUri in the browser would be promising
|
||||||
|
// as ways to get rid of this requirement.
|
||||||
|
/// Find the system locale, accessed as window.navigator.language, and
|
||||||
|
/// set it as the default for internationalization operations in the
|
||||||
|
/// [Intl.systemLocale] variable.
|
||||||
|
Future<String> findSystemLocale() {
|
||||||
|
Intl.systemLocale = Intl.canonicalizedLocale(window.navigator.language);
|
||||||
|
return new Future.value(Intl.systemLocale);
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// This provides facilities for Internationalization that are only available
|
||||||
|
/// when running standalone. You should import only one of this or
|
||||||
|
/// intl_browser.dart. Right now the only thing provided here is finding
|
||||||
|
/// the operating system locale.
|
||||||
|
|
||||||
|
library intl_standalone;
|
||||||
|
|
||||||
|
import "dart:async";
|
||||||
|
import "dart:io";
|
||||||
|
import "intl.dart";
|
||||||
|
|
||||||
|
// TODO(alanknight): The need to do this by forcing the user to specially
|
||||||
|
// import a particular library is a horrible hack, only done because there
|
||||||
|
// seems to be no graceful way to do this at all. Either mirror access on
|
||||||
|
// dart2js or the ability to do spawnUri in the browser would be promising
|
||||||
|
// as ways to get rid of this requirement.
|
||||||
|
/// Find the system locale, accessed via the appropriate system APIs, and
|
||||||
|
/// set it as the default for internationalization operations in
|
||||||
|
/// the [Intl.systemLocale] variable.
|
||||||
|
Future<String> findSystemLocale() {
|
||||||
|
try {
|
||||||
|
Intl.systemLocale = Intl.canonicalizedLocale(Platform.localeName);
|
||||||
|
} catch (e) {
|
||||||
|
return new Future.value();
|
||||||
|
}
|
||||||
|
return new Future.value(Intl.systemLocale);
|
||||||
|
}
|
|
@ -0,0 +1,145 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// Message/plural format library with locale support. This can have different
|
||||||
|
/// implementations based on the mechanism for finding the localized versions of
|
||||||
|
/// messages. This version expects them to be in a library named e.g.
|
||||||
|
/// 'messages_en_US'. The prefix is set in the "initializeMessages" call, which
|
||||||
|
/// must be made for a locale before any lookups can be done.
|
||||||
|
///
|
||||||
|
/// See Intl class comment or `tests/message_format_test.dart` for more
|
||||||
|
/// examples.
|
||||||
|
library message_lookup_by_library;
|
||||||
|
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:intl/src/intl_helpers.dart';
|
||||||
|
|
||||||
|
/// This is a message lookup mechanism that delegates to one of a collection
|
||||||
|
/// of individual [MessageLookupByLibrary] instances.
|
||||||
|
class CompositeMessageLookup implements MessageLookup {
|
||||||
|
/// A map from locale names to the corresponding lookups.
|
||||||
|
Map<String, MessageLookupByLibrary> availableMessages = new Map();
|
||||||
|
|
||||||
|
/// Return true if we have a message lookup for [localeName].
|
||||||
|
bool localeExists(localeName) => availableMessages.containsKey(localeName);
|
||||||
|
|
||||||
|
/// The last locale in which we looked up messages.
|
||||||
|
///
|
||||||
|
/// If this locale matches the new one then we can skip looking up the
|
||||||
|
/// messages and assume they will be the same as last time.
|
||||||
|
String _lastLocale;
|
||||||
|
|
||||||
|
/// Caches the last messages that we found
|
||||||
|
MessageLookupByLibrary _lastLookup;
|
||||||
|
|
||||||
|
/// Look up the message with the given [name] and [locale] and return the
|
||||||
|
/// translated version with the values in [args] interpolated. If nothing is
|
||||||
|
/// found, return the result of [ifAbsent] or [message_str]. The
|
||||||
|
/// [desc] and [examples] parameters are ignored
|
||||||
|
String lookupMessage(
|
||||||
|
String message_str, String locale, String name, List args, String meaning,
|
||||||
|
{MessageIfAbsent ifAbsent}) {
|
||||||
|
// If passed null, use the default.
|
||||||
|
var knownLocale = locale ?? Intl.getCurrentLocale();
|
||||||
|
var messages = (knownLocale == _lastLocale)
|
||||||
|
? _lastLookup
|
||||||
|
: _lookupMessageCatalog(knownLocale);
|
||||||
|
// If we didn't find any messages for this locale, use the original string,
|
||||||
|
// faking interpolations if necessary.
|
||||||
|
if (messages == null) {
|
||||||
|
return ifAbsent == null ? message_str : ifAbsent(message_str, args);
|
||||||
|
}
|
||||||
|
return messages.lookupMessage(message_str, locale, name, args, meaning,
|
||||||
|
ifAbsent: ifAbsent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Find the right message lookup for [locale].
|
||||||
|
MessageLookupByLibrary _lookupMessageCatalog(String locale) {
|
||||||
|
var verifiedLocale = Intl.verifiedLocale(locale, localeExists,
|
||||||
|
onFailure: (locale) => locale);
|
||||||
|
_lastLocale = locale;
|
||||||
|
_lastLookup = availableMessages[verifiedLocale];
|
||||||
|
return _lastLookup;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// If we do not already have a locale for [localeName] then
|
||||||
|
/// [findLocale] will be called and the result stored as the lookup
|
||||||
|
/// mechanism for that locale.
|
||||||
|
void addLocale(String localeName, Function findLocale) {
|
||||||
|
if (localeExists(localeName)) return;
|
||||||
|
var canonical = Intl.canonicalizedLocale(localeName);
|
||||||
|
var newLocale = findLocale(canonical);
|
||||||
|
if (newLocale != null) {
|
||||||
|
availableMessages[localeName] = newLocale;
|
||||||
|
availableMessages[canonical] = newLocale;
|
||||||
|
// If there was already a failed lookup for [newLocale], null the cache.
|
||||||
|
if (_lastLocale == newLocale) {
|
||||||
|
_lastLocale = null;
|
||||||
|
_lastLookup = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// This provides an abstract class for messages looked up in generated code.
|
||||||
|
/// Each locale will have a separate subclass of this class with its set of
|
||||||
|
/// messages. See generate_localized.dart.
|
||||||
|
abstract class MessageLookupByLibrary {
|
||||||
|
/// Return the localized version of a message. We are passed the original
|
||||||
|
/// version of the message, which consists of a
|
||||||
|
/// [message_str] that will be translated, and which may be interpolated
|
||||||
|
/// based on one or more variables, a [desc] providing a description of usage
|
||||||
|
/// for the [message_str], and a map of [examples] for each data element to be
|
||||||
|
/// substituted into the message.
|
||||||
|
///
|
||||||
|
/// For example, if message="Hello, $name", then
|
||||||
|
/// examples = {'name': 'Sparky'}. If not using the user's default locale, or
|
||||||
|
/// if the locale is not easily detectable, explicitly pass [locale].
|
||||||
|
///
|
||||||
|
/// The values of [desc] and [examples] are not used at run-time but are only
|
||||||
|
/// made available to the translators, so they MUST be simple Strings
|
||||||
|
/// available at compile time: no String interpolation or concatenation. The
|
||||||
|
/// expected usage of this is inside a function that takes as parameters the
|
||||||
|
/// variables used in the interpolated string.
|
||||||
|
///
|
||||||
|
/// Ultimately, the information about the enclosing function and its arguments
|
||||||
|
/// will be extracted automatically but for the time being it must be passed
|
||||||
|
/// explicitly in the [name] and [args] arguments.
|
||||||
|
String lookupMessage(
|
||||||
|
String message_str, String locale, String name, List args, String meaning,
|
||||||
|
{MessageIfAbsent ifAbsent}) {
|
||||||
|
var notFound = false;
|
||||||
|
var actualName = computeMessageName(name, message_str, meaning);
|
||||||
|
if (actualName == null) notFound = true;
|
||||||
|
var translation = this[actualName];
|
||||||
|
notFound = notFound || (translation == null);
|
||||||
|
if (notFound) {
|
||||||
|
return ifAbsent == null ? message_str : ifAbsent(message_str, args);
|
||||||
|
} else {
|
||||||
|
args = args ?? const [];
|
||||||
|
return evaluateMessage(translation, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Evaluate the translated message and return the translated string.
|
||||||
|
String evaluateMessage(translation, List args) {
|
||||||
|
return Function.apply(translation, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Return our message with the given name
|
||||||
|
operator [](String messageName) => messages[messageName];
|
||||||
|
|
||||||
|
/// Subclasses should override this to return a list of their message
|
||||||
|
/// functions.
|
||||||
|
Map<String, Function> get messages;
|
||||||
|
|
||||||
|
/// Subclasses should override this to return their locale, e.g. 'en_US'
|
||||||
|
String get localeName;
|
||||||
|
|
||||||
|
toString() => localeName;
|
||||||
|
|
||||||
|
/// Return a function that returns the given string.
|
||||||
|
/// An optimization for dart2js, used from the generated code.
|
||||||
|
static simpleMessage(translatedString) => () => translatedString;
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this source code is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
library number_symbols;
|
||||||
|
|
||||||
|
/// This holds onto information about how a particular locale formats
|
||||||
|
/// numbers. It contains strings for things like the decimal separator, digit to
|
||||||
|
/// use for "0" and infinity. We expect the data for instances to be generated
|
||||||
|
/// out of ICU or a similar reference source.
|
||||||
|
class NumberSymbols {
|
||||||
|
final String NAME;
|
||||||
|
final String DECIMAL_SEP,
|
||||||
|
GROUP_SEP,
|
||||||
|
PERCENT,
|
||||||
|
ZERO_DIGIT,
|
||||||
|
PLUS_SIGN,
|
||||||
|
MINUS_SIGN,
|
||||||
|
EXP_SYMBOL,
|
||||||
|
PERMILL,
|
||||||
|
INFINITY,
|
||||||
|
NAN,
|
||||||
|
DECIMAL_PATTERN,
|
||||||
|
SCIENTIFIC_PATTERN,
|
||||||
|
PERCENT_PATTERN,
|
||||||
|
CURRENCY_PATTERN,
|
||||||
|
DEF_CURRENCY_CODE;
|
||||||
|
|
||||||
|
const NumberSymbols(
|
||||||
|
{this.NAME,
|
||||||
|
this.DECIMAL_SEP,
|
||||||
|
this.GROUP_SEP,
|
||||||
|
this.PERCENT,
|
||||||
|
this.ZERO_DIGIT,
|
||||||
|
this.PLUS_SIGN,
|
||||||
|
this.MINUS_SIGN,
|
||||||
|
this.EXP_SYMBOL,
|
||||||
|
this.PERMILL,
|
||||||
|
this.INFINITY,
|
||||||
|
this.NAN,
|
||||||
|
this.DECIMAL_PATTERN,
|
||||||
|
this.SCIENTIFIC_PATTERN,
|
||||||
|
this.PERCENT_PATTERN,
|
||||||
|
this.CURRENCY_PATTERN,
|
||||||
|
this.DEF_CURRENCY_CODE});
|
||||||
|
|
||||||
|
toString() => NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
class CompactNumberSymbols {
|
||||||
|
final Map<int, String> COMPACT_DECIMAL_SHORT_PATTERN;
|
||||||
|
final Map<int, String> COMPACT_DECIMAL_LONG_PATTERN;
|
||||||
|
final Map<int, String> COMPACT_DECIMAL_SHORT_CURRENCY_PATTERN;
|
||||||
|
CompactNumberSymbols(
|
||||||
|
{this.COMPACT_DECIMAL_SHORT_PATTERN,
|
||||||
|
this.COMPACT_DECIMAL_LONG_PATTERN,
|
||||||
|
this.COMPACT_DECIMAL_SHORT_CURRENCY_PATTERN});
|
||||||
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,16 @@
|
||||||
|
These directories hold data used for date formatting when you read the data
|
||||||
|
from JSON files on disk or over the network. There are two directories
|
||||||
|
|
||||||
|
patterns - Holds the mapping form skeletons to a locale-specific format. The
|
||||||
|
data is exactly equivalent to that in date_time_patterns.dart and is generated
|
||||||
|
from it using the tools/generate_locale_data_files.dart program.
|
||||||
|
|
||||||
|
symbols - Holds the symbols used for formatting in a particular locale. This
|
||||||
|
includes things like the names of weekdays and months. The data is the same as
|
||||||
|
that in date_symbol_data_locale.dart and is generated from it using the
|
||||||
|
tools/generate_locale_data_files.dart program.
|
||||||
|
|
||||||
|
There is also a localeList.dart file that lists all of the
|
||||||
|
locales in these directories and which is sourced by other files in order to
|
||||||
|
have a list of the available locales.
|
||||||
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
||||||
|
// for details. All rights reserved. Use of this sourcecode is governed by a
|
||||||
|
// BSD-style license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
/// Hard-coded list of all available locales for dates.
|
||||||
|
final availableLocalesForDateFormatting = const [
|
||||||
|
"en_ISO",
|
||||||
|
"af",
|
||||||
|
"am",
|
||||||
|
"ar",
|
||||||
|
"ar_DZ",
|
||||||
|
"az",
|
||||||
|
"be",
|
||||||
|
"bg",
|
||||||
|
"bn",
|
||||||
|
"br",
|
||||||
|
"bs",
|
||||||
|
"ca",
|
||||||
|
"chr",
|
||||||
|
"cs",
|
||||||
|
"cy",
|
||||||
|
"da",
|
||||||
|
"de",
|
||||||
|
"de_AT",
|
||||||
|
"de_CH",
|
||||||
|
"el",
|
||||||
|
"en",
|
||||||
|
"en_AU",
|
||||||
|
"en_CA",
|
||||||
|
"en_GB",
|
||||||
|
"en_IE",
|
||||||
|
"en_IN",
|
||||||
|
"en_MY",
|
||||||
|
"en_SG",
|
||||||
|
"en_US",
|
||||||
|
"en_ZA",
|
||||||
|
"es",
|
||||||
|
"es_419",
|
||||||
|
"es_ES",
|
||||||
|
"es_MX",
|
||||||
|
"es_US",
|
||||||
|
"et",
|
||||||
|
"eu",
|
||||||
|
"fa",
|
||||||
|
"fi",
|
||||||
|
"fil",
|
||||||
|
"fr",
|
||||||
|
"fr_CA",
|
||||||
|
"fr_CH",
|
||||||
|
"ga",
|
||||||
|
"gl",
|
||||||
|
"gsw",
|
||||||
|
"gu",
|
||||||
|
"haw",
|
||||||
|
"he",
|
||||||
|
"hi",
|
||||||
|
"hr",
|
||||||
|
"hu",
|
||||||
|
"hy",
|
||||||
|
"id",
|
||||||
|
"in",
|
||||||
|
"is",
|
||||||
|
"it",
|
||||||
|
"it_CH",
|
||||||
|
"iw",
|
||||||
|
"ja",
|
||||||
|
"ka",
|
||||||
|
"kk",
|
||||||
|
"km",
|
||||||
|
"kn",
|
||||||
|
"ko",
|
||||||
|
"ky",
|
||||||
|
"ln",
|
||||||
|
"lo",
|
||||||
|
"lt",
|
||||||
|
"lv",
|
||||||
|
"mk",
|
||||||
|
"ml",
|
||||||
|
"mn",
|
||||||
|
"mr",
|
||||||
|
"ms",
|
||||||
|
"mt",
|
||||||
|
"my",
|
||||||
|
"nb",
|
||||||
|
"ne",
|
||||||
|
"nl",
|
||||||
|
"no",
|
||||||
|
"no_NO",
|
||||||
|
"or",
|
||||||
|
"pa",
|
||||||
|
"pl",
|
||||||
|
"ps",
|
||||||
|
"pt",
|
||||||
|
"pt_BR",
|
||||||
|
"pt_PT",
|
||||||
|
"ro",
|
||||||
|
"ru",
|
||||||
|
"si",
|
||||||
|
"sk",
|
||||||
|
"sl",
|
||||||
|
"sq",
|
||||||
|
"sr",
|
||||||
|
"sr_Latn",
|
||||||
|
"sv",
|
||||||
|
"sw",
|
||||||
|
"ta",
|
||||||
|
"te",
|
||||||
|
"th",
|
||||||
|
"tl",
|
||||||
|
"tr",
|
||||||
|
"uk",
|
||||||
|
"ur",
|
||||||
|
"uz",
|
||||||
|
"vi",
|
||||||
|
"zh",
|
||||||
|
"zh_CN",
|
||||||
|
"zh_HK",
|
||||||
|
"zh_TW",
|
||||||
|
"zu"
|
||||||
|
];
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd-MM","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM-y","yMd":"y-MM-dd","yMEd":"EEE y-MM-dd","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"EEE፣ M/d","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE፣ MMM d","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE፣ MMMM d","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE፣ d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE፣ MMM d y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE ፣d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE، d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE، d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE، d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE، d/M/y","yMMM":"MMM y","yMMMd":"d MMM، y","yMMMEd":"EEE، d MMM، y","yMMMM":"MMMM y","yMMMMd":"d MMMM، y","yMMMMEEEEd":"EEEE، d MMMM، y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE، d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE، d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE، d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE، d/M/y","yMMM":"MMM y","yMMMd":"d MMM، y","yMMMEd":"EEE، d MMM، y","yMMMM":"MMMM y","yMMMMd":"d MMMM، y","yMMMMEEEEd":"EEEE، d MMMM، y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd.MM","MEd":"dd.MM, EEE","MMM":"LLL","MMMd":"d MMM","MMMEd":"d MMM, EEE","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"d MMMM, EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM.y","yMd":"dd.MM.y","yMEd":"dd.MM.y, EEE","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"d MMM y, EEE","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"d MMMM y, EEEE","yQQQ":"y QQQ","yQQQQ":"y QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M","MEd":"EEE, d.M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"LLL y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"LLLL y","yMMMMd":"d MMMM y 'г'.","yMMMMEEEEd":"EEEE, d MMMM y 'г'.","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm.ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.MM","MEd":"EEE, d.MM","MMM":"MM","MMMd":"d.MM","MMMEd":"EEE, d.MM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y 'г'.","yM":"MM.y 'г'.","yMd":"d.MM.y 'г'.","yMEd":"EEE, d.MM.y 'г'.","yMMM":"MM.y 'г'.","yMMMd":"d.MM.y 'г'.","yMMMEd":"EEE, d.MM.y 'г'.","yMMMM":"MMMM y 'г'.","yMMMMd":"d MMMM y 'г'.","yMMMMEEEEd":"EEEE, d MMMM y 'г'.","yQQQ":"QQQ y 'г'.","yQQQQ":"QQQQ y 'г'.","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"m:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d-M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM, y","yMMMEd":"EEE, d MMM, y","yMMMM":"MMMM y","yMMMMd":"d MMMM, y","yMMMMEEEEd":"EEEE, d MMMM, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"MM","Md":"dd/MM","MEd":"EEE dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"dd/MM/y","yMEd":"EEE dd/MM/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"y MMMM","yMMMMd":"y MMMM d","yMMMMEEEEd":"y MMMM d, EEEE","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d.","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M.","MEd":"EEE, d.M.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y.","yM":"MM/y","yMd":"d.M.y.","yMEd":"EEE, d.M.y.","yMMM":"MMM y.","yMMMd":"d. MMM y.","yMMMEd":"EEE, d. MMM y.","yMMMM":"LLLL y.","yMMMMd":"d. MMMM y.","yMMMMEEEEd":"EEEE, d. MMMM y.","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm (v)","jmz":"HH:mm (z)","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"LLL 'de' y","yMMMd":"d LLL y","yMMMEd":"EEE, d MMM y","yMMMM":"LLLL 'de' y","yMMMMd":"d MMMM 'de' y","yMMMMEEEEd":"EEEE, d MMMM 'de' y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"HH:mm","Hms":"HH:mm:ss","j":"H","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"EEE, M/d","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE, MMM d","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, MMMM d","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"M/d/y","yMEd":"EEE, M/d/y","yMMM":"MMM y","yMMMd":"MMM d, y","yMMMEd":"EEE, MMM d, y","yMMMM":"MMMM y","yMMMMd":"MMMM d, y","yMMMMEEEEd":"EEEE, MMMM d, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d.","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d. M.","MEd":"EEE d. M.","MMM":"LLL","MMMd":"d. M.","MMMEd":"EEE d. M.","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d. M. y","yMEd":"EEE d. M. y","yMMM":"LLLL y","yMMMd":"d. M. y","yMMMEd":"EEE d. M. y","yMMMM":"LLLL y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"H:mm v","jmz":"H:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d.","E":"ccc","EEEE":"cccc","LLL":"MMM","LLLL":"MMMM","M":"M","Md":"d/M","MEd":"EEE d/M","MMM":"MMM","MMMd":"d. MMM","MMMEd":"EEE d. MMM","MMMM":"MMMM","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMM y","yMMMd":"d. MMM y","yMMMEd":"EEE d. MMM y","yMMMM":"MMMM y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE 'den' d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH.mm","Hms":"HH.mm.ss","j":"HH","jm":"HH.mm","jms":"HH.mm.ss","jmv":"HH.mm v","jmz":"HH.mm z","jz":"HH z","m":"m","ms":"mm.ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M.","MEd":"EEE, d.M.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y","yMMMd":"d. MMM y","yMMMEd":"EEE, d. MMM y","yMMMM":"MMMM y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE, d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH 'Uhr'","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH 'Uhr'","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH 'Uhr' z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M.","MEd":"EEE, d.M.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y","yMMMd":"d. MMM y","yMMMEd":"EEE, d. MMM y","yMMMM":"MMMM y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE, d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH 'Uhr'","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH 'Uhr'","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH 'Uhr' z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M.","MEd":"EEE, d.M.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y","yMMMd":"d. MMM y","yMMMEd":"EEE, d. MMM y","yMMMM":"MMMM y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE, d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH 'Uhr'","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH 'Uhr'","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH 'Uhr' z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"MMM","LLLL":"MMMM","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"MMM","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"MMMM","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"LLLL y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"y QQQ","yQQQQ":"y QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"EEE, M/d","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE, MMM d","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, MMMM d","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"M/d/y","yMEd":"EEE, M/d/y","yMMM":"MMM y","yMMMd":"MMM d, y","yMMMEd":"EEE, MMM d, y","yMMMM":"MMMM y","yMMMMd":"MMMM d, y","yMMMMEEEEd":"EEEE, MMMM d, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd/MM","MEd":"EEE, dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"dd/MM/y","yMEd":"EEE, dd/MM/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"MM-dd","MEd":"EEE, MM-dd","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE, MMM d","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, MMMM d","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y-MM","yMd":"y-MM-dd","yMEd":"EEE, y-MM-dd","yMMM":"MMM y","yMMMd":"MMM d, y","yMMMEd":"EEE, MMM d, y","yMMMM":"MMMM y","yMMMMd":"MMMM d, y","yMMMMEEEEd":"EEEE, MMMM d, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd/MM","MEd":"EEE dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"dd/MM/y","yMEd":"EEE, dd/MM/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd/MM","MEd":"EEE, dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM, y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"EEE, M/d","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE, MMM d","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, MMMM d","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"M/d/y","yMEd":"EEE, M/d/y","yMMM":"MMM y","yMMMd":"MMM d, y","yMMMEd":"EEE, MMM d, y","yMMMM":"MMMM y","yMMMMd":"MMMM d, y","yMMMMEEEEd":"EEEE, MMMM d, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd/MM","MEd":"EEE, dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"dd/MM/y","yMEd":"EEE, dd/MM/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd/MM","MEd":"EEE, dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"dd/MM/y","yMEd":"EEE, dd/MM/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"EEE, M/d","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE, MMM d","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, MMMM d","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"M/d/y","yMEd":"EEE, M/d/y","yMMM":"MMM y","yMMMd":"MMM d, y","yMMMEd":"EEE, MMM d, y","yMMMM":"MMMM y","yMMMMd":"MMMM d, y","yMMMMEEEEd":"EEEE, MMMM d, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"MM/dd","MEd":"EEE, MM/dd","MMM":"LLL","MMMd":"dd MMM","MMMEd":"EEE, dd MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, dd MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"y/MM/dd","yMEd":"EEE, y/MM/dd","yMMM":"MMM y","yMMMd":"dd MMM y","yMMMEd":"EEE, dd MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d 'de' MMMM","MMMMEEEEd":"EEEE, d 'de' MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM 'de' y","yMMMMd":"d 'de' MMMM 'de' y","yMMMMEEEEd":"EEEE, d 'de' MMMM 'de' y","yQQQ":"QQQ y","yQQQQ":"QQQQ 'de' y","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"H:mm v","jmz":"H:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d 'de' MMMM","MMMMEEEEd":"EEEE, d 'de' MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMMM 'de' y","yMMMd":"d 'de' MMMM 'de' y","yMMMEd":"EEE, d 'de' MMM 'de' y","yMMMM":"MMMM 'de' y","yMMMMd":"d 'de' MMMM 'de' y","yMMMMEEEEd":"EEEE, d 'de' MMMM 'de' y","yQQQ":"QQQ 'de' y","yQQQQ":"QQQQ 'de' y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"H:mm v","jmz":"H:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d 'de' MMMM","MMMMEEEEd":"EEEE, d 'de' MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM 'de' y","yMMMMd":"d 'de' MMMM 'de' y","yMMMMEEEEd":"EEEE, d 'de' MMMM 'de' y","yQQQ":"QQQ y","yQQQQ":"QQQQ 'de' y","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"H:mm v","jmz":"H:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d 'de' MMM","MMMM":"LLLL","MMMMd":"d 'de' MMMM","MMMMEEEEd":"EEEE, d 'de' MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMMM 'de' y","yMMMd":"d 'de' MMMM 'de' y","yMMMEd":"EEE, d 'de' MMMM 'de' y","yMMMM":"MMMM 'de' y","yMMMMd":"d 'de' MMMM 'de' y","yMMMMEEEEd":"EEEE, d 'de' MMMM 'de' y","yQQQ":"QQQ y","yQQQQ":"QQQQ 'de' y","H":"HH","Hm":"H:mm","Hms":"H:mm:ss","j":"HH","jm":"H:mm","jms":"H:mm:ss","jmv":"H:mm v","jmz":"H:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d 'de' MMMM","MMMMEEEEd":"EEEE, d 'de' MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMMM 'de' y","yMMMd":"d 'de' MMMM 'de' y","yMMMEd":"EEE, d 'de' MMM 'de' y","yMMMM":"MMMM 'de' y","yMMMMd":"d 'de' MMMM 'de' y","yMMMMEEEEd":"EEEE, d 'de' MMMM 'de' y","yQQQ":"QQQ 'de' y","yQQQQ":"QQQQ 'de' y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"MMMM","LLLL":"MMMM","M":"M","Md":"d.M","MEd":"EEE, d.M","MMM":"MMMM","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"MMMM","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y","yMMMd":"d. MMM y","yMMMEd":"EEE, d. MMMM y","yMMMM":"MMMM y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE, d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"M/d, EEE","MMM":"LLL","MMMd":"MMM d","MMMEd":"MMM d, EEE","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"MMMM d, EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y/M","yMd":"y/M/d","yMEd":"y/M/d, EEE","yMMM":"y MMM","yMMMd":"y MMM d","yMMMEd":"y MMM d, EEE","yMMMM":"y('e')'ko' MMMM","yMMMMd":"y('e')'ko' MMMM d","yMMMMEEEEd":"y('e')'ko' MMMM d, EEEE","yQQQ":"y('e')'ko' QQQ","yQQQQ":"y('e')'ko' QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH (z)","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"EEE M/d","MMM":"LLL","MMMd":"d LLL","MMMEd":"EEE d LLL","MMMM":"LLLL","MMMMd":"d LLLL","MMMMEEEEd":"EEEE d LLLL","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y/M","yMd":"y/M/d","yMEd":"EEE y/M/d","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"HH:mm v","jmz":"HH:mm (z)","jz":"H (z)","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M.","MEd":"EEE d.M.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"ccc d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"cccc d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"L.y","yMd":"d.M.y","yMEd":"EEE d.M.y","yMMM":"LLL y","yMMMd":"d. MMM y","yMMMEd":"EEE d. MMM y","yMMMM":"LLLL y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"H.mm","Hms":"H.mm.ss","j":"H","jm":"H.mm","jms":"H.mm.ss","jmv":"H.mm v","jmz":"H.mm z","jz":"H z","m":"m","ms":"m.ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M/d","MEd":"EEE, M/d","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE, MMM d","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, MMMM d","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"M/d/y","yMEd":"EEE, M/d/y","yMMM":"MMM y","yMMMd":"MMM d, y","yMMMEd":"EEE, MMM d, y","yMMMM":"MMMM y","yMMMMd":"MMMM d, y","yMMMMEEEEd":"EEEE, MMMM d, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"EEE","EEEE":"EEEE","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd/MM","MEd":"EEE dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"dd/MM/y","yMEd":"EEE dd/MM/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH 'h'","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH 'h'","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH 'h' z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"EEE","EEEE":"EEEE","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M-d","MEd":"EEE M-d","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y-MM","yMd":"y-MM-dd","yMEd":"EEE y-MM-dd","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH 'h'","Hm":"HH 'h' mm","Hms":"HH:mm:ss","j":"HH 'h'","jm":"HH 'h' mm","jms":"HH:mm:ss","jmv":"HH 'h' mm v","jmz":"HH 'h' mm z","jz":"HH 'h' z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"EEE","EEEE":"EEEE","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd.MM.","MEd":"EEE, dd.MM.","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM.y","yMd":"dd.MM.y","yMEd":"EEE, dd.MM.y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH 'h'","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH 'h'","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH 'h' z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"LL","Md":"dd/MM","MEd":"EEE dd/MM","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM/y","yMd":"dd/MM/y","yMEd":"EEE dd/MM/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d 'de' MMM","MMMEd":"ccc, d 'de' MMM","MMMM":"LLLL","MMMMd":"d 'de' MMMM","MMMMEEEEd":"cccc, d 'de' MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"ccc, d/M/y","yMMM":"LLL 'de' y","yMMMd":"d 'de' MMM 'de' y","yMMMEd":"ccc, d 'de' MMM 'de' y","yMMMM":"LLLL 'de' y","yMMMMd":"d 'de' MMMM 'de' y","yMMMMEEEEd":"EEEE, d 'de' MMMM 'de' y","yQQQ":"QQQ y","yQQQQ":"QQQQ 'de' y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm (v)","jmz":"HH:mm (z)","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"EEE","EEEE":"EEEE","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M.","MEd":"EEE, d.M.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y-M","yMd":"d.M.y","yMEd":"EEE, y-M-d","yMMM":"MMM y","yMMMd":"y MMM d","yMMMEd":"EEE, d. MMM y","yMMMM":"MMMM y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE, d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"HH:mm","Hms":"HH:mm:ss","j":"H","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM, y","yMMMEd":"EEE, d MMM, y","yMMMM":"MMMM y","yMMMMd":"d MMMM, y","yMMMMEEEEd":"EEEE, d MMMM, y","yQQQ":"y QQQ","yQQQQ":"y QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"y MMMM","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"y QQQ","yQQQQ":"y QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M","MEd":"EEE, d.M","MMM":"LLL","MMMd":"d בMMM","MMMEd":"EEE, d בMMM","MMMM":"LLLL","MMMMd":"d בMMMM","MMMMEEEEd":"EEEE, d בMMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y","yMMMd":"d בMMM y","yMMMEd":"EEE, d בMMM y","yMMMM":"MMMM y","yMMMMd":"d בMMMM y","yMMMMEEEEd":"EEEE, d בMMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d.","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L.","Md":"dd. MM.","MEd":"EEE, dd. MM.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y.","yM":"MM. y.","yMd":"dd. MM. y.","yMEd":"EEE, dd. MM. y.","yMMM":"LLL y.","yMMMd":"d. MMM y.","yMMMEd":"EEE, d. MMM y.","yMMMM":"LLLL y.","yMMMMd":"d. MMMM y.","yMMMMEEEEd":"EEEE, d. MMMM y.","yQQQ":"QQQ y.","yQQQQ":"QQQQ y.","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH (z)","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"M. d.","MEd":"M. d., EEE","MMM":"LLL","MMMd":"MMM d.","MMMEd":"MMM d., EEE","MMMM":"LLLL","MMMMd":"MMMM d.","MMMMEEEEd":"MMMM d., EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y.","yM":"y. M.","yMd":"y. MM. dd.","yMEd":"y. MM. dd., EEE","yMMM":"y. MMM","yMMMd":"y. MMM d.","yMMMEd":"y. MMM d., EEE","yMMMM":"y. MMMM","yMMMMd":"y. MMMM d.","yMMMMEEEEd":"y. MMMM d., EEEE","yQQQ":"y. QQQ","yQQQQ":"y. QQQQ","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd.MM","MEd":"dd.MM, EEE","MMM":"LLL","MMMd":"d MMM","MMMEd":"d MMM, EEE","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"d MMMM, EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM.y","yMd":"dd.MM.y","yMEd":"d.MM.y թ., EEE","yMMM":"y թ. LLL","yMMMd":"d MMM, y թ.","yMMMEd":"y թ. MMM d, EEE","yMMMM":"yթ․ MMMM","yMMMMd":"d MMMM, y թ.","yMMMMEEEEd":"y թ. MMMM d, EEEE","yQQQ":"y թ, QQQ","yQQQQ":"y թ, QQQQ","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH.mm","Hms":"HH.mm.ss","j":"HH","jm":"HH.mm","jms":"HH.mm.ss","jmv":"HH.mm v","jmz":"HH.mm z","jz":"HH z","m":"m","ms":"mm.ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH.mm","Hms":"HH.mm.ss","j":"HH","jm":"HH.mm","jms":"HH.mm.ss","jmv":"HH.mm v","jmz":"HH.mm z","jz":"HH z","m":"m","ms":"mm.ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M.","MEd":"EEE, d.M.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M. y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y","yMMMd":"d. MMM y","yMMMEd":"EEE, d. MMM y","yMMMM":"MMMM y","yMMMMd":"d. MMMM y","yMMMMEEEEd":"EEEE, d. MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M","MEd":"EEE, d.M","MMM":"LLL","MMMd":"d בMMM","MMMEd":"EEE, d בMMM","MMMM":"LLLL","MMMMd":"d בMMMM","MMMMEEEEd":"EEEE, d בMMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y","yMMMd":"d בMMM y","yMMMEd":"EEE, d בMMM y","yMMMM":"MMMM y","yMMMMd":"d בMMMM y","yMMMMEEEEd":"EEEE, d בMMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"H:mm","Hms":"H:mm:ss","j":"H","jm":"H:mm","jms":"H:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d日","E":"ccc","EEEE":"cccc","LLL":"M月","LLLL":"M月","M":"M月","Md":"M/d","MEd":"M/d(EEE)","MMM":"M月","MMMd":"M月d日","MMMEd":"M月d日(EEE)","MMMM":"M月","MMMMd":"M月d日","MMMMEEEEd":"M月d日EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y年","yM":"y/M","yMd":"y/M/d","yMEd":"y/M/d(EEE)","yMMM":"y年M月","yMMMd":"y年M月d日","yMMMEd":"y年M月d日(EEE)","yMMMM":"y年M月","yMMMMd":"y年M月d日","yMMMMEEEEd":"y年M月d日EEEE","yQQQ":"y/QQQ","yQQQQ":"y年QQQQ","H":"H時","Hm":"H:mm","Hms":"H:mm:ss","j":"H時","jm":"H:mm","jms":"H:mm:ss","jmv":"H:mm v","jmz":"H:mm z","jz":"H時 z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M","MEd":"EEE, d.M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM. y","yMMMd":"d MMM. y","yMMMEd":"EEE, d MMM. y","yMMMM":"MMMM, y","yMMMMd":"d MMMM, y","yMMMMEEEEd":"EEEE, d MMMM, y","yQQQ":"QQQ, y","yQQQQ":"QQQQ, y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd.MM","MEd":"dd.MM, EEE","MMM":"LLL","MMMd":"d MMM","MMMEd":"d MMM, EEE","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"d MMMM, EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"MM.y","yMd":"dd.MM.y","yMEd":"dd.MM.y, EEE","yMMM":"y 'ж'. MMM","yMMMd":"y 'ж'. d MMM","yMMMEd":"y 'ж'. d MMM, EEE","yMMMM":"y 'ж'. MMMM","yMMMMd":"y 'ж'. d MMMM","yMMMMEEEEd":"y 'ж'. d MMMM, EEEE","yQQQ":"y 'ж'. QQQ","yQQQQ":"y 'ж'. QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"d/M, EEE","MMM":"LLL","MMMd":"MMM d","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, M/d/y","yMMM":"MMM y","yMMMd":"MMM d,y","yMMMEd":"EEE, MMM d, y","yMMMM":"MMMM y","yMMMMd":"MMMM d, y","yMMMMEEEEd":"EEEE, MMMM d, y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d일","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"M월","Md":"M. d.","MEd":"M. d. (EEE)","MMM":"LLL","MMMd":"MMM d일","MMMEd":"MMM d일 (EEE)","MMMM":"LLLL","MMMMd":"MMMM d일","MMMMEEEEd":"MMMM d일 EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y년","yM":"y. M.","yMd":"y. M. d.","yMEd":"y. M. d. (EEE)","yMMM":"y년 MMM","yMMMd":"y년 MMM d일","yMMMEd":"y년 MMM d일 (EEE)","yMMMM":"y년 MMMM","yMMMMd":"y년 MMMM d일","yMMMMEEEEd":"y년 MMMM d일 EEEE","yQQQ":"y년 QQQ","yQQQQ":"y년 QQQQ","H":"H시","Hm":"HH:mm","Hms":"H시 m분 s초","j":"a h시","jm":"a h:mm","jms":"a h:mm:ss","jmv":"a h:mm v","jmz":"a h:mm z","jz":"a h시 z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd-MM","MEd":"dd-MM, EEE","MMM":"LLL","MMMd":"d-MMM","MMMEd":"d-MMM, EEE","MMMM":"LLLL","MMMMd":"d-MMMM","MMMMEEEEd":"d-MMMM, EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y-MM","yMd":"y-dd-MM","yMEd":"y-dd-MM, EEE","yMMM":"y-'ж'. MMM","yMMMd":"y-'ж'. d-MMM","yMMMEd":"y-'ж'. d-MMM, EEE","yMMMM":"y-'ж'., MMMM","yMMMMd":"y-'ж'., d-MMMM","yMMMMEEEEd":"y-'ж'., d-MMMM, EEEE","yQQQ":"y-'ж'., QQQ","yQQQQ":"y-'ж'., QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"EEE","EEEE":"EEEE","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE d MMM y","yMMMM":"y MMMM","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"H","Hm":"HH:mm","Hms":"HH:mm:ss","j":"H","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"H z","m":"m","ms":"m:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"EEE, d/M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE d MMM","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"EEEE d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M/y","yMd":"d/M/y","yMEd":"EEE, d/M/y","yMMM":"MMM y","yMMMd":"d MMM y","yMMMEd":"EEE, d MMM y","yMMMM":"MMMM y","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y","yQQQQ":"QQQQ y","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"dd","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"MM","Md":"MM-d","MEd":"MM-dd, EEE","MMM":"MM","MMMd":"MM-dd","MMMEd":"MM-dd, EEE","MMMM":"LLLL","MMMMd":"MMMM d 'd'.","MMMMEEEEd":"MMMM d 'd'., EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y-MM","yMd":"y-MM-dd","yMEd":"y-MM-dd, EEE","yMMM":"y-MM","yMMMd":"y-MM-dd","yMMMEd":"y-MM-dd, EEE","yMMMM":"y 'm'. LLLL","yMMMMd":"y 'm'. MMMM d 'd'.","yMMMMEEEEd":"y 'm'. MMMM d 'd'., EEEE","yQQQ":"y QQQ","yQQQQ":"y QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm; v","jmz":"HH:mm; z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"dd.MM.","MEd":"EEE, dd.MM.","MMM":"LLL","MMMd":"d. MMM","MMMEd":"EEE, d. MMM","MMMM":"LLLL","MMMMd":"d. MMMM","MMMMEEEEd":"EEEE, d. MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y. 'g'.","yM":"MM.y.","yMd":"y.MM.d.","yMEd":"EEE, d.M.y.","yMMM":"y. 'g'. MMM","yMMMd":"y. 'g'. d. MMM","yMMMEd":"EEE, y. 'g'. d. MMM","yMMMM":"y. 'g'. MMMM","yMMMMd":"y. 'gada' d. MMMM","yMMMMEEEEd":"EEEE, y. 'gada' d. MMMM","yQQQ":"y. 'g'. QQQ","yQQQQ":"y. 'g'. QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d.M","MEd":"EEE, d.M","MMM":"LLL","MMMd":"d MMM","MMMEd":"EEE, d MMM","MMMM":"LLLL","MMMMd":"d MMMM","MMMMEEEEd":"EEEE, d MMMM","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"M.y","yMd":"d.M.y","yMEd":"EEE, d.M.y","yMMM":"MMM y 'г'.","yMMMd":"d MMM y 'г'.","yMMMEd":"EEE, d MMM y 'г'.","yMMMM":"MMMM y 'г'.","yMMMMd":"d MMMM y","yMMMMEEEEd":"EEEE, d MMMM y","yQQQ":"QQQ y 'г'.","yQQQQ":"QQQQ y 'г'.","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"HH","jm":"HH:mm","jms":"HH:mm:ss","jmv":"HH:mm v","jmz":"HH:mm z","jz":"HH z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
|
@ -0,0 +1 @@
|
||||||
|
{"d":"d","E":"ccc","EEEE":"cccc","LLL":"LLL","LLLL":"LLLL","M":"L","Md":"d/M","MEd":"d/M, EEE","MMM":"LLL","MMMd":"MMM d","MMMEd":"MMM d, EEE","MMMM":"LLLL","MMMMd":"MMMM d","MMMMEEEEd":"MMMM d, EEEE","QQQ":"QQQ","QQQQ":"QQQQ","y":"y","yM":"y-MM","yMd":"d/M/y","yMEd":"d-M-y, EEE","yMMM":"y MMM","yMMMd":"y MMM d","yMMMEd":"y MMM d, EEE","yMMMM":"y MMMM","yMMMMd":"y, MMMM d","yMMMMEEEEd":"y, MMMM d, EEEE","yQQQ":"y QQQ","yQQQQ":"y QQQQ","H":"HH","Hm":"HH:mm","Hms":"HH:mm:ss","j":"h a","jm":"h:mm a","jms":"h:mm:ss a","jmv":"h:mm a v","jmz":"h:mm a z","jz":"h a z","m":"m","ms":"mm:ss","s":"s","v":"v","z":"z","zzzz":"zzzz","ZZZZ":"ZZZZ"}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue